39 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 dbecd2d18b fix: API group back to apps.hanzo.ai, the group the cluster actually serves
main declared Group = "cd.hanzo.ai" while every CRD, all four Applications and
every tracked object in hanzo-k8s are on apps.hanzo.ai. There are no
cd.hanzo.ai CRDs anywhere, so a build from main binds nothing: the controller
comes up healthy, watches a group with no resources, and silently stops
reconciling the fleet. The deployed image (sha-e1b9244, all three components)
is the only reason this has not fired.

The rename reached further than the group. common.go:215 moved the ownership
annotation to cd.hanzo.ai/tracking-id while live objects carry
apps.hanzo.ai/tracking-id, and the finalizers moved too
(resources-finalizer.cd.hanzo.ai), which would leave existing objects holding
finalizers no running controller removes. Renaming a CRD group plus the
ownership annotation plus the finalizers is a data migration over every managed
object, not a source edit — shipping it as an edit is the defect. Reverting
restores the property that was lost: main is deployable at any time.

Mitigating only by luck: prune is false on all three automated Applications, so
the failure mode is "GitOps stops" rather than "GitOps deletes". Not a design.

Verified: no occurrence was a hostname (checked for the argocd.hanzo.ai-style
substring trap; none), 29 files, zero residual, register.go now byte-identical
to the deployed baseline. go build ./... exits 0. TestGetGlobalProjects and
TestGetAppOfAppSummary fail identically on unmodified origin/main — pre-existing,
not from this change.

If cd.hanzo.ai is still wanted, it needs CRD install, object conversion,
annotation and finalizer rewrite across every tracked resource, and RBAC —
executed deliberately, not carried in a source constant.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-27 21:28:51 -07:00
zeekay 2ee31f825c rebrand: API group apps.hanzo.ai -> cd.hanzo.ai
apps.hanzo.ai collided head-on with the operator: its App CR already occupies
the resource name `apps.hanzo.ai` (plural `apps`, group `hanzo.ai`), so
`kubectl get apps.hanzo.ai` resolved to the operator's CR, not ours, and
`applications.apps.hanzo.ai` read as a stutter. cd.hanzo.ai gives the delivery
plane its own orthogonal group: applications/applicationsets/appprojects.cd.hanzo.ai
alongside the operator's apps.hanzo.ai. One name per concern.

Mechanically identical to e1b924475 (deploy.hanzo.ai -> apps.hanzo.ai): group
constant, every annotation/label/finalizer domain, the node.Group check, the
leader-election ID, the informer GVRs, RBAC apiGroups, and the 3 CRD manifests.
Also corrects the stale `+groupName=argoproj.io` marker in doc.go, which drove
nothing but misled every reader of this package, and the ArgoCD/argoproj naming
in the hanzo.yml cutover note.

Live cutover (CRD apply, CR re-home, image swap) stays separately greenlit —
hanzo.yml is deliberately build-only.
2026-07-25 15:11:48 -07:00
zeekayandHanzo Dev e1b924475c rebrand: API group deploy.hanzo.ai -> apps.hanzo.ai
The CRD kind is Application, so apps.hanzo.ai reads naturally
(applications/applicationsets/appprojects.apps.hanzo.ai). Flips the group
constant (pkg/apis/application/register.go), all annotation/label/finalizer
domains (tracking-id, installation-id, secret-type, refresh, hydrate,
resources-finalizer, etc.), the node.Group check, and the 3 CRD manifests.
Module path github.com/hanzoai/deploy and hanzocd-* object names unchanged.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-22 19:15:05 -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
argoproj-renovate[bot]GitHubargoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com>reggie-k
fbdef6e6b9 chore(deps): update module github.com/vektra/mockery/v3 to v3.7.1 (#28270)
Signed-off-by: renovate[bot] <renovate[bot]@users.noreply.github.com>
Signed-off-by: reggie-k <[email protected]>
Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com>
Co-authored-by: reggie-k <[email protected]>
2026-06-15 10:16:04 +03:00
dudineaandGitHub fd0270af35 chore(deps): bump go-client to v0.36.1, controller-runtime to v0.24.1 (#27804) (#27955)
Signed-off-by: Eugene Doudine <[email protected]>
2026-06-09 11:34:06 -04:00
Blake PetterssonandGitHub 9ba00abafe chore: upgrade mockery (#23387)
Signed-off-by: Blake Pettersson <[email protected]>
2025-06-13 19:58:11 +00:00
Peter JiangandGitHub ab6dcaf72a chore: upgrade k8s to 1.33.1 (#23362)
Signed-off-by: Peter Jiang <[email protected]>
2025-06-13 17:06:19 +00:00
Michael CrenshawandGitHub ab0b3e98fe chore(test): upgrade to mockery v3 (#22999)
Signed-off-by: Michael Crenshaw <[email protected]>
2025-05-16 16:38:51 -04:00
Michael CrenshawandGitHub b1ae6ec8f9 chore(test): fix mockery deprecation warnings (#22998)
Signed-off-by: Michael Crenshaw <[email protected]>
2025-05-15 11:06:03 -07:00
rumsteadandGitHub 266c255f27 feat(server): make deep copies of objects returned by informers (#22173) (#22179)
Signed-off-by: rumstead <[email protected]>
2025-03-10 14:29:07 +00:00
sivchariandGitHub c8496f9ff8 feat: Support kube 1.32 (#21805)
Signed-off-by: sivchari <[email protected]>
2025-03-04 11:15:35 -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
Michael CrenshawandGitHub b66605298c fix(codegen): use kube_codegen.sh deepcopy and client gen correctly (#20644) 2024-11-03 22:31:04 -05:00
1a58cd01d3 chore(deps): upgrade k8s version and client-go (#15852)
* chore(deps): upgrade k8s version and client-go

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

* revert bad merge

Signed-off-by: Michael Crenshaw <[email protected]>

* fix codegen

Signed-off-by: Michael Crenshaw <[email protected]>

* fix codegen

Signed-off-by: Michael Crenshaw <[email protected]>

* fix: check for double definition

As found in #13965 (and as a follow-up to #13999), we also need to
define what happens if _both_ managedNamespaceMetadata _and_ an
Application manifest are both defined for the same namespace.

The idea here is that if that happens, we emit an
`ApplicationConditionRepeatedResourceWarning`, and set the sync status
to `Unknown`, since it's unclear what is supposed to happen.

The user will then have the option of removing one of the two
definitions.

Signed-off-by: Blake Pettersson <[email protected]>

* fix: check for double definition

A simpler fix - don't add a managed namespace to the targetObjs list if
a namespace already exists in the application source.

Signed-off-by: Blake Pettersson <[email protected]>

* build: extra space in doc

Signed-off-by: Blake Pettersson <[email protected]>

* build: extra space in doc, again

Signed-off-by: Blake Pettersson <[email protected]>

* chore: bump gitops-engine

Signed-off-by: Blake Pettersson <[email protected]>

---------

Signed-off-by: fengshunli <[email protected]>
Signed-off-by: Michael Crenshaw <[email protected]>
Signed-off-by: Blake Pettersson <[email protected]>
Co-authored-by: fengshunli <[email protected]>
Co-authored-by: Michael Crenshaw <[email protected]>
2023-10-18 08:17:00 -07:00
cc1b6d03da chore: upgrade to go 1.20 (#12014)
* chore: Upgrade Golang to 1.19 (#10176) (#10186)

* Upgrade Golang to 1.19

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

* go mod tidy with go 1.19

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

* Replace deprecated ioutil

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

* make codegen changes

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

* Codegen Changes

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

chore: upgrade golangci-lint to 1.50.1

Signed-off-by: Michael Crenshaw <[email protected]>

missed a spot

Signed-off-by: Michael Crenshaw <[email protected]>

tidy

Signed-off-by: Michael Crenshaw <[email protected]>

fix bad merge

Signed-off-by: Michael Crenshaw <[email protected]>

Author:    Michael Crenshaw <[email protected]>
Co-Authored-By: OmarKalloush <[email protected]>

fix indentation

fix lint and codegen

Signed-off-by: Michael Crenshaw <[email protected]>

* 1.20

Signed-off-by: Michael Crenshaw <[email protected]>

* fix lint errors

Signed-off-by: Michael Crenshaw <[email protected]>

* fix "syntax error: unexpected var after top level declaration" in "make test-race-local"

Signed-off-by: Michael Crenshaw <[email protected]>

---------

Signed-off-by: Michael Crenshaw <[email protected]>
Co-authored-by: OmarKalloush <[email protected]>
2023-02-17 15:21:14 -05:00
7f3c6dd561 feat: create cli commands for ApplicationSet (#9584)
* feat: add applicationset cli commands

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

* squashed commits and rebased with master

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

* addressed comments

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

* fix lint errors

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

* Retrigger CI pipeline

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

* Retrigger CI pipeline

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

* feat: add applicationset cli commands

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

* addressed comments

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

* fix lint errors

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

* Retrigger CI pipeline

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

* Retrigger CI pipeline

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

* Addressed PR comments

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

* removed duplicate imports

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

* fix CI errors

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

* address PR comments

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

* add k8s RBAC, docs tweaks

Signed-off-by: CI <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>

* rebase master branch

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

* Addressed PR coments

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

* remove unnecessary fields, add docs

Signed-off-by: CI <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>

* fix unit test

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

Signed-off-by: ishitasequeira <[email protected]>
Signed-off-by: CI <[email protected]>
Co-authored-by: CI <[email protected]>
2022-09-14 09:27:15 +02:00
Ishita SequeiraandGitHub b6d97ab6f2 chore: downgrade go version to v1.18 (#10351)
Signed-off-by: ishitasequeira <[email protected]>

Signed-off-by: ishitasequeira <[email protected]>
2022-08-16 14:55:00 +00:00
OmarKalloushandGitHub 0ae8c44b14 chore: Upgrade Golang to 1.19 (#10176) (#10186)
* Upgrade Golang to 1.19

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

* go mod tidy with go 1.19

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

* Replace deprecated ioutil

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

* make codegen changes

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

* Codegen Changes

Signed-off-by: OmarKalloush <[email protected]>
2022-08-05 12:59:28 -04:00
Alexander MatyushentsevandGitHub 54916984c6 chore: upgrade k8s client to v0.24.2 (#9932)
Signed-off-by: Alexander Matyushentsev <[email protected]>
2022-07-12 17:46:10 -07:00
Alexander MatyushentsevandGitHub 15115fb5af chore: upgrade k8s client to v1.23 (#8213)
Signed-off-by: Alexander Matyushentsev <[email protected]>
2022-01-20 08:28:11 +01:00
Alexander MatyushentsevandGitHub 8fa6dda80f fix: Argo CD should provide apiversion and kinds to 'helm template' command (#7519)
Signed-off-by: Alexander Matyushentsev <[email protected]>
2021-10-25 16:52:19 -07:00
1d472ba293 chore: Upgrade Go module to v2 (#5931)
* chore: Upgrade Go module to v2

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

* Restore import order

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

* fix knowntypes_normalizer codegen error

Signed-off-by: Alexander Matyushentsev <[email protected]>

* fix codegen

Signed-off-by: Alexander Matyushentsev <[email protected]>

* fix Procfile

Signed-off-by: Alexander Matyushentsev <[email protected]>

Co-authored-by: Alexander Matyushentsev <[email protected]>
2021-04-01 20:44:18 +02:00
Alexander MatyushentsevandGitHub 68d6a8e2db refactor: upgrade k8s client to v0.19.2 (#4545) 2020-10-13 13:01:26 -07:00
Alexander MatyushentsevandGitHub 2326678221 refactor: upgrade k8s client to 1.18 (#4046)
* refactor: upgrade k8s client to 1.18

* remove unnecessary go mod replacements
2020-08-05 11:36:40 -07:00
Jesse SuenandGitHub a1a2f49277 Update k8s dependency to v1.16 (#2828) 2019-12-10 18:33:58 -08:00
Jesse SuenandGitHub ab99302a36 Update k8s libraries to v1.14 (#1806) 2019-06-25 02:52:58 -07:00
Jesse SuenandGitHub 31adc7c973 Add OpenAPI validation in CRD schema (#1256) 2019-04-06 17:18:00 -07:00
Alex CollinsandGitHub 33a8a9f7d7 Tweak lint (#1259) 2019-03-12 10:31:35 -07:00
Alex CollinsandGitHub afe74b9fb4 Lints local imports. Closes #1197 (#1198) 2019-02-27 18:05:55 -08:00
Jesse SuenandGitHub e2e0cf7204 Update dependencies to k8s v1.12 and client-go v9.0 (#729)
Update dependencies to k8s v1.12 and client-go v9.0 (resolves #353)
Fix issue where applications could not be deleted on k8s v1.12 (resolves #718)
Refactor k8s dynamic resource libraries to promote code reuse
2018-10-28 22:46:13 -07:00
Alexander MatyushentsevandGitHub 9810578980 Issue #295 - add project CRD, basic API and CLI implementation (#299) 2018-06-20 14:48:31 -07:00
Jesse Suen cde582abf2 Change implementation of clusters from CRD to K8s secret 2018-02-26 01:59:02 -08:00
Jesse Suen 40d46b1ace Generate the application clientset 2018-02-16 17:34:13 -08:00
Jesse Suen 34cb357e9b server side .proto and gRPC stubs for cluster CRUD operations 2018-02-16 17:08:57 -08:00
Jesse Suen 6f1ee1338f Install and codegen support for cluster CRD 2018-02-16 15:18:37 -08:00
Alexander MatyushentsevandGitHub 46d131ab0b Add application CRD definition. Implement CRD install CLI command (#1)
* Add application CRD definition. Implement CRD install CLI command

* Remove unnecessary argo package dependency
2018-02-16 12:58:02 -08:00