Merge pull request #310 from weaveworks/259-rebuild-ui-image

Detect when to rebuild cached build image.
This commit is contained in:
Tom Wilkie
2015-07-08 16:52:57 +01:00
2 changed files with 40 additions and 7 deletions

39
bin/rebuild-ui-build-image Executable file
View File

@@ -0,0 +1,39 @@
#!/bin/bash
set -eux
CACHE_DIR=$HOME/docker/
rebuild() {
rm $CACHE_DIR/*
make scope_ui_build.tar
mkdir -p $CACHE_DIR
mv scope_ui_build.tar $CACHE_DIR/image-$CIRCLE_SHA1
}
# Get the revision the cached image was build at
cached_image_rev() {
find $CACHE_DIR -name 'image-*' -type f | sed 's/[^\-]*\-//'
}
# Have there been any revision beween $1 and $2
has_changes() {
local rev1=$1
local rev2=$2
local changes=$(git log --oneline $rev1..$rev2 -- client/Dockerfile client/gulpfile.js client/package.json | wc -l)
[ "$changes" -gt 0 ]
}
cached_revision=$(cached_image_rev)
if [ -z "$cached_revision" ]; then
rebuild
exit 0
fi
if has_changes $cached_revision $CIRCLE_SHA1 ; then
rebuild
exit 0
fi
# we didn't rebuild; import cached version
docker load -i $CACHE_DIR/image-*

View File

@@ -18,13 +18,7 @@ dependencies:
- "~/docker"
override:
- sudo apt-get --only-upgrade install tar
- if [[ -e "$SCOPE_UI_BUILD" ]]; then
docker load -i $SCOPE_UI_BUILD;
else
make scope_ui_build.tar;
mkdir -p $(dirname "$SCOPE_UI_BUILD");
mv scope_ui_build.tar $(dirname "$SCOPE_UI_BUILD");
fi
- bin/rebuild-ui-build-image
- curl https://sdk.cloud.google.com | bash
- test -z "$SECRET_PASSWORD" || bin/setup-circleci-secrets "$SECRET_PASSWORD"
post: