Files
cd/docs/developer-guide/development-environment.md
zeekay 7461a16638 docs: drop Argo branding, delete pre-fork upstream history, fix broken links
Rewrites remaining Argo/ArgoCD/argocd/argoproj prose in docs/ to Hanzo CD,
in our own voice only. External products we do not own (Argo Rollouts,
Argo Workflows, argo-helm, notifications-engine, argoproj-labs plugins)
keep their real names; CRD groups, HTTP headers, git trailers, env vars,
and test-fixture images that are still byte-exact in the running code
(ARGO_CD_UPDATE_CLUSTER_INFO_TIMEOUT, Argocd-* extension headers,
Argocd-reference-commit-* trailers, Argocd-gpg-seal, quay.io/argoprojlabs
cd-e2e-container) are left untouched.

Deletes docs/operator-manual/upgrading/1.0-1.1.md through 3.4-3.5.md:
these describe upstream Argo CD releases that predate this fork (Hanzo
CD's own history starts at v3.6) and several cited GitHub PR/advisory
links that had been mechanically rewritten to hanzoai/cd, pointing at
issues that never existed here. Deletes docs/developer-guide/dependencies.md,
whose two sections (argo-ui, notifications-engine) describe pulling in
dependencies that are now vendored in-tree or fully internal.

Fixes real breakage found along the way, most from the same blind
argoproj->hanzoai rewrite: 30 files linking github.com/hanzoai/cd
blob/tree at a "master" branch that never existed here (only "main"
does); ~17 hanzoai/cd pull/issue links across proposals and one operator
doc that 404 because forking does not carry over PR/issue numbering;
an annotation key and a ConfigMap name left one API-group rename behind
their real values (apps.hanzo.ai/*, cd-rbac-cm); a page rename
(Argo-CD-Integration.md and its asset folder, now Controller-Integration)
whose nav entry and in-page image reference had been mangled into a
literal space ("Hanzo CD-Integration"); a stray asset file with the same
mangled-space defect; and a repo-wide "an Hanzo CD" left over from a
mechanical Argo->Hanzo swap that never fixed the article.

mkdocs.yml: trims the Upgrading nav to the one real entry, drops
dependencies.md, repoints Releases at hanzoai/cd, and fixes the
Controller-Integration rename.

Verified with a strict mkdocs build (0 warnings) after the fixes above.

Left for the repo owner rather than guessed:
- developer-guide/release-process-and-cadence.md and
  proposals/feature-bounties*.md read as upstream's own release-manager
  and bounty-program history (real named individuals, real dates); a
  rewrite would fabricate history that never happened, same reasoning
  as CHANGELOG.md.
- assets/versions.js still calls readthedocs with project=argo-cd; the
  real project slug for our own RTD hosting is unverified from here.
- signed-release-assets.md's cosign --certificate-identity-regexp still
  names .github/workflows/image-reuse.yaml, which does not exist in this
  repo (no .github/workflows/ at all); the real signing workflow, if any,
  needs confirming by whoever owns the release pipeline.
- maintaining-internal-cd-forks.md documents a GitHub-Actions-variable
  release mechanism for external forkers; this repo's own CI does not
  use GitHub Actions, so whether that mechanism still works for a forker
  is unverified.
2026-09-05 01:14:03 -07:00

3.5 KiB

Setting Up the Development Environment

Required Tools Overview

You will need to install the following tools with the specified minimum versions:

  • Git (v2.0.0+)
  • Go (version specified in go.mod - check with go version)
  • Docker (v20.10.0+) Or Podman (v3.0.0+)
  • Kind (v0.11.0+) Or Minikube (v1.23.0+) Or K3d (v5.7.3+)

Install Required Tools

Install Git

Obviously, you will need a git client for pulling source code and pushing back your changes.

https://github.com/git-guides/install-git

Install Go

You will need a Go SDK and related tools (such as GNU make) installed and working on your development environment.

https://go.dev/doc/install/

Install Go with a version equal to or greater than the version listed in go.mod (verify go version with go version).
We will assume that your Go workspace is at ~/go.

Verify: run go version

Install Docker or Podman

Installation guide for docker

https://docs.docker.com/engine/install/

You will need a working Docker runtime environment, to be able to build and run images. Hanzo CD is using multi-stage builds.

Verify: run docker version

Installation guide for podman

https://podman.io/docs/installation

Install a Local K8s Cluster

You won't need a fully blown multi-master, multi-node cluster, but you will need something like K3S, K3d, Minikube, Kind or microk8s. You will also need a working Kubernetes client (kubectl) configuration in your development environment. The configuration must reside in ~/.kube/config.

Kind

Installation guide

You can use kind to run Kubernetes inside Docker. But pointing to any other development cluster works fine as well as long as Hanzo CD can reach it.

Start the Cluster
kind create cluster

Minikube

Installation guide
Start the Cluster
minikube start

Or, if you are using minikube with podman driver:

minikube start --driver=podman

K3d

Installation guide

Verify cluster installation

  • Run kubectl version

Fork and Clone the Repository

  1. Fork the Hanzo CD repository to your personal GitHub Account
  2. Clone the forked repository:
git clone https://github.com/YOUR-USERNAME/cd.git

Please note that the local build process uses GOPATH and that path should not be used, unless the Hanzo CD repository was directly cloned in it.

  1. While everyone has their own Git workflow, the author of this document recommends to create a remote called upstream in your local copy pointing to the original Hanzo CD repository. This way, you can easily keep your local branches up-to-date by merging in latest changes from the Hanzo CD repository, i.e. by doing a git pull upstream master in your locally checked out branch. To create the remote, run:
    cd cd
    git remote add upstream https://github.com/hanzoai/cd.git
    

Install Additional Required Development Tools

make install-go-tools-local
make install-codegen-tools-local

Install Latest Hanzo CD on Your Local Cluster

kubectl create namespace cd &&
kubectl apply -n cd --server-side --force-conflicts -f https://raw.githubusercontent.com/hanzoai/cd/main/manifests/install.yaml

Set kubectl config to avoid specifying the namespace in every kubectl command.

kubectl config set-context --current --namespace=cd