21 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 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
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
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
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
8d236083c9 feat: project-scoped repository credential improvements (#18388)
* feat: project-scoped repo cred improvements

Implementation of #18290

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

* fix: missed a test

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

* wip project key changes

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

* test: update mocks

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

* test: fix tests

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

* fix: equivalence even if project is empty

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

* fix: wip delete

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

* refactor: remove repositorydb

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

* chore: improve logging

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

* fix: pass project to getrepository

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

* test: fix failing test

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

* fix: compare with project secret instead of app secret

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

* fix: get repository needs same logic as delete

Need to update the spec accordingly.

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

* feat: add project flag to repo rm command

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

* docs: make codegen

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

* test: fix failing test

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

* test: more failing tests

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

* chore: minor cleanups

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

* chore: propagate project from ui

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

* test: add new test cases

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

* chore: code review, improve formulation

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

* refactor: address cr feedback

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

---------

Signed-off-by: Blake Pettersson <[email protected]>
Co-authored-by: Alexander Matyushentsev <[email protected]>
2024-06-07 18:47:55 -07:00
Alexander MatyushentsevandGitHub dc47231350 feat: webhook should use 'rename' to copy app manifests of previous commit (#16754)
Signed-off-by: Alexander Matyushentsev <[email protected]>
2024-01-05 08:53:52 -08:00
Nolan EmirotandGitHub 57c226dcff chore: update redis client to v9 (#12746)
* chore: update redis

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

* chore: update redis

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

* chore: update redis

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

---------

Signed-off-by: emirot <[email protected]>
2023-03-08 09:42:10 -05:00
Alexander MatyushentsevandGitHub 9807357960 feat: Use encrypted cookie to store OAuth2 state nonce (instead of redis) (#8241)
feat: Use encrypted cookie to store OAuth2 state nonce (instead of redis) (#8241)

Signed-off-by: Alexander Matyushentsev <[email protected]>
2022-01-26 10:59:50 -08:00
Noam GalandGitHub 4ba654349b fixed max to use MaxInt64 value (#6911)
Signed-off-by: Noam Gal <[email protected]>
2021-08-04 11:07:54 -07:00
Ishita SequeiraandGitHub 00c561cac9 feat: simplify parametrization of Argo CD server processes (#6328)
feat: simplify parametrization of Argo CD server processes  (#6328)

Signed-off-by: Ishita Sequeira <[email protected]>
2021-06-10 13:03:47 -07:00
0bf70f75f1 chore: compile-time validation of adherence to interface contract (#5850)
* fix: compile time validation of interface contract

Signed-off-by: Shoubhik Bose <[email protected]>

* fix: application specific parameter override is not reflected in application parameters tab (#5845)

Signed-off-by: May Zhang <[email protected]>
Signed-off-by: Shoubhik Bose <[email protected]>

* chore: compile time resolution

Signed-off-by: Shoubhik Bose <[email protected]>

* chore: adherance to contract

Signed-off-by: Shoubhik Bose <[email protected]>

* Revert "fix: application specific parameter override is not reflected in application parameters tab (#5845)"

This reverts commit 43c801206262032967ef0b477db668c1bb17bfca.

Signed-off-by: Shoubhik Bose <[email protected]>

Co-authored-by: May Zhang <[email protected]>
2021-04-15 12:45:57 -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 cae9730d55 feat: support token revocation (#5477)
Signed-off-by: Alexander Matyushentsev <[email protected]>
2021-02-16 10:33:40 -08:00
dhermanandGitHub 046719f076 perf: upgrade redis deps to enable compression (#4259)
Newer versions of the redis go libraries include built-in support for
compression of values going to and from redis.  Since the controller
is extremely chatty and makes heavy use of redis for caching, this
reduces the amount of bandwidth requires significantly.

This change should be backwards compatible since the redis libraries
detect whether or not compression was used and does not error in the
no compression case.

Fixes #4256
2020-09-04 13:59:59 -07:00
Alexander MatyushentsevandGitHub b5b1297a31 refactor: Replace status.observedAt with redis pub/sub channels for resource tree updates (#1340) (#4208) 2020-08-31 10:18:12 -07:00
Alexander MatyushentsevandGitHub ca0967a624 feat: Display cluster info on cluster details page (#3793)
* feat: Display cluster info on cluster details page

* Store cluster info in cache instead of secret
2020-06-22 17:51:20 -07:00
Alexander MatyushentsevandGitHub 1c1add334d feat: limit the maximum number of concurrent login attempts (#3467)
* feat: limit the maximum number of concurrent login attempts

* unit test rate limiter

* address reviewer questions
2020-04-23 12:33:17 -07:00
b94e9a27f6 fix: Add initial implementation for rate limiting failed logins (#3404)
* fix: Add initial implementation  for rate limiting failed logins

* Trigger test build

* Remove deprecated code and fix new project tests

* move cache related code from sessionmanager to cache access wrapper

* avoid using sleep in sessionmanager tests

* mention SECONDS in session manager environment variables to make it easier to understand meaning of each variable

* Login button should be disabled while user is waiting for login result

* prevent timing-based user enumeration attack

* reject too many failed attempts; always compute hash and introduce random delay

* remove unused constants

* fix linter errors

Co-authored-by: Alexander Matyushentsev <[email protected]>
2020-04-21 11:10:25 -07:00
Alexander MatyushentsevandGitHub b6742d8ce9 Issue #2620 - Cluster list page fails if any cluster is not reachable (#2621) 2019-11-01 13:22:51 -07:00
Alex CollinsandGitHub 1b8ab98873 Makes cache timeouts configurable (#2412) 2019-10-16 15:46:45 -07:00