Add Woodpecker validation pipeline (tofu fmt + validate) #37
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/pal-e-platform#37
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lineage
plan-pal-e-platform→ Phase 6 (CI Pipeline Hardening) → Phase 6.2 (Validation Pipeline)Repo
forgejo_admin/pal-e-platformUser Story
As a developer submitting infrastructure changes
I want PRs to automatically run
tofu fmt -checkandtofu validateSo that formatting and syntax errors are caught before merge (Change Failure Rate)
Context
pal-e-platform has zero CI for Terraform. App repos (basketball-api, pal-e-docs, etc.) all have Woodpecker pipelines, but the infrastructure repos don't. This means formatting errors and syntax issues are only caught when someone manually runs
tofu validate— or worse, at apply time.This is the first CI gate for infrastructure code. It does NOT need state access or secrets —
tofu init -backend=falsedownloads providers without connecting to the backend.tofu validatechecks syntax only.Key technical facts:
woodpeckernamespaceforgejo_admin/pal-e-platformhashicorp/helm,hashicorp/kubernetes,tailscale/tailscale,aminueza/minioFile Targets
Files to create:
.woodpecker.yaml— validation pipelineFiles NOT to touch:
terraform/— no Terraform changes in this PRsalt/— not relevantAcceptance Criteria
.woodpecker.yamlexists in repo root with avalidatestep that:ghcr.io/opentofu/opentofu:latestimage (or a pinned version ≥1.9)cd terraform && tofu init -backend=falsetofu fmt -check -recursivetofu validatepull_requesteventspushto main (that's Phase 6.4)Test Expectations
.tffile, open a PR, and verify Woodpecker shows a failureConstraints
tofu init -backend=falseto avoid needing any secrets or cluster accessChecklist
Closes #37in body.woodpecker.yamlis the only file addedRelated
project-pal-e-platform— projectphase-pal-e-platform-ci-6-2-validation-pipeline— phase note in pal-e-docs