mirror of
https://github.com/offen/docker-volume-backup.git
synced 2025-09-09 07:54:46 +08:00
66 lines
1.9 KiB
Bash
Executable file
66 lines
1.9 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
MATCH_PATTERN=$1
|
|
IMAGE_TAG=${IMAGE_TAG:-canary}
|
|
|
|
sandbox="docker_volume_backup_test_sandbox"
|
|
tarball="$(mktemp -d)/image.tar.gz"
|
|
compose_profile="default"
|
|
|
|
trap finish EXIT INT TERM
|
|
|
|
finish () {
|
|
rm -rf $(dirname $tarball)
|
|
docker compose --profile $compose_profile down
|
|
}
|
|
|
|
docker build -t offen/docker-volume-backup:test-sandbox .
|
|
|
|
if [ ! -z "$BUILD_IMAGE" ]; then
|
|
docker build -t offen/docker-volume-backup:$IMAGE_TAG $(dirname $(pwd))
|
|
fi
|
|
|
|
docker save offen/docker-volume-backup:$IMAGE_TAG -o $tarball
|
|
|
|
find_args="-mindepth 1 -maxdepth 1 -type d"
|
|
if [ ! -z "$MATCH_PATTERN" ]; then
|
|
find_args="$find_args -name $MATCH_PATTERN"
|
|
fi
|
|
|
|
for dir in $(find $find_args | sort); do
|
|
dir=$(echo $dir | cut -c 3-)
|
|
echo "################################################"
|
|
echo "Now running ${dir}"
|
|
echo "################################################"
|
|
echo ""
|
|
|
|
test="${dir}/run.sh"
|
|
export TARBALL=$tarball
|
|
export SOURCE=$(dirname $(pwd))
|
|
|
|
if [ -f ${dir}/.multinode ]; then
|
|
compose_profile="multinode"
|
|
fi
|
|
|
|
docker compose --profile $compose_profile up -d --wait
|
|
|
|
if [ -f "${dir}/.swarm" ]; then
|
|
docker compose exec manager docker swarm init
|
|
elif [ -f "${dir}/.multinode" ]; then
|
|
docker compose exec manager docker swarm init
|
|
manager_ip=$(docker compose exec manager docker node inspect $(docker compose exec manager docker node ls -q) --format '{{ .Status.Addr }}')
|
|
token=$(docker compose exec manager docker swarm join-token -q worker)
|
|
docker compose exec worker1 docker swarm join --token $token $manager_ip:2377
|
|
docker compose exec worker2 docker swarm join --token $token $manager_ip:2377
|
|
fi
|
|
|
|
docker compose exec manager /bin/sh -c "docker load -i /cache/image.tar.gz"
|
|
docker compose exec -e TEST_VERSION=$IMAGE_TAG manager /bin/sh -c "/code/test/$test"
|
|
|
|
docker compose --profile $compose_profile down
|
|
echo ""
|
|
echo "$test passed"
|
|
echo ""
|
|
done
|