diff --git a/tests/ci_build/ci_build.sh b/tests/ci_build/ci_build.sh index d5b0419f9..676613d9a 100755 --- a/tests/ci_build/ci_build.sh +++ b/tests/ci_build/ci_build.sh @@ -122,12 +122,22 @@ echo "Building container (${DOCKER_IMG_NAME})..." # 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 + # Login for Docker registry 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}" + # Pull pre-build container from Docker build cache, + # if one exists for the particular branch or pull request + echo "docker pull ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}" + if docker pull "${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}" + then + CACHE_FROM_CMD="--cache-from ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:${BRANCH_NAME}" + else + # If the build cache is empty of the particular branch or pull request, + # use the build cache associated with the master branch + echo "docker pull ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:master" + docker pull "${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:master" || true + CACHE_FROM_CMD="--cache-from ${DOCKER_CACHE_REPO}/${DOCKER_IMG_NAME}:master" + fi else CACHE_FROM_CMD='' fi @@ -152,6 +162,8 @@ fi # If enviornment variable DOCKER_CACHE_REPO is set, use an external Docker repo for build caching if [[ -n "${DOCKER_CACHE_REPO}" ]] then + # Push the container we just built to the Docker build cache + # that is associated with the particular branch or pull request 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}"