mirror of
https://github.com/hanzoai/deploy.git
synced 2026-10-07 08:44:50 +00:00
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:
@@ -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**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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!
|
||||
```
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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:
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -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
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
**Releases:**
|
||||
[](https://github.com/argoproj/argo-cd/releases/latest)
|
||||
[](https://github.com/hanzoai/cd/releases/latest)
|
||||
[](https://artifacthub.io/packages/helm/argo/argo-cd)
|
||||
[](https://slsa.dev)
|
||||
|
||||
**Code:**
|
||||
[](https://github.com/argoproj/argo-cd/actions?query=workflow%3A%22Integration+tests%22)
|
||||
[](https://github.com/hanzoai/cd/actions?query=workflow%3A%22Integration+tests%22)
|
||||
[](https://codecov.io/gh/argoproj/argo-cd)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/4486)
|
||||
[](https://scorecard.dev/viewer/?uri=github.com/argoproj/argo-cd)
|
||||
[](https://scorecard.dev/viewer/?uri=github.com/hanzoai/cd)
|
||||
|
||||
**Social:**
|
||||
[](https://twitter.com/argoproj)
|
||||
@@ -15,76 +15,76 @@
|
||||
[](https://www.linkedin.com/company/argoproj/)
|
||||
[](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.
|
||||
|
||||

|
||||

|
||||
|
||||
[](https://youtu.be/0WAm0y2vLIo)
|
||||
[](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/)
|
||||
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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:
|
||||
|
||||
+1
-1
@@ -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
-1
@@ -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,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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
|
||||
+4
-4
@@ -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:
|
||||
|
||||
+4
-4
@@ -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:
|
||||
|
||||
+4
-4
@@ -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:
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+3
-3
@@ -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:
|
||||
|
||||
+3
-3
@@ -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:
|
||||
|
||||
+3
-3
@@ -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:
|
||||
|
||||
+1
-1
@@ -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
-1
@@ -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
-1
@@ -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
|
||||
|
||||
+2
-2
@@ -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
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+3
-3
@@ -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:
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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}}",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user