76 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 1ab6e799c1 cd: the module is github.com/hanzoai/cd, where it is actually hosted
go.mod still declared `module github.com/hanzoai/deploy` after the repo was
renamed. A Go module path is not cosmetic — it is the resolvable location. So
`go get github.com/hanzoai/cd` could not work, and anything importing this
module had to spell a name that no longer exists at that address. The build log
of v3.6.0 is where it surfaced: the compiler was still emitting
github.com/hanzoai/deploy/cmd/cd/commands.

3541 import paths across 690 .go, 19 .proto, 4 .yaml, 3 .sh, 2 .mod, Procfile
and Makefile. Plus the 62 ghcr.io/hanzoai/deploy image references, moved to
ghcr.io/hanzoai/cd to match hanzo.yml's build target — a distinct string from
the module path, replaced separately so neither could clobber the other.

go mod tidy clean, CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ./... clean.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 21:16:24 -07:00
zeekayandHanzo Dev 446e343a3d cd: annotations are cd.hanzo.ai, API group is apps.hanzo.ai
Two corrections on top of the naming pass, both found by checking the live
cluster rather than the source.

The rename had silently changed the user-facing annotation key from
argocd.argoproj.io/sync-wave to cd.argoproj.io/sync-wave — 63 live
Applications carry the old key, so deploying that would have ignored every
sync-wave and broken fleet deploy ordering. The key is now cd.hanzo.ai/*,
and universe 575650286 moves the ApplicationSet template that stamps it, so
the controller regenerates all 63 consistently.

The API group in code said argoproj.io/v1alpha1 in 157 places while the
cluster has served apps.hanzo.ai/v1alpha1 since 2026-07-23 (the CRDs are
applications.apps.hanzo.ai). Code now matches what is actually served.

The legacy applications.argoproj.io/app-name label had ZERO live users, so it
went with the rest. foo.argoproj.io test fixtures became foo.example.com —
arbitrary test domains should not carry a vendor name.

go build ./... exit 0.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 16:32:14 -07:00
zeekayandHanzo Dev 84ee9fa0ce cd: kill the argo naming — binaries, packages, identifiers
Every command is cd-*: cd, cd-server, cd-repo-server,
cd-application-controller, cd-applicationset-controller, cd-cmp-server,
cd-commit-server, cd-dex, cd-git-ask-pass, cd-k8s-auth, cd-notification.
util/argo is util/cd; util/notification/argocd is util/notification/cd.

Preserved deliberately: github.com/argoproj/argocd-example-apps is an
EXTERNAL repo used as an e2e fixture, and notifications-engine + pkg/v2 are
real dependencies. Renaming a URL we do not own would break the tests.

Two bugs I made and caught, both from a careless sed:
- s/argo/cd/g turned 'argocd' into 'cdcd' in two directory names
- renaming the package declaration left every call site saying argo.X

go build ./... exit 0.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 16:00:25 -07:00
zeekayandHanzo Dev dead2da249 cd: the configuration speaks CD_ and KV_
The fork was already ours everywhere that matters — our image, our IAM (dex
is not deployed), hanzo kv behind what the env still called REDIS. Only the
vocabulary was upstream's: ARGOCD_* across the Go, the manifests, the docs
and the plugin contract, and mkdocs still titled 'Argo CD' pointing at
argoproj/argo-cd.

ARGOCD_ -> CD_ and REDIS_ -> KV_ across 345 files, plus the 8 e2e/cmp
fixtures that assert the plugin env contract — those had to move with the
binary, which now emits CD_APP_NAME where they expected ARGOCD_APP_NAME.

Left alone deliberately, because renaming them would be wrong:
- util/helm/testdata/redis/ and gitops-engine/.../statefulset*.yaml are
  fixtures for a THIRD-PARTY chart named redis, not our config
- util/kustomize/testdata/ likewise
- generated.proto regenerates from types.go, which is already clean

go build ./... exit 0.

LOCKSTEP: the live StatefulSet sets 47 ARGOCD_* names the binary no longer
reads. universe 4a5375735 carries the matching manifest change; they deploy
together or the controller falls back to defaults.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 15:55:46 -07:00
zeekayandHanzo Dev b5c1098378 rebrand: white-label served surfaces in library packages -> Hanzo CD
Extends the served-surface sweep into controller/reposerver/applicationset/
commitserver/cmpserver/notification_controller/util/pkg: git commit author
name ("Argo CD" -> "Hanzo CD"), TLS certificate Organization fields, user/API
error messages, and operator log banners. Identifiers, env vars, argocd-*
names, argoproj.io/argocd label values, and testdata/examples left intact.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-22 17:58:58 -07:00
15d87b3e72 refactor(cd): hard-fork - rename CRD API group argoproj.io -> deploy.hanzo.ai (#1)
* feat(api): hard-fork CRD API group argoproj.io -> deploy.hanzo.ai

Hanzo CD hard-fork, phase 1.1. Single source of truth is
pkg/apis/application/register.go's Group constant (Application/AppProject/
ApplicationSet all derive their FullName from it); every other Go call-site
that hardcoded the literal group string is updated to match: the 3 generated
informer GVRs, the app-of-apps nested-Application detector in types.go, the
resource-tree Application-kind cache populator, the 3 NotFound error
constructors in server/application, and the applicationset-controller's
leader-election Lease name/ID (kept in lockstep across Go source + RBAC
resourceNames, or leader election would get RBAC-denied on startup).

CRD YAMLs (application/appproject/applicationset) and every RBAC apiGroups
rule that actually governs our 3 CRDs are repointed to deploy.hanzo.ai, across
both manifests/base/* (namespaced Roles) and manifests/cluster-rbac/* (cluster
scope). Two adjacent things that share the "argoproj.io" string but are NOT
ours are deliberately left untouched: gitops-engine's health-check dispatch
for Argo Workflows' `Workflow` kind, and argocd-server-clusterrole's second
apiGroups block granting read on Argo Workflows' `workflows` resource — both
belong to a separate, unrelated Argoproj-family project we are not forking.

Also untouched, per explicit scope: annotation/label keys (argocd.argoproj.io/*)
and finalizers (*.argoproj.io) that track already-applied live resources, and
argocd-cm.yaml's resource.customizations.ignoreResourceUpdates keys (a narrow
app-of-apps diffing nicety, not build- or RBAC-relevant).

CGO_ENABLED=0 go build ./... verified green.

* ci: wire canonical hanzo.yml + cicd.yml (Hanzo CD image build)

Phase 1.3. Follows the same one-way pattern every hanzo/lux/zoo repo uses:
hanzo.yml declares the image (root Dockerfile -> ghcr.io/hanzoai/deploy) and a
fast go-build sanity test (the multi-stage Dockerfile build is the slow, real
gate); cicd.yml is the ~10-line trigger shim importing hanzoai/ci's reusable
build workflow on the arc pool, secrets from KMS only.

No `deploy:` block yet, matching the hanzoai/cms build-only-first-cutover
pattern: this repo's own live hanzo-cd namespace runs the whole Hanzo fleet's
GitOps, so the prod image/CRD swap is a deliberate separate action (see the
[HELD] universe PR), never an automatic rollout on merge. Every PR/push still
builds and pushes an immutable ghcr.io/hanzoai/deploy:sha-<7>-amd64 image.

* feat(ui): rebrand Argo CD -> Hanzo CD (title, favicon, logo, sidebar)

Phase 1.2. User-facing "Argo CD"/"ArgoCD" text replaced with "Hanzo CD"
across the login page, help modal, settings screens, version-info panel,
sync-options warning, fullscreen-logs title, app.tsx page titles, and
index.html's <title>/noscript text (dropped the now-wrong upstream CLI
doc link rather than invent a hanzo.ai URL that doesn't exist).

Logo/favicon assets replaced with the canonical Hanzo mark (never
hand-drawn, copied from ~/work/hanzo/logo/dist): the two real usages of
Argo's logo collapse onto one Hanzo glyph (mono + white variants) at the
same 5 call sites (login icon + footer, login.scss $logoPath/
$logoNegativePath, sidebar text-logo), preserving the existing CSS
invert() filters so both the light login panel and dark sidebar still
render correctly. Old argologo.svg/argo_o.svg/argo.png deleted (no
longer referenced). favicon-{16x16,32x32}.png added at
ui/src/assets/favicon/ (index.html's links to that path were previously
dead - the directory didn't exist in this checkout). package.json name
argo-cd-ui -> hanzo-cd-ui.

Left alone, deliberately: the two Kubernetes resource-kind icon sets
under ui/src/assets/images/resources/ (unrelated to branding), and
upstream doc/project links (argoproj.io, argo-cd.readthedocs.io) since
we have no equivalent hanzo.ai docs to point to yet - except the login
footer logo's outbound link, which now points to hanzo.ai instead of
argoproj.io (a Hanzo-branded mark linking to the upstream project it
was forked from read as an obvious leftover).

* feat(module): rename Go module github.com/argoproj/argo-cd/v3 -> github.com/hanzoai/deploy

Phase 2. No version suffix on the new path (org policy: never publish our
own Go modules above v1.x.x / with a v2+ suffix) — this fork starts a fresh
v0/v1 module identity rather than carrying the v3 the upstream fork point
had reached.

Mechanical, symmetric rewrite: 704 .go files (import statements only; two
disjoint substitutions applied specific-first so the nested gitops-engine
module path never double-matches), plus go.mod (module line, the
gitops-engine require+replace pair, version reset to v0.0.0-... since a
suffix-less path can't carry a v3 semver), gitops-engine/go.mod, Makefile
(ldflags PACKAGE + 2 TEST_MODULE filters), .golangci.yaml, .goreleaser.yaml,
.mockery.yaml (+ gitops-engine's), Procfile, the codegen/proto generation
scripts (hack/generate-proto.sh, update-codegen.sh, update-openapi.sh), and
20 .proto files' go_package options. Also one OpenTelemetry tracer name
string in gitops-engine/pkg/sync/sync_context.go (a cosmestic label, not an
import, but worth keeping consistent).

CGO_ENABLED=0 go build ./... verified green for both the root module and
the nested gitops-engine module; go vet clean on both; go mod tidy run
(network available) to reconcile go.sum, dependency set unchanged.

Left alone, deliberately: doc-only mentions (docs/snyk/*.html scan reports,
gitops-engine/README.md), a comment-only reference in
.github/workflows/release.yaml, and one Renovate bot config line — none are
build- or codegen-load-bearing. Also left alone: comments citing upstream
GitHub issue URLs (github.com/argoproj/argo-cd/issues/NNNNN) and a handful
of test fixtures using "https://github.com/argoproj/argo-cd.git" as a
representative example repo URL — both are accurate historical/test-data
references, not stale self-references.

---------

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-19 11:27:06 -07:00
rumsteadandGitHub 32da51eb6b ci(gitops-engine): support tagged releases for gitops-engine (#27740)
Signed-off-by: rumstead <[email protected]>
2026-07-08 15:26:50 +00:00
Blake PetterssonandGitHub 7f99a543a5 chore: use test contexts throughout (#28314)
Signed-off-by: Blake Pettersson <[email protected]>
2026-06-17 11:34:29 -04:00
Lohit KolluriandGitHub 679cee550c test: Add t.Parallel() to util/app tests (#28177)
Signed-off-by: Lohit Kolluri <[email protected]>
2026-06-10 16:37:18 -04:00
Leonardo Luz AlmeidaandGitHub 3795f840c3 chore: fix gitops-engine mod name so it can be referenced by external repos (#26407)
Signed-off-by: Leonardo Luz Almeida <[email protected]>
2026-02-12 09:29:40 -05:00
fb2362dd3c chore(cmpserver): Fix modernize linter (#26317)
Signed-off-by: Matthieu MOREL <[email protected]>
Co-authored-by: Blake Pettersson <[email protected]>
2026-02-07 18:31:26 +01:00
Matthieu MORELandGitHub c16ce981b9 chore: enable noctx linter (#24765)
Signed-off-by: Matthieu MOREL <[email protected]>
2025-09-29 20:20:53 +02:00
Cayde6andGitHub 4d62686db3 fix: replace grpc.NewClient (#19653) (#24188)
Signed-off-by: Jack-R-lantern <[email protected]>
2025-09-11 10:05:57 -04:00
Cayde6andGitHub 19fe145d7f chore(migrate): migrate otelgrpc pkg interceptor to stats handler(#18258) (#18366)
Signed-off-by: Jack-R-lantern <[email protected]>
2025-07-09 22:29:24 +02:00
Matthieu MORELandGitHub 966efd4e88 chore(lint): enable sloppyReassign rule from go-critic (#23443)
Signed-off-by: Matthieu MOREL <[email protected]>
2025-06-17 11:46:50 -04:00
Matthieu MORELandGitHub 6f367b0edf chore(lint): enable emptyStringTest rule from go-critic (#23400)
Signed-off-by: Matthieu MOREL <[email protected]>
2025-06-15 20:25:12 +00:00
Michael CrenshawandGitHub cb484f375f chore(lint): enable tparallel linter (#23318)
Signed-off-by: Michael Crenshaw <[email protected]>
2025-06-08 15:10:55 +02:00
Michael CrenshawandGitHub 8e380c63d5 chore: enable lint for unused private fields (#23242)
Signed-off-by: Michael Crenshaw <[email protected]>
2025-06-05 07:47:55 -04:00
Kanika RanaandGitHub fc8411e9b8 chore: use name imports for argocd Utilio (#22836)
Signed-off-by: Kanika Rana <[email protected]>
2025-05-21 16:25:32 +00:00
Michael CrenshawGitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7caee1cfbb chore(ci): upgrade golangci-lint to v2 (#22484)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Michael Crenshaw <[email protected]>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 12:37:52 -04:00
Andrii KorotkovandGitHub f784a415bc chore(deps): Update some dependencies versions (#22228) (#22260)
Signed-off-by: Andrii Korotkov <[email protected]>
2025-03-21 16:27:12 +00:00
Matthieu MORELandGitHub 46fe0e9100 chore: use grpc-middleware interceptors (#22329)
Signed-off-by: Matthieu MOREL <[email protected]>
2025-03-13 15:25:38 +00:00
sivchariandGitHub b97525c11e chore: upgrade Go to 1.24 (#22242)
Signed-off-by: sivchari <[email protected]>
2025-03-10 10:14:41 -04:00
Matthieu MORELandGitHub 15e0a51a55 chore: bump to github.com/grpc-ecosystem/go-grpc-middleware/v2 (#22098)
Signed-off-by: Matthieu MOREL <[email protected]>
2025-03-10 10:06:54 -04:00
Michael CrenshawandGitHub 5e9ec0992a chore: embed trivial rand string function (#22177)
Signed-off-by: Michael Crenshaw <[email protected]>
2025-03-05 16:34:16 -05:00
Michael CrenshawandGitHub fb0fde4837 feat(cmp): pass empty env vars to plugins (#18720) (#22096)
Signed-off-by: Michael Crenshaw <[email protected]>
2025-03-02 18:01:50 -05:00
Matthieu MORELandGitHub fa2f98dcda chore: use github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus (#21937)
Signed-off-by: Matthieu MOREL <[email protected]>
2025-02-28 15:44:33 -05:00
8334da36f2 Bump major version to 3 (#21410)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: crenshaw-dev <[email protected]>
2025-01-10 16:14:00 -05:00
Matthieu MORELandGitHub eec6f8526a chore: enable unused-parameter from revive (#21365)
* chore: enable unused-parameter from revive

Signed-off-by: Matthieu MOREL <[email protected]>

* apply recommandations

Signed-off-by: Matthieu MOREL <[email protected]>

---------

Signed-off-by: Matthieu MOREL <[email protected]>
2025-01-07 10:12:56 -05:00
Matthieu MORELandGitHub 7a212a833c chore: enable use-any from revive (#21282)
Signed-off-by: Matthieu MOREL <[email protected]>
2025-01-02 18:26:59 -05:00
Matthieu MORELandGitHub 6a8208c4ca chore: enable importas for k8s.io/apimachinery/pkg/apis/meta/v1 (#21284)
Signed-off-by: Matthieu MOREL <[email protected]>
2024-12-31 10:34:11 +02:00
Matthieu MORELandGitHub c85bb38a83 chore: enable errorf of perfsprint linter (#21280)
Signed-off-by: Matthieu MOREL <[email protected]>
2024-12-30 10:56:41 +02:00
James McShaneandGitHub ca9a4b6601 feat(cmp): parameter to enable git creds to be shared from repo server to the plugin (#15107)
Signed-off-by: jmcshane <[email protected]>
2024-10-31 13:35:08 -04:00
Matthieu MORELandGitHub 4f6f65afb1 fix: use ErrorContains(t, err instead of Contains(t, err.Error() (#20220)
Signed-off-by: Matthieu MOREL <[email protected]>
2024-10-04 09:36:05 -04:00
Michael CrenshawandGitHub b71bcd6127 chore(refactor): move util function to util package (#19192)
Signed-off-by: Michael Crenshaw <[email protected]>
2024-07-25 10:33:16 -04:00
9d2c3826e2 feat: Allow return the client without performing a matchRepository (#18053)
* return the client without performing a matchRepository operation when the application'plugin be configured by its name

Signed-off-by: Javier Solana <[email protected]>

* add CheckPluginConfiguration pre-flight operation

Signed-off-by: Javier Solana <[email protected]>

* fix lint

Signed-off-by: Javier Solana <[email protected]>

* Missing comment

Signed-off-by: Javier Solana <[email protected]>

* remove WithFields
Signed-off-by: Javier Solana <[email protected]>

* fix captLocal
Signed-off-by: Javier Solana <[email protected]>

---------

Signed-off-by: Javier Solana <[email protected]>
Co-authored-by: Javier Solana <[email protected]>
2024-07-15 09:02:25 -04:00
pasha-codefreshandGitHub 039a8056e3 feat: support log level in cmp plugin, possibility to trace generated manifest (#18851)
* feat: support log level in cmp plugin, and add possibility to trace generated manifest

Signed-off-by: pashakostohrys <[email protected]>

* feat: support log level in cmp plugin, and add possibility to trace generated manifest

Signed-off-by: pashakostohrys <[email protected]>

---------

Signed-off-by: pashakostohrys <[email protected]>
2024-06-30 15:49:07 -04:00
Matthieu MORELandGitHub 721c38157b chore: enable require-error from testifylint on cmpserver and reposerver folders (#18702)
* chore: enable require-error from testifylint on cmpserver and reposerver folders

Signed-off-by: Matthieu MOREL <[email protected]>

* Update app_k8s_events_test.go

Signed-off-by: Matthieu MOREL <[email protected]>

---------

Signed-off-by: Matthieu MOREL <[email protected]>
2024-06-17 21:35:35 -04:00
Matthieu MORELandGitHub f0d7d3ca10 chore: enable errorlint linter on cmpserver and reposerver folders (#18629)
Signed-off-by: Matthieu MOREL <[email protected]>
2024-06-13 10:29:03 +03:00
Matthieu MORELandGitHub 417ff7b19e chore: enable gofumpt and whitespace linters (#18567)
Signed-off-by: Matthieu MOREL <[email protected]>
2024-06-11 15:41:55 +00:00
Matthieu MORELandGitHub eb14360d0b chore: enable goimports linter (#18564)
Signed-off-by: Matthieu MOREL <[email protected]>
2024-06-10 09:18:12 -04:00
Matthieu MORELandGitHub db300bad11 fix: enable misspell linter (#18412)
Signed-off-by: Matthieu MOREL <[email protected]>
2024-05-28 12:51:04 +03:00
790464f5d8 fix(deps): upgrade otel dependency (#18285)
Signed-off-by: Justin Marquis <[email protected]>
Co-authored-by: Soumya Ghosh Dastidar <[email protected]>
2024-05-20 13:35:29 -04:00
1d24c6df5c Fix some comments (#17830)
Signed-off-by: pullmerge <[email protected]>
Co-authored-by: pasha-codefresh <[email protected]>
2024-04-15 17:19:01 +03:00
pasha-codefreshandGitHub 85a808721d feat: support grpc message size as env (#17728) 2024-04-06 04:19:05 +03:00
Mathias PetermannandGitHub d9edeeb8dc feat(cmp): Print stderr output from command even on success (#15921) (#15973)
* feat(cmp): Print stderr output from command even on success

Signed-off-by: Mathias Petermann <[email protected]>

* docs(cmp): Document logging from cmp sidecard for development purposes

Signed-off-by: Mathias Petermann <[email protected]>

---------

Signed-off-by: Mathias Petermann <[email protected]>
2023-10-23 09:59:56 -04:00
ead7641794 fix: Add ENV variable to configure GRPC Keep Alive Time (#15656) (#15806)
* Add ENV variables to configure GRPC Keep Alive Time

Signed-off-by: Bhavika Sharma <[email protected]>

* Retrigger CI pipeline

Signed-off-by: Bhavika Sharma <[email protected]>

* Resolve conflict with master

Signed-off-by: Bhavika Sharma <[email protected]>

* Update docs/user-guide/environment-variables.md

Co-authored-by: Ishita Sequeira <[email protected]>
Signed-off-by: BhavikaSharma <[email protected]>

---------

Signed-off-by: Bhavika Sharma <[email protected]>
Signed-off-by: BhavikaSharma <[email protected]>
Co-authored-by: Ishita Sequeira <[email protected]>
2023-10-18 16:57:21 -04:00
Alexander MatyushentsevandGitHub 754bf8bdcc fix: stop creating new otel interceptor to avoid memory leak (#15174)
Signed-off-by: Alexander Matyushentsev <[email protected]>
2023-08-23 01:47:40 +00:00
Michael CrenshawandGitHub e676ac6661 fix: windows build (#15154)
Signed-off-by: Michael Crenshaw <[email protected]>
2023-08-22 16:57:49 +00:00
Ashin SabuandGitHub c39e1fbbd7 fix(cmp): send sigterm to cmp commands before sigkill to allow for potential cleanup (#9180) (#14955)
* fix: send sigterm to cmp commands before sigkill to allow for potential cleanup

Signed-off-by: Ashin Sabu <[email protected]>

* fix: unit test for runCommand in cmpserver to test cleanup modified

Signed-off-by: Ashin Sabu <[email protected]>

* fix: change unit test for plugin/runCommand to avoid bad trap along with lint fix

Signed-off-by: Ashin Sabu <[email protected]>

---------

Signed-off-by: Ashin Sabu <[email protected]>
2023-08-08 15:30:41 +00:00