Client project · Normies & ChainGPT
One pipeline for every service — security gated, health-checked, auto-rollback, and notified.
workflow_call
one suite: build, scan, GitOps, gate, notify
Config only
onboarding for a new app
OIDC
no static AWS keys
Auto-rollback
on a failed health gate
I built a central deploy platform as reusable GitHub Actions (workflow_call). Application repos do not own pipeline logic. They call versioned templates and pass a small config blob.
Stages are on by default and individually toggleable. Secrets can live in GitHub or in one AWS Secrets Manager JSON loaded over OIDC — no long-lived cloud keys in repos. Pushing a tag is not “deployed.” The gate treats the cluster as the source of truth. A successful rollback still fails the workflow. CI stays red until a healthy gate run — by design.
Each repo invented its own Actions. A new service meant another 200-line deploy.yml and another way to fail in production.
One template branch, many callers. An app repo keeps a thin deploy.yml. The only thing you edit per service is pipeline config — environment, registry, GitOps path, Argo app, workload, which stages to run. Downstream jobs read that context and can matrix over multiple images in one repo.
Config
One dict → context plus a service matrix
Tag
Short SHA image tag
Build
Registry login via OIDC, BuildKit cache, optional build secrets
Trivy
Image CVE scan; artifacts and counts; optional fail-on-critical
Semgrep
SAST on the repo as a separate reusable workflow
GitOps
Bump image in the infra repo — Kustomize or plain image:
Health
Argo sync/wait, kubectl audit, crash and log checks, then stabilize
Rollback
kubectl rollout undo and pause auto-sync when the gate fails
Notify
GitHub job summary plus a pass/fail chat message with the failing stage
pipeline.txt
App repo (config only)
│
▼
Reusable templates
1. Generate tag
2. Build + push (OIDC)
3. Trivy / Semgrep
4. Update GitOps
5. Health gate (Argo + kubectl)
├── healthy → summary + notify
└── unhealthy → rollout undo → notifyBefore
After
Have a project in mind?
Let's build something together.