b4e0b55e56
This moves the pin from just being in the Travis configuration to also being set in a nixpkgs-pin.nix file, which makes it trivial to build at the right commit when performing local builds.
79 lines
2.3 KiB
YAML
79 lines
2.3 KiB
YAML
language: nix
|
|
arch:
|
|
- amd64
|
|
- arm64
|
|
services:
|
|
- docker
|
|
env:
|
|
- NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/0a40a3999eb4d577418515da842a2622a64880c5.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
|