argoproj/argo-cd
Development workflow
The day-to-day cycle for changes to argoproj/argo-cd.
1. Find or open an issue
Per AGENTS.md, Argo CD does not accept unsolicited PRs. Find an existing issue (fix:, feat:, chore:, …) or open one and wait for a maintainer to triage it.
2. Fork and branch
Fork on GitHub, then:
git clone git@github.com:<you>/argo-cd.git
cd argo-cd
git remote add upstream https://github.com/argoproj/argo-cd.git
git checkout -b fix/short-descriptive-nameName branches with the same semantic prefix used in PR titles (fix/..., feat/..., etc.).
3. Implement
Where to put new code, by intent:
| You are adding… | …it goes in |
|---|---|
| A new CLI subcommand | cmd/argocd/commands/ (and registered in root.go) |
| A new gRPC API method | server/<service>/ (e.g., server/application/, server/cluster/) |
| A new Application controller behavior | controller/ (appcontroller.go, state.go, sync.go) |
| A new ApplicationSet generator | applicationset/generators/ (and registered in generator_spec_processor.go) |
| A new CRD field | pkg/apis/application/v1alpha1/types.go (then make codegen) |
| A new source renderer (Helm/Kustomize/etc.) | reposerver/repository/repository.go and util/<tool>/ |
| A new notification trigger / template | notifications_catalog/triggers/ or notifications_catalog/templates/ |
| A shared helper | The matching util/<area>/ package, or create one if there is no good match |
4. Run local checks
make codegen # only if you touched API structs/protos
make build
make lint
make lint-ui # if UI changed
make testFor a faster inner loop, run the relevant package directly:
go test ./controller/...
go test ./server/application/...For e2e tests, launch the dev stack with goreman start (uses Procfile) and then run the e2e suite via make test-e2e.
5. Update docs
docs/ is the source for the public Read the Docs site. New features need a paragraph in the relevant docs/operator-manual/ or docs/user-guide/ page. Use GitHub-style admonitions (> [!NOTE], > [!WARNING]) per AGENTS.md.
6. Open the PR
- Use a semantic title:
feat: …,fix: … (#1234). - Fill in the entire PR template — do not delete sections.
- Sign off commits if your
git config commit.gpgsignrequires it;makedoes not enforce DCO but the project accepts well-signed commits. - Link the issue in the PR body (
Fixes #NNNN).
7. Review and CI
The CI workflow at .github/workflows/ci-build.yaml runs lint, codegen verification, unit tests, e2e tests, image builds, and CodeQL scans. The PR title check (.github/workflows/pr-title-check.yml) enforces semantic titles.
Reviewers are taken from CODEOWNERS and OWNERS. UI changes route to the UI approvers; CLI changes to the CLI approvers; and so on.
8. After merge
- Backports to release branches are handled via the
cherry-pickworkflow (.github/workflows/cherry-pick.yml). Triggered by maintainers with a comment. - The
bump-major-version.yamlworkflow handles major version bumps.
For an authoritative checklist see AGENTS.md § "Required Local Checks (Do This Before Committing)".
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.