Co-authored-by: Jason Walker <913443@dadeschools.net> Co-committed-by: Jason Walker <913443@dadeschools.net>
This commit was merged in pull request #97.
This commit is contained in:
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# gitea-integration — manage the disposable Gitea container for the opt-in
|
||||
# integration suite (#66). See tests/integration/README.md.
|
||||
#
|
||||
# tests/integration/gitea-integration up start pinned Gitea, wait ready
|
||||
# tests/integration/gitea-integration token create test admin + print token
|
||||
# tests/integration/gitea-integration down stop container, delete volume
|
||||
#
|
||||
# The admin credentials below are TEST-ONLY, for the throwaway local container
|
||||
# started by this script. They are not secrets and must never be reused for a
|
||||
# real instance. The generated API token is printed ONCE to stdout (for
|
||||
# `export GITEA_INTEGRATION_TOKEN=$(...)`) and is never written to any file.
|
||||
|
||||
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
compose() { docker compose -f "$here/docker-compose.yml" "$@"; }
|
||||
|
||||
base_url="${GITEA_INTEGRATION_URL:-http://localhost:3003}"
|
||||
admin_user="inttest-admin"
|
||||
admin_pass="inttest-local-only-pass" # TEST-ONLY, disposable container
|
||||
admin_email="inttest-admin@example.invalid"
|
||||
|
||||
case "${1:-}" in
|
||||
up)
|
||||
compose up -d
|
||||
printf 'gitea-integration: waiting for %s ' "$base_url"
|
||||
for _ in $(seq 1 60); do
|
||||
if curl -fsS "$base_url/api/v1/version" >/dev/null 2>&1; then
|
||||
printf '\ngitea-integration: ready\n'
|
||||
exit 0
|
||||
fi
|
||||
printf '.'
|
||||
sleep 1
|
||||
done
|
||||
printf '\ngitea-integration: Gitea did not become ready in 60s\n' >&2
|
||||
exit 1
|
||||
;;
|
||||
token)
|
||||
# Idempotent admin creation (ignore "already exists").
|
||||
compose exec -T -u git gitea gitea admin user create \
|
||||
--username "$admin_user" --password "$admin_pass" \
|
||||
--email "$admin_email" --admin --must-change-password=false \
|
||||
>/dev/null 2>&1 || true
|
||||
# Unique token name per call; Gitea prints the token as the last field.
|
||||
tok_name="inttest-$(date +%s)"
|
||||
out="$(compose exec -T -u git gitea gitea admin user generate-access-token \
|
||||
--username "$admin_user" --scopes all --token-name "$tok_name")"
|
||||
printf '%s\n' "$out" | sed -n 's/.*successfully created[:!]* *//p' | tr -d '[:space:]'
|
||||
printf '\n'
|
||||
;;
|
||||
down)
|
||||
compose down -v
|
||||
;;
|
||||
*)
|
||||
printf 'usage: tests/integration/gitea-integration up|token|down\n' >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user