gabrie30 331380417e
Add Gitea integration test system (#563)
Introduce scripts, configs, and Go tools for local Gitea integration testing. Includes workflow for GitHub Actions, seeding and test scenario configuration, runner and seeder binaries, and supporting shell scripts. Updates .gitignore to exclude Gitea test binaries.
2025-08-27 19:54:21 -07:00

74 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
# Go-based seeding script for Gitea
# Usage: ./seed.sh [API_TOKEN] [GITEA_URL] [LOCAL_GITEA_GHORG_DIR]
LOCAL_GITEA_GHORG_DIR=${3:-"${HOME}/ghorg"}
API_TOKEN=${1:-$(cat "${LOCAL_GITEA_GHORG_DIR}/gitea_token" 2>/dev/null || echo "test-token")}
GITEA_URL=${2:-"http://gitea.example.com:3000"}
# Also read username and password for fallback authentication
ADMIN_USERNAME=$(cat "${LOCAL_GITEA_GHORG_DIR}/gitea_username" 2>/dev/null || echo "testuser")
ADMIN_PASSWORD=$(cat "${LOCAL_GITEA_GHORG_DIR}/gitea_password" 2>/dev/null || echo "testpass")
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SEEDER_DIR="${SCRIPT_DIR}/seeder"
CONFIG_PATH="${SCRIPT_DIR}/configs/seed-data.json"
echo "Starting Gitea seeding with Go-based seeder..."
echo "Gitea URL: ${GITEA_URL}"
echo "Ghorg Dir: ${LOCAL_GITEA_GHORG_DIR}"
echo "Config: ${CONFIG_PATH}"
# Build the seeder if it doesn't exist or if source files are newer
SEEDER_BINARY="${SEEDER_DIR}/gitea-seeder"
# Force rebuild in CI environments or if binary doesn't exist or is newer
FORCE_BUILD=false
if [[ "${CI:-}" == "true" ]] || [[ "${GITHUB_ACTIONS:-}" == "true" ]]; then
echo "CI environment detected - forcing clean build of seeder..."
FORCE_BUILD=true
fi
if [[ ! -f "${SEEDER_BINARY}" ]] || [[ "${SEEDER_DIR}/main.go" -nt "${SEEDER_BINARY}" ]] || [[ "${FORCE_BUILD}" == "true" ]]; then
echo "Building Gitea seeder..."
cd "${SEEDER_DIR}"
# Remove existing binary to ensure clean build
rm -f gitea-seeder
go mod download
go build -o gitea-seeder main.go
# Verify binary was created and is executable
if [[ ! -f "gitea-seeder" ]]; then
echo "Error: Failed to build gitea-seeder binary"
exit 1
fi
chmod +x gitea-seeder
cd -
fi
# Run the seeder
echo "Seeding Gitea instance..."
echo "Using admin credentials: ${ADMIN_USERNAME}:${ADMIN_PASSWORD}"
echo "Using API token: ${API_TOKEN}"
"${SEEDER_BINARY}" \
-token="${API_TOKEN}" \
-username="${ADMIN_USERNAME}" \
-password="${ADMIN_PASSWORD}" \
-base-url="${GITEA_URL}" \
-config="${CONFIG_PATH}"
if [[ $? -eq 0 ]]; then
echo "Gitea seeding completed successfully!"
else
echo "Gitea seeding encountered some issues, but may have partially succeeded"
echo "Check the logs above for details"
# Don't exit with error since partial success is acceptable for testing
fi