argoproj/argo-cd
How to contribute
This section is a working guide for engineers landing changes in argoproj/argo-cd. It complements (and never replaces) the upstream contribution rules in AGENTS.md and the official developer docs at https://argo-cd.readthedocs.io/en/latest/developer-guide/code-contributions/.
Read
AGENTS.mdfirst. Argo CD is a CNCF Graduated project with a strict, well-documented contribution policy: every PR needs an existing issue, semantic PR titles, complete templates, and the localmakechecks listed below.
In this section
- Development workflow — how to branch, build, test, and submit a change.
- Testing — unit, e2e, UI, and integration tests.
- Debugging — logs, profiling, and common failure modes.
- Patterns and conventions — coding style, error handling, gRPC + REST patterns, and CRD authoring rules.
- Tooling — code generation, linting, and the build system.
Required local checks
Before pushing or opening a PR, run the canonical Make targets, taken verbatim from AGENTS.md:
make build # 1. Build the unified binary
make codegen # 2. Regenerate API code & manifests (CRITICAL after API struct edits)
make lint # 3. Go lint (.golangci.yaml)
make lint-ui # 4. UI lint
make test # 5. Run all unit tests
make cli # 6. Build the CLIIf any of these fail, fix them locally — the upstream CI runs the same targets.
Definition of done
A change is "done" when:
- A real, approved GitHub issue motivates it.
- The Go code compiles, lints, and passes
make test. - If you touched API structs (
pkg/apis/application/v1alpha1/...),make codegenwas re-run and the regenerated files are committed. - If you touched UI code,
make lint-uipasses. - New behavior has unit tests; user-visible behavior also has e2e coverage when feasible.
- Docs under
docs/are updated for any user-facing change. - The PR title follows the semantic prefix convention (
feat:,fix:,docs:,chore:,refactor:,revert:,test:,ci:).
Communication channels
- GitHub Discussions for design questions.
- The
#argo-cdchannel in the Argoproj Slack. - Contributor Office Hours (Thursdays) and the User Community meeting (first Wednesday of the month).
Links and agendas live in README.md.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.