Discord and Plane When Woodpecker Fails — CI That Talks Back
A pipeline that fails silently is worse than no pipeline. Self-hosted Woodpecker on a small VPS is easy to forget — until production is stale or a secret scan goes red. My portfolio wires notifications into the tools I already use: Plane for traceable work items and Discord for immediate alerts. The Gitleaks article covers the security gate; the Plane tickets article covers PORT-N branches. This one covers what happens after a step turns red or green.
Three notify steps in .woodpecker.yml call scripts/notify-plane-ci.sh with success or failure. On pull requests, notify-ci-success runs after build. On main, notify-ci-success-main runs after deploy. On any failure, notify-ci-failure fires regardless of branch.
The script parses PORT-N from the branch name or commit message — same convention as feature/PORT-12-seo branches. It looks up the work item in Plane via API, then posts an HTML comment with a link to the Woodpecker pipeline. No ticket reference in the branch? The step exits quietly. That keeps noise down while still closing the loop when work is ticket-driven.