From 87d7966b0f6481dec7661e7bff752c488e9f830b Mon Sep 17 00:00:00 2001 From: Till JS Date: Sat, 28 Mar 2026 10:11:28 +0100 Subject: [PATCH] feat(infra): add Forgejo runner registration script Co-Authored-By: Claude Opus 4.6 (1M context) --- scripts/mac-mini/setup-forgejo-runner.sh | 49 ++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100755 scripts/mac-mini/setup-forgejo-runner.sh diff --git a/scripts/mac-mini/setup-forgejo-runner.sh b/scripts/mac-mini/setup-forgejo-runner.sh new file mode 100755 index 000000000..89ce7a8f9 --- /dev/null +++ b/scripts/mac-mini/setup-forgejo-runner.sh @@ -0,0 +1,49 @@ +#!/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"