3efbbfcd4e
With https://github.com/google/nixery/pull/127, nixery will use extended attributes to store metadata (when using local storage). Right now, our integration test mounts a tmpfs to /var/cache/nixery. However, *user* xattrs aren't supported with tmpfs [1], so setting xattrs would fail. To workaround this, use a folder in the current working directory and hope it's backed by something supporting user xattrs (which is the case for GitHub Actions). [1]: https://man7.org/linux/man-pages/man5/tmpfs.5.html#NOTES
59 lines
1.8 KiB
Bash
Executable file
59 lines
1.8 KiB
Bash
Executable file
#!/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.
|
|
# We can't just mount a tmpfs to /var/cache/nixery, as tmpfs doesn't support
|
|
# user xattrs.
|
|
# So create a temporary directory in the current working directory, and hope
|
|
# it's backed by something supporting user xattrs.
|
|
# We'll notice it isn't if nixery starts complaining about not able to set
|
|
# xattrs anyway.
|
|
if [ -d var-cache-nixery ]; then rm -Rf var-cache-nixery; fi
|
|
mkdir var-cache-nixery
|
|
docker run --privileged --rm -p 8080:8080 --name nixery \
|
|
-e PORT=8080 \
|
|
--mount "type=bind,source=${PWD}/var-cache-nixery,target=/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
|