if: branch = master AND type = push
before_install: []
install: []
- cache: false
sudo: false
script:
MESSAGE_FILE=$(mktemp -t msg.XXXXXX);
- secure: "cFh8thThqEJLC98XKI5pfqflUzOlxsYPRW20AWRaYOOgYHPTiGWypTXiPbGSKaeAXTZoOA+DpQtEmefc0U6lt9dHc7a/MIaK6isFurjlnKYiLOeTruzyu1z7PWCeZ/jKXsU2RK/88DBtlNwfMdaMIeuKj14IVfpepPPL71ETbuk="
before_install:
- - zcat $HOME/docker/rust-ci.tar.gz | docker load || true
+ # We'll use the AWS cli to download/upload cached docker layers, so install
+ # that here.
+ - if [ "$TRAVIS_OS_NAME" = linux ]; then
+ pip install --user awscli;
+ export PATH=$PATH:$HOME/.local/bin;
+ fi
- mkdir -p $HOME/rustsrc
# FIXME(#46924): these two commands are required to enable IPv6,
# they shouldn't exist, please revert once more official solutions appeared.
# it happened
- dmesg | grep -i kill
-# Save tagged docker images we created and load them if they're available
-# Travis saves caches whether the build failed or not, nuke rustsrc if
-# the failure was while updating it (as it may be in a bad state)
-# https://github.com/travis-ci/travis-ci/issues/4472
-before_cache:
- - docker history -q rust-ci |
- grep -v missing |
- xargs docker save |
- gzip > $HOME/docker/rust-ci.tar.gz
-
notifications:
email: false
-cache:
- directories:
- - $HOME/docker
-
before_deploy:
- mkdir -p deploy/$TRAVIS_COMMIT
- >
travis_time_start
if [ -f "$docker_dir/$image/Dockerfile" ]; then
+ if [ "$CI" != "" ]; then
+ cksum=$(find $docker_dir/$image $docker_dir/scripts -type f | \
+ sort | \
+ xargs cat | \
+ sha512sum | \
+ awk '{print $1}')
+ s3url="s3://$SCCACHE_BUCKET/docker/$cksum"
+ url="https://s3-us-west-1.amazonaws.com/$SCCACHE_BUCKET/docker/$cksum"
+ echo "Attempting to download $s3url"
+ set +e
+ loaded_images=$(curl $url | docker load | sed 's/.* sha/sha/')
+ set -e
+ echo "Downloaded containers:\n$loaded_images"
+ fi
+
dockerfile="$docker_dir/$image/Dockerfile"
if [ -x /usr/bin/cygpath ]; then
context="`cygpath -w $docker_dir`"
-t rust-ci \
-f "$dockerfile" \
"$context"
+
+ if [ "$s3url" != "" ]; then
+ digest=$(docker inspect rust-ci --format '{{.Id}}')
+ echo "Built container $digest"
+ if ! grep -q "$digest" <(echo "$loaded_images"); then
+ echo "Uploading finished image to $s3url"
+ set +e
+ docker history -q rust-ci | \
+ grep -v missing | \
+ xargs docker save | \
+ gzip | \
+ aws s3 cp - $s3url
+ set -e
+ else
+ echo "Looks like docker image is the same as before, not uploading"
+ fi
+ fi
elif [ -f "$docker_dir/disabled/$image/Dockerfile" ]; then
if [ -n "$TRAVIS_OS_NAME" ]; then
echo Cannot run disabled images on travis!