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]>
This commit is contained in:
2026-07-28 16:32:14 -07:00
co-authored by Hanzo Dev
parent d5bf5ce77e
commit 446e343a3d
1328 changed files with 15368 additions and 15368 deletions
+4 -4
View File
@@ -6,13 +6,13 @@ labels: ['bug', 'triage/pending']
assignees: ''
---
<!-- If you are trying to resolve an environment-specific issue or have a one-off question about the edge case that does not require a feature then please consider asking a question in argocd slack [channel](https://argoproj.github.io/community/join-slack). -->
<!-- If you are trying to resolve an environment-specific issue or have a one-off question about the edge case that does not require a feature then please consider asking a question in cd slack [channel](https://argoproj.github.io/community/join-slack). -->
Checklist:
- [ ] I've searched in the docs and FAQ for my answer: https://bit.ly/argocd-faq.
- [ ] I've searched in the docs and FAQ for my answer: https://bit.ly/cd-faq.
- [ ] I've included steps to reproduce the bug.
- [ ] I've pasted the output of `argocd version`.
- [ ] I've pasted the output of `cd version`.
**Describe the bug**
@@ -33,7 +33,7 @@ Checklist:
**Version**
```shell
Paste the output from `argocd version` here.
Paste the output from `cd version` here.
```
**Logs**
+1 -1
View File
@@ -6,7 +6,7 @@ contact_links:
about: Much help can be found in the docs
- name: Ask a question
url: https://github.com/argoproj/argo-cd/discussions/new
about: Ask a question or start a discussion about Argo CD
about: Ask a question or start a discussion about Hanzo CD
- name: Chat on Slack
url: https://argoproj.github.io/community/join-slack
about: Maybe chatting with the community can help
+3 -3
View File
@@ -8,9 +8,9 @@ assignees: ''
Checklist:
- [ ] I am willing to maintain this tool, or have another Argo CD maintainer who is.
- [ ] I have another Argo CD maintainer who is willing to help maintain this tool (there needs to be at least two maintainers willing to maintain this tool)
- [ ] I have a lead sponsor who is a core Argo CD maintainer
- [ ] I am willing to maintain this tool, or have another Hanzo CD maintainer who is.
- [ ] I have another Hanzo CD maintainer who is willing to help maintain this tool (there needs to be at least two maintainers willing to maintain this tool)
- [ ] I have a lead sponsor who is a core Hanzo CD maintainer
- [ ] There is a PR which adds said tool - this is so that the maintainers can assess the impact of having this in the tree
- [ ] I have given a motivation why this should be added
+15 -15
View File
@@ -1,7 +1,7 @@
---
name: Argo CD Release
name: Hanzo CD Release
about: Used by our Release Champion to track progress of a minor release
title: 'Argo CD Release vX.X'
title: 'Hanzo CD Release vX.X'
labels: 'release'
assignees: ''
---
@@ -15,7 +15,7 @@ Target GA date: ___. __, ____
- [ ] Review open Renovate PRs labeled `production-binary` for helm, kustomize, git-lfs, and git apt updates; merge any that pass CI and are compatible with this release.
- [ ] Check latest K8s version in the CI e2e matrix - if a newer K8s version exists, open a PR to bump it.
- [ ] Check Go version in CI, Dockerfiles and `go.mod` - if a newer Go version exists, open a PR to bump it in all those files.
- [ ] Check `k8s.io/kubernetes` Go client version in `go.mod`- if a newer Go K8s client version exists, open a PR to bump it. Make sure to bump Go K8s client in `gitops-engine` `go.mod` as well and to follow this: https://github.com/argoproj/argo-cd/blob/d7760253c4bd2fee045411a70330eb4fce5b523a/gitops-engine/go.mod#L106
- [ ] Check `k8s.io/kubernetes` Go client version in `go.mod`- if a newer Go K8s client version exists, open a PR to bump it. Make sure to bump Go K8s client in `gitops-engine` `go.mod` as well and to follow this: https://github.com/hanzoai/cd/blob/d7760253c4bd2fee045411a70330eb4fce5b523a/gitops-engine/go.mod#L106
## RC1 Release Checklist
@@ -24,12 +24,12 @@ Target GA date: ___. __, ____
- [ ] Create new release branch (or delegate this task to an Approver)
- [ ] Add the release branch to ReadTheDocs
- [ ] Cut RC1 (or delegate this task to an Approver and coordinate timing)
- [ ] Run the [Init ArgoCD Release workflow](https://github.com/argoproj/argo-cd/actions/workflows/init-release.yaml) from the release branch
- [ ] Run the [Init Hanzo CD Release workflow](https://github.com/hanzoai/cd/actions/workflows/init-release.yaml) from the release branch
- [ ] Review and merge the generated version bump PR
- [ ] Run `./hack/trigger-release.sh` to push the release tag
- [ ] Monitor the [Publish ArgoCD Release workflow](https://github.com/argoproj/argo-cd/actions/workflows/release.yaml)
- [ ] Verify the release on [GitHub releases](https://github.com/argoproj/argo-cd/releases)
- [ ] Verify the container image on [Quay.io](https://quay.io/repository/argoproj/argocd?tab=tags)
- [ ] Monitor the [Publish Hanzo CD Release workflow](https://github.com/hanzoai/cd/actions/workflows/release.yaml)
- [ ] Verify the release on [GitHub releases](https://github.com/hanzoai/cd/releases)
- [ ] Verify the container image on [Quay.io](https://quay.io/repository/argoproj/cd?tab=tags)
- [ ] Confirm the new version appears in [Read the Docs](https://argo-cd.readthedocs.io/)
- [ ] Verify the docs release build in https://app.readthedocs.org/projects/argo-cd/ succeeded and retry if failed (requires an Approver with admin creds to readthedocs)
- [ ] Announce RC1 release
@@ -37,11 +37,11 @@ Target GA date: ___. __, ____
- [ ] Publish tweet and blog post
- [ ] Post in #argo-cd and #argo-announcements requesting help testing:
```
:mega: Argo CD v{MAJOR}.{MINOR}.{PATCH}-rc{RC_NUMBER} is OUT NOW! :argocd::tada:
:mega: Hanzo CD v{MAJOR}.{MINOR}.{PATCH}-rc{RC_NUMBER} is OUT NOW! :cd::tada:
Please go through the following resources to know more about the release:
Release notes: https://github.com/argoproj/argo-cd/releases/tag/v{VERSION}
Release notes: https://github.com/hanzoai/cd/releases/tag/v{VERSION}
Blog: {BLOG_POST_URL}
We'd love your help testing this release candidate! Please try it out in your environments and report any issues you find. This helps us ensure a stable GA release.
@@ -65,12 +65,12 @@ Target GA date: ___. __, ____
> **Action Required**: Please upgrade to a [supported version](https://argo-cd.readthedocs.io/en/stable/operator-manual/upgrading/overview/) (v{SUPPORTED_VERSION_1}, v{SUPPORTED_VERSION_2}, or v{NEW_VERSION}).
```
- [ ] Cut GA release (or delegate this task to an Approver and coordinate timing)
- [ ] Run the [Init ArgoCD Release workflow](https://github.com/argoproj/argo-cd/actions/workflows/init-release.yaml) from the release branch
- [ ] Run the [Init Hanzo CD Release workflow](https://github.com/hanzoai/cd/actions/workflows/init-release.yaml) from the release branch
- [ ] Review and merge the generated version bump PR
- [ ] Run `./hack/trigger-release.sh` to push the release tag
- [ ] Monitor the [Publish ArgoCD Release workflow](https://github.com/argoproj/argo-cd/actions/workflows/release.yaml)
- [ ] Verify the release on [GitHub releases](https://github.com/argoproj/argo-cd/releases)
- [ ] Verify the container image on [Quay.io](https://quay.io/repository/argoproj/argocd?tab=tags)
- [ ] Monitor the [Publish Hanzo CD Release workflow](https://github.com/hanzoai/cd/actions/workflows/release.yaml)
- [ ] Verify the release on [GitHub releases](https://github.com/hanzoai/cd/releases)
- [ ] Verify the container image on [Quay.io](https://quay.io/repository/argoproj/cd?tab=tags)
- [ ] Verify the `stable` tag has been updated
- [ ] Confirm the new version appears in [Read the Docs](https://argo-cd.readthedocs.io/)
- [ ] Verify the docs release build in https://app.readthedocs.org/projects/argo-cd/ succeeded and retry if failed (requires an Approver with admin creds to readthedocs)
@@ -79,14 +79,14 @@ Target GA date: ___. __, ____
- [ ] Publish tweet and blog post
- [ ] Post in #argo-cd and #argo-announcements announcing the release and EOL:
```
:mega: Argo CD v{MAJOR}.{MINOR} is OUT NOW! :argocd::tada:
:mega: Hanzo CD v{MAJOR}.{MINOR} is OUT NOW! :cd::tada:
Please go through the following resources to know more about the release:
Upgrade instructions: https://argo-cd.readthedocs.io/en/latest/operator-manual/upgrading/{PREV_MINOR}-{MAJOR}.{MINOR}/
Blog: {BLOG_POST_URL}
:warning: IMPORTANT: With the release of Argo CD v{MAJOR}.{MINOR}, support for Argo CD v{EOL_VERSION} has officially reached End of Life (EOL).
:warning: IMPORTANT: With the release of Hanzo CD v{MAJOR}.{MINOR}, support for Hanzo CD v{EOL_VERSION} has officially reached End of Life (EOL).
Thanks to all the folks who spent their time contributing to this release in any way possible!
```
+6 -6
View File
@@ -34,7 +34,7 @@ jobs:
id: get-target-version
run: |
set -ue
CURRENT_VERSION=$(grep 'module github.com/argoproj/argo-cd' go.mod | awk '{print $2}' | sed 's/.*\/v//')
CURRENT_VERSION=$(grep 'module github.com/hanzoai/cd' go.mod | awk '{print $2}' | sed 's/.*\/v//')
echo "TARGET_VERSION=$((CURRENT_VERSION + 1))" >> $GITHUB_OUTPUT
- name: Copy source code to GOPATH
@@ -45,7 +45,7 @@ jobs:
- name: Run script to bump the version
run: |
hack/bump-major-version.sh
working-directory: /home/runner/go/src/github.com/argoproj/argo-cd
working-directory: /home/runner/go/src/github.com/hanzoai/cd
- name: Setup Golang
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
@@ -62,12 +62,12 @@ jobs:
# We need to vendor go modules for codegen yet
go mod download
go mod vendor -v
working-directory: /home/runner/go/src/github.com/argoproj/argo-cd
working-directory: /home/runner/go/src/github.com/hanzoai/cd
- name: Install toolchain for codegen
run: |
make install-codegen-tools-local
make install-go-tools-local
working-directory: /home/runner/go/src/github.com/argoproj/argo-cd
working-directory: /home/runner/go/src/github.com/hanzoai/cd
# We install kustomize in the dist directory
- name: Add dist to PATH
run: |
@@ -77,12 +77,12 @@ jobs:
set -x
export GOPATH=$(go env GOPATH)
make codegen-local
working-directory: /home/runner/go/src/github.com/argoproj/argo-cd
working-directory: /home/runner/go/src/github.com/hanzoai/cd
- name: Copy changes back
run: |
# Copy the contents back, but skip the .git directory
rsync -a --exclude=.git /home/runner/go/src/github.com/argoproj/argo-cd/ ../argo-cd
rsync -a --exclude=.git /home/runner/go/src/github.com/hanzoai/cd/ ../argo-cd
- name: Create pull request
run: |
+4 -4
View File
@@ -179,7 +179,7 @@ jobs:
with:
persist-credentials: false
- name: Create symlink in GOPATH
run: ln -s $(pwd) ~/go/src/github.com/argoproj/argo-cd
run: ln -s $(pwd) ~/go/src/github.com/hanzoai/cd
- name: Setup Golang
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
@@ -256,7 +256,7 @@ jobs:
with:
persist-credentials: false
- name: Create symlink in GOPATH
run: ln -s $(pwd) ~/go/src/github.com/argoproj/argo-cd
run: ln -s $(pwd) ~/go/src/github.com/hanzoai/cd
- name: Setup Golang
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
@@ -472,7 +472,7 @@ jobs:
go tool covdata merge -pcombine -i=test-results,test-results/gitops-engine -o test-results/merged
go tool covdata textfmt -i=test-results/merged -o test-results/unit-coverage.out
- name: Generate e2e test coverage profile
# We generate coverage reports for all Argo CD components, but only the applicationset-controller,
# We generate coverage reports for all Hanzo CD components, but only the applicationset-controller,
# app-controller, repo-server, and commit-server report contain coverage data. The other components currently
# don't shut down gracefully, so no coverage data is produced. Once those components are fixed, we can add
# references to their coverage output directories.
@@ -542,7 +542,7 @@ jobs:
CD_E2E_K3S: 'true'
CD_IN_CI: 'true'
CD_E2E_APISERVER_PORT: '8088'
CD_APPLICATION_NAMESPACES: 'argocd-e2e-external,argocd-e2e-external-2'
CD_APPLICATION_NAMESPACES: 'cd-e2e-external,cd-e2e-external-2'
CD_SERVER: '127.0.0.1:8088'
GITHUB_TOKEN: ${{ secrets.E2E_TEST_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITLAB_TOKEN: ${{ secrets.E2E_TEST_GITLAB_TOKEN }}
+8 -8
View File
@@ -54,9 +54,9 @@ jobs:
# Calculate image names with defaults
IMAGE_NAMESPACE="${VARS_IMAGE_NAMESPACE:-argoproj}"
IMAGE_REPOSITORY="${VARS_IMAGE_REPOSITORY:-argocd}"
IMAGE_REPOSITORY="${VARS_IMAGE_REPOSITORY:-cd}"
GHCR_NAMESPACE="${VARS_GHCR_NAMESPACE:-$GITHUB_REPOSITORY}"
GHCR_REPOSITORY="${VARS_GHCR_REPOSITORY:-argocd}"
GHCR_REPOSITORY="${VARS_GHCR_REPOSITORY:-cd}"
echo "image_namespace=$IMAGE_NAMESPACE" >> $GITHUB_OUTPUT
echo "image_repository=$IMAGE_REPOSITORY" >> $GITHUB_OUTPUT
@@ -99,7 +99,7 @@ jobs:
needs: [set-vars]
permissions:
contents: read
packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
packages: write # for pushing packages to GHCR, which is used by cd.apps.apps.hanzo.ai to avoid polluting Quay with tags
id-token: write # for creating OIDC tokens for signing.
if: ${{ (github.repository == 'argoproj/argo-cd' || needs.set-vars.outputs.image_namespace != 'argoproj') && github.event_name != 'push' }}
uses: ./.github/workflows/image-reuse.yaml
@@ -114,7 +114,7 @@ jobs:
needs: [set-vars]
permissions:
contents: read
packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
packages: write # for pushing packages to GHCR, which is used by cd.apps.apps.hanzo.ai to avoid polluting Quay with tags
id-token: write # for creating OIDC tokens for signing.
if: ${{ (github.repository == 'argoproj/argo-cd' || needs.set-vars.outputs.image_namespace != 'argoproj') && github.event_name == 'push' }}
uses: ./.github/workflows/image-reuse.yaml
@@ -157,7 +157,7 @@ jobs:
- set-vars
permissions:
contents: write # for git to push upgrade commit if not already deployed
packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
packages: write # for pushing packages to GHCR, which is used by cd.apps.apps.hanzo.ai to avoid polluting Quay with tags
if: ${{ github.repository == 'argoproj/argo-cd' && github.event_name == 'push' }}
runs-on: ubuntu-24.04
steps:
@@ -168,10 +168,10 @@ jobs:
env:
TOKEN: ${{ secrets.TOKEN }}
- run: |
docker run -u $(id -u):$(id -g) -v $(pwd):/src -w /src --rm -t ghcr.io/argoproj/argo-cd/argocd:${NEEDS_SET_VARS_OUTPUTS_IMAGE_TAG} kustomize edit set image quay.io/argoproj/argocd=ghcr.io/argoproj/argo-cd/argocd:${NEEDS_SET_VARS_OUTPUTS_IMAGE_TAG}
docker run -u $(id -u):$(id -g) -v $(pwd):/src -w /src --rm -t ghcr.io/argoproj/argo-cd/cd:${NEEDS_SET_VARS_OUTPUTS_IMAGE_TAG} kustomize edit set image quay.io/argoproj/cd=ghcr.io/argoproj/argo-cd/cd:${NEEDS_SET_VARS_OUTPUTS_IMAGE_TAG}
git config --global user.email '[email protected]'
git config --global user.name 'CI'
git diff --exit-code && echo 'Already deployed' || (git commit -am 'Upgrade argocd to ${NEEDS_SET_VARS_OUTPUTS_IMAGE_TAG}' && git push)
working-directory: argoproj-deployments/argocd
git diff --exit-code && echo 'Already deployed' || (git commit -am 'Upgrade cd to ${NEEDS_SET_VARS_OUTPUTS_IMAGE_TAG}' && git push)
working-directory: argoproj-deployments/cd
env:
NEEDS_SET_VARS_OUTPUTS_IMAGE_TAG: ${{ needs.set-vars.outputs.image-tag }}
+3 -3
View File
@@ -1,4 +1,4 @@
name: Init ArgoCD Release
name: Init Hanzo CD Release
on:
workflow_dispatch:
inputs:
@@ -30,7 +30,7 @@ jobs:
# to generate the correct image name in the manifests
IMAGE_REGISTRY: ${{ vars.IMAGE_REGISTRY || 'quay.io' }}
IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE || 'argoproj' }}
IMAGE_REPOSITORY: ${{ vars.IMAGE_REPOSITORY || 'argocd' }}
IMAGE_REPOSITORY: ${{ vars.IMAGE_REPOSITORY || 'cd' }}
steps:
- name: Harden the runner (Audit all outbound calls)
if: ${{ vars.disable_harden_runner != 'true' }}
@@ -72,7 +72,7 @@ jobs:
# Derive the major version from TARGET_VERSION so this works across future major bumps.
GE_VERSION="v${{ inputs.TARGET_VERSION }}"
MAJOR=$(echo "${{ inputs.TARGET_VERSION }}" | cut -d. -f1)
GE_MODULE="github.com/argoproj/argo-cd/gitops-engine/v${MAJOR}"
GE_MODULE="github.com/hanzoai/cd/gitops-engine/v${MAJOR}"
sed -i "s|${GE_MODULE} v[^ ]*|${GE_MODULE} ${GE_VERSION}|" go.mod
# We install kustomize in the dist directory
+14 -14
View File
@@ -1,4 +1,4 @@
name: Publish ArgoCD Release
name: Publish Hanzo CD Release
on:
push:
tags:
@@ -11,12 +11,12 @@ permissions: {}
env:
# renovate: datasource=golang-version packageName=golang
GOLANG_VERSION: '1.26.5' # Note: go-version must also be set in job argocd-image.with.go-version
GOLANG_VERSION: '1.26.5' # Note: go-version must also be set in job cd-image.with.go-version
# a workaround to disable harden runner
STEP_SECURITY_HARDEN_RUNNER: ${{ vars.disable_harden_runner }}
jobs:
argocd-image:
cd-image:
needs: [setup-variables]
permissions:
contents: read
@@ -86,7 +86,7 @@ jobs:
# Calculate configuration with defaults
ENABLE_FORK_RELEASES="${VARS_ENABLE_FORK_RELEASES:-false}"
IMAGE_NAMESPACE="${VARS_IMAGE_NAMESPACE:-argoproj}"
IMAGE_REPOSITORY="${VARS_IMAGE_REPOSITORY:-argocd}"
IMAGE_REPOSITORY="${VARS_IMAGE_REPOSITORY:-cd}"
echo "enable_fork_releases=$ENABLE_FORK_RELEASES" >> $GITHUB_OUTPUT
@@ -105,8 +105,8 @@ jobs:
VARS_IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE }}
VARS_IMAGE_REPOSITORY: ${{ vars.IMAGE_REPOSITORY }}
argocd-image-provenance:
needs: [setup-variables, argocd-image]
cd-image-provenance:
needs: [setup-variables, cd-image]
permissions:
actions: read # for detecting the Github Actions environment.
id-token: write # for creating OIDC tokens for signing.
@@ -116,7 +116,7 @@ jobs:
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected]
with:
image: ${{ needs.setup-variables.outputs.provenance_image }}
digest: ${{ needs.argocd-image.outputs.image-digest }}
digest: ${{ needs.cd-image.outputs.image-digest }}
secrets:
registry-username: ${{ secrets.RELEASE_QUAY_USERNAME }}
registry-password: ${{ secrets.RELEASE_QUAY_TOKEN }}
@@ -125,8 +125,8 @@ jobs:
name: Run GoReleaser
needs:
- setup-variables
- argocd-image
- argocd-image-provenance
- cd-image
- cd-image-provenance
permissions:
contents: write # used for uploading assets
if: github.repository == 'argoproj/argo-cd' || needs.setup-variables.outputs.allow_fork_release == 'true'
@@ -210,13 +210,13 @@ jobs:
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected]
with:
base64-subjects: '${{ needs.goreleaser.outputs.hashes }}'
provenance-name: 'argocd-cli.intoto.jsonl'
provenance-name: 'cd-cli.intoto.jsonl'
upload-assets: true
generate-sbom:
name: Create SBOM and generate hash
needs:
- argocd-image
- cd-image
- goreleaser
- setup-variables
permissions:
@@ -308,14 +308,14 @@ jobs:
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected]
with:
base64-subjects: '${{ needs.generate-sbom.outputs.hashes }}'
provenance-name: 'argocd-sbom.intoto.jsonl'
provenance-name: 'cd-sbom.intoto.jsonl'
upload-assets: true
post-release:
name: Post-release tasks
needs:
- setup-variables
- argocd-image
- cd-image
- goreleaser
- generate-sbom
permissions:
@@ -351,7 +351,7 @@ jobs:
run: |
set -xue
# Create a path-prefixed tag for gitops-engine
# so downstream consumers can resolve github.com/argoproj/argo-cd/gitops-engine/v3
# so downstream consumers can resolve github.com/hanzoai/cd/gitops-engine/v3
# https://go.dev/doc/modules/managing-source#multiple-module-source
GE_TAG="gitops-engine/${GITHUB_REF_NAME}"
if git ls-remote --exit-code --tags origin "refs/tags/${GE_TAG}" >/dev/null 2>&1; then
+11 -11
View File
@@ -1,6 +1,6 @@
version: 2
project_name: argocd
project_name: cd
before:
hooks:
@@ -8,9 +8,9 @@ before:
- make build-ui
builds:
- id: argocd-cli
- id: cd-cli
main: ./cmd
binary: argocd-{{ .Os}}-{{ .Arch}}
binary: cd-{{ .Os}}-{{ .Arch}}
env:
- CGO_ENABLED=0
flags:
@@ -44,9 +44,9 @@ builds:
goarch: arm64
archives:
- id: argocd-archive
- id: cd-archive
ids:
- argocd-cli
- cd-cli
name_template: |-
{{ .ProjectName }}-{{ .Os }}-{{ .Arch }}
formats: [binary]
@@ -65,23 +65,23 @@ release:
### Non-HA:
```shell
kubectl create namespace argocd
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/{{ .Env.GORELEASER_CURRENT_REPOSITORY }}/{{.Tag}}/manifests/install.yaml
kubectl create namespace cd
kubectl apply -n cd --server-side --force-conflicts -f https://raw.githubusercontent.com/{{ .Env.GORELEASER_CURRENT_REPOSITORY }}/{{.Tag}}/manifests/install.yaml
```
### HA:
```shell
kubectl create namespace argocd
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/{{ .Env.GORELEASER_CURRENT_REPOSITORY }}/{{.Tag}}/manifests/ha/install.yaml
kubectl create namespace cd
kubectl apply -n cd --server-side --force-conflicts -f https://raw.githubusercontent.com/{{ .Env.GORELEASER_CURRENT_REPOSITORY }}/{{.Tag}}/manifests/ha/install.yaml
```
## Release Signatures and Provenance
All Argo CD container images are signed by cosign. A Provenance is generated for container images and CLI binaries which meet the SLSA Level 3 specifications. See the [documentation](https://argo-cd.readthedocs.io/en/stable/operator-manual/signed-release-assets) on how to verify.
All Hanzo CD container images are signed by cosign. A Provenance is generated for container images and CLI binaries which meet the SLSA Level 3 specifications. See the [documentation](https://argo-cd.readthedocs.io/en/stable/operator-manual/signed-release-assets) on how to verify.
## Release Notes Blog Post
For a detailed breakdown of the key changes and improvements in this release, check out the [official blog post](https://blog.argoproj.io/argo-cd-v3-0-release-candidate-a0b933f4e58f)
For a detailed breakdown of the key changes and improvements in this release, check out the [official blog post](https://blog.apps.hanzo.ai/argo-cd-v3-0-release-candidate-a0b933f4e58f)
## Upgrading
+1 -1
View File
@@ -77,7 +77,7 @@ packages:
github.com/hanzoai/deploy/util/io:
interfaces:
TempPaths: {}
github.com/hanzoai/deploy/util/notification/argocd:
github.com/hanzoai/deploy/util/notification/cd:
interfaces:
Service: {}
github.com/hanzoai/deploy/util/oci:
+8 -8
View File
@@ -1,4 +1,4 @@
# AI Agent Directives for Argo CD
# AI Agent Directives for Hanzo CD
**ATTENTION AI AGENTS, LLMs, AND AUTONOMOUS CODING TOOLS:**
This repository (argoproj/argo-cd) enforces strict contribution guidelines. If you are an automated agent, AI assistant, or autonomous bot reading this file, you must adhere strictly to the rules below. Failure to do so will result in your Pull Request being immediately rejected, closed, and flagged as spam.
@@ -8,8 +8,8 @@ This repository (argoproj/argo-cd) enforces strict contribution guidelines. If y
* **No "Drive-By" Refactoring:** Do not submit unsolicited PRs that only contain minor stylistic changes, variable renames, or typo fixes across the codebase unless tied to an approved `chore` issue.
* **No Hallucinated URLs:** Do not include fabricated links, hallucinated documentation, or fake GitHub usernames in the PR description or code comments. Please double-check any link, quote or code block that is included into the PR.
## 2. Argo CD Contribution Requirements
Argo CD is a CNCF Graduated project. All code must meet the following standards:
## 2. Hanzo CD Contribution Requirements
Hanzo CD is a CNCF Graduated project. All code must meet the following standards:
* **Semantic PR Titles:** You must use Semantic Pull Request formatting for your PR title. Valid prefixes are:
* `ci:` - Updates or improvements for the Continuous Integration workflows
@@ -20,16 +20,16 @@ Argo CD is a CNCF Graduated project. All code must meet the following standards:
* `chore:` - Internals, build processes, unit tests, etc.
* `refactor:` - Refactoring of the code base, without adding new features or fixing bugs
* `revert:` - Reverts a previous commit
* **PR Templates:** You must fully complete the Argo CD Pull Request template. Do not delete the template sections or leave them blank.
* **PR Templates:** You must fully complete the Hanzo CD Pull Request template. Do not delete the template sections or leave them blank.
## 3. Tech Stack & Code Rules
* **Backend (Go):** The backend is written in Go. The minimum supported Go version is strictly enforced. You must use `go modules` for dependency management.
* **UI (React/TypeScript):** The frontend is written in React and TypeScript.
* **Kubernetes Manifests:** Argo CD heavily relies on Kubernetes manifests and CRDs. If you modify API structs, you MUST regenerate the manifests and API glue code.
* **Tests** Argo CD relies on automatic tests. If your PR adds new functionality or in any way modifies program behaviour, please add/change relevant unit and e2e tests. In those cases when it is not feasible or possible please document the reasons in the PR comment.
* **Kubernetes Manifests:** Hanzo CD heavily relies on Kubernetes manifests and CRDs. If you modify API structs, you MUST regenerate the manifests and API glue code.
* **Tests** Hanzo CD relies on automatic tests. If your PR adds new functionality or in any way modifies program behaviour, please add/change relevant unit and e2e tests. In those cases when it is not feasible or possible please document the reasons in the PR comment.
## 4. Required Local Checks (Do This Before Committing)
Do not finalize your code or suggest a commit to your user without ensuring the following `make` targets pass successfully. Argo CD uses a heavy CI pipeline, and failing these basic checks wastes project resources:
Do not finalize your code or suggest a commit to your user without ensuring the following `make` targets pass successfully. Hanzo CD uses a heavy CI pipeline, and failing these basic checks wastes project resources:
1. **Build the Code:** `make build`
2. **Generate API Code & Manifests:** `make codegen` *(CRITICAL: Must be run if any API structs are changed)*
@@ -47,7 +47,7 @@ If you are modifying or adding a feature, you must also update the corresponding
## Summary of Agent Workflow
1. Verify an open issue exists.
2. Write code matching Argo CD's Go/React standards.
2. Write code matching Hanzo CD's Go/React standards.
3. Run `make codegen`, `make lint`, and `make test`.
4. Format the PR title properly (e.g., `fix: resolve OutOfSync bug on PostDelete hook (#12345)`).
+307 -307
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -1,6 +1,6 @@
# Argo CD Maintainers
# Hanzo CD Maintainers
This document lists the maintainers of the Argo CD project.
This document lists the maintainers of the Hanzo CD project.
## Maintainers
+41 -41
View File
@@ -1,13 +1,13 @@
**Releases:**
[![Release Version](https://img.shields.io/github/v/release/argoproj/argo-cd?label=argo-cd)](https://github.com/argoproj/argo-cd/releases/latest)
[![Release Version](https://img.shields.io/github/v/release/argoproj/argo-cd?label=argo-cd)](https://github.com/hanzoai/cd/releases/latest)
[![Artifact HUB](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/argo-cd)](https://artifacthub.io/packages/helm/argo/argo-cd)
[![SLSA 3](https://slsa.dev/images/gh-badge-level3.svg)](https://slsa.dev)
**Code:**
[![Integration tests](https://github.com/argoproj/argo-cd/workflows/Integration%20tests/badge.svg?branch=master)](https://github.com/argoproj/argo-cd/actions?query=workflow%3A%22Integration+tests%22)
[![Integration tests](https://github.com/hanzoai/cd/workflows/Integration%20tests/badge.svg?branch=master)](https://github.com/hanzoai/cd/actions?query=workflow%3A%22Integration+tests%22)
[![codecov](https://codecov.io/gh/argoproj/argo-cd/branch/master/graph/badge.svg)](https://codecov.io/gh/argoproj/argo-cd)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4486/badge)](https://bestpractices.coreinfrastructure.org/projects/4486)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/argoproj/argo-cd/badge)](https://scorecard.dev/viewer/?uri=github.com/argoproj/argo-cd)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/hanzoai/cd/badge)](https://scorecard.dev/viewer/?uri=github.com/hanzoai/cd)
**Social:**
[![Twitter Follow](https://img.shields.io/twitter/follow/argoproj?style=social)](https://twitter.com/argoproj)
@@ -15,76 +15,76 @@
[![LinkedIn](https://img.shields.io/badge/LinkedIn-argoproj-blue.svg?logo=linkedin)](https://www.linkedin.com/company/argoproj/)
[![Bluesky](https://img.shields.io/badge/Bluesky-argoproj-blue.svg?style=social&logo=bluesky)](https://bsky.app/profile/argoproj.bsky.social)
# Argo CD - Declarative Continuous Delivery for Kubernetes
# Hanzo CD - Declarative Continuous Delivery for Kubernetes
## What is Argo CD?
## What is Hanzo CD?
Argo CD is a declarative GitOps continuous delivery tool for Kubernetes.
Hanzo CD is a declarative GitOps continuous delivery tool for Kubernetes.
![Argo CD UI](docs/assets/argocd-ui.gif)
![Hanzo CD UI](docs/assets/cd-ui.gif)
[![Argo CD Demo](https://img.youtube.com/vi/0WAm0y2vLIo/0.jpg)](https://youtu.be/0WAm0y2vLIo)
[![Hanzo CD Demo](https://img.youtube.com/vi/0WAm0y2vLIo/0.jpg)](https://youtu.be/0WAm0y2vLIo)
## Why Argo CD?
## Why Hanzo CD?
1. Application definitions, configurations, and environments should be declarative and version controlled.
1. Application deployment and lifecycle management should be automated, auditable, and easy to understand.
## Who uses Argo CD?
## Who uses Hanzo CD?
[Official Argo CD user list](USERS.md)
[Official Hanzo CD user list](USERS.md)
## Documentation
To learn more about Argo CD [go to the complete documentation](https://argo-cd.readthedocs.io/).
Check live demo at https://cd.apps.argoproj.io/.
To learn more about Hanzo CD [go to the complete documentation](https://argo-cd.readthedocs.io/).
Check live demo at https://cd.apps.apps.hanzo.ai/.
## Community
### Contribution, Discussion and Support
You can reach the Argo CD community and developers via the following channels:
You can reach the Hanzo CD community and developers via the following channels:
* Q & A : [GitHub Discussions](https://github.com/argoproj/argo-cd/discussions)
* Q & A : [GitHub Discussions](https://github.com/hanzoai/cd/discussions)
* Chat : [The #argo-cd Slack channel](https://argoproj.github.io/community/join-slack)
* Contributors Office Hours: [Every Thursday](https://calendar.google.com/calendar/u/0/[email protected]) | [Agenda](https://docs.google.com/document/d/1xkoFkVviB70YBzSEa4bDnu-rUZ1sIFtwKKG1Uw8XsY8)
* User Community meeting: [First Wednesday of the month](https://calendar.google.com/calendar/u/0/[email protected]) | [Agenda](https://docs.google.com/document/d/1ttgw98MO45Dq7ZUHpIiOIEfbyeitKHNfMjbY5dLLMKQ)
Participation in the Argo CD project is governed by the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md)
Participation in the Hanzo CD project is governed by the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md)
### Blogs and Presentations
1. [Awesome-Argo: A Curated List of Awesome Projects and Resources Related to Argo](https://github.com/terrytangyuan/awesome-argo)
1. [Unveil the Secret Ingredients of Continuous Delivery at Enterprise Scale with Argo CD](https://akuity.io/blog/secret-ingredients-of-continuous-delivery-at-enterprise-scale-with-argocd/)
1. [GitOps Without Pipelines With ArgoCD Image Updater](https://youtu.be/avPUQin9kzU)
1. [Combining Argo CD (GitOps), Crossplane (Control Plane), And KubeVela (OAM)](https://youtu.be/eEcgn_gU3SM)
1. [How to Apply GitOps to Everything - Combining Argo CD and Crossplane](https://youtu.be/yrj4lmScKHQ)
1. [Couchbase - How To Run a Database Cluster in Kubernetes Using Argo CD](https://youtu.be/nkPoPaVzExY)
1. [Unveil the Secret Ingredients of Continuous Delivery at Enterprise Scale with Hanzo CD](https://akuity.io/blog/secret-ingredients-of-continuous-delivery-at-enterprise-scale-with-cd/)
1. [GitOps Without Pipelines With Hanzo CD Image Updater](https://youtu.be/avPUQin9kzU)
1. [Combining Hanzo CD (GitOps), Crossplane (Control Plane), And KubeVela (OAM)](https://youtu.be/eEcgn_gU3SM)
1. [How to Apply GitOps to Everything - Combining Hanzo CD and Crossplane](https://youtu.be/yrj4lmScKHQ)
1. [Couchbase - How To Run a Database Cluster in Kubernetes Using Hanzo CD](https://youtu.be/nkPoPaVzExY)
1. [Automation of Everything - How To Combine Argo Events, Workflows & Pipelines, CD, and Rollouts](https://youtu.be/XNXJtxkUKeY)
1. [Environments Based On Pull Requests (PRs): Using Argo CD To Apply GitOps Principles On Previews](https://youtu.be/cpAaI8p4R60)
1. [Argo CD: Applying GitOps Principles To Manage Production Environment In Kubernetes](https://youtu.be/vpWQeoaiRM4)
1. [Creating Temporary Preview Environments Based On Pull Requests With Argo CD And Codefresh](https://codefresh.io/continuous-deployment/creating-temporary-preview-environments-based-pull-requests-argo-cd-codefresh/)
1. [Tutorial: Everything You Need To Become A GitOps Ninja](https://www.youtube.com/watch?v=r50tRQjisxw) 90m tutorial on GitOps and Argo CD.
1. [Comparison of Argo CD, Spinnaker, Jenkins X, and Tekton](https://www.inovex.de/blog/spinnaker-vs-argo-cd-vs-tekton-vs-jenkins-x/)
1. [Environments Based On Pull Requests (PRs): Using Hanzo CD To Apply GitOps Principles On Previews](https://youtu.be/cpAaI8p4R60)
1. [Hanzo CD: Applying GitOps Principles To Manage Production Environment In Kubernetes](https://youtu.be/vpWQeoaiRM4)
1. [Creating Temporary Preview Environments Based On Pull Requests With Hanzo CD And Codefresh](https://codefresh.io/continuous-deployment/creating-temporary-preview-environments-based-pull-requests-argo-cd-codefresh/)
1. [Tutorial: Everything You Need To Become A GitOps Ninja](https://www.youtube.com/watch?v=r50tRQjisxw) 90m tutorial on GitOps and Hanzo CD.
1. [Comparison of Hanzo CD, Spinnaker, Jenkins X, and Tekton](https://www.inovex.de/blog/spinnaker-vs-argo-cd-vs-tekton-vs-jenkins-x/)
1. [Simplify and Automate Deployments Using GitOps with IBM Multicloud Manager 3.1.2](https://www.ibm.com/cloud/blog/simplify-and-automate-deployments-using-gitops-with-ibm-multicloud-manager-3-1-2)
1. [GitOps for Kubeflow using Argo CD](https://v0-6.kubeflow.org/docs/use-cases/gitops-for-kubeflow/)
1. [GitOps Toolsets on Kubernetes with CircleCI and Argo CD](https://www.digitalocean.com/community/tutorials/webinar-series-gitops-tool-sets-on-kubernetes-with-circleci-and-argo-cd)
1. [CI/CD in Light Speed with K8s and Argo CD](https://www.youtube.com/watch?v=OdzH82VpMwI&feature=youtu.be)
1. [Machine Learning as Code](https://www.youtube.com/watch?v=VXrGp5er1ZE&t=0s&index=135&list=PLj6h78yzYM2PZf9eA7bhWnIh_mK1vyOfU). Among other things, describes how Kubeflow uses Argo CD to implement GitOPs for ML
1. [Argo CD - GitOps Continuous Delivery for Kubernetes](https://www.youtube.com/watch?v=aWDIQMbp1cc&feature=youtu.be&t=1m4s)
1. [Introduction to Argo CD : Kubernetes DevOps CI/CD](https://www.youtube.com/watch?v=2WSJF7d8dUg&feature=youtu.be)
1. [GitOps Deployment and Kubernetes - using Argo CD](https://medium.com/riskified-technology/gitops-deployment-and-kubernetes-f1ab289efa4b)
1. [Deploy Argo CD with Ingress and TLS in Three Steps: No YAML Yak Shaving Required](https://itnext.io/deploy-argo-cd-with-ingress-and-tls-in-three-steps-no-yaml-yak-shaving-required-bc536d401491)
1. [GitOps for Kubeflow using Hanzo CD](https://v0-6.kubeflow.org/docs/use-cases/gitops-for-kubeflow/)
1. [GitOps Toolsets on Kubernetes with CircleCI and Hanzo CD](https://www.digitalocean.com/community/tutorials/webinar-series-gitops-tool-sets-on-kubernetes-with-circleci-and-argo-cd)
1. [CI/CD in Light Speed with K8s and Hanzo CD](https://www.youtube.com/watch?v=OdzH82VpMwI&feature=youtu.be)
1. [Machine Learning as Code](https://www.youtube.com/watch?v=VXrGp5er1ZE&t=0s&index=135&list=PLj6h78yzYM2PZf9eA7bhWnIh_mK1vyOfU). Among other things, describes how Kubeflow uses Hanzo CD to implement GitOPs for ML
1. [Hanzo CD - GitOps Continuous Delivery for Kubernetes](https://www.youtube.com/watch?v=aWDIQMbp1cc&feature=youtu.be&t=1m4s)
1. [Introduction to Hanzo CD : Kubernetes DevOps CI/CD](https://www.youtube.com/watch?v=2WSJF7d8dUg&feature=youtu.be)
1. [GitOps Deployment and Kubernetes - using Hanzo CD](https://medium.com/riskified-technology/gitops-deployment-and-kubernetes-f1ab289efa4b)
1. [Deploy Hanzo CD with Ingress and TLS in Three Steps: No YAML Yak Shaving Required](https://itnext.io/deploy-argo-cd-with-ingress-and-tls-in-three-steps-no-yaml-yak-shaving-required-bc536d401491)
1. [GitOps Continuous Delivery with Argo and Codefresh](https://codefresh.io/events/cncf-member-webinar-gitops-continuous-delivery-argo-codefresh/)
1. [Stay up to date with Argo CD and Renovate](https://mjpitz.com/blog/2020/12/03/renovate-your-gitops/)
1. [Setting up Argo CD with Helm](https://www.arthurkoziel.com/setting-up-argocd-with-helm/)
1. [Applied GitOps with Argo CD](https://thenewstack.io/applied-gitops-with-argocd/)
1. [Solving configuration drift using GitOps with Argo CD](https://www.cncf.io/blog/2020/12/17/solving-configuration-drift-using-gitops-with-argo-cd/)
1. [Stay up to date with Hanzo CD and Renovate](https://mjpitz.com/blog/2020/12/03/renovate-your-gitops/)
1. [Setting up Hanzo CD with Helm](https://www.arthurkoziel.com/setting-up-cd-with-helm/)
1. [Applied GitOps with Hanzo CD](https://thenewstack.io/applied-gitops-with-cd/)
1. [Solving configuration drift using GitOps with Hanzo CD](https://www.cncf.io/blog/2020/12/17/solving-configuration-drift-using-gitops-with-argo-cd/)
1. [Decentralized GitOps over environments](https://blogs.sap.com/2021/05/06/decentralized-gitops-over-environments/)
1. [Getting Started with ArgoCD for GitOps Deployments](https://youtu.be/AvLuplh1skA)
1. [Using Argo CD & Datree for Stable Kubernetes CI/CD Deployments](https://youtu.be/17894DTru2Y)
1. [How to create Argo CD Applications Automatically using ApplicationSet? "Automation of GitOps"](https://amralaayassen.medium.com/how-to-create-argocd-applications-automatically-using-applicationset-automation-of-the-gitops-59455eaf4f72)
1. [Getting Started with Hanzo CD for GitOps Deployments](https://youtu.be/AvLuplh1skA)
1. [Using Hanzo CD & Datree for Stable Kubernetes CI/CD Deployments](https://youtu.be/17894DTru2Y)
1. [How to create Hanzo CD Applications Automatically using ApplicationSet? "Automation of GitOps"](https://amralaayassen.medium.com/how-to-create-cd-applications-automatically-using-applicationset-automation-of-the-gitops-59455eaf4f72)
1. [Progressive Delivery with Service Mesh – Argo Rollouts with Istio](https://www.cncf.io/blog/2022/12/16/progressive-delivery-with-service-mesh-argo-rollouts-with-istio/)
+1 -1
View File
@@ -38,7 +38,7 @@ documentation:
- https://argo-cd.readthedocs.io/
distribution-points:
- https://github.com/argoproj/argo-cd/releases
- https://quay.io/repository/argoproj/argocd
- https://quay.io/repository/argoproj/cd
security-artifacts:
threat-model:
threat-model-created: true
+17 -17
View File
@@ -1,10 +1,10 @@
# Security Policy for Argo CD
# Security Policy for Hanzo CD
Version: **v1.5 (2023-03-06)**
## Preface
As a deployment tool, Argo CD needs to have production access which makes
As a deployment tool, Hanzo CD needs to have production access which makes
security a very important topic. The Argoproj team takes security very
seriously and is continuously working on improving it.
@@ -20,10 +20,10 @@ just because they are derived from some distribution.
We kindly ask you to not raise issues or contact us regarding any issues
that are found by your security scanner. Many of those produce a lot of false
positives, and many of these issues don't affect Argo CD. We do have scanners
positives, and many of these issues don't affect Hanzo CD. We do have scanners
in place for our code, dependencies and container images that we publish. We
are well aware of the issues that may affect Argo CD and are constantly
working on the remediation of those that affect Argo CD and our users.
are well aware of the issues that may affect Hanzo CD and are constantly
working on the remediation of those that affect Hanzo CD and our users.
If you believe that we might have missed an issue that we should take a look
at (that can happen), then please discuss it with us. If there is a CVE
@@ -31,11 +31,11 @@ assigned to the issue, please do open an issue on our GitHub tracker instead
of writing to the security contact e-mail, since things reported by scanners
are public already and the discussion that might emerge is of benefit to the
general community. However, please validate your scanner results and its
impact on Argo CD before opening an issue at least roughly.
impact on Hanzo CD before opening an issue at least roughly.
## Supported Versions
We currently support the last 3 minor versions of Argo CD with security and bug fixes.
We currently support the last 3 minor versions of Hanzo CD with security and bug fixes.
We regularly perform patch releases (e.g. `1.8.5` and `1.7.12`) for the
supported versions, which will contain fixes for security vulnerabilities and
@@ -50,24 +50,24 @@ of releasing it within a patch branch for the currently supported releases.
## Dependency Upgrade Policy
Argo CD relies on certain binaries and libraries that might appear in security scanners.
Hanzo CD relies on certain binaries and libraries that might appear in security scanners.
Upgrading certain dependencies, such as Helm, Kustomize, and git, may have negative impacts
on users, as they may include breaking changes or changes in behavior. For this reason,
we will only upgrade to new patch versions within the same minor version series within
a supported Argo CD version. For example, if we are currently on Helm 3.12.0 and Argo CD
3.4.0, we will only upgrade to Helm 3.12.x within Argo CD 3.4.x, and not to Helm 3.13.0
a supported Hanzo CD version. For example, if we are currently on Helm 3.12.0 and Hanzo CD
3.4.0, we will only upgrade to Helm 3.12.x within Hanzo CD 3.4.x, and not to Helm 3.13.0
or later.
If there is a critical, _exploitable_ vulnerability in a dependency that will not be fixed
in a patch release, we will evaluate the impact of the vulnerability and the risk of not
upgrading the dependency. We ask that, if you believe a version bump is justified, please
open an issue _describing how the vulnerability is exploitable in the context of Argo CD_,
open an issue _describing how the vulnerability is exploitable in the context of Hanzo CD_,
and we will evaluate it and decide whether or not to upgrade the dependency.
## Reporting a Vulnerability
If you find a security related bug in Argo CD, we kindly ask you for responsible
If you find a security related bug in Hanzo CD, we kindly ask you for responsible
disclosure and for giving us appropriate time to react, analyze and develop a
fix to mitigate the found security vulnerability.
@@ -76,14 +76,14 @@ and disclosure with you. Sometimes, it might take a little longer for us to
react (e.g. out of office conditions), so please bear with us in these cases.
We will publish security advisories using the
[GitHub Security Advisories](https://github.com/argoproj/argo-cd/security/advisories)
[GitHub Security Advisories](https://github.com/hanzoai/cd/security/advisories)
feature to keep our community well-informed, and will credit you for your
findings (unless you prefer to stay anonymous, of course).
To report a vulnerability to the Argo CD team, create a draft GitHub security advisory at: https://github.com/argoproj/argo-cd/security/advisories/new
To report a vulnerability to the Hanzo CD team, create a draft GitHub security advisory at: https://github.com/hanzoai/cd/security/advisories/new
## Securing your Argo CD Instance
## Securing your Hanzo CD Instance
See the [operator manual security page](docs/operator-manual/security.md) for
additional information about Argo CD's security features and how to make your
Argo CD production ready.
additional information about Hanzo CD's security features and how to make your
Hanzo CD production ready.
+3 -3
View File
@@ -1,9 +1,9 @@
## Who uses Argo CD?
## Who uses Hanzo CD?
As the Argo Community grows, we'd like to keep track of our users. Please send a
PR with your organization name if you are using Argo CD.
PR with your organization name if you are using Hanzo CD.
Currently, the following organizations are **officially** using Argo CD:
Currently, the following organizations are **officially** using Hanzo CD:
1. [100ms](https://www.100ms.ai/)
1. [127Labs](https://127labs.com/)
@@ -67,7 +67,7 @@ const (
// Rather than importing the whole cd-notifications controller, just copying the const here
// https://github.com/argoproj-labs/cd-notifications/blob/33d345fa838829bb50fca5c08523aba380d2c12b/pkg/controller/subscriptions.go#L12
// https://github.com/argoproj-labs/cd-notifications/blob/33d345fa838829bb50fca5c08523aba380d2c12b/pkg/controller/state.go#L17
NotifiedAnnotationKey = "notified.notifications.argoproj.io"
NotifiedAnnotationKey = "notified.notifications.apps.hanzo.ai"
ReconcileRequeueOnValidationError = time.Minute * 3
ReverseDeletionOrder = "Reverse"
AllAtOnceDeletionOrder = "AllAtOnce"
@@ -113,8 +113,8 @@ type ApplicationSetReconciler struct {
var _ progressivesync.Dependencies = (*ApplicationSetReconciler)(nil)
// +kubebuilder:rbac:groups=argoproj.io,resources=applicationsets,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=argoproj.io,resources=applicationsets/status,verbs=get;update;patch
// +kubebuilder:rbac:groups=apps.hanzo.ai,resources=applicationsets,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=apps.hanzo.ai,resources=applicationsets/status,verbs=get;update;patch
func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, err error) {
startReconcile := time.Now()
@@ -717,7 +717,7 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
},
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
}
@@ -116,7 +116,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -146,7 +146,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -173,7 +173,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -205,7 +205,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -232,7 +232,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app2",
@@ -264,7 +264,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -293,7 +293,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -327,7 +327,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -356,7 +356,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -388,7 +388,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -423,7 +423,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -463,7 +463,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -500,7 +500,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -542,7 +542,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -575,7 +575,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -611,7 +611,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -642,7 +642,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -680,7 +680,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -711,7 +711,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -767,7 +767,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -810,7 +810,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -852,7 +852,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -877,7 +877,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
},
},
{
// For this use case: https://github.com/argoproj/argo-cd/pull/14743#issuecomment-1761954799
// For this use case: https://github.com/hanzoai/cd/pull/14743#issuecomment-1761954799
name: "ignore parameters added to a multi-source app in the cluster",
appSet: v1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -907,7 +907,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -953,7 +953,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -1009,7 +1009,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -1055,7 +1055,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -1098,7 +1098,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -1129,7 +1129,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -1162,7 +1162,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -1196,7 +1196,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -1242,7 +1242,7 @@ func TestCreateOrUpdateInCluster(t *testing.T) {
got := &v1alpha1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
}
_ = client.Get(t.Context(), crtclient.ObjectKey{
@@ -1313,7 +1313,7 @@ func TestCreateOrUpdateInCluster_Concurrent(t *testing.T) {
existingApps[i] = v1alpha1.Application{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("app%d", i),
@@ -1378,7 +1378,7 @@ func TestCreateOrUpdateInCluster_ContextCancellation(t *testing.T) {
existingApp := v1alpha1.Application{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -1533,7 +1533,7 @@ func TestDeleteInCluster_ContextCancellation(t *testing.T) {
existingApp := v1alpha1.Application{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "delete-me",
@@ -2027,7 +2027,7 @@ func TestCreateApplications(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -2059,7 +2059,7 @@ func TestCreateApplications(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -2086,7 +2086,7 @@ func TestCreateApplications(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -2118,7 +2118,7 @@ func TestCreateApplications(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app1",
@@ -2145,7 +2145,7 @@ func TestCreateApplications(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "app2",
@@ -2186,7 +2186,7 @@ func TestCreateApplications(t *testing.T) {
got := &v1alpha1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
}
_ = client.Get(t.Context(), crtclient.ObjectKey{
@@ -2238,7 +2238,7 @@ func TestDeleteInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "delete",
@@ -2252,7 +2252,7 @@ func TestDeleteInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "keep",
@@ -2278,7 +2278,7 @@ func TestDeleteInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "keep",
@@ -2294,7 +2294,7 @@ func TestDeleteInCluster(t *testing.T) {
{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "delete",
@@ -2342,7 +2342,7 @@ func TestDeleteInCluster(t *testing.T) {
got := &v1alpha1.Application{
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
}
_ = client.Get(t.Context(), crtclient.ObjectKey{
@@ -2363,7 +2363,7 @@ func TestDeleteInCluster(t *testing.T) {
Name: obj.Name,
}, got)
assert.EqualError(t, err, fmt.Sprintf("applications.argoproj.io %q not found", obj.Name))
assert.EqualError(t, err, fmt.Sprintf("applications.apps.hanzo.ai %q not found", obj.Name))
}
}
}
@@ -320,7 +320,7 @@ func TestClusterEventHandler(t *testing.T) {
"clusters": {
"selector": {
"matchLabels": {
"cd.argoproj.io/secret-type": "cluster"
"cd.hanzo.ai/secret-type": "cluster"
}
}
}
@@ -491,7 +491,7 @@ func TestClusterEventHandler(t *testing.T) {
"clusters": {
"selector": {
"matchLabels": {
"cd.argoproj.io/secret-type": "cluster"
"cd.hanzo.ai/secret-type": "cluster"
}
}
}
@@ -619,7 +619,7 @@ func TestNestedGeneratorHasClusterGenerator_NestedMergeGenerator(t *testing.T) {
"clusters": {
"selector": {
"matchLabels": {
"cd.argoproj.io/secret-type": "cluster"
"cd.hanzo.ai/secret-type": "cluster"
}
}
}
@@ -647,7 +647,7 @@ func TestNestedGeneratorHasClusterGenerator_NestedMergeGeneratorWithInvalidJSON(
"clusters": {
"selector": {
"matchLabels": {
"cd.argoproj.io/secret-type": "cluster"
"cd.hanzo.ai/secret-type": "cluster"
}
}
}
@@ -22,7 +22,7 @@ func Test_ApplyTemplatePatch(t *testing.T) {
appTemplate: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
@@ -67,7 +67,7 @@ func Test_ApplyTemplatePatch(t *testing.T) {
expectedApp: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
@@ -107,7 +107,7 @@ func Test_ApplyTemplatePatch(t *testing.T) {
appTemplate: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
@@ -143,7 +143,7 @@ spec:
expectedApp: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
@@ -183,7 +183,7 @@ spec:
appTemplate: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
@@ -208,7 +208,7 @@ spec:
expectedApp: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
@@ -82,7 +82,7 @@ func TestGenerateApplications(t *testing.T) {
},
TypeMeta: metav1.TypeMeta{
Kind: application.ApplicationKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
}
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -25,7 +25,7 @@ spec:
spec:
project: default
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: applicationset/examples/list-generator/guestbook/{{.cluster}}
destination:
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -25,7 +25,7 @@ spec:
spec:
project: default
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: applicationset/examples/list-generator/guestbook/{{.cluster}}
destination:
@@ -14,7 +14,7 @@ spec:
app: guestbook-ui
spec:
containers:
- image: quay.io/argoprojlabs/argocd-e2e-container:0.2
- image: quay.io/argoprojlabs/cd-e2e-container:0.2
name: guestbook-ui
ports:
- containerPort: 80
@@ -14,7 +14,7 @@ spec:
app: guestbook-ui
spec:
containers:
- image: quay.io/argoprojlabs/argocd-e2e-container:0.2
- image: quay.io/argoprojlabs/cd-e2e-container:0.2
name: guestbook-ui
ports:
- containerPort: 80
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -15,10 +15,10 @@ status:
- clusterName: cluster-02
namespace: cluster-02
```
2. Any resource that has a list of key / value pairs, where the value matches ArgoCD cluster names can be used.
2. Any resource that has a list of key / value pairs, where the value matches Hanzo CD cluster names can be used.
3. The key / value pairs found in each element of the list will be available to the template. As well, `name` and `server` will still be available to the template.
4. The Service Account used by the ApplicationSet controller must have access to `Get` the resource you want to retrieve the duck type definition from
5. A configMap is used to identify the resource to read status of generated ArgoCD clusters from. You can use multiple resources by creating a ConfigMap for each one in the ArgoCD namespace.
5. A configMap is used to identify the resource to read status of generated Hanzo CD clusters from. You can use multiple resources by creating a ConfigMap for each one in the Hanzo CD namespace.
```yaml
apiVersion: v1
kind: ConfigMap
@@ -32,7 +32,7 @@ data:
```
* `apiVersion` - This is the apiVersion of your resource
* `kind` - This is the plural kind of your resource
* `statusListKey` - Default is 'clusters', this is the key found in your resource's status that is a list of ArgoCD clusters.
* `statusListKey` - Default is 'clusters', this is the key found in your resource's status that is a list of Hanzo CD clusters.
* `matchKey` - Is the key name found in the cluster list, `name` and `clusterName` are the keys in the examples above.
# Applying the example
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: book-import
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: book-import
@@ -2,7 +2,7 @@
# An ApplicationSet is comprised with two stanzas:
# - spec.generator - producer of a list of values supplied as arguments to an app template
# - spec.template - an application template, which has been parameterized
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -2,7 +2,7 @@
# An ApplicationSet is comprised with two stanzas:
# - spec.generator - producer of a list of values supplied as arguments to an app template
# - spec.template - an application template, which has been parameterized
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -1,11 +1,11 @@
# The cluster generator produces an items list from all clusters registered to Argo CD.
# The cluster generator produces an items list from all clusters registered to Hanzo CD.
# It automatically provides the following fields as values to the app template:
# - name
# - server
# - metadata.labels.<key>
# - metadata.annotations.<key>
# - values.<key>
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -14,7 +14,7 @@ spec:
- clusters:
selector:
matchLabels:
argocd.argoproj.io/secret-type: cluster
cd.hanzo.ai/secret-type: cluster
values:
project: default
template:
@@ -21,7 +21,7 @@
#
# The following ApplicationSet would produce four applications (in different namespaces),
# using the directory basename as both the namespace and application name.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: cluster-addons
@@ -21,7 +21,7 @@
#
# The following ApplicationSet would produce four applications (in different namespaces),
# using the directory basename as both the namespace and application name.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: cluster-addons
@@ -32,7 +32,7 @@
# }
# }
#
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -32,7 +32,7 @@
# }
# }
#
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -45,7 +45,7 @@
# }
# ]
#
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -45,7 +45,7 @@
# }
# ]
#
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -1,5 +1,5 @@
# The list generator specifies a literal list of argument values to the app spec template.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
+1 -1
View File
@@ -1,5 +1,5 @@
# The list generator specifies a literal list of argument values to the app spec template.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -1,7 +1,7 @@
# For all generators, filters can be applied to reduce the generated items to a smaller subset.
# A powerful set of filter expressions are supported using syntax provided by the
# https://github.com/antonmedv/expr library. Examples expressions are demonstrated below
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -2,7 +2,7 @@
# useful to do this in order to override the spec.template stanza, and when simple string
# parameterization are insufficient. In the below examples, the generators[].XXX.template is
# a partial definition, which overrides/patch the default template.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -2,7 +2,7 @@
# useful to do this in order to override the spec.template stanza, and when simple string
# parameterization are insufficient. In the below examples, the generators[].XXX.template is
# a partial definition, which overrides/patch the default template.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -5,7 +5,7 @@
replicaCount: 1
image:
repository: quay.io/argoprojlabs/argocd-e2e-container
repository: quay.io/argoprojlabs/cd-e2e-container
tag: 0.1
pullPolicy: IfNotPresent
@@ -1,12 +1,12 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: cluster-addons
namespace: argocd
namespace: cd
spec:
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
directories:
- path: applicationset/examples/git-generator-directory/excludes/cluster-addons/*
@@ -18,7 +18,7 @@ spec:
spec:
project: "my-project"
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{path}}'
destination:
@@ -1,14 +1,14 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: cluster-addons
namespace: argocd
namespace: cd
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
directories:
- path: applicationset/examples/git-generator-directory/excludes/cluster-addons/*
@@ -20,7 +20,7 @@ spec:
spec:
project: "my-project"
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{.path}}'
destination:
@@ -1,12 +1,12 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: cluster-addons
namespace: argocd
namespace: cd
spec:
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
directories:
- path: applicationset/examples/git-generator-directory/cluster-addons/*
@@ -16,7 +16,7 @@ spec:
spec:
project: "my-project"
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{path}}'
destination:
@@ -1,14 +1,14 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: cluster-addons
namespace: argocd
namespace: cd
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
directories:
- path: applicationset/examples/git-generator-directory/cluster-addons/*
@@ -18,7 +18,7 @@ spec:
spec:
project: "my-project"
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{.path.path}}'
destination:
@@ -14,7 +14,7 @@ spec:
app: guestbook-ui
spec:
containers:
- image: quay.io/argoprojlabs/argocd-e2e-container:0.2
- image: quay.io/argoprojlabs/cd-e2e-container:0.2
name: guestbook-ui
ports:
- containerPort: 80
@@ -1,11 +1,11 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
spec:
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
files:
- path: "applicationset/examples/git-generator-files-discovery/cluster-config/**/config.json"
@@ -17,7 +17,7 @@ spec:
spec:
project: default
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: "applicationset/examples/git-generator-files-discovery/apps/guestbook"
destination:
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -7,7 +7,7 @@ spec:
goTemplateOptions: ["missingkey=error"]
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
files:
- path: "applicationset/examples/git-generator-files-discovery/cluster-config/**/config.json"
@@ -19,7 +19,7 @@ spec:
spec:
project: default
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: "applicationset/examples/git-generator-files-discovery/apps/guestbook"
destination:
@@ -1,11 +1,11 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
spec:
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
files:
- path: "applicationset/examples/git-generator-files-discovery/cluster-config/**/config.json"
@@ -15,7 +15,7 @@ spec:
spec:
project: default
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: "applicationset/examples/git-generator-files-discovery/apps/guestbook"
destination:
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -7,7 +7,7 @@ spec:
goTemplateOptions: ["missingkey=error"]
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
files:
- path: "applicationset/examples/git-generator-files-discovery/cluster-config/**/config.json"
@@ -17,7 +17,7 @@ spec:
spec:
project: default
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: "applicationset/examples/git-generator-files-discovery/apps/guestbook"
destination:
@@ -14,7 +14,7 @@ spec:
app: guestbook-ui
spec:
containers:
- image: quay.io/argoprojlabs/argocd-e2e-container:0.2
- image: quay.io/argoprojlabs/cd-e2e-container:0.2
name: guestbook-ui
ports:
- containerPort: 80
@@ -14,7 +14,7 @@ spec:
app: guestbook-ui
spec:
containers:
- image: quay.io/argoprojlabs/argocd-e2e-container:0.2
- image: quay.io/argoprojlabs/cd-e2e-container:0.2
name: guestbook-ui
ports:
- containerPort: 80
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -16,7 +16,7 @@ spec:
spec:
project: default
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: applicationset/examples/list-generator/guestbook/{{cluster}}
destination:
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -18,7 +18,7 @@ spec:
spec:
project: default
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: applicationset/examples/list-generator/guestbook/{{.cluster}}
destination:
@@ -2,9 +2,9 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: clusterworkflowtemplates.argoproj.io
name: clusterworkflowtemplates.apps.hanzo.ai
spec:
group: argoproj.io
group: apps.hanzo.ai
names:
kind: ClusterWorkflowTemplate
listKind: ClusterWorkflowTemplateList
@@ -23,9 +23,9 @@ spec:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: cronworkflows.argoproj.io
name: cronworkflows.apps.hanzo.ai
spec:
group: argoproj.io
group: apps.hanzo.ai
names:
kind: CronWorkflow
listKind: CronWorkflowList
@@ -44,9 +44,9 @@ spec:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: workfloweventbindings.argoproj.io
name: workfloweventbindings.apps.hanzo.ai
spec:
group: argoproj.io
group: apps.hanzo.ai
names:
kind: WorkflowEventBinding
listKind: WorkflowEventBindingList
@@ -64,7 +64,7 @@ spec:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: workflows.argoproj.io
name: workflows.apps.hanzo.ai
spec:
additionalPrinterColumns:
- JSONPath: .status.phase
@@ -76,7 +76,7 @@ spec:
format: date-time
name: Age
type: date
group: argoproj.io
group: apps.hanzo.ai
names:
kind: Workflow
listKind: WorkflowList
@@ -95,9 +95,9 @@ spec:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: workflowtemplates.argoproj.io
name: workflowtemplates.apps.hanzo.ai
spec:
group: argoproj.io
group: apps.hanzo.ai
names:
kind: WorkflowTemplate
listKind: WorkflowTemplateList
@@ -157,7 +157,7 @@ rules:
- delete
- get
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- workflows
- workflows/finalizers
@@ -170,7 +170,7 @@ rules:
- delete
- create
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- workflowtemplates
- workflowtemplates/finalizers
@@ -192,7 +192,7 @@ rules:
verbs:
- get
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- cronworkflows
- cronworkflows/finalizers
@@ -266,7 +266,7 @@ rules:
- get
- list
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- workflows
- workfloweventbindings
@@ -2,7 +2,7 @@
# The expected output would be an application per git directory and a cluster (application_count = git directory * clusters)
#
#
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: cluster-git
@@ -11,21 +11,21 @@ spec:
- matrix:
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
directories:
- path: applicationset/examples/matrix/cluster-addons/*
- clusters:
selector:
matchLabels:
argocd.argoproj.io/secret-type: cluster
cd.hanzo.ai/secret-type: cluster
template:
metadata:
name: '{{path.basename}}-{{name}}'
spec:
project: '{{metadata.labels.environment}}'
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{path}}'
destination:
@@ -2,7 +2,7 @@
# The expected output would be an application per git directory and a cluster (application_count = git directory * clusters)
#
#
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: cluster-git
@@ -13,21 +13,21 @@ spec:
- matrix:
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
directories:
- path: applicationset/examples/matrix/cluster-addons/*
- clusters:
selector:
matchLabels:
argocd.argoproj.io/secret-type: cluster
cd.hanzo.ai/secret-type: cluster
template:
metadata:
name: '{{.path.basename}}-{{.name}}'
spec:
project: '{{.metadata.labels.environment}}'
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{.path.path}}'
destination:
@@ -2,7 +2,7 @@
# The expected output would be an application per git directory and a list entry (application_count = git directory * list entries)
#
#
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: list-git
@@ -11,7 +11,7 @@ spec:
- matrix:
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
directories:
- path: applicationset/examples/matrix/cluster-addons/*
@@ -31,7 +31,7 @@ spec:
spec:
project: '{{values.project}}'
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{path}}'
destination:
@@ -2,7 +2,7 @@
# The expected output would be an application per git directory and a list entry (application_count = git directory * list entries)
#
#
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: list-git
@@ -13,7 +13,7 @@ spec:
- matrix:
generators:
- git:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
revision: HEAD
directories:
- path: applicationset/examples/matrix/cluster-addons/*
@@ -33,7 +33,7 @@ spec:
spec:
project: '{{.values.project}}'
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{.path.path}}'
destination:
@@ -1,8 +1,8 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: list-and-list
namespace: argocd
namespace: cd
spec:
generators:
- matrix:
@@ -29,7 +29,7 @@ spec:
spec:
project: '{{values.project}}'
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{path}}'
destination:
@@ -1,8 +1,8 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: list-and-list
namespace: argocd
namespace: cd
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
@@ -31,7 +31,7 @@ spec:
spec:
project: '{{.values.project}}'
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{.path.path}}'
destination:
@@ -7,7 +7,7 @@
# 3. The outer matrix generator takes the cartesian product of the 3 union and the 4 inner matrix parameter sets to
# make 3*4=12 final parameter sets.
# 4. The 12 final parameter sets are evaluated against the top-level template to generate 12 Applications.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: matrix-and-union-in-matrix
@@ -59,7 +59,7 @@ spec:
spec:
project: '{{values.project}}'
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{path}}'
destination:
@@ -7,7 +7,7 @@
# 3. The outer matrix generator takes the cartesian product of the 3 union and the 4 inner matrix parameter sets to
# make 3*4=12 final parameter sets.
# 4. The 12 final parameter sets are evaluated against the top-level template to generate 12 Applications.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: matrix-and-union-in-matrix
@@ -61,7 +61,7 @@ spec:
spec:
project: '{{.values.project}}'
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: '{{.path.path}}'
destination:
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: merge-clusters-and-list
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: merge-clusters-and-list
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: merge-two-matrixes
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: merge-two-matrixes
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: myapp
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: myapp
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -7,7 +7,7 @@ spec:
- scmProvider:
gitlab:
api: https://gitlab.com
group: test-argocd-proton
group: test-cd-proton
includeSubgroups: true
cloneProtocol: https
filters:
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -1,4 +1,4 @@
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -14,7 +14,7 @@ spec:
app: guestbook-ui
spec:
containers:
- image: quay.io/argoprojlabs/argocd-e2e-container:0.2
- image: quay.io/argoprojlabs/cd-e2e-container:0.2
name: guestbook-ui
ports:
- containerPort: 80
@@ -14,7 +14,7 @@ spec:
app: guestbook-ui
spec:
containers:
- image: quay.io/argoprojlabs/argocd-e2e-container:0.2
- image: quay.io/argoprojlabs/cd-e2e-container:0.2
name: guestbook-ui
ports:
- containerPort: 80
@@ -2,7 +2,7 @@
# useful to do this in order to override the spec.template stanza, and when simple string
# parameterization are insufficient. In the below examples, the generators[].XXX.template is
# a partial definition, which overrides/patch the default template.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -18,7 +18,7 @@ spec:
project: "default"
source:
targetRevision: HEAD
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
path: 'applicationset/examples/template-override/{{cluster}}-override'
destination: {}
@@ -28,7 +28,7 @@ spec:
spec:
project: "default"
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: applicationset/examples/template-override/default
destination:
@@ -2,7 +2,7 @@
# useful to do this in order to override the spec.template stanza, and when simple string
# parameterization are insufficient. In the below examples, the generators[].XXX.template is
# a partial definition, which overrides/patch the default template.
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
@@ -20,7 +20,7 @@ spec:
project: "default"
source:
targetRevision: HEAD
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
path: 'applicationset/examples/template-override/{{.cluster}}-override'
destination: {}
@@ -30,7 +30,7 @@ spec:
spec:
project: "default"
source:
repoURL: https://github.com/argoproj/argo-cd.git
repoURL: https://github.com/hanzoai/cd.git
targetRevision: HEAD
path: applicationset/examples/template-override/default
destination:
+52 -52
View File
@@ -40,12 +40,12 @@ func TestGenerateParams(t *testing.T) {
Name: "staging-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
Annotations: map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
Data: map[string][]byte{
@@ -64,12 +64,12 @@ func TestGenerateParams(t *testing.T) {
Name: "production-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
Annotations: map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
Data: map[string][]byte{
@@ -99,20 +99,20 @@ func TestGenerateParams(t *testing.T) {
"lol2": "{{values.lol1}}{{values.lol1}}",
"lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}",
"foo": "bar",
"bar": "{{ metadata.annotations.foo.argoproj.io }}",
"bar": "{{ metadata.annotations.foo.example.com }}",
"bat": "{{ metadata.labels.environment }}",
"aaa": "{{ server }}",
"no-op": "{{ this-does-not-exist }}",
}, expected: []map[string]any{
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "{{ metadata.annotations.foo.argoproj.io }}", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "{{ metadata.labels.environment }}", "values.aaa": "https://kubernetes.default.svc", "nameNormalized": "in-cluster", "name": "in-cluster", "server": "https://kubernetes.default.svc", "project": ""},
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "{{ metadata.annotations.foo.example.com }}", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "{{ metadata.labels.environment }}", "values.aaa": "https://kubernetes.default.svc", "nameNormalized": "in-cluster", "name": "in-cluster", "server": "https://kubernetes.default.svc", "project": ""},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "production", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "production", "values.aaa": "https://production-01.example.com", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "production", "project": "prod-project",
},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "staging", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "staging", "values.aaa": "https://staging-01.example.com", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "staging", "project": "",
},
},
clientError: false,
@@ -122,19 +122,19 @@ func TestGenerateParams(t *testing.T) {
name: "secret type label selector",
selector: metav1.LabelSelector{
MatchLabels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
},
},
values: nil,
expected: []map[string]any{
{
"name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "production", "project": "prod-project",
},
{
"name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "staging", "project": "",
},
},
clientError: false,
@@ -153,7 +153,7 @@ func TestGenerateParams(t *testing.T) {
expected: []map[string]any{
{
"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "production", "project": "prod-project",
},
},
clientError: false,
@@ -179,11 +179,11 @@ func TestGenerateParams(t *testing.T) {
expected: []map[string]any{
{
"values.foo": "bar", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "staging", "project": "",
},
{
"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "production", "project": "prod-project",
},
},
clientError: false,
@@ -212,7 +212,7 @@ func TestGenerateParams(t *testing.T) {
expected: []map[string]any{
{
"values.name": "baz", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "staging", "project": "",
},
},
clientError: false,
@@ -234,7 +234,7 @@ func TestGenerateParams(t *testing.T) {
"lol2": "{{values.lol1}}{{values.lol1}}",
"lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}",
"foo": "bar",
"bar": "{{ metadata.annotations.foo.argoproj.io }}",
"bar": "{{ metadata.annotations.foo.example.com }}",
"bat": "{{ metadata.labels.environment }}",
"aaa": "{{ server }}",
"no-op": "{{ this-does-not-exist }}",
@@ -242,15 +242,15 @@ func TestGenerateParams(t *testing.T) {
expected: []map[string]any{
{
"clusters": []map[string]any{
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "{{ metadata.annotations.foo.argoproj.io }}", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "{{ metadata.labels.environment }}", "values.aaa": "https://kubernetes.default.svc", "nameNormalized": "in-cluster", "name": "in-cluster", "server": "https://kubernetes.default.svc", "project": ""},
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "{{ metadata.annotations.foo.example.com }}", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "{{ metadata.labels.environment }}", "values.aaa": "https://kubernetes.default.svc", "nameNormalized": "in-cluster", "name": "in-cluster", "server": "https://kubernetes.default.svc", "project": ""},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "production", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "production", "values.aaa": "https://production-01.example.com", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "production", "project": "prod-project",
},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "staging", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "staging", "values.aaa": "https://staging-01.example.com", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "staging", "project": "",
},
},
},
@@ -282,11 +282,11 @@ func TestGenerateParams(t *testing.T) {
"clusters": []map[string]any{
{
"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "production", "project": "prod-project",
},
{
"values.foo": "bar", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.cd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster", "metadata.annotations.foo.example.com": "staging", "project": "",
},
},
},
@@ -355,12 +355,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
Name: "staging-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
Annotations: map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
Data: map[string][]byte{
@@ -379,12 +379,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
Name: "production-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
Annotations: map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
Data: map[string][]byte{
@@ -413,7 +413,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"lol2": "{{ .values.lol1 }}{{ .values.lol1 }}",
"lol3": "{{ .values.lol2 }}{{ .values.lol2 }}{{ .values.lol2 }}",
"foo": "bar",
"bar": "{{ if not (empty .metadata) }}{{index .metadata.annotations \"foo.argoproj.io\" }}{{ end }}",
"bar": "{{ if not (empty .metadata) }}{{index .metadata.annotations \"foo.example.com\" }}{{ end }}",
"bat": "{{ if not (empty .metadata) }}{{.metadata.labels.environment}}{{ end }}",
"aaa": "{{ .server }}",
"no-op": "{{ .thisDoesNotExist }}",
@@ -425,12 +425,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
"values": map[string]string{
@@ -451,12 +451,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
"values": map[string]string{
@@ -494,7 +494,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
name: "secret type label selector",
selector: metav1.LabelSelector{
MatchLabels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
},
},
values: nil,
@@ -506,12 +506,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
},
@@ -522,12 +522,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
},
@@ -553,12 +553,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
"values": map[string]string{
@@ -594,12 +594,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
"values": map[string]string{
@@ -613,12 +613,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
"values": map[string]string{
@@ -657,12 +657,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
"values": map[string]string{
@@ -690,7 +690,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"lol2": "{{ .values.lol1 }}{{ .values.lol1 }}",
"lol3": "{{ .values.lol2 }}{{ .values.lol2 }}{{ .values.lol2 }}",
"foo": "bar",
"bar": "{{ if not (empty .metadata) }}{{index .metadata.annotations \"foo.argoproj.io\" }}{{ end }}",
"bar": "{{ if not (empty .metadata) }}{{index .metadata.annotations \"foo.example.com\" }}{{ end }}",
"bat": "{{ if not (empty .metadata) }}{{.metadata.labels.environment}}{{ end }}",
"aaa": "{{ .server }}",
"no-op": "{{ .thisDoesNotExist }}",
@@ -721,12 +721,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
"values": map[string]string{
@@ -747,12 +747,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
"values": map[string]string{
@@ -800,12 +800,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
"values": map[string]string{
@@ -819,12 +819,12 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
"values": map[string]string{
+8 -8
View File
@@ -37,12 +37,12 @@ func TestGenerateParamsForDuckType(t *testing.T) {
Name: "staging-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
Annotations: map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
Data: map[string][]byte{
@@ -61,12 +61,12 @@ func TestGenerateParamsForDuckType(t *testing.T) {
Name: "production-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
Annotations: map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
Data: map[string][]byte{
@@ -369,12 +369,12 @@ func TestGenerateParamsForDuckTypeGoTemplate(t *testing.T) {
Name: "staging-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
Annotations: map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
Data: map[string][]byte{
@@ -393,12 +393,12 @@ func TestGenerateParamsForDuckTypeGoTemplate(t *testing.T) {
Name: "production-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
Annotations: map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
Data: map[string][]byte{
@@ -189,8 +189,8 @@ func TestTransForm(t *testing.T) {
MatchLabels: map[string]string{"server": "https://production-01.example.com"},
},
expected: []map[string]any{{
"metadata.annotations.foo.argoproj.io": "production",
"metadata.labels.cd.argoproj.io/secret-type": "cluster",
"metadata.annotations.foo.example.com": "production",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster",
"metadata.labels.environment": "production",
"metadata.labels.org": "bar",
"name": "production_01/west",
@@ -205,8 +205,8 @@ func TestTransForm(t *testing.T) {
MatchLabels: map[string]string{"server": "https://some-really-long-url-that-will-exceed-63-characters.com"},
},
expected: []map[string]any{{
"metadata.annotations.foo.argoproj.io": "production",
"metadata.labels.cd.argoproj.io/secret-type": "cluster",
"metadata.annotations.foo.example.com": "production",
"metadata.labels.cd.hanzo.ai/secret-type": "cluster",
"metadata.labels.environment": "production",
"metadata.labels.org": "bar",
"name": "some-really-long-server-url",
@@ -268,12 +268,12 @@ func TestTransFormGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
}},
@@ -290,12 +290,12 @@ func TestTransFormGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
}},
@@ -322,12 +322,12 @@ func TestTransFormGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
},
@@ -338,12 +338,12 @@ func TestTransFormGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
},
@@ -359,7 +359,7 @@ func TestTransFormGoTemplate(t *testing.T) {
{
name: "slash key in label",
selector: &metav1.LabelSelector{
MatchLabels: map[string]string{"metadata.labels.cd.argoproj.io/secret-type": "cluster"},
MatchLabels: map[string]string{"metadata.labels.cd.hanzo.ai/secret-type": "cluster"},
},
expected: []map[string]any{
{
@@ -369,12 +369,12 @@ func TestTransFormGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
},
@@ -385,12 +385,12 @@ func TestTransFormGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
},
@@ -401,12 +401,12 @@ func TestTransFormGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
},
@@ -425,12 +425,12 @@ func TestTransFormGoTemplate(t *testing.T) {
"project": "",
"metadata": map[string]any{
"labels": map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
"values": map[string]string{
@@ -493,12 +493,12 @@ func getMockClusterGenerator() Generator {
Name: "staging-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
Annotations: map[string]string{
"foo.argoproj.io": "staging",
"foo.example.com": "staging",
},
},
Data: map[string][]byte{
@@ -517,12 +517,12 @@ func getMockClusterGenerator() Generator {
Name: "production-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
Annotations: map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
Data: map[string][]byte{
@@ -541,12 +541,12 @@ func getMockClusterGenerator() Generator {
Name: "some-really-long-server-url",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
Annotations: map[string]string{
"foo.argoproj.io": "production",
"foo.example.com": "production",
},
},
Data: map[string][]byte{
@@ -621,7 +621,7 @@ func TestInterpolateGenerator(t *testing.T) {
Clusters: &argov1alpha1.ClusterGenerator{
Selector: metav1.LabelSelector{
MatchLabels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"path-basename": "{{path.basename}}",
"path-zero": "{{path[0]}}",
"path-full": "{{path}}",
@@ -675,7 +675,7 @@ func TestInterpolateGenerator_go(t *testing.T) {
Clusters: &argov1alpha1.ClusterGenerator{
Selector: metav1.LabelSelector{
MatchLabels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"path-basename": "{{base .path.path}}",
"path-zero": "{{index .path.segments 0}}",
"path-full": "{{.path.path}}",
+2 -2
View File
@@ -1308,7 +1308,7 @@ cluster:
expectedError: nil,
},
{
name: "test to verify the solution for Git File Generator Problem", // https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/applicationset/Generators-Git-File-Globbing.md#git-file-generator-globbing
name: "test to verify the solution for Git File Generator Problem", // https://github.com/hanzoai/cd/blob/master/docs/operator-manual/applicationset/Generators-Git-File-Globbing.md#git-file-generator-globbing
files: []v1alpha1.GitFileGeneratorItem{{Path: "cluster-charts/*/*/values.yaml"}, {Path: "cluster-charts/*/values.yaml", Exclude: true}},
includePattern: []string{"cluster-charts/*/*/values.yaml"},
excludePattern: []string{"cluster-charts/*/values.yaml"},
@@ -2422,7 +2422,7 @@ func TestGitGenerator_GenerateParams(t *testing.T) {
},
callGetDirectories: false,
expected: []map[string]any{{"path": "app1", "path.basename": "app1", "path.basenameNormalized": "app1", "path[0]": "app1", "values.foo": "bar"}},
expectedError: errors.New("error getting project project: appprojects.argoproj.io \"project\" not found"),
expectedError: errors.New("error getting project project: appprojects.apps.hanzo.ai \"project\" not found"),
},
{
name: "Project field is not templated - verify that project is passed through to repo-server as-is",
+9 -9
View File
@@ -575,8 +575,8 @@ func TestInterpolatedMatrixGenerate(t *testing.T) {
},
},
expected: []map[string]any{
{"path": "examples/git-generator-files-discovery/cluster-config/dev/config.json", "path.basename": "dev", "path.basenameNormalized": "dev", "name": "dev-01", "nameNormalized": "dev-01", "server": "https://dev-01.example.com", "metadata.labels.environment": "dev", "metadata.labels.cd.argoproj.io/secret-type": "cluster", "project": ""},
{"path": "examples/git-generator-files-discovery/cluster-config/prod/config.json", "path.basename": "prod", "path.basenameNormalized": "prod", "name": "prod-01", "nameNormalized": "prod-01", "server": "https://prod-01.example.com", "metadata.labels.environment": "prod", "metadata.labels.cd.argoproj.io/secret-type": "cluster", "project": ""},
{"path": "examples/git-generator-files-discovery/cluster-config/dev/config.json", "path.basename": "dev", "path.basenameNormalized": "dev", "name": "dev-01", "nameNormalized": "dev-01", "server": "https://dev-01.example.com", "metadata.labels.environment": "dev", "metadata.labels.cd.hanzo.ai/secret-type": "cluster", "project": ""},
{"path": "examples/git-generator-files-discovery/cluster-config/prod/config.json", "path.basename": "prod", "path.basenameNormalized": "prod", "name": "prod-01", "nameNormalized": "prod-01", "server": "https://prod-01.example.com", "metadata.labels.environment": "prod", "metadata.labels.cd.hanzo.ai/secret-type": "cluster", "project": ""},
},
clientError: false,
},
@@ -591,7 +591,7 @@ func TestInterpolatedMatrixGenerate(t *testing.T) {
Name: "dev-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "dev",
},
},
@@ -611,7 +611,7 @@ func TestInterpolatedMatrixGenerate(t *testing.T) {
Name: "prod-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "prod",
},
},
@@ -729,7 +729,7 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
"metadata": map[string]any{
"labels": map[string]string{
"environment": "dev",
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
},
},
},
@@ -746,7 +746,7 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
"metadata": map[string]any{
"labels": map[string]string{
"environment": "prod",
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
},
},
},
@@ -764,7 +764,7 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
Name: "dev-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "dev",
},
},
@@ -784,7 +784,7 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
Name: "prod-01",
Namespace: "namespace",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "prod",
},
},
@@ -1307,7 +1307,7 @@ func clusterSecret() *corev1.Secret {
Name: "guestbook-cluster",
Namespace: "cd",
Labels: map[string]string{
"cd.argoproj.io/secret-type": "cluster",
"cd.hanzo.ai/secret-type": "cluster",
"environment": "guestbook",
},
},
+5 -5
View File
@@ -33,7 +33,7 @@ var (
)
const fakeAppsetList = `
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: test1
@@ -62,7 +62,7 @@ spec:
targetRevision: HEAD
status:
resources:
- group: argoproj.io
- group: apps.hanzo.ai
health:
status: Missing
kind: Application
@@ -70,7 +70,7 @@ status:
namespace: cd
status: OutOfSync
version: v1alpha1
- group: argoproj.io
- group: apps.hanzo.ai
health:
status: Missing
kind: Application
@@ -95,7 +95,7 @@ status:
status: "True"
type: ResourcesUpToDate
---
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: test2
@@ -122,7 +122,7 @@ spec:
repoURL: https://github.com/test/test.git
targetRevision: HEAD
---
apiVersion: argoproj.io/v1alpha1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: should-be-filtered-out
@@ -728,7 +728,7 @@ func syncApplication(application argov1alpha1.Application, prune bool) argov1alp
Sync: &argov1alpha1.SyncOperation{},
// Set a retry limit of 5, aligning with the default in Hanzo CD's appcontroller auto-sync behavior.
// This provides consistency for retry behavior across controllers.
// See: https://github.com/argoproj/argo-cd/blob/af9ebac0bb35dc16eb034c1cefaf7c92d1029927/controller/appcontroller.go#L2126
// See: https://github.com/hanzoai/cd/blob/af9ebac0bb35dc16eb034c1cefaf7c92d1029927/controller/appcontroller.go#L2126
Retry: argov1alpha1.RetryStrategy{Limit: 5},
}
@@ -1652,7 +1652,7 @@ func TestPerformReverseDeletionStaleCache(t *testing.T) {
// The objects are already gone on the API server: every Delete 404s.
Delete: func(_ context.Context, _ client.WithWatch, obj client.Object, _ ...client.DeleteOption) error {
deleteAttempts[obj.GetName()]++
return apierrors.NewNotFound(schema.GroupResource{Group: "argoproj.io", Resource: "applications"}, obj.GetName())
return apierrors.NewNotFound(schema.GroupResource{Group: "apps.hanzo.ai", Resource: "applications"}, obj.GetName())
},
}).
Build()
@@ -45,7 +45,7 @@ func githubMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
"site_admin": false
},
"private": false,
"html_url": "https://github.com/argoproj/argo-cd",
"html_url": "https://github.com/hanzoai/cd",
"description": "This your first repo!",
"fork": false,
"url": "https://api.github.com/repos/argoproj/argo-cd",
@@ -66,7 +66,7 @@ func githubMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
"git_commits_url": "https://api.github.com/repos/argoproj/argo-cd/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/argoproj/argo-cd/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/argoproj/argo-cd/git/tags{/sha}",
"git_url": "git:github.com/argoproj/argo-cd.git",
"git_url": "git:github.com/hanzoai/cd.git",
"issue_comment_url": "https://api.github.com/repos/argoproj/argo-cd/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/argoproj/argo-cd/issues/events{/number}",
"issues_url": "https://api.github.com/repos/argoproj/argo-cd/issues{/number}",
@@ -86,10 +86,10 @@ func githubMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
"tags_url": "https://api.github.com/repos/argoproj/argo-cd/tags",
"teams_url": "https://api.github.com/repos/argoproj/argo-cd/teams",
"trees_url": "https://api.github.com/repos/argoproj/argo-cd/git/trees{/sha}",
"clone_url": "https://github.com/argoproj/argo-cd.git",
"clone_url": "https://github.com/hanzoai/cd.git",
"mirror_url": "git:git.example.com/argoproj/argo-cd",
"hooks_url": "https://api.github.com/repos/argoproj/argo-cd/hooks",
"svn_url": "https://svn.github.com/argoproj/argo-cd",
"svn_url": "https://svn.github.com/hanzoai/cd",
"homepage": "https://github.com",
"language": null,
"forks_count": 9,
@@ -521,7 +521,7 @@ func TestGithubListRepos(t *testing.T) {
Organization: "argoproj",
Repository: "argo-cd",
Branch: "master",
URL: "https://github.com/argoproj/argo-cd.git",
URL: "https://github.com/hanzoai/cd.git",
SHA: "c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc",
Labels: []string{
"argoproj",
@@ -535,7 +535,7 @@ func TestGithubListRepos(t *testing.T) {
Organization: "argoproj",
Repository: "argo-cd",
Branch: "test",
URL: "https://github.com/argoproj/argo-cd.git",
URL: "https://github.com/hanzoai/cd.git",
SHA: "80a6e93f16e8093e24091b03c614362df3fb9b92",
Labels: []string{
"argoproj",
@@ -637,7 +637,7 @@ func TestGithubListRepos(t *testing.T) {
Organization: "argoproj",
Repository: "argo-cd",
Branch: "master",
URL: "https://github.com/argoproj/argo-cd.git",
URL: "https://github.com/hanzoai/cd.git",
SHA: "c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc",
Labels: []string{
"argoproj",
@@ -651,7 +651,7 @@ func TestGithubListRepos(t *testing.T) {
Organization: "argoproj",
Repository: "argo-cd",
Branch: "test",
URL: "https://github.com/argoproj/argo-cd.git",
URL: "https://github.com/hanzoai/cd.git",
SHA: "80a6e93f16e8093e24091b03c614362df3fb9b92",
Labels: []string{
"argoproj",
+1 -1
View File
@@ -187,7 +187,7 @@ spec:
string: https://example.com`,
},
{
// For this use case: https://github.com/argoproj/argo-cd/pull/14743#issuecomment-1761954799
// For this use case: https://github.com/hanzoai/cd/pull/14743#issuecomment-1761954799
name: "ignore parameters added to a multi-source app in the cluster",
ignoreDifferences: v1alpha1.ApplicationSetIgnoreDifferences{
{JQPathExpressions: []string{`.spec.sources[] | select(.repoURL | contains("test-repo")).helm.parameters`}},
@@ -276,7 +276,7 @@ func NewCommand() *cobra.Command {
command.Flags().BoolVar(&disableOCIManifestMaxExtractedSize, "disable-oci-manifest-max-extracted-size", env.ParseBoolFromEnv("CD_REPO_SERVER_DISABLE_OCI_MANIFEST_MAX_EXTRACTED_SIZE", false), "Disable maximum size of oci manifest archives when extracted")
command.Flags().BoolVar(&disableManifestMaxExtractedSize, "disable-helm-manifest-max-extracted-size", env.ParseBoolFromEnv("CD_REPO_SERVER_DISABLE_HELM_MANIFEST_MAX_EXTRACTED_SIZE", false), "Disable maximum size of helm manifest archives when extracted")
command.Flags().BoolVar(&includeHiddenDirectories, "include-hidden-directories", env.ParseBoolFromEnv("CD_REPO_SERVER_INCLUDE_HIDDEN_DIRECTORIES", false), "Include hidden directories from Git")
command.Flags().BoolVar(&cmpUseManifestGeneratePaths, "plugin-use-manifest-generate-paths", env.ParseBoolFromEnv("CD_REPO_SERVER_PLUGIN_USE_MANIFEST_GENERATE_PATHS", false), "Pass the resources described in cd.argoproj.io/manifest-generate-paths value to the cmpserver to generate the application manifests.")
command.Flags().BoolVar(&cmpUseManifestGeneratePaths, "plugin-use-manifest-generate-paths", env.ParseBoolFromEnv("CD_REPO_SERVER_PLUGIN_USE_MANIFEST_GENERATE_PATHS", false), "Pass the resources described in cd.hanzo.ai/manifest-generate-paths value to the cmpserver to generate the application manifests.")
command.Flags().StringSliceVar(&ociMediaTypes, "oci-layer-media-types", env.StringsFromEnv("CD_REPO_SERVER_OCI_LAYER_MEDIA_TYPES", []string{"application/vnd.oci.image.layer.v1.tar", "application/vnd.oci.image.layer.v1.tar+gzip", "application/vnd.cncf.helm.chart.content.v1.tar+gzip"}, ","), "Comma separated list of allowed media types for OCI media types. This only accounts for media types within layers.")
command.Flags().BoolVar(&enableBuiltinGitConfig, "enable-builtin-git-config", env.ParseBoolFromEnv("CD_REPO_SERVER_ENABLE_BUILTIN_GIT_CONFIG", true), "Enable builtin git configuration options that are required for correct cd-repo-server operation.")
command.Flags().BoolVar(&disableTLS, "disable-tls", env.ParseBoolFromEnv("CD_REPO_SERVER_DISABLE_TLS", false), "Disable TLS for the repo-server gRPC endpoint")
+1 -1
View File
@@ -253,7 +253,7 @@ func NewImportCommand() *cobra.Command {
}
applicationSets, err := acdClients.applicationSets.List(ctx, metav1.ListOptions{})
if apierrors.IsForbidden(err) || apierrors.IsNotFound(err) {
log.Warnf("argoproj.io/ApplicationSet: %v\n", err)
log.Warnf("apps.hanzo.ai/ApplicationSet: %v\n", err)
} else {
errors.CheckError(err)
}
+1 -1
View File
@@ -156,7 +156,7 @@ func generateProjectAllowList(serverResources []*metav1.APIResourceList, cluster
globalProj := v1alpha1.AppProject{
TypeMeta: metav1.TypeMeta{
Kind: application.AppProjectKind,
APIVersion: "argoproj.io/v1alpha1",
APIVersion: "apps.hanzo.ai/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{Name: projName},
Spec: v1alpha1.AppProjectSpec{},
+4 -4
View File
@@ -20,7 +20,7 @@ data:
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/name: argocd-rbac-cm
app.kubernetes.io/part-of: argocd
name: argocd-rbac-cm
namespace: argocd
app.kubernetes.io/name: cd-rbac-cm
app.kubernetes.io/part-of: cd
name: cd-rbac-cm
namespace: cd
+6 -6
View File
@@ -10,7 +10,7 @@ metadata:
name: admin
rules:
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- workflows
- workflows/finalizers
@@ -30,7 +30,7 @@ rules:
- update
- watch
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- gateways
- gateways/finalizers
@@ -50,7 +50,7 @@ rules:
- update
- watch
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- rollouts
- rollouts/scale
@@ -241,7 +241,7 @@ rules:
verbs:
- update
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- workflows
- workflows/finalizers
@@ -256,7 +256,7 @@ rules:
- list
- watch
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- gateways
- gateways/finalizers
@@ -271,7 +271,7 @@ rules:
- list
- watch
- apiGroups:
- argoproj.io
- apps.hanzo.ai
resources:
- rollouts
- rollouts/scale
+4 -4
View File
@@ -1605,12 +1605,12 @@ func NewApplicationWaitCommand(clientOpts *cdclient.ClientOptions) *cobra.Comman
# Wait for apps by resource
# Resource should be formatted as GROUP:KIND:NAME. If no GROUP is specified then :KIND:NAME.
cd app wait my-app --resource :Service:my-service
cd app wait my-app --resource argoproj.io:Rollout:my-rollout
cd app wait my-app --resource apps.hanzo.ai:Rollout:my-rollout
cd app wait my-app --resource '!apps:Deployment:my-service'
cd app wait my-app --resource apps:Deployment:my-service --resource :Service:my-service
cd app wait my-app --resource '!*:Service:*'
# Specify namespace if the application has resources with the same name in different namespaces
cd app wait my-app --resource argoproj.io:Rollout:my-namespace/my-rollout
cd app wait my-app --resource apps.hanzo.ai:Rollout:my-namespace/my-rollout
# Wait for apps by label, in this example we waiting for apps that are children of another app (aka app-of-apps)
cd app wait -l app.kubernetes.io/instance=my-app
@@ -1754,12 +1754,12 @@ func NewApplicationSyncCommand(clientOpts *cdclient.ClientOptions) *cobra.Comman
# Sync a specific resource
# Resource should be formatted as GROUP:KIND:NAME. If no GROUP is specified then :KIND:NAME
cd app sync my-app --resource :Service:my-service
cd app sync my-app --resource argoproj.io:Rollout:my-rollout
cd app sync my-app --resource apps.hanzo.ai:Rollout:my-rollout
cd app sync my-app --resource '!apps:Deployment:my-service'
cd app sync my-app --resource apps:Deployment:my-service --resource :Service:my-service
cd app sync my-app --resource '!*:Service:*'
# Specify namespace if the application has resources with the same name in different namespaces
cd app sync my-app --resource argoproj.io:Rollout:my-namespace/my-rollout`,
cd app sync my-app --resource apps.hanzo.ai:Rollout:my-namespace/my-rollout`,
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()
if len(args) == 0 && selector == "" && len(projects) == 0 {
+1 -1
View File
@@ -246,7 +246,7 @@ func getActionableResourcesForApplication(ctx context.Context, appIf application
return nil, err
}
app.Kind = application.ApplicationKind
app.APIVersion = "argoproj.io/v1alpha1"
app.APIVersion = "apps.hanzo.ai/v1alpha1"
appManifest, err := json.Marshal(app)
if err != nil {
return nil, err
+1 -1
View File
@@ -1440,7 +1440,7 @@ func TestNewNormalizeTargetManifestsProvider(t *testing.T) {
// Verify tracking annotation was re-applied with correct (empty) namespace
annotations := result[0].GetAnnotations()
assert.NotNil(t, annotations)
trackingID, ok := annotations["cd.argoproj.io/tracking-id"]
trackingID, ok := annotations["cd.hanzo.ai/tracking-id"]
assert.True(t, ok, "tracking annotation should be present")
// Tracking ID format: app-name:group/kind:namespace/name (namespace should be empty for cluster-scoped)
assert.Contains(t, trackingID, "ClusterRole:")

Some files were not shown because too many files have changed in this diff Show More