about summary refs log blame commit diff
path: root/tools/nixery/scripts/integration-test.sh
blob: 9595f37d9417beef508c8f4e7749144b1c80e3ce (plain) (tree)


















































                                                                             
#!/usr/bin/env bash
set -eou pipefail

# 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.

IMG=$(docker load -q -i "$(nix-build -A nixery-image)" | awk '{ print $3 }')
echo "Loaded Nixery image as ${IMG}"

# Run the built nixery docker image in the background, but keep printing its
# output as it occurs.
docker run --rm -p 8080:8080 --name nixery \
  -e PORT=8080 \
  --mount type=tmpfs,destination=/var/cache/nixery \
  -e NIXERY_CHANNEL=nixos-unstable \
  -e NIXERY_STORAGE_BACKEND=filesystem \
  -e STORAGE_PATH=/var/cache/nixery \
  "${IMG}" &

# Give the container ~20 seconds to come up
set +e
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
set -e

# 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