| name | runner-publish |
| description | Manage FCM hosts update workflow, SSH deploy key config, and run local verification |
Trigger
- Modifying or validating FCM hosts update workflow (
.github/workflows/main.yml).
- Troubleshooting FCM hosts generation, publication, or server deployment failures.
- Changing DNS query/validation logic and verifying behavior.
Entry Point
- Workflow file:
.github/workflows/main.yml
- Go CLI entry:
go run ./cmd/fcmhost run
- Generated outputs:
fcm_dual.hosts, fcm_ipv4.hosts, fcm_ipv6.hosts
Workflow
Local Verification
Before pushing any workflow or Go CLI updates:
- Run test suite:
go test ./...
- Dry run runner verification (checks FCM 5228 connectivity without dns harvest):
go run ./cmd/fcmhost run -workdir . -dns=false -v
- Perform full local run to verify DNS harvesting and expansion:
go run ./cmd/fcmhost run -workdir .
GitHub Actions & Server Deployment
- Workflow is scheduled 4 times daily (UTC
01:17, 07:17, 13:17, 19:17).
- If manual refresh is needed, trigger via
workflow_dispatch on GitHub Actions.
- The workflow uses SSH Deploy Key
ACTIONS_DEPLOY_KEY for checkout/push, and SERVER_SSH_KEY for deploying to /srv/cagedbird/fcm-hosts-next/ on the remote server.
Verification
Guardrails
- Prefer SSH Checkout over HTTPS: To prevent GnuTLS connection timeouts on mainland dual-stack runners, workflow checkout and push MUST use the SSH deploy key (
ACTIONS_DEPLOY_KEY).
- Prevent Workflow Loop: Commits generated by the bot MUST include
[skip ci] in the message and the push event must be configured to skip triggering another run.
- Separate Keys: GitHub actions push key (
ACTIONS_DEPLOY_KEY) and server deploy key (SERVER_SSH_KEY) are separate credentials. Do not mix them.
- No Direct Remote Edits: Do not edit served host files directly on the server. Always update locally/via workflow.