33 lines
1.3 KiB
Bash
33 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Disposable isolated PostgreSQL; no production credentials or published ports.
|
|
set -euo pipefail
|
|
name="btcdata-test-${GITHUB_RUN_ID:-$$}-${GITHUB_RUN_ATTEMPT:-1}"
|
|
cleanup() {
|
|
docker rm -f "${name}-runner" "$name" >/dev/null 2>&1 || true
|
|
docker network rm "$name" >/dev/null 2>&1 || true
|
|
}
|
|
trap cleanup EXIT
|
|
docker network create "$name" >/dev/null
|
|
docker run -d --name "$name" --network "$name" \
|
|
-e POSTGRES_HOST_AUTH_METHOD=trust postgres:16-alpine >/dev/null
|
|
ready=false
|
|
for _ in $(seq 1 60); do
|
|
if docker exec "$name" pg_isready -U postgres >/dev/null 2>&1; then
|
|
ready=true
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
if [ "$ready" != true ]; then
|
|
echo 'Disposable PostgreSQL did not become ready' >&2
|
|
exit 1
|
|
fi
|
|
# The CI workspace is inside the runner container, not on the Docker host.
|
|
# Copy only test inputs; never mount a nonexistent host workspace or copy .env/.git.
|
|
docker create --name "${name}-runner" --network "$name" -w /app \
|
|
-e "BTCDATA_TEST_JDBC_URL=jdbc:postgresql://$name:5432/postgres?user=postgres" \
|
|
clojure:temurin-21-tools-deps-alpine clj -M:test >/dev/null
|
|
COPYFILE_DISABLE=1 tar --no-xattrs -cf - deps.edn src resources test env/test | docker cp - "${name}-runner:/app"
|
|
docker start --attach "${name}-runner"
|
|
exit "$(docker inspect --format '{{.State.ExitCode}}' "${name}-runner")"
|