2019-07-30 13:39:29 +02:00
|
|
|
language: nix
|
2019-08-15 00:46:21 +02:00
|
|
|
services:
|
|
|
|
- docker
|
2019-08-04 02:30:24 +02:00
|
|
|
before_script:
|
2019-08-15 00:46:21 +02:00
|
|
|
- |
|
|
|
|
mkdir test-files
|
|
|
|
echo ${GOOGLE_KEY} | base64 -d > test-files/key.json
|
|
|
|
echo ${GCS_SIGNING_PEM} | base64 -d > test-files/gcs.pem
|
|
|
|
nix-env -iA nixpkgs.cachix -A nixpkgs.go
|
|
|
|
cachix use nixery
|
2019-08-04 02:30:24 +02:00
|
|
|
script:
|
2019-08-15 00:46:21 +02:00
|
|
|
- test -z $(gofmt -l server/ build-image/)
|
2019-08-04 02:30:24 +02:00
|
|
|
- nix-build | cachix push nixery
|
2019-08-15 00:46:21 +02:00
|
|
|
|
|
|
|
# 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 BUCKET=nixery-layers \
|
|
|
|
-e GOOGLE_CLOUD_PROJECT=nixery \
|
|
|
|
-e GOOGLE_APPLICATION_CREDENTIALS=/var/nixery/key.json \
|
|
|
|
${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
|
|
|
|
- docker run --rm localhost:8080/hello hello
|