Open-Source Wikis

/

Argo CD

/

How to contribute

/

Tooling

argoproj/argo-cd

Tooling

The build, lint, and codegen tooling that ships with argoproj/argo-cd.

Make is the canonical interface

Every workflow has a Make target. make help lists them. The most-used are listed in development workflow. The Makefile itself is ~27 KB and is the single source of truth — CI runs the same targets.

Containerized toolchain

Argo CD also ships a Docker-based dev environment so contributors do not need to install Go, Node, or protoc on their host:

  • Dockerfile.dev — pre-installs the Go toolchain and node for ad-hoc shells.
  • hack/Dockerfile.dev-tools — the "test tools" image used by make targets that mount the source into a container (see run-in-test-tools macros in the Makefile).
  • Dockerfile — the production image actually shipped on container registries.
  • Dockerfile.tilt, Dockerfile.ui.tilt — used by the Tilt-based dev workflow (Tiltfile).

Linters

Linter Config Target
golangci-lint .golangci.yaml make lint
ESLint ui/eslint.config.mjs make lint-ui
Prettier ui/.prettierrc invoked from UI lint
goreleaser config check .goreleaser.yaml release pipeline
Snyk .snyk, hack/snyk-*.sh scheduled update-snyk.yaml workflow
CodeQL .github/workflows/codeql.yml scheduled scans
Dependency hygiene renovate.json, renovate-presets/ continuous chore(deps): PRs

Code generation

The codegen story is split across several scripts under hack/:

Script Purpose
hack/generate-proto.sh Runs protoc over every *.proto to produce pb.go, gRPC stubs, and OpenAPI specs.
hack/update-codegen.sh controller-gen deepcopy + CRD spec generation (used via make codegen).
hack/update-openapi.sh openapi-gen over the API types into openapi_generated.go.
hack/update-manifests.sh Re-renders the install YAML bundles via kustomize build over manifests/base/ and the variant overlays.
hack/generate-mock.sh Wraps mockery with the project config.
hack/generate-actions-list.sh Generates the supported resource actions list from resource_customizations/.
hack/generate-icons-typescript.sh Generates TypeScript icon constants for the UI.
hack/gen-resources/ Helper for generating bulk test resources used by load tests.
hack/gen-crd-spec/ Standalone generator binary for CRD specs.
hack/gen-docs/ Auto-generates portions of the CLI docs from cobra.
hack/gen-catalog/ Generates the notifications catalog docs from notifications_catalog/.

The single command that orchestrates all of this is:

make codegen

CI/CD

.github/workflows/ defines all CI:

Workflow What it does
ci-build.yaml Lint, codegen verify, build, unit tests, e2e tests, image build, CodeQL. The main PR gate.
pr-title-check.yml Enforces the semantic PR title prefix.
release.yaml, init-release.yaml Cut and publish releases.
image.yaml, image-reuse.yaml Build and reuse container images across jobs.
cherry-pick.yml, cherry-pick-single.yml Backports to release branches.
bump-major-version.yaml Mechanical major-version bumps (e.g., /v3/v4).
codeql.yml Static security analysis.
scorecard.yaml OpenSSF scorecard.
stale.yaml Closes stale issues/PRs.
update-snyk.yaml, renovate.yaml Dependency hygiene.

Release artifacts are produced by goreleaser (.goreleaser.yaml) for the CLI and by the workflow YAMLs for container images.

Tilt

Tiltfile (~7.5 KB) brings up the entire stack inside a local k3d/kind cluster with hot-reload for both Go and UI. It is an alternative to goreman start for contributors who prefer cluster-style development.

Read the Docs

mkdocs.yml and .readthedocs.yaml configure the docs site at https://argo-cd.readthedocs.io/. Local preview:

make serve-docs   # runs mkdocs serve in a Docker container

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Tooling – Argo CD wiki | Factory