[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
|
||||
agent none
|
||||
|
||||
environment {
|
||||
DOCKER_CACHE_REPO = '492475357299.dkr.ecr.us-west-2.amazonaws.com'
|
||||
}
|
||||
|
||||
// Setup common job properties
|
||||
options {
|
||||
ansiColor('xterm')
|
||||
|
||||
@ -118,15 +118,30 @@ EOF
|
||||
|
||||
# Build the docker container.
|
||||
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 \
|
||||
${CI_DOCKER_BUILD_ARG} \
|
||||
-t ${DOCKER_IMG_NAME} \
|
||||
-f ${DOCKERFILE_PATH} ${DOCKER_CONTEXT_PATH}"
|
||||
-f ${DOCKERFILE_PATH} ${DOCKER_CONTEXT_PATH} \
|
||||
${CACHE_FROM_CMD}"
|
||||
docker build \
|
||||
${CI_DOCKER_BUILD_ARG} \
|
||||
-t "${DOCKER_IMG_NAME}" \
|
||||
-f "${DOCKERFILE_PATH}" "${DOCKER_CONTEXT_PATH}"
|
||||
-f "${DOCKERFILE_PATH}" "${DOCKER_CONTEXT_PATH}" \
|
||||
${CACHE_FROM_CMD}
|
||||
|
||||
# Check docker build status
|
||||
if [[ $? != "0" ]]; then
|
||||
@ -134,6 +149,19 @@ if [[ $? != "0" ]]; then
|
||||
exit 1
|
||||
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.
|
||||
echo "Running '${COMMAND[*]}' inside ${DOCKER_IMG_NAME}..."
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user