Merge pull request #153 from ekimekim/mike/cache-builds

Add ability to explicitly pull and re-use layers from other commits when building
pull/155/head
Mike Lang 5 years ago committed by GitHub
commit b936b9ab1c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -13,5 +13,5 @@ script:
- if [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "master" ]; then export PUSH=latest; fi
# log into quay.io so we can push
- echo "$QUAY_PASSWORD" | docker login quay.io -u "$QUAY_USER" --password-stdin
# build and push all components
- ./build
# build and push all components. Try to pull and re-use layers from images for all parent commits.
- 'CACHE_FROM=$(git rev-list HEAD -n1 --parents | cut -d" " -f 2-) ./build'

20
build

@ -26,6 +26,25 @@ if [ "$#" -gt 0 ]; then
COMPONENTS=("$@")
fi
# If CACHE_FROM is set, explicitly pull and re-use specified image versions
CACHE_IMAGES=()
CACHE_ARGS=()
if [ -n "${CACHE_FROM:-}" ]; then
# Note lack of quotes here - we want to word split
for commit in $CACHE_FROM; do
tag=$(git rev-parse --short "$commit")
for component in "${COMPONENTS[@]}"; do
CACHE_IMAGES+=("$BASE/wubloader-$component:$tag")
CACHE_ARGS+=("--cache-from" "$BASE/wubloader-$component:$tag")
done
done
echo "Trying to pull images for commits $CACHE_FROM if they exist, to re-use layers if possible"
for image in "${CACHE_IMAGES[@]}"; do
echo "Pulling $image"
docker pull "$image" || true # don't exit on failure
done
fi
for component in "${COMPONENTS[@]}"; do
echo "Building image for $component"
latest="$BASE/wubloader-$component:latest"
@ -34,6 +53,7 @@ for component in "${COMPONENTS[@]}"; do
-f "$component/Dockerfile" \
-t "$latest" \
-t "$specific" \
"${CACHE_ARGS[@]}" \
.
echo "Built image wubloader-$component:$TAG"
if [ -n "$PUSH" ]; then

Loading…
Cancel
Save