[CI] Add external Docker build cache (#4331)
This commit is contained in:
parent
82dca3c108
commit
37c75aac41
4
Jenkinsfile
vendored
4
Jenkinsfile
vendored
@ -24,6 +24,10 @@ pipeline {
|
|||||||
// Each stage specify its own agent
|
// Each stage specify its own agent
|
||||||
agent none
|
agent none
|
||||||
|
|
||||||
|
environment {
|
||||||
|
DOCKER_CACHE_REPO = '492475357299.dkr.ecr.us-west-2.amazonaws.com'
|
||||||
|
}
|
||||||
|
|
||||||
// Setup common job properties
|
// Setup common job properties
|
||||||
options {
|
options {
|
||||||
ansiColor('xterm')
|
ansiColor('xterm')
|
||||||
|
|||||||
@ -118,15 +118,30 @@ EOF
|
|||||||
|
|
||||||
# Build the docker container.
|
# Build the docker container.
|
||||||
echo "Building container (${DOCKER_IMG_NAME})..."
|
echo "Building container (${DOCKER_IMG_NAME})..."
|
||||||
# --pull should be default
|
|
||||||
|
# If enviornment variable DOCKER_CACHE_REPO is set, use an external Docker repo for build caching
|
||||||
|
if [[ -n "${DOCKER_CACHE_REPO}" ]]
|
||||||
|
then
|
||||||
|
# Login for Docker registiry
|
||||||
|
echo '$(python3 -m awscli ecr get-login --no-include-email --region us-west-2)'
|
||||||
|
$(python3 -m awscli ecr get-login --no-include-email --region us-west-2)
|
||||||
|
echo "docker pull ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME} || true"
|
||||||
|
docker pull "${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}" || true
|
||||||
|
CACHE_FROM_CMD="--cache-from ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}"
|
||||||
|
else
|
||||||
|
CACHE_FROM_CMD=''
|
||||||
|
fi
|
||||||
|
|
||||||
echo "docker build \
|
echo "docker build \
|
||||||
${CI_DOCKER_BUILD_ARG} \
|
${CI_DOCKER_BUILD_ARG} \
|
||||||
-t ${DOCKER_IMG_NAME} \
|
-t ${DOCKER_IMG_NAME} \
|
||||||
-f ${DOCKERFILE_PATH} ${DOCKER_CONTEXT_PATH}"
|
-f ${DOCKERFILE_PATH} ${DOCKER_CONTEXT_PATH} \
|
||||||
|
${CACHE_FROM_CMD}"
|
||||||
docker build \
|
docker build \
|
||||||
${CI_DOCKER_BUILD_ARG} \
|
${CI_DOCKER_BUILD_ARG} \
|
||||||
-t "${DOCKER_IMG_NAME}" \
|
-t "${DOCKER_IMG_NAME}" \
|
||||||
-f "${DOCKERFILE_PATH}" "${DOCKER_CONTEXT_PATH}"
|
-f "${DOCKERFILE_PATH}" "${DOCKER_CONTEXT_PATH}" \
|
||||||
|
${CACHE_FROM_CMD}
|
||||||
|
|
||||||
# Check docker build status
|
# Check docker build status
|
||||||
if [[ $? != "0" ]]; then
|
if [[ $? != "0" ]]; then
|
||||||
@ -134,6 +149,19 @@ if [[ $? != "0" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# If enviornment variable DOCKER_CACHE_REPO is set, use an external Docker repo for build caching
|
||||||
|
if [[ -n "${DOCKER_CACHE_REPO}" ]]
|
||||||
|
then
|
||||||
|
echo "docker tag ${DOCKER_IMG_NAME} ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}"
|
||||||
|
docker tag "${DOCKER_IMG_NAME}" "${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}"
|
||||||
|
echo "docker push ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}"
|
||||||
|
docker push "${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}"
|
||||||
|
if [[ $? != "0" ]]; then
|
||||||
|
echo "ERROR: could not update Docker cache ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Run the command inside the container.
|
# Run the command inside the container.
|
||||||
echo "Running '${COMMAND[*]}' inside ${DOCKER_IMG_NAME}..."
|
echo "Running '${COMMAND[*]}' inside ${DOCKER_IMG_NAME}..."
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user