# Gitea Actions Runner Setup ## Prerequisites - Gitea admin access (root user or token with admin:actions scope) - Docker on the runner host (CT 116 recommended — already has Docker) ## Step 1: Get Runner Registration Token ```bash # On the Gitea host (CT 110) or via Gitea admin API: ssh root@192.168.68.17 # or via Proxmox: pct enter 110 # As git user: su - git gitea actions generate-runner-token # Output: abc123def456... ``` Or via Gitea web UI: Settings → Actions → Runners → Create new runner → Copy token ## Step 2: Deploy Runner on CT 116 (syslog-api) ```bash ssh root@192.168.68.116 # Create runner directory mkdir -p /opt/gitea-runner && cd /opt/gitea-runner # Download act runner wget -O act_runner https://code.gitea.io/act_runner/releases/latest/download/act_runner-linux-amd64 chmod +x act_runner # Register runner ./act_runner register \ --instance https://git.sysloggh.net \ --token \ --name "zulip-runner" \ --labels "ubuntu-latest:docker://node:20-bullseye" # Create systemd service cat > /etc/systemd/system/gitea-runner.service << 'SERVICE' [Unit] Description=Gitea Actions Runner After=docker.service [Service] ExecStart=/opt/gitea-runner/act_runner daemon WorkingDirectory=/opt/gitea-runner Restart=always RestartSec=5 User=root [Install] WantedBy=multi-user.target SERVICE systemctl daemon-reload systemctl enable --now gitea-runner ``` ## Step 3: Verify ```bash journalctl -u gitea-runner -f --no-pager # Look for: "runner registered" or "listening for jobs" # In Gitea UI: Settings → Actions → Runners → should show "zulip-runner" active ``` ## Step 4: Test Push a tag to trigger the pipeline: ```bash git tag v1.1.0-rc.1 # Canary → Tanko only git push origin v1.1.0-rc.1 # If canary passes: git tag v1.1.0 # Production → all Hermes git push origin v1.1.0 # For Agent Zero: git tag az-v1.0.0 # Agent Zero → kagentz git push origin az-v1.0.0 ``` ## Tag Convention | Tag Pattern | Deploys To | Environment | |------------|------------|-------------| | `v*.*.*-rc.*` | Tanko only | `canary` | | `v*.*.*` | All Hermes agents | `production` | | `az-v*.*.*` | kagentz only | `agent-zero` |