Live demo on hosted Argo CD (GitOps Promoter extension):
- Promotion strategies (
demo-githubon GitHub +demo-gitlabon GitLab): openpromoter-configin Argo CD
You can use those views read-only without signing in. GitHub sign-in is for maintainers who need admin in Argo CD.
This repository is a hands-on reference for GitOps Promoter: moving changes through environments with Git, commit statuses, and Kubernetes APIs, wired here to Argo CD and a small guestbook workload on GKE.
You describe promotion rules under promoter-config-github/ and promoter-config-gitlab/ (both synced by one Argo CD Application, promoter-config)—for example a PromotionStrategy (environment order, auto-merge, which commit statuses must pass) together with ScmProvider and GitRepository. Controllers such as Argo CD health and a timer write status checks back to Git; activeCommitStatuses and promoter-previous-environment gate each step (gating).
In this demo, Argo CD’s source hydrator renders manifests into hydrated/guestbook-* on branches such as env/dev-next, env/e2e-next, and env/prd-next. GitOps Promoter opens and merges the pull requests that promote those changes through env/dev, env/e2e, and env/prd when your rules allow. What merges is rendered YAML—the same material Argo syncs.
You may have heard that using a branch per environment is a GitOps anti-pattern. That warning is about teams manually maintaining divergent env branches. In this model you evolve a single DRY configuration; the environment branches carry generated output that GitOps Promoter and the hydrator keep up to date, which is a different workflow. See Does GitOps Promoter use branches for environments? in the project FAQ.
On your own cluster, the GitOps Promoter Argo CD extension surfaces strategies and related resources (see the upstream integration docs).
| If you want to… | Start here |
|---|---|
| Learn APIs, controllers, and concepts in depth | GitOps Promoter documentation |
| Provision this demo (GKE, DNS, TLS, secrets, monitoring, GitHub apps) | SETUP.md |
| Troubleshoot auth, metrics, OAuth, webhooks, churn | DEBUGGING.md |
| Skim GCP-oriented architecture | docs/architecture-gcp.md |
| Open Grafana (metrics / dashboards) | Grafana |
Forking: replace GitHub URLs, hostnames, org/team names, and seal your own secrets—see SETUP.md §2.
Version pins for Helm charts and images: SETUP.md — Version pins.
The App-of-Apps entrypoint apps/root-app.yaml installs the Helm chart in charts/apps/, which declares child Applications for Argo CD, cert-manager, ingress-nginx, Sealed Secrets, monitoring, GitOps Promoter, guestbook environments, the demo churn job, and more. Umbrella values live under charts/. Layout and GitOps conventions are in SETUP.md — Repository layout and Conventions.
Behavior and CRDs come from argoproj-labs projects; this tree is example wiring only. See upstream docs for APIs, RBAC, and production hardening.