Woodpecker CI — Installation¶
Primary audience: TAPPaaS admin.
Prerequisites¶
- The foundation:
cluster:vm,templates:nixos,backup:vm,network:proxy,network:rules. - Forgejo (
src/devops/forgejo), installed first (module-manager add-stack devopsdoes that order). - A DNS name for Woodpecker under the environment's domain (
woodpecker.<domain>by default), for sign-in from a browser.
Install¶
This creates the VM, applies its NixOS configuration (Docker, the server and the agent), registers Woodpecker with Forgejo as an OAuth2 application, and publishes woodpecker.<domain> behind the Authentik gate.
Post-install¶
- Make yourself an administrator:
module-manager module modify woodpecker --set 'woodpeckerAdmins=["<forgejo username>"]'. - Open
https://woodpecker.<domain>(or its tile in Authentik), sign in with Authentik, and Login — Forgejo asks each person once to authorise Woodpecker to act for them (it lists their repositories and sets the webhooks as them). - Add repository, pick one, and push a
.woodpecker/ci.yaml, for example:
Verification¶
| Check | Expect |
|---|---|
docker, the server, the agent, woodpecker-egress | active |
the server's and the agent's /healthz | 200; gRPC on 127.0.0.1 only |
/authorize | hands over to Forgejo |
| privileged plugins | none |
| a pipeline container | reaches the internet and Forgejo; refused by Forgejo's VM, which the VM reaches |
https://woodpecker.<domain>/ | an anonymous visitor gets the Authentik login |
Troubleshooting¶
Login fails with "invalid redirect". Woodpecker's address changed (a name published since install): module-manager module update woodpecker moves the application's redirect URI.
A push starts no pipeline. In Forgejo, the repository's Settings → Webhooks shows the delivery to Woodpecker and its answer.
A step cannot reach a site service. That is the fence (see README); the internet and Forgejo are reachable.