managarten/scripts/mac-mini/setup-forgejo-runner.sh
Till JS 87d7966b0f feat(infra): add Forgejo runner registration script
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 10:11:28 +01:00

49 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
# Register Forgejo Runner on Mac Mini
# Run after Forgejo is up and admin user exists
set -e
DOCKER="${DOCKER_CMD:-/usr/local/bin/docker}"
FORGEJO_URL="http://localhost:3041"
FORGEJO_PUBLIC_URL="https://git.mana.how"
# Step 1: Get runner registration token from Forgejo API
echo "=== Getting runner registration token ==="
API_TOKEN=$(cat /Volumes/ManaData/forgejo-api-token 2>/dev/null || echo "")
if [ -z "$API_TOKEN" ]; then
echo "No API token found. Generate one:"
echo " $DOCKER exec --user git mana-core-forgejo forgejo admin user generate-access-token --username till --token-name runner-setup --scopes all"
echo " Save to: /Volumes/ManaData/forgejo-api-token"
exit 1
fi
RUNNER_TOKEN=$(curl -s -X POST "$FORGEJO_URL/api/v1/user/actions/runners/registration-token" \
-H "Authorization: token $API_TOKEN" | python3 -c "import sys,json; print(json.load(sys.stdin)['token'])")
echo "Runner token: $RUNNER_TOKEN"
# Step 2: Start runner container
echo ""
echo "=== Starting Forgejo Runner ==="
$DOCKER compose -f docker-compose.macmini.yml up -d forgejo-runner
# Step 3: Register runner
echo ""
echo "=== Registering runner ==="
sleep 5
$DOCKER exec mana-core-forgejo-runner forgejo-runner register \
--instance "$FORGEJO_PUBLIC_URL" \
--token "$RUNNER_TOKEN" \
--name "mac-mini" \
--labels "ubuntu-latest:docker://node:20,go:docker://golang:1.25-alpine,docker:docker://docker:dind" \
--no-interactive
# Step 4: Start runner daemon
echo ""
echo "=== Starting runner daemon ==="
$DOCKER restart mana-core-forgejo-runner
echo ""
echo "=== Runner registered and started ==="
echo "Check status: $FORGEJO_PUBLIC_URL/-/admin/runners"