tvl-depot/tools/nixery/.travis.yml
Vincent Ambo 104c930040 chore(build): Use significantly fewer layers for Nixery itself
Nixery itself is built with the buildLayeredImage system, which takes
some time to create large numbers of layers.

This adjusts the default number of image layers from 96 to 20.

Additionally Nixery's image is often loaded with `docker load -i`,
which ignores layer cache hits anyways.

Additionaly the CI build is configured to use only 1, which speeds up
CI runs.
2019-11-09 15:35:58 +00:00

79 lines
2.3 KiB
YAML

language: nix
arch:
- amd64
- arm64
services:
- docker
env:
- NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/5271f8dddc0f2e54f55bd2fc1868c09ff72ac980.tar.gz
before_script:
- echo "Running Nixery CI build on $(uname -m)"
- mkdir test-files
- echo ${GOOGLE_KEY} | base64 -d > test-files/key.json
- echo ${GCS_SIGNING_PEM} | base64 -d > test-files/gcs.pem
- nix-env -f '<nixpkgs>' -iA cachix -A go
- cachix use nixery
script:
- test -z $(gofmt -l server/ build-image/)
- nix-build --arg maxLayers 1 | cachix push nixery
# This integration test makes sure that the container image built
# for Nixery itself runs fine in Docker, and that images pulled
# from it work in Docker.
#
# Output from the Nixery container is printed at the end of the
# test regardless of test status.
- IMG=$(docker load -q -i $(nix-build -A nixery-image) | awk '{ print $3 }')
- echo "Loaded Nixery image as ${IMG}"
- |
docker run -d -p 8080:8080 --name nixery \
-v ${PWD}/test-files:/var/nixery \
-e PORT=8080 \
-e GCS_BUCKET=nixery-ci-tests \
-e GOOGLE_CLOUD_PROJECT=nixery \
-e GOOGLE_APPLICATION_CREDENTIALS=/var/nixery/key.json \
-e NIXERY_CHANNEL=nixos-unstable \
-e NIXERY_STORAGE_BACKEND=gcs \
${IMG}
# print all of the container's logs regardless of success
- |
function print_logs {
echo "Nixery container logs:"
docker logs nixery
}
trap print_logs EXIT
# Give the container ~20 seconds to come up
- |
attempts=0
echo -n "Waiting for Nixery to start ..."
until $(curl --fail --silent "http://localhost:8080/v2/"); do
[[ attempts -eq 30 ]] && echo "Nixery container failed to start!" && exit 1
((attempts++))
echo -n "."
sleep 1
done
# Pull and run an image of the current CPU architecture
- |
case $(uname -m) in
x86_64)
docker run --rm localhost:8080/hello hello
;;
aarch64)
docker run --rm localhost:8080/arm64/hello hello
;;
esac
# Pull an image of the opposite CPU architecture (but without running it)
- |
case $(uname -m) in
x86_64)
docker pull localhost:8080/arm64/hello
;;
aarch64)
docker pull localhost:8080/hello
;;
esac