From 8ba5f22bdf71467113d30055a0e143e1ce0eadd1 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Sat, 18 Jan 2025 19:22:42 -0600 Subject: [PATCH 01/27] chore(deps): update renovatebot/github-action action to v41.0.9 (#3125) --- .github/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index eeea7755..ebc1adf8 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Self-hosted Renovate - uses: renovatebot/github-action@f24426972367551f3391720e34317783a92fd32b # v41.0.8 + uses: renovatebot/github-action@531c6786d6cf05ef148c4cfe251745c2c6de442c # v41.0.9 with: configurationFile: .github/configs/renovate-config.js # renovate: datasource=docker depName=ghcr.io/renovatebot/renovate From 27ef4ecd7dd30dbccea61180ff529d3102b9c30e Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 17:18:21 +0900 Subject: [PATCH 02/27] chore(deps): update renovatebot/github-action action to v41.0.10 (#3128) --- .github/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index ebc1adf8..de804f3f 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Self-hosted Renovate - uses: renovatebot/github-action@531c6786d6cf05ef148c4cfe251745c2c6de442c # v41.0.9 + uses: renovatebot/github-action@3f10d7a25cf0aa7b37519aa771ed9143fcbb5da5 # v41.0.10 with: configurationFile: .github/configs/renovate-config.js # renovate: datasource=docker depName=ghcr.io/renovatebot/renovate From bf9830c670970904b8dad642e997d2107b14fb18 Mon Sep 17 00:00:00 2001 From: "Marco Maurer (-Kilchhofer)" Date: Fri, 24 Jan 2025 14:04:22 +0100 Subject: [PATCH 03/27] fix(argo-cd): Address ingress regression of PR #3081 (#3137) Signed-off-by: Marco Maurer --- charts/argo-cd/Chart.yaml | 6 +++--- charts/argo-cd/templates/argocd-server/ingress.yaml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index 2eb5a0cf..05c614ff 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -3,7 +3,7 @@ appVersion: v2.13.3 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.7.16 +version: 7.7.17 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -26,5 +26,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: added - description: Added conditional around argocd-tls-certs-cm.yaml helm creation + - kind: fixed + description: Address ingress regression of PR #3081, use toString before tpl function diff --git a/charts/argo-cd/templates/argocd-server/ingress.yaml b/charts/argo-cd/templates/argocd-server/ingress.yaml index 88c2f99a..8724baa7 100644 --- a/charts/argo-cd/templates/argocd-server/ingress.yaml +++ b/charts/argo-cd/templates/argocd-server/ingress.yaml @@ -14,7 +14,7 @@ metadata: {{- with .Values.server.ingress.annotations }} annotations: {{- range $key, $value := . }} - {{ $key }}: {{ tpl $value $ | quote }} + {{ $key }}: {{ tpl (toString $value) $ | quote }} {{- end }} {{- end }} spec: From 79ec8fdb942aaffaeba5cd1cdf7e0184cd7a16f0 Mon Sep 17 00:00:00 2001 From: AvivGuiser Date: Sat, 25 Jan 2025 15:31:37 +0200 Subject: [PATCH 04/27] feat(argocd-image-updater): Make cm and secret names configurable (#2998) * feat: made argocd image updater cm and secret name templated Signed-off-by: AvivGuiser * fix indention Signed-off-by: AvivGuiser * update Chart.yaml Signed-off-by: AvivGuiser * chore: Apply changes from code review Signed-off-by: Marco Maurer * chore: Reflect changes from review inside changelog Signed-off-by: Marco Maurer (-Kilchhofer) --------- Signed-off-by: AvivGuiser Signed-off-by: Marco Maurer Signed-off-by: Marco Maurer (-Kilchhofer) Co-authored-by: Marco Maurer --- charts/argocd-image-updater/Chart.yaml | 4 +-- charts/argocd-image-updater/README.md | 6 +++- .../templates/configmap-authscripts.yaml | 2 +- .../templates/configmap-sshconfig.yaml | 10 ++++-- .../templates/configmap.yaml | 2 +- .../templates/deployment.yaml | 32 +++++++++---------- .../templates/secret.yaml | 2 +- charts/argocd-image-updater/values.yaml | 12 +++++-- 8 files changed, 44 insertions(+), 26 deletions(-) diff --git a/charts/argocd-image-updater/Chart.yaml b/charts/argocd-image-updater/Chart.yaml index f3880ec5..02438363 100644 --- a/charts/argocd-image-updater/Chart.yaml +++ b/charts/argocd-image-updater/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: argocd-image-updater description: A Helm chart for Argo CD Image Updater, a tool to automatically update the container images of Kubernetes workloads which are managed by Argo CD type: application -version: 0.11.4 +version: 0.12.0 appVersion: v0.15.2 home: https://github.com/argoproj-labs/argocd-image-updater icon: https://argocd-image-updater.readthedocs.io/en/stable/assets/logo.png @@ -19,4 +19,4 @@ annotations: url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - kind: changed - description: Bump argocd-image-updater to v0.15.2 + description: ConfigMap and Secret names are now configurable diff --git a/charts/argocd-image-updater/README.md b/charts/argocd-image-updater/README.md index 7a35b881..d77ee710 100644 --- a/charts/argocd-image-updater/README.md +++ b/charts/argocd-image-updater/README.md @@ -70,6 +70,7 @@ The `config.registries` value can be used exactly as it looks in the documentati |-----|------|---------|-------------| | affinity | object | `{}` | Kubernetes affinity settings for the deployment | | authScripts.enabled | bool | `false` | Whether to mount the defined scripts that can be used to authenticate with a registry, the scripts will be mounted at `/scripts` | +| authScripts.name | string | `"argocd-image-updater-authscripts"` | Name of the authentication scripts ConfigMap | | authScripts.scripts | object | `{}` | Map of key-value pairs where the key consists of the name of the script and the value the contents | | config.applicationsAPIKind | string | `""` | API kind that is used to manage Argo CD applications (`kubernetes` or `argocd`) | | config.argocd.grpcWeb | bool | `true` | Use the gRPC-web protocol to connect to the Argo CD API | @@ -77,6 +78,7 @@ The `config.registries` value can be used exactly as it looks in the documentati | config.argocd.plaintext | bool | `false` | If specified, use an unencrypted HTTP connection to the Argo CD API instead of TLS. | | config.argocd.serverAddress | string | `""` | Connect to the Argo CD API server at server address | | config.argocd.token | string | `""` | If specified, the secret with Argo CD API key will be created. | +| config.argocd.tokenSecretName | string | `"argocd-image-updater-secret"` | Name of the Secret containing the token | | config.disableKubeEvents | bool | `false` | Disable kubernetes events | | config.gitCommitMail | string | `""` | E-Mail address to use for Git commits | | config.gitCommitSignOff | bool | `false` | Enables sign off on commits | @@ -85,8 +87,10 @@ The `config.registries` value can be used exactly as it looks in the documentati | config.gitCommitTemplate | string | `""` | Changing the Git commit message | | config.gitCommitUser | string | `""` | Username to use for Git commits | | config.logLevel | string | `"info"` | Argo CD Image Update log level | +| config.name | string | `"argocd-image-updater-config"` | Name of the ConfigMap | | config.registries | list | `[]` | Argo CD Image Updater registries list configuration. More information [here](https://argocd-image-updater.readthedocs.io/en/stable/configuration/registries/) | -| config.sshConfig | object | `{}` | Argo CD Image Updater ssh client parameter configuration. | +| config.sshConfig.config | string | `""` | Argo CD Image Updater ssh client parameter configuration. | +| config.sshConfig.name | string | `"argocd-image-updater-ssh-config"` | Name of the sshConfig ConfigMap | | createClusterRoles | bool | `true` | Create cluster roles for cluster-wide installation. | | extraArgs | list | `[]` | Extra arguments for argocd-image-updater not defined in `config.argocd`. If a flag contains both key and value, they need to be split to a new entry | | extraEnv | list | `[]` | Extra environment variables for argocd-image-updater | diff --git a/charts/argocd-image-updater/templates/configmap-authscripts.yaml b/charts/argocd-image-updater/templates/configmap-authscripts.yaml index fbb345e3..259054f6 100644 --- a/charts/argocd-image-updater/templates/configmap-authscripts.yaml +++ b/charts/argocd-image-updater/templates/configmap-authscripts.yaml @@ -4,7 +4,7 @@ kind: ConfigMap metadata: labels: {{- include "argocd-image-updater.labels" . | nindent 4 }} - name: argocd-image-updater-authscripts + name: {{ .Values.authScripts.name }} namespace: {{ include "argocd-image-updater.namespace" . | quote }} data: {{- toYaml .Values.authScripts.scripts | nindent 2}} diff --git a/charts/argocd-image-updater/templates/configmap-sshconfig.yaml b/charts/argocd-image-updater/templates/configmap-sshconfig.yaml index 9fd83d92..9ff9ba61 100644 --- a/charts/argocd-image-updater/templates/configmap-sshconfig.yaml +++ b/charts/argocd-image-updater/templates/configmap-sshconfig.yaml @@ -1,11 +1,17 @@ +{{- $sshConfig := omit .Values.config.sshConfig "name" }} +{{- range $key, $val := $sshConfig }} + {{- if not $val }} + {{ $_ := unset $sshConfig $key }} + {{- end }} +{{- end }} apiVersion: v1 kind: ConfigMap metadata: labels: {{- include "argocd-image-updater.labels" . | nindent 4 }} - name: argocd-image-updater-ssh-config + name: {{ .Values.config.sshConfig.name }} namespace: {{ include "argocd-image-updater.namespace" . | quote }} -{{- with .Values.config.sshConfig }} +{{- with $sshConfig }} data: {{- toYaml . | nindent 2 }} {{- end }} diff --git a/charts/argocd-image-updater/templates/configmap.yaml b/charts/argocd-image-updater/templates/configmap.yaml index 46ee3b80..8eb0e704 100644 --- a/charts/argocd-image-updater/templates/configmap.yaml +++ b/charts/argocd-image-updater/templates/configmap.yaml @@ -4,7 +4,7 @@ kind: ConfigMap metadata: labels: {{- include "argocd-image-updater.labels" . | nindent 4 }} - name: argocd-image-updater-config + name: {{ .Values.config.name }} namespace: {{ include "argocd-image-updater.namespace" . | quote }} data: {{- with .Values.config.applicationsAPIKind }} diff --git a/charts/argocd-image-updater/templates/deployment.yaml b/charts/argocd-image-updater/templates/deployment.yaml index 4aaa83b3..87f1fbf4 100644 --- a/charts/argocd-image-updater/templates/deployment.yaml +++ b/charts/argocd-image-updater/templates/deployment.yaml @@ -44,79 +44,79 @@ spec: valueFrom: configMapKeyRef: key: applications_api - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: ARGOCD_GRPC_WEB valueFrom: configMapKeyRef: key: argocd.grpc_web - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: ARGOCD_SERVER valueFrom: configMapKeyRef: key: argocd.server_addr - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: ARGOCD_INSECURE valueFrom: configMapKeyRef: key: argocd.insecure - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: ARGOCD_PLAINTEXT valueFrom: configMapKeyRef: key: argocd.plaintext - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: ARGOCD_TOKEN valueFrom: secretKeyRef: key: argocd.token - name: argocd-image-updater-secret + name: {{ .Values.config.argocd.tokenSecretName }} optional: true - name: IMAGE_UPDATER_LOGLEVEL valueFrom: configMapKeyRef: key: log.level - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: GIT_COMMIT_USER valueFrom: configMapKeyRef: key: git.user - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: GIT_COMMIT_EMAIL valueFrom: configMapKeyRef: key: git.email - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: IMAGE_UPDATER_KUBE_EVENTS valueFrom: configMapKeyRef: key: kube.events - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: GIT_COMMIT_SIGNING_KEY valueFrom: configMapKeyRef: key: git.commit-signing-key - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: GIT_COMMIT_SIGNING_METHOD valueFrom: configMapKeyRef: key: git.commit-signing-method - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true - name: GIT_COMMIT_SIGN_OFF valueFrom: configMapKeyRef: key: git.commit-sign-off - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true {{- with .Values.extraEnv }} {{- toYaml . | nindent 10 }} @@ -177,13 +177,13 @@ spec: path: registries.conf - key: git.commit-message-template path: commit.template - name: argocd-image-updater-config + name: {{ .Values.config.name }} optional: true name: image-updater-conf {{- if .Values.authScripts.enabled }} - configMap: defaultMode: 0777 - name: argocd-image-updater-authscripts + name: {{ .Values.authScripts.name }} name: authscripts {{- end }} - configMap: @@ -191,7 +191,7 @@ spec: optional: true name: ssh-known-hosts - configMap: - name: argocd-image-updater-ssh-config + name: {{ .Values.config.sshConfig.name }} optional: true name: ssh-config - name: ssh-signing-key diff --git a/charts/argocd-image-updater/templates/secret.yaml b/charts/argocd-image-updater/templates/secret.yaml index 08955095..171add82 100644 --- a/charts/argocd-image-updater/templates/secret.yaml +++ b/charts/argocd-image-updater/templates/secret.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Secret metadata: - name: argocd-image-updater-secret + name: {{ .Values.config.argocd.tokenSecretName }} namespace: {{ include "argocd-image-updater.namespace" . | quote }} labels: {{- include "argocd-image-updater.labels" . | nindent 4 }} diff --git a/charts/argocd-image-updater/values.yaml b/charts/argocd-image-updater/values.yaml index 4825833e..15832520 100644 --- a/charts/argocd-image-updater/values.yaml +++ b/charts/argocd-image-updater/values.yaml @@ -109,6 +109,8 @@ volumes: [] # emptyDir: {} config: + # -- Name of the ConfigMap + name: argocd-image-updater-config # -- API kind that is used to manage Argo CD applications (`kubernetes` or `argocd`) applicationsAPIKind: "" @@ -125,6 +127,8 @@ config: plaintext: false # -- If specified, the secret with Argo CD API key will be created. token: "" + # -- Name of the Secret containing the token + tokenSecretName: "argocd-image-updater-secret" # -- Disable kubernetes events disableKubeEvents: false @@ -175,9 +179,11 @@ config: # credentials: ext:/scripts/auth1.sh # credsexpire: 10h - # -- Argo CD Image Updater ssh client parameter configuration. sshConfig: - {} + # -- Name of the sshConfig ConfigMap + name: argocd-image-updater-ssh-config + # -- Argo CD Image Updater ssh client parameter configuration. + config: "" # config: | # Host * # PubkeyAcceptedAlgorithms +ssh-rsa @@ -188,6 +194,8 @@ config: authScripts: # -- Whether to mount the defined scripts that can be used to authenticate with a registry, the scripts will be mounted at `/scripts` enabled: false + # -- Name of the authentication scripts ConfigMap + name: argocd-image-updater-authscripts # -- Map of key-value pairs where the key consists of the name of the script and the value the contents scripts: {} # auth1.sh: | From 296362871281cc4b4b7b2389a83ec8d190430aaf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Jan 2025 18:30:41 +0000 Subject: [PATCH 05/27] chore(deps): bump the dependencies group with 4 updates (#3141) --- .github/workflows/lint-and-test.yml | 2 +- .github/workflows/publish.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/stale.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 4c4db950..f8f9fe02 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -38,7 +38,7 @@ jobs: - name: Setup Chart Linting id: lint - uses: helm/chart-testing-action@e6669bcd63d7cb57cb4380c33043eebe5d111992 # v2.6.1 + uses: helm/chart-testing-action@0d28d3144d3a25ea2cc349d6e59901c4ff469b3b # v2.7.0 with: # Note: Also update in scripts/lint.sh version: v3.11.0 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2e74eab1..f6dcec99 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -59,7 +59,7 @@ jobs: PGP_PASSPHRASE: "${{ secrets.PGP_PASSPHRASE }}" - name: Run chart-releaser - uses: helm/chart-releaser-action@a917fd15b20e8b64b94d9158ad54cd6345335584 # v1.6.0 + uses: helm/chart-releaser-action@cae68fefc6b5f367a0275617c9f83181ba54714f # v1.7.0 with: config: "./.github/configs/cr.yaml" env: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 231f25c1..e9a10387 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -68,6 +68,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b6a472f63d85b9c78a3ac5e89422239fc15e9b3c # v3.28.1 + uses: github/codeql-action/upload-sarif@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3.28.5 with: sarif_file: results.sarif diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index d0813423..159a0e8e 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write # for actions/stale to close stale PRs runs-on: ubuntu-latest steps: - - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 + - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} # Number of days of inactivity before an issue becomes stale From eed462224dfc1ee7541de28d5f4868eaecbd0911 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 08:57:29 +0100 Subject: [PATCH 06/27] chore(deps): update renovatebot/github-action action to v41.0.11 (#3142) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> --- .github/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index de804f3f..aa66cad0 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Self-hosted Renovate - uses: renovatebot/github-action@3f10d7a25cf0aa7b37519aa771ed9143fcbb5da5 # v41.0.10 + uses: renovatebot/github-action@d385c88822a237acaead89c462fa0aef7502748f # v41.0.11 with: configurationFile: .github/configs/renovate-config.js # renovate: datasource=docker depName=ghcr.io/renovatebot/renovate From c2f3d9967d2f8b626ec48fe60784477a3477eaf4 Mon Sep 17 00:00:00 2001 From: Nick Heijmink <75807895+Nheijmink19@users.noreply.github.com> Date: Mon, 27 Jan 2025 16:31:51 +0100 Subject: [PATCH 07/27] feat(argo-cd): Add an extra feature toggle to the argocd configmap that allows sync impersonation (#3138) --- charts/argo-cd/Chart.yaml | 6 +++--- charts/argo-cd/README.md | 1 + charts/argo-cd/values.yaml | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index 05c614ff..d7c85587 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -3,7 +3,7 @@ appVersion: v2.13.3 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.7.17 +version: 7.7.18 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -26,5 +26,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: fixed - description: Address ingress regression of PR #3081, use toString before tpl function + - kind: added + description: Add feature toggle to ArgoCD configmap allowing sync impersonation diff --git a/charts/argo-cd/README.md b/charts/argo-cd/README.md index 2b223a6f..04d8f1ad 100644 --- a/charts/argo-cd/README.md +++ b/charts/argo-cd/README.md @@ -726,6 +726,7 @@ NAME: my-release | configs.clusterCredentials | object | `{}` (See [values.yaml]) | Provide one or multiple [external cluster credentials] | | configs.cm."admin.enabled" | bool | `true` | Enable local admin user | | configs.cm."application.instanceLabelKey" | string | `"argocd.argoproj.io/instance"` | The name of tracking label used by Argo CD for resource pruning | +| configs.cm."application.sync.impersonation.enabled" | bool | `false` | Enable control of the service account used for the sync operation (alpha) | | configs.cm."exec.enabled" | bool | `false` | Enable exec feature in Argo UI | | configs.cm."server.rbac.log.enforce.enable" | bool | `false` | Enable logs RBAC enforcement | | configs.cm."statusbadge.enabled" | bool | `false` | Enable Status Badge | diff --git a/charts/argo-cd/values.yaml b/charts/argo-cd/values.yaml index c5dcf150..b802d1ea 100644 --- a/charts/argo-cd/values.yaml +++ b/charts/argo-cd/values.yaml @@ -175,6 +175,10 @@ configs: # -- The name of tracking label used by Argo CD for resource pruning application.instanceLabelKey: argocd.argoproj.io/instance + # -- Enable control of the service account used for the sync operation (alpha) + ## Ref: https://argo-cd.readthedocs.io/en/stable/operator-manual/app-sync-using-impersonation/ + application.sync.impersonation.enabled: false + # -- Enable logs RBAC enforcement ## Ref: https://argo-cd.readthedocs.io/en/latest/operator-manual/upgrading/2.3-2.4/#enable-logs-rbac-enforcement server.rbac.log.enforce.enable: false From 692bd040cedfb1db6126d1dee99e00c452315f87 Mon Sep 17 00:00:00 2001 From: "Marco Maurer (-Kilchhofer)" Date: Tue, 28 Jan 2025 06:51:33 +0100 Subject: [PATCH 08/27] feat(github): Support redis and extension-installer in Renovate - alternative (#3143) --- .github/workflows/renovate.yaml | 1 + renovate.json | 27 ++++++++------------ scripts/renovate-bump-version.sh | 42 ++++++++++++++++++++------------ 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index aa66cad0..087e124d 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -32,6 +32,7 @@ jobs: # renovate: datasource=docker depName=ghcr.io/renovatebot/renovate renovate-version: 39.86.4 token: '${{ steps.get_token.outputs.token }}' + mount-docker-socket: true env: LOG_LEVEL: 'debug' RENOVATE_REPOSITORIES: '${{ github.repository }}' diff --git a/renovate.json b/renovate.json index dcf91249..1ee051f5 100644 --- a/renovate.json +++ b/renovate.json @@ -83,31 +83,24 @@ "argoproj/argo-workflows", "argoproj/argo-cd", "argoproj/argo-events", - "argoproj/argo-rollouts" + "argoproj/argo-rollouts", + "argoproj-labs/argocd-image-updater", + "argoprojlabs/argocd-extension-installer", + "public.ecr.aws/bitnami/redis-exporter", + "public.ecr.aws/docker/library/redis" ], - "commitMessagePrefix": "chore({{{replace 'argoproj/' '' depName}}}):", + "commitMessagePrefix": "chore({{parentDir}}):", "postUpgradeTasks": { - "commands": ["./scripts/renovate-bump-version.sh {{depName}}"] - } - }, - { - "matchPackagePatterns": ["argoproj-labs/argocd-image-updater"], - "commitMessagePrefix": "chore({{{replace 'argoproj-labs/' '' depName}}}):", - "postUpgradeTasks": { - "commands": ["./scripts/renovate-bump-version.sh {{depName}}"] + "commands": [ + "./scripts/renovate-bump-version.sh -c {{parentDir}} -d {{depName}} -v {{newVersion}}", + "./scripts/helm-docs.sh" + ] } }, { "matchPackagePatterns": ["redis-ha"], "enabled": false }, - { - "matchPackagePatterns": ["public.ecr.aws/bitnami/redis-exporter"], - "commitMessagePrefix": "chore({{{replace 'public.ecr.aws/' '' depName}}}):", - "postUpgradeTasks": { - "commands": ["./scripts/renovate-bump-version.sh {{depName}}"] - } - }, { "matchPackageNames": ["ghcr.io/renovatebot/renovate"], "extends": ["schedule:monthly"] diff --git a/scripts/renovate-bump-version.sh b/scripts/renovate-bump-version.sh index 1ec6e125..80f1ae11 100755 --- a/scripts/renovate-bump-version.sh +++ b/scripts/renovate-bump-version.sh @@ -1,31 +1,41 @@ #!/bin/bash -depName="${1}" -if [ -z "${depName}" ]; then - echo "Missing argument 'depName'" >&2 - echo "Example usage: $0 argoproj/argo-cd" >&2 +while getopts c:d:v: opt; do + case ${opt} in + c) chart=${OPTARG} ;; + d) dependency_name=${OPTARG} ;; + v) dependency_version=${OPTARG} ;; + *) + echo 'Usage:' >&2 + echo '-c: chart Related Helm chart name' >&2 + echo '-d dependency Name of the updated dependency' >&2 + echo '-v version New version of the updated dependency' >&2 + exit 1 + esac +done + +if [ -z "${dependency_name}" ] || [ -z "${dependency_version}" ] || [ -z "${chart}" ] ; then + echo 'Missing relevant CLI flag(s).' >&2 exit 1 fi -chartName=$(echo "$depName" | sed -e "s+^argoproj/++" -e "s+^argoproj-labs/++") -echo "Changed chart name is: $chartName" -echo "----------------------------------------" - -parentDir="charts/${chartName}" +chart_yaml_path="charts/${chart}/Chart.yaml" +# Split dependency by '/' and only use last element +# This way we can drop prefixes like "argoproj/..." , "argoproj-labs/..." , "quay.io/foo/..." +dependency_name="${dependency_name##*/}" # Bump the chart version by one patch version -version=$(grep '^version:' "${parentDir}/Chart.yaml" | awk '{print $2}') +version=$(grep '^version:' "${chart_yaml_path}" | awk '{print $2}') major=$(echo "${version}" | cut -d. -f1) minor=$(echo "${version}" | cut -d. -f2) patch=$(echo "${version}" | cut -d. -f3) patch=$((patch + 1)) -sed -i "s/^version:.*/version: ${major}.${minor}.${patch}/g" "${parentDir}/Chart.yaml" +sed -i "s/^version:.*/version: ${major}.${minor}.${patch}/g" "${chart_yaml_path}" # Add a changelog entry -appVersion=$(grep '^appVersion:' "${parentDir}/Chart.yaml" | awk '{print $2}') -sed -i -e '/^ artifacthub.io\/changes: |/,$ d' "${parentDir}/Chart.yaml" +sed -i -e '/^ artifacthub.io\/changes: |/,$ d' "${chart_yaml_path}" { echo " artifacthub.io/changes: |" echo " - kind: changed" - echo " description: Bump ${chartName} to ${appVersion}" -} >> "${parentDir}/Chart.yaml" -cat "${parentDir}/Chart.yaml" + echo " description: Bump ${dependency_name} to ${dependency_version}" +} >> "${chart_yaml_path}" +cat "${chart_yaml_path}" From d81ca4b23baabb985714a632d33c406050a38c7b Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 09:00:07 +0100 Subject: [PATCH 09/27] chore(argo-cd): Update public.ecr.aws/docker/library/redis Docker tag to v7.4.2 (#3108) * chore(argo-cd): Update public.ecr.aws/docker/library/redis Docker tag to v7.4.2 Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> * fix version Signed-off-by: yu-croco Signed-off-by: Aikawa --------- Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Signed-off-by: Aikawa Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: Aikawa --- charts/argo-cd/Chart.yaml | 6 +++--- charts/argo-cd/README.md | 4 ++-- charts/argo-cd/values.yaml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index d7c85587..385e942d 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -3,7 +3,7 @@ appVersion: v2.13.3 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.7.18 +version: 7.7.19 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -26,5 +26,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: added - description: Add feature toggle to ArgoCD configmap allowing sync impersonation + - kind: changed + description: Bump redis to 7.4.2 diff --git a/charts/argo-cd/README.md b/charts/argo-cd/README.md index 04d8f1ad..5023edc7 100644 --- a/charts/argo-cd/README.md +++ b/charts/argo-cd/README.md @@ -1279,7 +1279,7 @@ NAME: my-release | redis.extraContainers | list | `[]` | Additional containers to be added to the redis pod | | redis.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Redis image pull policy | | redis.image.repository | string | `"public.ecr.aws/docker/library/redis"` | Redis repository | -| redis.image.tag | string | `"7.4.1-alpine"` | Redis tag | +| redis.image.tag | string | `"7.4.2-alpine"` | Redis tag | | redis.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | | redis.initContainers | list | `[]` | Init containers to add to the redis pod | | redis.livenessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for Redis server | @@ -1365,7 +1365,7 @@ The main options are listed here: | redis-ha.haproxy.tolerations | list | `[]` | [Tolerations] for use with node taints for haproxy pods. | | redis-ha.hardAntiAffinity | bool | `true` | Whether the Redis server pods should be forced to run on separate nodes. | | redis-ha.image.repository | string | `"public.ecr.aws/docker/library/redis"` | Redis repository | -| redis-ha.image.tag | string | `"7.4.1-alpine"` | Redis tag | +| redis-ha.image.tag | string | `"7.4.2-alpine"` | Redis tag | | redis-ha.persistentVolume.enabled | bool | `false` | Configures persistence on Redis nodes | | redis-ha.redis.config | object | See [values.yaml] | Any valid redis config options in this section will be applied to each server (see `redis-ha` chart) | | redis-ha.redis.config.save | string | `'""'` | Will save the DB if both the given number of seconds and the given number of write operations against the DB occurred. `""` is disabled | diff --git a/charts/argo-cd/values.yaml b/charts/argo-cd/values.yaml index b802d1ea..ede8459a 100644 --- a/charts/argo-cd/values.yaml +++ b/charts/argo-cd/values.yaml @@ -1288,7 +1288,7 @@ redis: # -- Redis repository repository: public.ecr.aws/docker/library/redis # -- Redis tag - tag: 7.4.1-alpine + tag: 7.4.2-alpine # -- Redis image pull policy # @default -- `""` (defaults to global.image.imagePullPolicy) imagePullPolicy: "" @@ -1574,7 +1574,7 @@ redis-ha: # -- Redis repository repository: public.ecr.aws/docker/library/redis # -- Redis tag - tag: 7.4.1-alpine + tag: 7.4.2-alpine ## Prometheus redis-exporter sidecar exporter: # -- Enable Prometheus redis-exporter sidecar From d75b9d35a3ec11ea9c290a0dac450c2f32f232b1 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:14:07 +0900 Subject: [PATCH 10/27] chore(argo-cd): Update public.ecr.aws/bitnami/redis-exporter Docker tag to v1.67.0 (#3104) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Signed-off-by: Marco Maurer (-Kilchhofer) Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: Marco Maurer (-Kilchhofer) --- charts/argo-cd/Chart.yaml | 4 ++-- charts/argo-cd/README.md | 2 +- charts/argo-cd/values.yaml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index 385e942d..3aac908c 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -3,7 +3,7 @@ appVersion: v2.13.3 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.7.19 +version: 7.7.20 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -27,4 +27,4 @@ annotations: url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - kind: changed - description: Bump redis to 7.4.2 + description: Bump redis-exporter to 1.67.0 diff --git a/charts/argo-cd/README.md b/charts/argo-cd/README.md index 5023edc7..3a4a2560 100644 --- a/charts/argo-cd/README.md +++ b/charts/argo-cd/README.md @@ -1261,7 +1261,7 @@ NAME: my-release | redis.exporter.env | list | `[]` | Environment variables to pass to the Redis exporter | | redis.exporter.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the redis-exporter | | redis.exporter.image.repository | string | `"public.ecr.aws/bitnami/redis-exporter"` | Repository to use for the redis-exporter | -| redis.exporter.image.tag | string | `"1.58.0"` | Tag to use for the redis-exporter | +| redis.exporter.image.tag | string | `"1.67.0"` | Tag to use for the redis-exporter | | redis.exporter.livenessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for Redis exporter | | redis.exporter.livenessProbe.failureThreshold | int | `5` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | | redis.exporter.livenessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before [probe] is initiated | diff --git a/charts/argo-cd/values.yaml b/charts/argo-cd/values.yaml index ede8459a..4c069086 100644 --- a/charts/argo-cd/values.yaml +++ b/charts/argo-cd/values.yaml @@ -1304,7 +1304,7 @@ redis: # -- Repository to use for the redis-exporter repository: public.ecr.aws/bitnami/redis-exporter # -- Tag to use for the redis-exporter - tag: 1.58.0 + tag: 1.67.0 # -- Image pull policy for the redis-exporter # @default -- `""` (defaults to global.image.imagePullPolicy) imagePullPolicy: "" From 2685b861d2b2af4f5797522ec3cef8140c3d6049 Mon Sep 17 00:00:00 2001 From: atgane <52873067+atgane@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:57:48 +0900 Subject: [PATCH 11/27] fix(argo-cd): Fix required cluster credentials name (#3136) * fix required cluster credential name Signed-off-by: atgane * fix Signed-off-by: atgane * update changelog & docs Signed-off-by: atgane * chore: Drop unnecessary docs inside README.md and README.md.gotmpl Signed-off-by: Marco Maurer --------- Signed-off-by: atgane Signed-off-by: Marco Maurer Co-authored-by: Marco Maurer --- charts/argo-cd/Chart.yaml | 6 +++--- .../argo-cd/templates/argocd-configs/cluster-secrets.yaml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index 3aac908c..e29eb6fb 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -3,7 +3,7 @@ appVersion: v2.13.3 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.7.20 +version: 7.7.21 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -26,5 +26,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: changed - description: Bump redis-exporter to 1.67.0 + - kind: fixed + description: remove required function in $cluster_key from clusterCredentials diff --git a/charts/argo-cd/templates/argocd-configs/cluster-secrets.yaml b/charts/argo-cd/templates/argocd-configs/cluster-secrets.yaml index d317eac2..956bbf54 100644 --- a/charts/argo-cd/templates/argocd-configs/cluster-secrets.yaml +++ b/charts/argo-cd/templates/argocd-configs/cluster-secrets.yaml @@ -22,7 +22,7 @@ stringData: {{- if $cluster_value.shard }} shard: {{ $cluster_value.shard | quote }} {{- end }} - name: {{ required "A valid .Values.configs.clusterCredentials.CLUSTERNAME.name entry is required!" $cluster_key }} + name: {{ $cluster_key }} server: {{ required "A valid .Values.configs.clusterCredentials.CLUSTERNAME.server entry is required!" $cluster_value.server }} {{- if $cluster_value.namespaces }} namespaces: {{ $cluster_value.namespaces }} From 56c5a31c9e4367f643f8458fe8d8c18674c50f0f Mon Sep 17 00:00:00 2001 From: Tim Collins <45351296+tico24@users.noreply.github.com> Date: Wed, 29 Jan 2025 13:43:03 +0000 Subject: [PATCH 12/27] feat(github): Analyse past release times (#3135) * feat(github): Analyse past release times Signed-off-by: Tim Collins * typo Signed-off-by: Tim Collins * add megalinter config. Fix my rubbish code to appease the linter Signed-off-by: Tim Collins --------- Signed-off-by: Tim Collins Co-authored-by: Aikawa --- scripts/release-analysis/.mega-linter.yaml | 21 + scripts/release-analysis/Dockerfile | 8 + scripts/release-analysis/README.md | 27 + .../release-analysis/argo_helm_releases.csv | 1019 +++++++++++++++++ scripts/release-analysis/argo_releases.csv | 877 ++++++++++++++ .../release-analysis/fetch_helmet_releases.py | 90 ++ scripts/release-analysis/fetch_releases.py | 57 + scripts/release-analysis/main.py | 31 + scripts/release-analysis/merge_csvs.py | 108 ++ scripts/release-analysis/merged_releases.csv | 195 ++++ scripts/release-analysis/plot_graph.py | 58 + scripts/release-analysis/requirements.txt | 2 + .../time_difference_plot_argo-cd.png | Bin 0 -> 84009 bytes .../time_difference_plot_argo-events.png | Bin 0 -> 68592 bytes .../time_difference_plot_argo-rollouts.png | Bin 0 -> 75003 bytes .../time_difference_plot_argo-workflows.png | Bin 0 -> 70676 bytes 16 files changed, 2493 insertions(+) create mode 100644 scripts/release-analysis/.mega-linter.yaml create mode 100644 scripts/release-analysis/Dockerfile create mode 100644 scripts/release-analysis/README.md create mode 100644 scripts/release-analysis/argo_helm_releases.csv create mode 100644 scripts/release-analysis/argo_releases.csv create mode 100644 scripts/release-analysis/fetch_helmet_releases.py create mode 100644 scripts/release-analysis/fetch_releases.py create mode 100644 scripts/release-analysis/main.py create mode 100644 scripts/release-analysis/merge_csvs.py create mode 100644 scripts/release-analysis/merged_releases.csv create mode 100644 scripts/release-analysis/plot_graph.py create mode 100644 scripts/release-analysis/requirements.txt create mode 100644 scripts/release-analysis/time_difference_plot_argo-cd.png create mode 100644 scripts/release-analysis/time_difference_plot_argo-events.png create mode 100644 scripts/release-analysis/time_difference_plot_argo-rollouts.png create mode 100644 scripts/release-analysis/time_difference_plot_argo-workflows.png diff --git a/scripts/release-analysis/.mega-linter.yaml b/scripts/release-analysis/.mega-linter.yaml new file mode 100644 index 00000000..024abb2b --- /dev/null +++ b/scripts/release-analysis/.mega-linter.yaml @@ -0,0 +1,21 @@ +# Configuration file for MegaLinter +# Run megalinter locally with: `docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:rw -v $(pwd):/tmp/lint:rw oxsecurity/megalinter:v8` +ENABLE: + - DOCKERFILE + - PYTHON + +DISABLE_LINTERS: + - PYTHON_FLAKE8 + - PYTHON_PYRIGHT + - PYTHON_RUFF + - PYTHON_BANDIT + +CLEAR_REPORT_FOLDER: true +PYTHON_PYLINT_PRE_COMMANDS: + - command: pip install -r /tmp/lint/requirements.txt + venv: pylint +REPORT_OUTPUT_FOLDER: none + + +# You might want to enable this locally to fix some stuff without guessing what you need to change. Check before committing to git. +#APPLY_FIXES: all diff --git a/scripts/release-analysis/Dockerfile b/scripts/release-analysis/Dockerfile new file mode 100644 index 00000000..17674252 --- /dev/null +++ b/scripts/release-analysis/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.13-slim +WORKDIR /app +COPY requirements.txt ./ +RUN pip install --no-cache-dir -r requirements.txt + +COPY main.py fetch_releases.py fetch_helmet_releases.py merge_csvs.py plot_graph.py ./ +RUN chmod +x main.py fetch_releases.py fetch_helmet_releases.py merge_csvs.py plot_graph.py +CMD [ "python", "-u", "./main.py" ] diff --git a/scripts/release-analysis/README.md b/scripts/release-analysis/README.md new file mode 100644 index 00000000..ab746cee --- /dev/null +++ b/scripts/release-analysis/README.md @@ -0,0 +1,27 @@ +# argo-helm release analysis + +Compare the time of the upstream release to the time of the equivalent Helm Chart release to determine the time it takes for a new release to be available in argo-helm. + + +## How to run +This is quite github-api-intensive, so you'll need a github PAT + +```bash +# Build the container +docker build . -t team-helm-analysis + +# Delete any existing data +rm -f argo_helm_releases.csv argo_releases.csv merged_releases.csv time_difference_plot_argo*.png + +# Run the container +GITHUB_TOKEN=your_token_here +docker run --rm -e GITHUB_TOKEN=$GITHUB_TOKEN -v ${PWD}:/app team-helm-analysis +``` + +You should get 3 csvs and 4 graphs once this completes. It takes around 5 mins to run. + + +## Linting +I ran megalinter against this just to give some confidence that it's not completely broken. It's not perfect, but it's something. + +Run megalinter locally against this directory with: `docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:rw -v $(pwd):/tmp/lint:rw oxsecurity/megalinter:v8` diff --git a/scripts/release-analysis/argo_helm_releases.csv b/scripts/release-analysis/argo_helm_releases.csv new file mode 100644 index 00000000..58046fc1 --- /dev/null +++ b/scripts/release-analysis/argo_helm_releases.csv @@ -0,0 +1,1019 @@ +Release Name,Release Date,Release Time,App Version +argo-cd-7.7.16,2025-01-14,10:17:50,v2.13.3 +argo-events-2.4.13,2025-01-11,10:22:47,v1.9.5 +argo-workflows-0.45.4,2025-01-10,10:23:52,v3.6.2 +argo-cd-7.7.15,2025-01-10,07:18:13,v2.13.3 +argo-events-2.4.12,2025-01-08,08:37:01,v1.9.4 +argocd-image-updater-0.11.4,2025-01-07,07:04:30,v0.15.2 +argo-cd-7.7.14,2025-01-07,12:02:49,v2.13.3 +argo-events-2.4.11,2025-01-04,14:02:19,v1.9.3 +argo-cd-7.7.13,2025-01-04,00:07:55,v2.13.3 +argo-workflows-0.45.3,2025-01-03,15:16:16,v3.6.2 +argo-rollouts-2.38.2,2025-01-03,14:07:45,v1.7.2 +argo-cd-7.7.12,2025-01-02,06:18:17,v2.13.2 +argo-events-2.4.10,2024-12-31,12:18:02,v1.9.3 +argo-rollouts-2.38.1,2024-12-30,17:19:34,v1.7.2 +argo-cd-7.7.11,2024-12-21,12:06:50,v2.13.2 +argo-workflows-0.45.2,2024-12-16,21:31:29,v3.6.2 +argocd-image-updater-0.11.3,2024-12-13,11:27:43,v0.15.1 +argo-cd-7.7.10,2024-12-12,05:33:28,v2.13.2 +argo-cd-7.7.9,2024-12-11,15:36:30,v2.13.1 +argo-cd-7.7.8,2024-12-09,09:17:31,v2.13.1 +argo-workflows-0.45.1,2024-12-02,17:39:46,v3.6.2 +argo-cd-7.7.7,2024-12-02,14:20:02,v2.13.1 +argo-cd-7.7.6,2024-11-28,00:42:14,v2.13.1 +argo-events-2.4.9,2024-11-27,20:44:06,v1.9.3 +argo-workflows-0.45.0,2024-11-22,15:20:08,v3.6.0 +argo-workflows-0.44.1,2024-11-22,11:40:45,v3.6.0 +argo-workflows-0.44.0,2024-11-21,08:59:15,v3.6.0 +argo-workflows-0.43.0,2024-11-21,08:27:21,v3.6.0 +argo-rollouts-2.38.0,2024-11-21,13:03:08,v1.7.2 +argo-cd-7.7.5,2024-11-21,12:43:12,v2.13.1 +argo-cd-7.7.4,2024-11-20,20:48:11,v2.13.1 +argo-cd-7.7.3,2024-11-13,10:57:32,v2.13.0 +argo-cd-7.7.2,2024-11-12,16:28:52,v2.13.0 +argo-cd-7.7.1,2024-11-10,01:42:21,v2.13.0 +argocd-image-updater-0.11.2,2024-11-09,03:44:12,v0.15.1 +argo-rollouts-2.37.8,2024-11-07,23:17:48,v1.7.2 +argo-cd-7.7.0,2024-11-05,00:00:06,v2.13.0 +argo-workflows-0.42.7,2024-11-01,23:24:01,v3.5.12 +argocd-image-updater-0.11.1,2024-10-30,10:40:35,v0.15.0 +argo-workflows-0.42.6,2024-10-30,13:24:53,v3.5.12 +argo-cd-7.6.12,2024-10-18,19:27:20,v2.12.6 +argo-cd-7.6.11,2024-10-18,07:16:30,v2.12.5 +argo-cd-7.6.10,2024-10-16,12:00:46,v2.12.4 +argo-cd-7.6.9,2024-10-15,20:16:09,v2.12.4 +argo-cd-7.6.8,2024-10-03,13:53:23,v2.12.4 +argo-workflows-0.42.5,2024-10-02,00:47:02,v3.5.11 +argocd-apps-2.0.2,2024-10-01,06:03:45, +argo-cd-7.6.7,2024-09-30,18:24:52,v2.12.4 +argo-cd-7.6.6,2024-09-30,12:25:12,v2.12.4 +argo-workflows-0.42.4,2024-09-27,09:57:14,v3.5.11 +argo-cd-7.6.5,2024-09-26,07:42:42,v2.12.4 +argo-cd-7.6.4,2024-09-25,22:05:12,v2.12.3 +argo-cd-7.6.3,2024-09-25,15:18:12,v2.12.3 +argo-cd-7.6.2,2024-09-23,17:27:28,v2.12.3 +argo-workflows-0.42.3,2024-09-20,15:08:40,v3.5.11 +argo-events-2.4.8,2024-09-20,00:10:14,v1.9.2 +argo-cd-7.6.1,2024-09-20,11:24:11,v2.12.3 +argo-cd-7.6.0,2024-09-20,07:59:20,v2.12.3 +argo-rollouts-2.37.7,2024-09-16,13:38:21,v1.7.2 +argo-workflows-0.42.2,2024-09-13,14:02:16,v3.5.10 +argocd-apps-2.0.1,2024-09-10,21:55:59, +argo-cd-7.5.2,2024-09-02,15:33:28,v2.12.3 +argo-cd-7.5.1,2024-09-02,08:59:12,v2.12.3 +argo-workflows-0.42.1,2024-09-01,15:06:01,v3.5.10 +argo-rollouts-2.37.6,2024-08-31,10:13:12,v1.7.2 +argo-cd-7.5.0,2024-08-28,15:27:35,v2.12.3 +argo-cd-7.4.7,2024-08-27,13:30:34,v2.12.3 +argo-cd-7.4.6,2024-08-27,08:49:06,v2.12.2 +argo-cd-7.4.5,2024-08-23,08:51:19,v2.12.2 +argo-workflows-0.42.0,2024-08-20,19:07:24,v3.5.10 +argo-cd-7.4.4,2024-08-16,21:36:53,v2.12.1 +argo-rollouts-2.37.5,2024-08-14,08:31:31,v1.7.2 +argo-rollouts-2.37.4,2024-08-12,09:08:55,v1.7.1 +argo-cd-7.4.3,2024-08-12,15:29:49,v2.12.0 +argo-cd-7.4.2,2024-08-08,15:02:24,v2.12.0 +argo-cd-7.4.1,2024-08-06,10:14:35,v2.12.0 +argo-cd-7.4.0,2024-08-05,15:22:06,v2.12.0 +argo-workflows-0.41.14,2024-08-02,10:42:56,v3.5.10 +argo-workflows-0.41.13,2024-08-01,07:19:01,v3.5.10 +argo-workflows-0.41.12,2024-07-30,07:39:23,v3.5.9 +argo-rollouts-2.37.3,2024-07-29,07:25:40,v1.7.1 +argo-cd-7.3.11,2024-07-24,11:44:52,v2.11.7 +argo-cd-7.3.10,2024-07-22,17:14:41,v2.11.6 +argo-cd-7.3.9,2024-07-19,10:23:10,v2.11.5 +argo-cd-7.3.8,2024-07-17,23:52:54,v2.11.5 +argo-cd-7.3.7,2024-07-16,01:17:05,v2.11.5 +argo-cd-7.3.6,2024-07-11,23:05:06,v2.11.4 +argo-cd-7.3.5,2024-07-10,21:01:22,v2.11.4 +argocd-image-updater-0.11.0,2024-07-09,21:31:56,v0.14.0 +argo-cd-7.3.4,2024-07-02,20:43:46,v2.11.4 +argo-rollouts-2.37.2,2024-07-01,10:02:31,v1.7.1 +argo-cd-7.3.3,2024-06-28,21:52:33,v2.11.3 +argo-rollouts-2.37.1,2024-06-26,10:39:20,v1.7.1 +argo-rollouts-2.37.0,2024-06-26,09:10:19,v1.7.1 +argo-events-2.4.7,2024-06-26,05:28:07,v1.9.2 +argo-cd-7.3.2,2024-06-26,11:29:01,v2.11.3 +argo-rollouts-2.36.2,2024-06-25,13:04:55,v1.7.0 +argo-cd-7.3.1,2024-06-25,12:26:06,v2.11.3 +argo-cd-7.3.0,2024-06-25,03:48:21,v2.11.3 +argo-rollouts-2.36.1,2024-06-22,10:11:43,v1.7.0 +argo-cd-7.2.1,2024-06-21,21:01:50,v2.11.3 +argo-cd-7.2.0,2024-06-20,10:25:45,v2.11.3 +argo-workflows-0.41.11,2024-06-19,07:01:05,v3.5.8 +argo-cd-7.1.5,2024-06-19,14:04:21,v2.11.3 +argo-workflows-0.41.10,2024-06-18,07:47:04,v3.5.8 +argo-cd-7.1.4,2024-06-18,01:13:46,v2.11.3 +argo-workflows-0.41.9,2024-06-17,18:59:46,v3.5.7 +argocd-image-updater-0.10.2,2024-06-14,07:54:15,v0.13.1 +argo-rollouts-2.36.0,2024-06-14,09:00:46,v1.7.0 +argo-events-2.4.6,2024-06-14,05:09:08,v1.9.2 +argo-workflows-0.41.8,2024-06-09,22:18:37,v3.5.7 +argo-cd-7.1.3,2024-06-09,05:23:01,v2.11.3 +argo-cd-7.1.2,2024-06-06,10:51:51,v2.11.3 +argo-cd-7.1.1,2024-06-01,23:45:19,v2.11.2 +argo-cd-7.1.0,2024-05-31,12:05:08,v2.11.2 +argocd-image-updater-0.10.1,2024-05-28,05:32:50,v0.13.1 +argo-cd-7.0.0,2024-05-28,13:38:40,v2.11.2 +argo-workflows-0.41.7,2024-05-27,08:09:42,v3.5.7 +argo-events-2.4.5,2024-05-24,03:05:11,v1.9.1 +argo-rollouts-2.35.3,2024-05-23,07:30:12,v1.6.6 +argo-cd-6.11.1,2024-05-23,15:37:21,v2.11.2 +argo-cd-6.11.0,2024-05-23,12:37:05,v2.11.1 +argo-cd-6.10.2,2024-05-22,11:21:15,v2.11.1 +argo-cd-6.10.1,2024-05-22,07:17:23,v2.11.1 +argo-cd-6.10.0,2024-05-21,16:36:49,v2.11.1 +argo-workflows-0.41.6,2024-05-19,10:22:36,v3.5.6 +argo-workflows-0.41.5,2024-05-19,07:34:43,v3.5.6 +argo-cd-6.9.3,2024-05-17,15:18:31,v2.11.0 +argocd-image-updater-0.10.0,2024-05-16,11:07:10,v0.13.0 +argo-cd-6.9.2,2024-05-14,15:17:50,v2.11.0 +argo-cd-6.9.1,2024-05-13,22:59:29,v2.11.0 +argo-cd-6.9.0,2024-05-13,04:32:05,v2.11.0 +argo-cd-6.8.1,2024-05-10,08:32:52,v2.11.0 +argo-cd-6.8.0,2024-05-08,06:21:31,v2.11.0 +argo-rollouts-2.35.2,2024-05-06,00:24:30,v1.6.6 +argo-workflows-0.41.4,2024-05-01,13:37:43,v3.5.6 +argo-cd-6.7.18,2024-04-30,17:14:22,v2.10.9 +argo-workflows-0.41.3,2024-04-29,20:30:08,v3.5.6 +argo-cd-6.7.17,2024-04-26,19:36:10,v2.10.8 +argo-cd-6.7.16,2024-04-26,14:21:35,v2.10.8 +argo-cd-6.7.15,2024-04-24,07:08:13,v2.10.7 +argo-cd-6.7.14,2024-04-21,20:54:29,v2.10.7 +argo-workflows-0.41.2,2024-04-20,04:55:21,v3.5.6 +argo-cd-6.7.13,2024-04-19,14:07:44,v2.10.7 +argocd-image-updater-0.9.7,2024-04-18,21:41:42,v0.12.2 +argo-cd-6.7.12,2024-04-15,10:43:13,v2.10.7 +argo-cd-6.7.11,2024-04-10,20:06:04,v2.10.6 +argo-cd-6.7.10,2024-04-05,05:00:08,v2.10.6 +argo-cd-6.7.9,2024-04-04,18:47:39,v2.10.5 +argo-workflows-0.41.1,2024-04-02,17:26:26,v3.5.5 +argo-cd-6.7.8,2024-04-02,13:36:54,v2.10.5 +argo-cd-6.7.7,2024-04-02,05:03:54,v2.10.5 +argo-cd-6.7.6,2024-03-29,16:13:47,v2.10.5 +argo-cd-6.7.5,2024-03-29,08:13:55,v2.10.5 +argo-cd-6.7.4,2024-03-28,17:30:11,v2.10.5 +argo-rollouts-2.35.1,2024-03-26,08:36:07,v1.6.6 +argo-workflows-0.41.0,2024-03-24,20:27:11,v3.5.5 +argocd-apps-2.0.0,2024-03-23,15:39:16, +argo-rollouts-2.35.0,2024-03-23,20:47:25,v1.6.6 +argo-events-2.4.4,2024-03-23,11:07:16,v1.9.1 +argo-rollouts-2.34.4,2024-03-22,16:10:10,v1.6.6 +argocd-image-updater-0.9.6,2024-03-20,23:53:18,v0.12.2 +argo-cd-6.7.3,2024-03-18,09:36:58,v2.10.4 +argo-cd-6.7.2,2024-03-13,20:46:14,v2.10.3 +argo-cd-6.7.1,2024-03-11,23:08:40,v2.10.2 +argo-cd-6.7.0,2024-03-11,18:26:24,v2.10.2 +argo-workflows-0.40.14,2024-03-03,19:13:02,v3.5.5 +argo-cd-6.6.0,2024-03-02,11:20:32,v2.10.2 +argocd-image-updater-0.9.5,2024-03-01,08:41:39,v0.12.2 +argo-workflows-0.40.13,2024-03-01,17:17:28,v3.5.5 +argo-workflows-0.40.12,2024-03-01,00:03:01,v3.5.5 +argo-cd-6.5.1,2024-03-01,22:33:17,v2.10.2 +argo-cd-6.5.0,2024-02-29,19:46:25,v2.10.1 +argo-cd-6.4.1,2024-02-28,06:28:55,v2.10.1 +argocd-apps-1.6.2,2024-02-25,13:11:58, +argo-cd-6.4.0,2024-02-25,12:47:16,v2.10.1 +argo-cd-6.3.1,2024-02-23,18:05:37,v2.10.1 +argo-cd-6.3.0,2024-02-23,14:18:18,v2.10.1 +argo-cd-6.2.5,2024-02-23,13:58:38,v2.10.1 +argo-cd-6.2.4,2024-02-23,12:16:07,v2.10.1 +argo-cd-6.2.3,2024-02-20,12:05:21,v2.10.1 +argo-cd-6.2.2,2024-02-20,11:41:51,v2.10.1 +argo-cd-6.2.1,2024-02-19,08:37:59,v2.10.1 +argocd-image-updater-0.9.4,2024-02-18,18:44:43,v0.12.2 +argo-cd-6.2.0,2024-02-18,22:06:45,v2.10.1 +argo-workflows-0.40.11,2024-02-17,09:14:52,v3.5.4 +argo-cd-6.1.0,2024-02-16,14:45:12,v2.10.1 +argo-rollouts-2.34.3,2024-02-14,08:50:21,v1.6.6 +argo-events-2.4.3,2024-02-14,08:53:00,v1.9.1 +argo-cd-6.0.14,2024-02-14,21:04:43,v2.10.1 +argo-cd-6.0.13,2024-02-14,10:52:49,v2.10.0 +argo-cd-6.0.9,2024-02-13,11:14:02,v2.10.0 +argo-cd-6.0.8,2024-02-13,08:23:55,v2.10.0 +argo-cd-6.0.12,2024-02-13,15:26:57,v2.10.0 +argo-cd-6.0.11,2024-02-13,11:42:46,v2.10.0 +argo-cd-6.0.10,2024-02-13,11:27:29,v2.10.0 +argo-cd-6.0.7,2024-02-12,18:36:55,v2.10.0 +argo-cd-6.0.6,2024-02-11,14:52:39,v2.10.0 +argo-cd-6.0.5,2024-02-09,12:14:21,v2.10.0 +argo-cd-6.0.4,2024-02-09,11:46:10,v2.10.0 +argo-cd-6.0.3,2024-02-08,17:47:08,v2.10.0 +argo-cd-6.0.2,2024-02-08,14:26:38,v2.10.0 +argo-cd-6.0.1,2024-02-08,10:59:10,v2.10.0 +argo-cd-6.0.0,2024-02-07,21:40:22,v2.10.0 +argo-cd-5.55.0,2024-02-07,07:10:30,v2.10.0 +argo-cd-5.54.0,2024-02-06,13:11:44,v2.9.6 +argo-cd-5.53.14,2024-02-05,06:25:59,v2.9.6 +argo-workflows-0.40.10,2024-02-03,00:45:13,v3.5.4 +argocd-apps-1.6.1,2024-02-02,09:37:44, +argo-cd-5.53.13,2024-02-02,22:50:34,v2.9.6 +argocd-apps-1.6.0,2024-01-30,00:34:21, +argo-cd-5.53.12,2024-01-30,16:58:22,v2.9.5 +argo-cd-5.53.11,2024-01-30,10:46:50,v2.9.5 +argo-cd-5.53.10,2024-01-29,13:58:51,v2.9.5 +argo-workflows-0.40.9,2024-01-26,21:35:38,v3.5.4 +argo-rollouts-2.34.2,2024-01-26,06:31:27,v1.6.5 +argo-cd-5.53.9,2024-01-26,07:36:02,v2.9.5 +argocd-apps-1.5.0,2024-01-25,07:07:46, +argo-workflows-0.40.8,2024-01-24,23:58:13,v3.5.4 +argo-cd-5.53.8,2024-01-23,01:07:46,v2.9.5 +argo-cd-5.53.7,2024-01-22,23:55:07,v2.9.5 +argo-cd-5.53.6,2024-01-22,13:09:31,v2.9.5 +argo-cd-5.53.5,2024-01-22,10:14:54,v2.9.5 +argo-cd-5.53.4,2024-01-21,13:36:02,v2.9.5 +argo-cd-5.53.3,2024-01-20,12:21:38,v2.9.5 +argo-cd-5.53.2,2024-01-19,20:20:14,v2.9.5 +argo-cd-5.53.1,2024-01-19,05:48:47,v2.9.4 +argocd-image-updater-0.9.3,2024-01-18,06:21:59,v0.12.2 +argo-cd-5.53.0,2024-01-18,13:56:51,v2.9.3 +argo-workflows-0.40.7,2024-01-17,07:56:36,v3.5.4 +argo-cd-5.52.2,2024-01-15,09:13:02,v2.9.3 +argo-workflows-0.40.6,2024-01-14,08:11:19,v3.5.4 +argo-workflows-0.40.5,2024-01-11,07:20:47,v3.5.3 +argo-events-2.4.2,2024-01-09,10:14:30,v1.9.0 +argo-rollouts-2.34.1,2024-01-07,04:31:05,v1.6.4 +argo-workflows-0.40.4,2024-01-06,04:17:52,v3.5.2 +argocd-image-updater-0.9.2,2024-01-05,15:29:00,v0.12.2 +argo-cd-5.52.1,2024-01-05,12:57:15,v2.9.3 +argo-cd-5.52.0,2023-12-30,17:02:29,v2.9.3 +argo-workflows-0.40.3,2023-12-24,06:14:14,v3.5.2 +argo-workflows-0.40.2,2023-12-24,00:29:03,v3.5.2 +argo-rollouts-2.34.0,2023-12-22,12:07:26,v1.6.4 +argo-workflows-0.40.1,2023-12-15,07:45:38,v3.5.2 +argo-workflows-0.40.0,2023-12-14,07:56:49,v3.5.2 +argo-rollouts-2.33.0,2023-12-14,08:39:41,v1.6.4 +argo-rollouts-2.32.8,2023-12-13,06:59:39,v1.6.4 +argo-workflows-0.39.9,2023-12-12,06:27:57,v3.5.2 +argo-workflows-0.39.8,2023-12-08,22:45:23,v3.5.2 +argo-rollouts-2.32.7,2023-12-08,15:06:58,v1.6.3 +argo-workflows-0.39.7,2023-12-07,07:23:32,v3.5.2 +argo-rollouts-2.32.6,2023-12-07,17:50:17,v1.6.2 +argo-workflows-0.39.6,2023-12-05,05:55:41,v3.5.2 +argo-cd-5.51.6,2023-12-02,11:03:49,v2.9.3 +argo-rollouts-2.32.5,2023-11-29,13:34:59,v1.6.2 +argo-cd-5.51.5,2023-11-29,18:40:17,v2.9.2 +argo-workflows-0.39.5,2023-11-27,21:13:09,v3.5.2 +argo-workflows-0.39.4,2023-11-27,17:45:21,v3.5.1 +argo-cd-5.51.4,2023-11-20,18:50:04,v2.9.2 +argo-cd-5.51.3,2023-11-19,22:19:14,v2.9.1 +argo-workflows-0.39.3,2023-11-16,12:32:11,v3.5.1 +argo-workflows-0.39.2,2023-11-15,13:33:12,v3.5.1 +argo-workflows-0.39.1,2023-11-15,13:17:27,v3.5.1 +argo-rollouts-2.32.4,2023-11-15,13:09:53,v1.6.2 +argo-rollouts-2.32.3,2023-11-15,10:00:45,v1.6.1 +argo-cd-5.51.2,2023-11-15,05:59:33,v2.9.1 +argo-cd-5.51.1,2023-11-10,12:41:27,v2.9.0 +argo-workflows-0.39.0,2023-11-08,16:05:21,v3.5.1 +argo-cd-5.51.0,2023-11-06,12:54:52,v2.9.0 +argo-workflows-0.38.0,2023-11-04,05:58:06,v3.5.1 +argo-workflows-0.37.1,2023-11-03,20:39:25,v3.5.0 +argo-cd-5.50.1,2023-11-02,09:44:09,v2.8.6 +argo-cd-5.50.0,2023-10-31,18:12:30,v2.8.6 +argo-rollouts-2.32.2,2023-10-30,17:43:02,v1.6.0 +argo-cd-5.49.0,2023-10-30,14:42:51,v2.8.5 +argo-cd-5.48.1,2023-10-30,08:52:14,v2.8.5 +argo-cd-5.48.0,2023-10-28,07:29:05,v2.8.5 +argo-cd-5.47.0,2023-10-27,09:44:15,v2.8.4 +argo-workflows-0.37.0,2023-10-24,12:35:14,v3.5.0 +argo-workflows-0.36.2,2023-10-24,10:06:53,v3.5.0 +argo-rollouts-2.32.1,2023-10-24,12:40:04,v1.6.0 +argo-workflows-0.36.1,2023-10-17,23:53:35,v3.5.0 +argo-workflows-0.36.0,2023-10-17,15:41:00,v3.5.0 +argo-workflows-0.35.0,2023-10-13,22:07:38,v3.5.0 +argo-workflows-0.34.0,2023-10-12,14:15:08,v3.4.11 +argo-cd-5.46.8,2023-10-12,09:51:17,v2.8.4 +argo-cd-5.46.7,2023-09-22,15:50:57,v2.8.4 +argo-cd-5.46.6,2023-09-19,09:02:08,v2.8.4 +argo-cd-5.46.5,2023-09-18,13:26:16,v2.8.4 +argo-cd-5.46.4,2023-09-15,10:48:20,v2.8.4 +argo-cd-5.46.3,2023-09-14,04:56:22,v2.8.4 +argo-cd-5.46.2,2023-09-11,23:33:17,v2.8.3 +argo-cd-5.46.1,2023-09-11,13:24:46,v2.8.3 +argo-workflows-0.33.3,2023-09-10,01:57:47,v3.4.11 +argo-cd-5.46.0,2023-09-09,08:59:25,v2.8.3 +argo-workflows-0.33.2,2023-09-08,04:20:30,v3.4.11 +argo-cd-5.45.5,2023-09-08,14:58:30,v2.8.3 +argo-cd-5.45.4,2023-09-08,14:02:48,v2.8.3 +argo-cd-5.45.3,2023-09-08,00:13:52,v2.8.3 +argo-rollouts-2.32.0,2023-09-07,12:23:50,v1.6.0 +argo-cd-5.45.2,2023-09-07,14:01:34,v2.8.2 +argo-events-2.4.1,2023-09-04,01:15:35,v1.8.1 +argo-cd-5.45.1,2023-09-04,11:01:56,v2.8.2 +argo-cd-5.45.0,2023-08-28,08:12:52,v2.8.2 +argo-cd-5.44.0,2023-08-27,19:07:41,v2.8.2 +argo-cd-5.43.8,2023-08-27,02:21:03,v2.8.2 +argo-cd-5.43.7,2023-08-25,10:52:23,v2.8.2 +argo-cd-5.43.6,2023-08-25,08:46:11,v2.8.2 +argo-cd-5.43.5,2023-08-23,03:57:35,v2.8.1 +argo-workflows-0.33.1,2023-08-19,06:00:08,v3.4.10 +argo-workflows-0.33.0,2023-08-17,12:08:23,v3.4.10 +argo-workflows-0.32.3,2023-08-16,11:00:55,v3.4.10 +argo-rollouts-2.31.6,2023-08-16,07:02:05,v1.5.1 +argo-cd-5.43.4,2023-08-15,08:58:54,v2.8.0 +argo-workflows-0.32.2,2023-08-11,01:15:12,v3.4.9 +argo-rollouts-2.31.5,2023-08-09,00:04:20,v1.5.1 +argo-cd-5.43.3,2023-08-09,22:18:57,v2.8.0 +argo-cd-5.43.2,2023-08-09,08:36:10,v2.8.0 +argo-cd-5.43.1,2023-08-09,08:20:17,v2.8.0 +argo-cd-5.43.0,2023-08-08,14:36:04,v2.8.0 +argo-cd-5.42.3,2023-08-08,06:11:54,v2.7.11 +argo-rollouts-2.31.4,2023-08-05,10:27:42,v1.5.1 +argo-cd-5.42.2,2023-08-05,10:18:36,v2.7.10 +argo-rollouts-2.31.3,2023-08-01,09:07:36,v1.5.1 +argo-cd-5.42.1,2023-08-01,05:57:37,v2.7.10 +argo-workflows-0.32.1,2023-07-27,13:58:12,v3.4.9 +argo-cd-5.42.0,2023-07-27,22:05:30,v2.7.9 +argo-rollouts-2.31.2,2023-07-25,00:23:11,v1.5.1 +argo-cd-5.41.2,2023-07-25,02:10:03,v2.7.9 +argocd-apps-1.4.1,2023-07-23,04:26:08, +argocd-apps-1.4.0,2023-07-22,13:46:54, +argo-workflows-0.32.0,2023-07-20,23:20:17,v3.4.9 +argo-rollouts-2.31.1,2023-07-20,17:26:45,v1.5.1 +argo-cd-5.41.1,2023-07-19,22:26:30,v2.7.8 +argo-cd-5.41.0,2023-07-18,06:51:38,v2.7.7 +argo-cd-5.40.0,2023-07-17,12:21:05,v2.7.7 +argo-cd-5.39.1,2023-07-17,09:56:36,v2.7.7 +argo-cd-5.39.0,2023-07-13,14:07:28,v2.7.7 +argocd-apps-1.3.0,2023-07-11,16:16:56, +argo-workflows-0.31.0,2023-07-11,12:07:29,v3.4.8 +argo-cd-5.38.1,2023-07-11,13:01:22,v2.7.7 +argo-cd-5.38.0,2023-07-10,08:14:40,v2.7.7 +argo-cd-5.37.1,2023-07-06,08:26:09,v2.7.7 +argo-cd-5.37.0,2023-07-04,14:07:24,v2.7.6 +argo-cd-5.36.15,2023-07-04,09:22:40,v2.7.6 +argo-cd-5.36.14,2023-07-03,17:55:22,v2.7.6 +argo-cd-5.36.13,2023-07-02,08:07:38,v2.7.6 +argo-cd-5.36.12,2023-07-02,03:16:49,v2.7.6 +argo-cd-5.36.11,2023-06-29,16:02:41,v2.7.6 +argo-cd-5.36.9,2023-06-26,14:41:11,v2.7.6 +argo-cd-5.36.10,2023-06-26,14:55:27,v2.7.6 +argo-workflows-0.30.0,2023-06-24,22:29:03,v3.4.8 +argo-workflows-0.29.3,2023-06-23,16:35:23,v3.4.8 +argo-cd-5.36.7,2023-06-23,13:59:34,v2.7.6 +argo-events-2.4.0,2023-06-21,12:41:55,v1.8.0 +argo-cd-5.36.6,2023-06-21,14:54:37,v2.7.6 +argo-cd-5.36.5,2023-06-21,04:27:57,v2.7.6 +argo-cd-5.36.4,2023-06-20,13:07:45,v2.7.5 +argo-cd-5.36.3,2023-06-20,00:05:45,v2.7.5 +argo-cd-5.36.2,2023-06-17,04:55:38,v2.7.5 +argo-workflows-0.29.2,2023-06-08,03:48:28,v3.4.8 +argo-cd-5.36.1,2023-06-08,22:52:40,v2.7.4 +argo-cd-5.36.0,2023-06-07,08:52:24,v2.7.4 +argo-cd-5.35.1,2023-06-06,04:53:38,v2.7.4 +argo-workflows-0.29.1,2023-06-05,14:15:25,v3.4.8 +argo-cd-5.35.0,2023-06-05,14:31:31,v2.7.3 +argo-rollouts-2.31.0,2023-06-04,11:08:02,v1.5.0 +argo-workflows-0.29.0,2023-06-03,14:41:13,v3.4.8 +argo-cd-5.34.6,2023-05-29,04:32:37,v2.7.3 +argo-rollouts-2.30.1,2023-05-27,14:52:04,v1.5.0 +argo-workflows-0.28.2,2023-05-26,04:19:27,v3.4.8 +argo-workflows-0.28.1,2023-05-25,12:31:09,v3.4.7 +argo-cd-5.34.5,2023-05-24,23:23:36,v2.7.3 +argo-rollouts-2.30.0,2023-05-23,07:07:55,v1.5.0 +argo-cd-5.34.4,2023-05-23,20:29:47,v2.7.2 +argo-cd-5.34.3,2023-05-23,02:47:12,v2.7.2 +argo-cd-5.34.2,2023-05-22,17:07:33,v2.7.2 +argocd-apps-1.2.0,2023-05-21,07:19:50, +argo-rollouts-2.29.0,2023-05-20,15:39:35,v1.5.0 +argocd-apps-1.1.0,2023-05-19,09:35:18, +argo-workflows-0.28.0,2023-05-19,10:35:50,v3.4.7 +argo-cd-5.34.1,2023-05-17,14:25:05,v2.7.2 +argo-cd-5.34.0,2023-05-17,13:40:41,v2.7.2 +argo-cd-5.33.4,2023-05-16,09:24:22,v2.7.2 +argo-cd-5.33.3,2023-05-13,11:01:42,v2.7.2 +argo-cd-5.33.2,2023-05-12,15:19:23,v2.7.2 +argo-workflows-0.27.0,2023-05-11,06:39:40,v3.4.7 +argo-workflows-0.26.6,2023-05-11,00:09:56,v3.4.7 +argo-cd-5.33.1,2023-05-11,14:07:07,v2.7.1 +argo-cd-5.33.0,2023-05-11,00:40:17,v2.7.1 +argocd-image-updater-0.9.1,2023-05-10,16:46:54,v0.12.2 +argocd-apps-1.0.1,2023-05-10,16:59:38, +argo-workflows-0.26.5,2023-05-10,14:21:35,v3.4.7 +argo-workflows-0.26.4,2023-05-10,10:16:35,v3.4.7 +argo-rollouts-2.28.0,2023-05-10,15:37:42,v1.5.0 +argo-events-2.3.3,2023-05-10,15:49:04,v1.7.6 +argo-cd-5.32.2,2023-05-10,13:50:04,v2.7.1 +argo-workflows-0.26.3,2023-05-09,03:42:14,v3.4.7 +argo-events-2.3.2,2023-05-09,00:38:41,v1.7.6 +argo-workflows-0.26.2,2023-05-08,20:03:24,v3.4.7 +argo-cd-5.32.1,2023-05-08,11:23:13,v2.7.1 +argo-events-2.3.1,2023-05-07,14:18:59,v1.7.6 +argo-workflows-0.26.1,2023-05-06,16:20:35,v3.4.7 +argo-rollouts-2.27.0,2023-05-06,11:32:12,v1.4.1 +argo-events-2.3.0,2023-05-06,11:18:40,v1.7.6 +argo-workflows-0.26.0,2023-05-05,14:31:11,v3.4.7 +argo-workflows-0.25.2,2023-05-05,14:14:01,v3.4.7 +argo-cd-5.32.0,2023-05-05,20:19:39,v2.7.1 +argo-cd-5.31.1,2023-05-03,09:48:25,v2.7.1 +argo-cd-5.31.0,2023-05-02,12:29:53,v2.7.0 +argo-cd-5.30.1,2023-05-02,10:28:37,v2.7.0 +argo-cd-5.30.0,2023-05-02,07:29:11,v2.7.0 +argo-rollouts-2.26.1,2023-04-28,07:54:50,v1.4.1 +argocd-apps-1.0.0,2023-04-27,12:49:28, +argo-workflows-0.25.1,2023-04-24,16:57:53,v3.4.7 +argo-workflows-0.25.0,2023-04-24,05:47:37,v3.4.7 +argo-rollouts-2.26.0,2023-04-24,14:41:03,v1.4.1 +argocd-image-updater-0.9.0,2023-04-16,08:13:22,v0.12.2 +argo-workflows-0.24.1,2023-04-14,13:55:07,v3.4.7 +argo-workflows-0.24.0,2023-04-13,09:25:33,v3.4.7 +argo-rollouts-2.25.0,2023-04-13,23:59:09,v1.4.1 +argo-rollouts-2.24.0,2023-04-13,18:16:41,v1.4.1 +argo-events-2.2.0,2023-04-13,18:38:28,v1.7.6 +argo-cd-5.29.1,2023-04-13,23:44:42,v2.6.7 +argo-cd-5.29.0,2023-04-13,14:09:40,v2.6.7 +argo-workflows-0.23.2,2023-04-12,04:52:48,v3.4.7 +argo-workflows-0.23.1,2023-04-11,13:50:51,v3.4.6 +argo-cd-5.28.2,2023-04-11,13:34:12,v2.6.7 +argo-events-2.1.6,2023-04-07,12:46:03,v1.7.6 +argocd-image-updater-0.8.5,2023-04-06,13:52:44,v0.12.2 +argo-workflows-0.23.0,2023-04-06,23:43:19,v3.4.6 +argo-cd-5.28.1,2023-04-06,16:17:02,v2.6.7 +argo-workflows-0.22.16,2023-04-04,11:10:35,v3.4.6 +argo-cd-5.28.0,2023-04-03,09:59:17,v2.6.7 +argo-events-2.1.5,2023-04-01,20:40:27,v1.7.6 +argo-cd-5.27.5,2023-03-30,16:33:34,v2.6.7 +argo-rollouts-2.23.0,2023-03-29,09:16:56,v1.4.1 +argo-cd-5.27.4,2023-03-28,13:49:13,v2.6.7 +argo-cd-5.27.3,2023-03-24,09:57:20,v2.6.7 +argo-cd-5.27.2,2023-03-24,00:09:05,v2.6.7 +argo-workflows-0.22.15,2023-03-23,07:09:27,v3.4.5 +argo-cd-5.27.1,2023-03-17,08:25:05,v2.6.6 +argo-workflows-0.22.14,2023-03-16,11:05:16,v3.4.5 +argo-cd-5.27.0,2023-03-16,00:09:12,v2.6.5 +argo-events-2.1.4,2023-03-15,17:34:46,v1.7.6 +argo-cd-5.26.3,2023-03-15,19:28:01,v2.6.5 +argo-cd-5.26.2,2023-03-15,14:00:41,v2.6.5 +argo-cd-5.26.1,2023-03-14,18:42:39,v2.6.5 +argo-cd-5.26.0,2023-03-12,14:00:47,v2.6.4 +argo-cd-5.25.0,2023-03-09,12:05:22,v2.6.4 +argo-cd-5.24.4,2023-03-09,10:48:48,v2.6.4 +argo-cd-5.24.3,2023-03-08,07:46:54,v2.6.4 +argo-cd-5.24.2,2023-03-08,07:13:22,v2.6.4 +argo-cd-5.24.1,2023-03-03,17:53:36,v2.6.3 +argocd-apps-0.0.9,2023-03-02,14:59:22, +argo-rollouts-2.22.3,2023-03-02,15:08:16,v1.4.1 +argo-cd-5.24.0,2023-03-02,14:29:29,v2.6.3 +argo-cd-5.23.5,2023-02-28,23:30:25,v2.6.3 +argo-cd-5.23.4,2023-02-28,21:53:42,v2.6.3 +argo-cd-5.23.3,2023-02-28,08:32:15,v2.6.3 +argo-cd-5.23.2,2023-02-26,16:34:21,v2.6.2 +argo-workflows-0.22.13,2023-02-24,21:57:04,v3.4.5 +argo-workflows-0.22.12,2023-02-23,17:44:23,v3.4.5 +argo-cd-5.23.1,2023-02-23,18:12:14,v2.6.2 +argo-cd-5.23.0,2023-02-23,16:57:40,v2.6.2 +argo-events-2.1.3,2023-02-21,01:14:54,v1.7.6 +argo-cd-5.22.1,2023-02-19,12:38:23,v2.6.2 +argo-cd-5.22.0,2023-02-17,16:38:41,v2.6.2 +argo-cd-5.21.1,2023-02-17,08:23:54,v2.6.2 +argo-cd-5.21.0,2023-02-15,00:11:41,v2.6.1 +argo-cd-5.20.5,2023-02-14,12:21:52,v2.6.1 +argo-cd-5.20.4,2023-02-13,11:22:38,v2.6.1 +argo-workflows-0.22.11,2023-02-10,05:32:10,v3.4.5 +argocd-apps-0.0.8,2023-02-09,22:44:40, +argo-cd-5.20.3,2023-02-08,20:15:43,v2.6.1 +argo-cd-5.20.2,2023-02-08,16:42:35,v2.6.0 +argo-cd-5.20.1,2023-02-08,01:10:02,v2.6.0 +argo-workflows-0.22.10,2023-02-07,15:11:29,v3.4.5 +argo-cd-5.20.0,2023-02-07,15:02:47,v2.6.0 +argo-cd-5.19.15,2023-02-06,04:40:38,v2.5.10 +argo-cd-5.19.14,2023-02-02,21:56:38,v2.5.10 +argo-cd-5.19.13,2023-02-02,04:11:31,v2.5.9 +argocd-image-updater-0.8.4,2023-02-01,21:07:41,v0.12.2 +argocd-image-updater-0.8.3,2023-01-29,18:59:51,v0.12.0 +argocd-apps-0.0.7,2023-01-29,19:17:57, +argo-workflows-0.22.9,2023-01-29,18:48:45,v3.4.4 +argo-rollouts-2.22.2,2023-01-29,19:14:29,v1.4.0 +argo-events-2.1.2,2023-01-29,19:07:55,v1.7.5 +argo-events-2.1.1,2023-01-29,12:16:37,v1.7.5 +argo-cd-5.19.12,2023-01-29,15:23:26,v2.5.9 +argo-cd-5.19.11,2023-01-28,13:41:15,v2.5.9 +argo-cd-5.19.9,2023-01-27,14:47:36,v2.5.8 +argo-cd-5.19.10,2023-01-27,23:20:39,v2.5.8 +argo-cd-5.19.8,2023-01-26,12:06:45,v2.5.8 +argo-cd-5.19.7,2023-01-26,08:23:02,v2.5.8 +argo-events-2.1.0,2023-01-25,21:46:36,v1.7.4 +argo-cd-5.19.6,2023-01-24,00:18:44,v2.5.7 +argo-cd-5.19.5,2023-01-22,19:22:59,v2.5.7 +argo-cd-5.19.4,2023-01-22,17:20:54,v2.5.7 +argocd-image-updater-0.8.2,2023-01-21,11:38:12,v0.12.0 +argo-cd-5.19.3,2023-01-21,19:11:20,v2.5.7 +argo-cd-5.19.2,2023-01-21,12:19:10,v2.5.7 +argo-cd-5.19.1,2023-01-21,12:08:16,v2.5.7 +argo-cd-5.19.0,2023-01-21,09:25:14,v2.5.7 +argo-rollouts-2.22.1,2023-01-20,16:42:17,v1.4.0 +argo-cd-5.18.1,2023-01-20,14:34:15,v2.5.7 +argo-rollouts-2.22.0,2023-01-19,21:14:27,v1.4.0 +argo-rollouts-2.21.3,2023-01-19,10:37:43,v1.3.1 +argo-cd-5.18.0,2023-01-19,22:15:14,v2.5.7 +argo-rollouts-2.21.2,2023-01-18,02:39:11,v1.3.1 +argo-cd-5.17.4,2023-01-18,13:01:18,v2.5.7 +argo-cd-5.17.2,2023-01-18,06:44:45,v2.5.7 +argo-cd-5.17.1,2023-01-11,06:33:59,v2.5.6 +argo-workflows-0.22.8,2023-01-10,00:03:48,v3.4.4 +argo-cd-5.17.0,2023-01-10,12:32:17,v2.5.5 +argo-cd-5.16.15,2023-01-10,08:59:08,v2.5.5 +argo-cd-5.16.14,2023-01-04,09:49:57,v2.5.5 +argo-workflows-0.22.7,2023-01-03,01:46:24,v3.4.4 +argo-workflows-0.22.6,2022-12-30,05:21:07,v3.4.4 +argo-workflows-0.22.5,2022-12-29,16:31:57,v3.4.4 +argo-events-2.0.11,2022-12-29,17:55:54,v1.7.4 +argo-cd-5.16.13,2022-12-29,16:26:56,v2.5.5 +argo-cd-5.16.12,2022-12-29,15:47:53,v2.5.5 +argo-cd-5.16.11,2022-12-29,11:49:31,v2.5.5 +argo-cd-5.16.10,2022-12-27,12:12:26,v2.5.5 +argocd-apps-0.0.6,2022-12-25,13:56:50, +argo-events-2.0.10,2022-12-24,19:41:24,v1.7.4 +argo-workflows-0.22.4,2022-12-22,13:00:59,v3.4.4 +argo-cd-5.16.9,2022-12-20,13:18:36,v2.5.5 +argo-cd-5.16.8,2022-12-20,11:54:14,v2.5.5 +argo-workflows-0.22.3,2022-12-19,09:08:04,v3.4.4 +argo-workflows-0.22.2,2022-12-18,23:42:17,v3.4.4 +argo-events-2.0.9,2022-12-17,00:45:45,v1.7.3 +argo-cd-5.16.7,2022-12-17,11:36:17,v2.5.5 +argo-events-2.0.8,2022-12-15,08:33:57,v1.7.3 +argo-cd-5.16.6,2022-12-15,06:03:36,v2.5.4 +argo-cd-5.16.5,2022-12-14,21:13:18,v2.5.4 +argo-cd-5.16.4,2022-12-13,21:31:30,v2.5.4 +argo-cd-5.16.3,2022-12-13,06:19:38,v2.5.4 +argocd-apps-0.0.5,2022-12-10,14:50:54, +argo-workflows-0.22.1,2022-12-09,06:50:29,v3.4.4 +argo-events-2.0.7,2022-12-09,13:08:09,v1.7.3 +argo-cd-5.16.2,2022-12-07,07:41:56,v2.5.4 +argocd-apps-0.0.4,2022-12-02,13:26:38, +argo-workflows-0.22.0,2022-12-02,13:51:34,v3.4.4 +argo-workflows-0.21.0,2022-12-02,10:29:52,v3.4.4 +argo-cd-5.16.1,2022-12-02,14:48:40,v2.5.3 +argo-workflows-0.20.12,2022-11-30,15:26:09,v3.4.4 +argo-cd-5.16.0,2022-11-30,23:28:36,v2.5.3 +argo-cd-5.15.2,2022-11-30,21:58:12,v2.5.3 +argo-cd-5.15.1,2022-11-30,21:38:35,v2.5.3 +argo-cd-5.15.0,2022-11-29,21:15:00,v2.5.3 +argo-cd-5.14.3,2022-11-28,22:10:18,v2.5.3 +argo-workflows-0.20.11,2022-11-26,01:08:34,v3.4.3 +argo-workflows-0.20.10,2022-11-25,00:36:01,v3.4.3 +argo-cd-5.14.2,2022-11-25,17:40:10,v2.5.2 +argo-workflows-0.20.9,2022-11-23,07:18:21,v3.4.3 +argo-cd-5.14.1,2022-11-21,10:39:57,v2.5.2 +argo-cd-5.14.0,2022-11-20,13:30:05,v2.5.2 +argo-cd-5.13.9,2022-11-17,15:26:43,v2.5.2 +argo-workflows-0.20.8,2022-11-14,11:20:39,v3.4.3 +argo-cd-5.13.8,2022-11-11,02:11:52,v2.5.2 +argo-workflows-0.20.7,2022-11-10,00:36:36,v3.4.3 +argo-cd-5.13.7,2022-11-10,01:56:07,v2.5.2 +argo-cd-5.13.6,2022-11-08,16:04:52,v2.5.2 +argo-cd-5.13.5,2022-11-07,21:55:16,v2.5.1 +argo-cd-5.13.4,2022-11-06,21:13:41,v2.5.1 +argo-cd-5.13.3,2022-11-06,04:19:47,v2.5.1 +argo-cd-5.13.2,2022-11-03,08:37:01,v2.5.1 +argo-cd-5.13.1,2022-11-02,07:31:33,v2.5.1 +argo-workflows-0.20.6,2022-11-01,09:26:43,v3.4.3 +argo-cd-5.13.0,2022-11-01,19:27:19,v2.5.0 +argo-cd-5.12.3,2022-11-01,14:57:44,v2.5.0 +argo-cd-5.12.2,2022-10-31,17:38:56,v2.5.0 +argo-cd-5.9.1,2022-10-30,17:48:16,v2.5.0 +argo-cd-5.9.0,2022-10-30,15:38:31,v2.5.0 +argo-cd-5.12.1,2022-10-30,23:48:29,v2.5.0 +argo-cd-5.12.0,2022-10-30,22:03:51,v2.5.0 +argo-cd-5.11.0,2022-10-30,20:44:31,v2.5.0 +argo-cd-5.10.0,2022-10-30,19:13:05,v2.5.0 +argo-cd-5.8.7,2022-10-29,19:08:37,v2.5.0 +argo-cd-5.8.6,2022-10-29,09:24:01,v2.5.0 +argo-cd-5.8.5,2022-10-28,10:18:33,v2.5.0 +argo-cd-5.8.4,2022-10-28,08:50:11,v2.5.0 +argo-workflows-0.20.5,2022-10-27,01:05:01,v3.4.2 +argo-cd-5.8.3,2022-10-27,12:18:27,v2.5.0 +argo-cd-5.8.2,2022-10-26,13:19:29,v2.5.0 +argo-cd-5.8.1,2022-10-26,11:11:40,v2.5.0 +argo-workflows-0.20.4,2022-10-25,06:19:19,v3.4.2 +argo-cd-5.8.0,2022-10-25,21:22:42,v2.5.0 +argo-cd-5.7.0,2022-10-25,17:05:58,v2.4.15 +argo-cd-5.6.8,2022-10-25,14:09:11,v2.4.15 +argo-cd-5.6.7,2022-10-25,13:30:20,v2.4.15 +argo-cd-5.6.6,2022-10-25,06:42:17,v2.4.15 +argo-workflows-0.20.3,2022-10-24,05:53:54,v3.4.2 +argo-cd-5.6.5,2022-10-24,21:48:21,v2.4.15 +argo-cd-5.6.4,2022-10-24,17:06:09,v2.4.15 +argo-workflows-0.20.2,2022-10-22,07:37:48,v3.4.1 +argo-cd-5.6.3,2022-10-22,12:59:43,v2.4.15 +argo-cd-5.6.2,2022-10-21,08:11:20,v2.4.15 +argo-cd-5.6.1,2022-10-20,11:23:48,v2.4.15 +argocd-apps-0.0.3,2022-10-13,22:07:34, +argo-cd-5.6.0,2022-10-13,22:30:23,v2.4.14 +argo-cd-5.5.25,2022-10-13,16:17:41,v2.4.14 +argocd-apps-0.0.2,2022-10-12,08:34:02, +argo-cd-5.5.24,2022-10-12,12:55:54,v2.4.14 +argo-cd-5.5.23,2022-10-12,11:46:40,v2.4.14 +argo-cd-5.5.22,2022-10-12,08:04:42,v2.4.14 +argocd-image-updater-0.8.1,2022-10-11,22:21:29,v0.12.0 +argo-cd-5.5.21,2022-10-11,14:12:05,v2.4.14 +argo-cd-5.5.20,2022-10-11,14:00:11,v2.4.14 +argo-cd-5.5.19,2022-10-11,12:29:07,v2.4.14 +argo-cd-5.5.18,2022-10-10,20:46:29,v2.4.14 +argo-cd-5.5.17,2022-10-10,19:09:27,v2.4.14 +argo-cd-5.5.16,2022-10-09,13:23:27,v2.4.14 +argo-cd-5.5.15,2022-10-09,08:34:22,v2.4.14 +argo-cd-5.5.14,2022-10-08,22:23:13,v2.4.14 +argo-cd-5.5.13,2022-10-08,11:28:42,v2.4.14 +argo-cd-5.5.12,2022-10-07,10:52:38,v2.4.14 +argo-cd-5.5.9,2022-10-06,14:32:23,v2.4.13 +argo-cd-5.5.11,2022-10-06,22:23:50,v2.4.14 +argo-cd-5.5.10,2022-10-06,21:05:05,v2.4.14 +argo-cd-5.5.8,2022-10-04,00:58:31,v2.4.13 +argo-workflows-0.20.1,2022-10-02,09:28:15,v3.4.1 +argo-rollouts-2.21.1,2022-09-30,22:29:28,v1.3.1 +argo-cd-5.5.7,2022-09-30,13:26:36,v2.4.12 +argo-rollouts-2.21.0,2022-09-29,06:43:50,v1.3.0 +argo-events-2.0.6,2022-09-29,15:55:01,v1.7.3 +argo-workflows-0.20.0,2022-09-28,13:51:07,v3.4.0 +argo-cd-5.5.6,2022-09-28,11:06:18,v2.4.12 +argo-workflows-0.19.6,2022-09-27,12:44:09,v3.4.0 +argo-workflows-0.19.5,2022-09-27,09:53:23,v3.4.0 +argo-workflows-0.19.4,2022-09-26,04:11:17,v3.4.0 +argo-workflows-0.19.3,2022-09-26,01:49:55,v3.4.0 +argo-cd-5.5.5,2022-09-25,17:03:01,v2.4.12 +argo-workflows-0.19.2,2022-09-24,00:03:59,v3.4.0 +argo-cd-5.5.4,2022-09-22,17:20:47,v2.4.12 +argo-cd-5.5.3,2022-09-22,08:53:07,v2.4.12 +argo-workflows-0.19.1,2022-09-21,12:51:22,v3.4.0 +argo-workflows-0.19.0,2022-09-21,10:35:00,v3.4.0 +argo-cd-5.5.2,2022-09-21,19:06:26,v2.4.12 +argo-cd-5.5.1,2022-09-21,18:21:31,v2.4.12 +argo-cd-5.5.0,2022-09-21,11:48:56,v2.4.12 +argo-cd-5.4.8,2022-09-21,07:32:29,v2.4.12 +argo-events-2.0.5,2022-09-20,11:55:01,v1.7.2 +argo-workflows-0.18.0,2022-09-19,16:10:42,v3.4.0 +argo-cd-5.4.7,2022-09-19,21:37:54,v2.4.12 +argo-cd-5.4.6,2022-09-19,12:57:09,v2.4.12 +argo-cd-5.4.5,2022-09-19,11:44:57,v2.4.12 +argo-cd-5.4.4,2022-09-16,08:58:43,v2.4.12 +argo-cd-5.4.3,2022-09-08,17:00:01,v2.4.11 +argo-cd-5.4.2,2022-09-06,10:13:54,v2.4.11 +argo-cd-5.4.1,2022-09-04,08:48:29,v2.4.11 +argo-cd-5.4.0,2022-08-30,15:30:53,v2.4.11 +argo-workflows-0.17.1,2022-08-26,09:03:18,v3.3.9 +argo-rollouts-2.20.0,2022-08-26,16:40:20,v1.2.2 +argo-rollouts-2.19.2,2022-08-26,09:03:17,v1.2.2 +argo-events-2.0.4,2022-08-26,09:03:16,v1.7.1 +argo-cd-5.3.6,2022-08-26,16:15:52,v2.4.11 +argo-cd-5.3.5,2022-08-26,13:38:01,v2.4.11 +argo-cd-5.3.4,2022-08-26,09:03:15,v2.4.11 +argo-cd-5.3.3,2022-08-25,22:09:36,v2.4.11 +argo-cd-5.3.2,2022-08-25,21:39:21,v2.4.11 +argo-cd-5.3.1,2022-08-25,11:35:35,v2.4.11 +argo-cd-5.3.0,2022-08-25,10:42:01,v2.4.11 +argo-cd-5.2.2,2022-08-25,10:13:10,v2.4.11 +argo-cd-5.2.1,2022-08-25,09:08:04,v2.4.11 +argo-cd-5.2.0,2022-08-25,08:43:06,v2.4.11 +argo-cd-5.1.0,2022-08-25,06:41:11,v2.4.11 +argo-cd-5.0.0,2022-08-24,15:12:21,v2.4.11 +argo-rollouts-2.19.0,2022-08-23,02:43:29,v1.2.0 +argocd-apps-0.0.1,2022-08-22,12:32:28, +argo-cd-4.10.9,2022-08-22,14:04:30,v2.4.11 +argo-cd-4.10.8,2022-08-19,19:37:44,v2.4.10 +argo-cd-4.10.7,2022-08-18,00:28:21,v2.4.10 +argo-workflows-0.17.0,2022-08-17,00:07:26,v3.3.9 +argo-cd-4.10.6,2022-08-11,20:43:51,v2.4.9 +argo-workflows-0.16.9,2022-08-10,11:43:41,v3.3.9 +argo-cd-4.10.5,2022-08-02,10:02:11,v2.4.8 +argo-cd-4.10.4,2022-08-01,13:49:17,v2.4.8 +argo-cd-4.10.3,2022-07-31,12:20:12,v2.4.7 +argo-cd-4.10.2,2022-07-29,18:15:36,v2.4.7 +argo-cd-4.10.1,2022-07-29,14:40:58,v2.4.7 +argo-workflows-0.16.8,2022-07-27,00:51:07,v3.3.8 +argo-cd-4.10.0,2022-07-21,09:53:44,v2.4.7 +argo-cd-4.9.16,2022-07-19,12:48:08,v2.4.7 +argo-cd-4.9.15,2022-07-19,06:25:53,v2.4.7 +argo-rollouts-2.18.0,2022-07-15,11:43:33,v1.2.0 +argo-cd-4.9.14,2022-07-14,13:03:20,v2.4.6 +argo-workflows-0.16.7,2022-07-13,00:10:56,v3.3.8 +argo-cd-4.9.13,2022-07-13,20:43:07,v2.4.6 +argo-cd-4.9.12,2022-07-07,16:46:25,v2.4.4 +argo-events-2.0.3,2022-07-06,12:39:16,v1.7.1 +argo-events-2.0.2,2022-07-04,09:50:24,v1.7.1 +argo-cd-4.9.11,2022-06-29,13:10:22,v2.4.3 +argo-cd-4.9.9,2022-06-28,13:20:49,v2.4.3 +argo-cd-4.9.10,2022-06-28,15:14:22,v2.4.3 +argo-events-2.0.1,2022-06-27,21:35:46,v1.7.0 +argo-cd-4.9.8,2022-06-27,17:45:36,v2.4.2 +argo-workflows-0.16.6,2022-06-24,05:47:50,v3.3.8 +argo-workflows-0.16.5,2022-06-23,16:01:09,v3.3.7 +argo-workflows-0.16.4,2022-06-23,09:30:17,v3.3.6 +argo-cd-4.9.7,2022-06-23,14:43:59,v2.4.2 +argo-cd-4.9.6,2022-06-23,06:34:16,v2.4.2 +argo-cd-4.9.5,2022-06-23,05:50:20,v2.4.2 +argo-rollouts-2.17.0,2022-06-17,08:13:21,v1.2.0 +argo-cd-4.9.4,2022-06-17,07:01:22,v2.4.0 +argo-cd-4.9.3,2022-06-16,11:24:09,v2.4.0 +argo-cd-4.9.2,2022-06-15,13:16:32,v2.4.0 +argo-events-2.0.0,2022-06-14,15:38:27,v1.7.0 +argo-cd-4.9.1,2022-06-14,12:32:16,v2.4.0 +argo-cd-4.9.0,2022-06-14,10:10:37,v2.4.0 +argo-workflows-0.16.3,2022-06-10,16:50:21,v3.3.6 +argo-cd-4.8.3,2022-06-08,06:04:29,v2.3.4 +argo-cd-4.8.2,2022-06-02,12:26:38,v2.3.4 +argo-cd-4.8.1,2022-06-02,12:06:47,v2.3.4 +argo-workflows-0.16.2,2022-06-01,17:56:41,v3.3.6 +argo-rollouts-2.16.0,2022-06-01,17:10:16,v1.2.0 +argo-cd-4.8.0,2022-05-30,16:20:13,v2.3.4 +argo-workflows-0.16.1,2022-05-26,11:20:50,v3.3.6 +argo-rollouts-2.15.0,2022-05-26,12:00:18,v1.2.0 +argo-workflows-0.16.0,2022-05-25,09:30:37,v3.3.5 +argo-workflows-0.15.4,2022-05-25,08:52:21,v3.3.5 +argo-cd-4.7.0,2022-05-25,11:07:09,v2.3.4 +argo-rollouts-2.14.1,2022-05-23,05:05:29,v1.2.0 +argo-cd-4.6.5,2022-05-23,04:47:27,v2.3.4 +argo-workflows-0.15.3,2022-05-22,07:43:33,v3.3.5 +argo-cd-4.6.4,2022-05-22,11:52:08,v2.3.4 +argo-workflows-0.15.2,2022-05-20,21:14:27,v3.3.5 +argo-workflows-0.15.1,2022-05-20,19:19:26,v3.3.2 +argo-cd-4.6.3,2022-05-20,18:11:16,v2.3.4 +argo-cd-4.6.2,2022-05-19,17:54:21,v2.3.4 +argo-cd-4.6.1,2022-05-19,11:51:31,v2.3.3 +argo-cd-4.6.0,2022-05-10,07:41:16,v2.3.3 +argo-workflows-0.15.0,2022-05-09,20:45:52,v3.3.2 +argo-workflows-0.14.5,2022-05-09,20:36:39,v3.3.2 +argo-workflows-0.14.4,2022-05-09,20:24:35,v3.3.2 +argo-workflows-0.14.3,2022-05-09,19:51:22,v3.3.2 +argo-workflows-0.14.2,2022-05-09,19:37:38,v3.3.2 +argo-cd-4.5.12,2022-05-09,19:18:36,v2.3.3 +argo-cd-4.5.11,2022-05-07,20:58:56,v2.3.3 +argo-cd-4.5.10,2022-05-05,21:59:44,v2.3.3 +argo-cd-4.5.9,2022-05-04,16:40:52,v2.3.3 +argo-workflows-0.14.1,2022-05-01,11:44:50,v3.3.2 +argo-cd-4.5.8,2022-04-30,12:31:18,v2.3.3 +argo-events-1.13.0,2022-04-23,07:25:52,v1.6.0 +argocd-notifications-1.8.1,2022-04-22,09:42:54,v1.2.1 +argocd-applicationset-1.12.1,2022-04-22,09:42:52,v0.4.1 +argocd-applicationset-1.12.0,2022-04-22,07:23:43,v0.4.1 +argo-workflows-0.14.0,2022-04-22,07:09:42,v3.3.2 +argo-cd-4.5.7,2022-04-22,09:55:26,v2.3.3 +argo-cd-4.5.6,2022-04-22,08:34:16,v2.3.3 +argo-cd-4.5.5,2022-04-21,22:02:41,v2.3.3 +argo-cd-4.5.4,2022-04-19,11:02:10,v2.3.3 +argo-cd-4.5.3,2022-04-12,14:28:36,v2.3.3 +argo-cd-4.5.2,2022-04-12,12:32:08,v2.3.3 +argo-cd-4.5.1,2022-04-11,14:33:48,v2.3.3 +argo-rollouts-2.14.0,2022-04-05,11:38:27,v1.2.0 +argo-cd-4.5.0,2022-04-03,09:14:25,v2.3.3 +argo-cd-4.4.1,2022-04-02,18:45:18,v2.3.3 +argo-rollouts-2.13.0,2022-03-31,17:32:03,v1.2.0 +argo-cd-4.4.0,2022-03-31,12:20:18,v2.3.3 +argo-cd-4.3.2,2022-03-31,11:59:31,v2.3.3 +argo-cd-4.3.1,2022-03-30,13:40:17,v2.3.3 +argo-cd-4.3.0,2022-03-29,11:24:34,v2.3.2 +argo-cd-4.2.4,2022-03-28,21:02:42,v2.3.2 +argo-cd-4.2.3,2022-03-28,13:18:14,v2.3.2 +argo-workflows-0.13.1,2022-03-23,13:18:49,v3.2.9 +argo-rollouts-2.12.0,2022-03-23,21:12:12,v1.2.0 +argo-cd-4.2.2,2022-03-23,09:53:45,v2.3.2 +argo-cd-4.2.1,2022-03-18,21:25:50,v2.3.1 +argo-cd-4.2.0,2022-03-18,16:42:44,v2.3.1 +argocd-image-updater-0.8.0,2022-03-17,19:34:59,v0.12.0 +argo-cd-4.1.0,2022-03-17,17:16:25,v2.3.1 +argo-cd-4.0.1,2022-03-17,12:54:21,v2.3.1 +argo-cd-4.0.0,2022-03-16,21:02:33,v2.3.1 +argo-rollouts-2.11.0,2022-03-14,21:13:07,v1.1.1 +argo-workflows-0.13.0,2022-03-12,17:55:49,v3.2.9 +argo-workflows-0.12.0,2022-03-12,17:14:00,v3.2.9 +argo-cd-3.35.4,2022-03-12,18:59:29,v2.2.5 +argo-cd-3.35.3,2022-03-10,10:45:45,v2.2.5 +argo-cd-3.35.2,2022-03-06,15:54:11,v2.2.5 +argo-cd-3.35.1,2022-03-06,12:08:36,v2.2.5 +argo-workflows-0.11.2,2022-03-05,08:51:50,v3.2.9 +argo-workflows-0.11.1,2022-03-03,14:02:23,v3.2.7 +argocd-image-updater-0.7.0,2022-03-01,10:26:52,v0.11.3 +argo-workflows-0.11.0,2022-03-01,09:53:15,v3.2.7 +argo-cd-3.35.0,2022-03-01,21:58:21,v2.2.5 +argo-cd-3.34.0,2022-03-01,17:37:13,v2.2.5 +argo-cd-3.33.8,2022-02-26,20:07:35,v2.2.5 +argo-cd-3.33.7,2022-02-23,11:02:53,v2.2.5 +argocd-image-updater-0.6.3,2022-02-20,17:56:33,v0.11.3 +argo-rollouts-2.10.0,2022-02-20,23:01:55,v1.1.1 +argo-events-1.12.0,2022-02-20,20:57:50,v1.6.0 +argo-events-1.11.0,2022-02-20,18:31:57,v1.6.0 +argocd-applicationset-1.11.0,2022-02-17,08:19:49,v0.3.0 +argo-cd-3.33.6,2022-02-17,11:37:47,v2.2.5 +argocd-applicationset-1.10.0,2022-02-16,18:44:07,v0.3.0 +argo-workflows-0.10.1,2022-02-09,23:06:55,v3.2.7 +argo-cd-3.33.5,2022-02-05,16:32:53,v2.2.5 +argo-cd-3.33.4,2022-02-05,12:55:15,v2.2.5 +argo-cd-3.33.3,2022-02-04,09:19:44,v2.2.4 +argo-cd-3.33.2,2022-02-03,09:36:59,v2.2.3 +argocd-notifications-1.8.0,2022-02-01,21:49:11,v1.2.1 +argo-cd-3.33.1,2022-01-31,19:26:33,v2.2.3 +argo-cd-3.33.0,2022-01-31,15:37:35,v2.2.3 +argo-workflows-0.10.0,2022-01-28,13:45:09,v3.2.6 +argo-cd-3.32.1,2022-01-27,10:15:36,v2.2.3 +argo-cd-3.32.0,2022-01-26,15:14:35,v2.2.3 +argo-rollouts-2.9.3,2022-01-25,12:43:34,v1.1.1 +argocd-notifications-1.7.1,2022-01-24,19:19:34,v1.2.1 +argocd-image-updater-0.6.2,2022-01-24,19:19:33,v0.11.2 +argocd-applicationset-1.9.1,2022-01-24,19:19:32,v0.3.0 +argo-workflows-0.9.5,2022-01-24,19:19:30,v3.2.6 +argo-rollouts-2.9.2,2022-01-24,19:19:29,v1.1.1 +argo-events-1.10.2,2022-01-24,19:19:28,v1.5.6 +argo-cd-3.31.1,2022-01-24,19:19:26,v2.2.2 +argo-cd-3.31.0,2022-01-20,10:52:27,v2.2.2 +argo-cd-3.30.1,2022-01-19,19:26:25,v2.2.2 +argo-events-1.10.1,2022-01-18,22:20:08,v1.5.6 +argo-events-1.10.0,2022-01-17,14:02:09,v1.5.0 +argo-cd-3.30.0,2022-01-16,05:24:18,v2.2.2 +argocd-image-updater-0.6.1,2022-01-11,22:07:52,v0.11.2 +argo-rollouts-2.9.1,2022-01-11,22:35:51,v1.1.1 +argo-rollouts-2.9.0,2022-01-10,20:46:21,v1.1.1 +argo-rollouts-2.8.1,2022-01-10,18:21:14,v1.1.1 +argo-events-1.9.0,2022-01-10,19:56:43,v1.5.0 +argocd-applicationset-1.9.0,2022-01-09,18:08:02,v0.3.0 +argocd-applicationset-1.8.0,2022-01-06,18:36:05,v0.3.0 +argo-rollouts-2.8.0,2022-01-05,12:32:16,v1.1.0 +argo-cd-3.29.5,2022-01-04,10:16:28,v2.2.2 +argocd-notifications-1.7.0,2021-12-20,18:18:19,v1.2.1 +argo-workflows-0.9.4,2021-12-20,11:00:00,v3.2.6 +argo-rollouts-2.7.0,2021-12-20,19:13:47,v1.1.0 +argo-cd-3.29.4,2021-12-20,17:27:35,v2.2.1 +argo-cd-3.29.3,2021-12-18,22:09:23,v2.2.1 +argo-cd-3.29.2,2021-12-17,18:39:32,v2.2.1 +argo-cd-3.29.1,2021-12-17,10:06:18,v2.2.1 +argocd-notifications-1.6.1,2021-12-16,09:58:40,v1.2.1 +argo-cd-3.29.0,2021-12-15,10:15:30,v2.2.0 +argo-cd-3.28.1,2021-12-11,19:32:10,v2.1.7 +argo-cd-3.28.0,2021-12-10,15:23:06,v2.1.7 +argocd-applicationset-1.7.0,2021-12-09,14:56:54,v0.2.0 +argo-rollouts-2.6.0,2021-12-09,15:13:24,v1.1.0 +argocd-image-updater-0.6.0,2021-12-07,06:40:34,v0.11.0 +argo-workflows-0.9.3,2021-12-06,10:02:15,v3.2.4 +argo-cd-3.27.1,2021-12-03,22:41:42,v2.1.7 +argo-cd-3.27.0,2021-12-03,22:19:58,v2.1.7 +argo-cd-3.26.12,2021-11-29,10:51:49,v2.1.7 +argocd-notifications-1.6.0,2021-11-25,17:39:42,v1.2.0 +argocd-image-updater-0.5.0,2021-11-24,20:47:21,v0.11.0 +argo-cd-3.26.11,2021-11-24,16:30:38,v2.1.7 +argo-workflows-0.9.2,2021-11-23,10:12:37,v3.2.4 +argocd-image-updater-0.4.2,2021-11-22,07:18:47,v0.10.3 +argo-workflows-0.9.1,2021-11-22,09:41:06,v3.2.4 +argo-workflows-0.9.0,2021-11-22,09:33:03,v3.2.4 +argo-workflows-0.8.3,2021-11-21,18:59:21,v3.2.4 +argo-cd-3.26.10,2021-11-21,12:48:45,v2.1.7 +argo-workflows-0.8.2,2021-11-19,21:36:02,v3.2.0 +argocd-image-updater-0.4.1,2021-11-17,09:50:53,v0.10.3 +argo-cd-3.26.9,2021-11-17,07:43:03,v2.1.6 +argocd-image-updater-0.4.0,2021-11-15,23:19:27,v0.10.1 +argo-rollouts-2.5.0,2021-11-15,07:02:31,v1.1.0 +argocd-notifications-1.5.2,2021-11-12,09:25:30,v1.1.1 +argo-cd-3.26.8,2021-11-11,15:00:04,v2.1.6 +argo-cd-3.26.7,2021-11-10,17:18:47,v2.1.6 +argocd-image-updater-0.3.0,2021-11-09,21:14:43,v0.10.1 +argo-rollouts-2.4.0,2021-11-09,20:50:12,v1.1.0 +argo-cd-3.26.6,2021-11-06,08:23:57,v2.1.6 +argo-workflows-0.8.1,2021-11-01,18:13:26,v3.2.0 +argo-cd-3.26.5,2021-10-31,19:32:18,v2.1.6 +argo-cd-3.26.4,2021-10-31,11:57:25,v2.1.6 +argo-events-1.8.0,2021-10-27,15:13:58,v1.5.0 +argo-cd-3.26.3,2021-10-21,20:56:35,v2.1.5 +argo-cd-3.26.2,2021-10-21,11:34:14,2.1.4 +argo-cd-3.26.1,2021-10-20,06:32:59,2.1.4 +argo-workflows-0.8.0,2021-10-19,15:37:06,v3.2.0 +argo-cd-3.26.0,2021-10-19,17:02:52,2.1.3 +argo-cd-3.25.3,2021-10-19,15:51:33,2.1.3 +argo-rollouts-2.3.0,2021-10-18,12:29:40,v1.1.0 +argocd-applicationset-1.6.0,2021-10-17,18:30:56,v0.2.0 +argo-rollouts-2.2.1,2021-10-17,12:08:48,v1.1.0 +argo-cd-3.25.2,2021-10-17,10:33:22,2.1.3 +argo-workflows-0.7.3,2021-10-15,10:22:13,v3.2.0 +argo-workflows-0.7.2,2021-10-15,09:42:17,v3.1.8 +argo-rollouts-2.2.0,2021-10-14,14:58:28,v1.1.0 +argo-cd-3.25.1,2021-10-14,12:40:36,2.1.3 +argo-cd-3.25.0,2021-10-12,18:49:49,2.1.3 +argo-cd-3.24.0,2021-10-06,22:13:09,2.1.3 +argo-cd-3.23.1,2021-10-06,15:28:20,2.1.3 +argo-cd-3.23.0,2021-10-04,22:20:00,2.1.2 +argocd-notifications-1.5.1,2021-09-29,15:15:42,1.1.1 +argo-cd-3.22.1,2021-09-29,09:07:29,2.1.2 +argocd-applicationset-1.5.1,2021-09-27,13:58:05,v0.2.0 +argocd-applicationset-1.5.0,2021-09-27,12:06:48,v0.2.0 +argo-workflows-0.7.1,2021-09-27,15:18:14,v3.1.8 +argo-workflows-0.7.0,2021-09-27,07:14:58,v3.1.8 +argo-rollouts-2.1.1,2021-09-27,15:10:06,v1.0.2 +argo-cd-3.22.0,2021-09-27,19:32:54,2.1.2 +argo-cd-3.21.1,2021-09-27,10:04:46,2.1.2 +argocd-image-updater-0.2.1,2021-09-20,14:43:20,v0.10.1 +argo-workflows-0.6.0,2021-09-17,19:51:33,v3.1.8 +argo-rollouts-2.1.0,2021-09-17,16:39:27,v1.0.2 +argo-cd-3.21.0,2021-09-17,20:14:56,2.1.2 +argo-cd-3.20.0,2021-09-17,17:47:39,2.1.2 +argo-cd-3.19.0,2021-09-17,13:57:58,2.1.2 +argocd-image-updater-0.2.0,2021-09-16,18:59:58,v0.10.1 +argocd-image-updater-0.1.1,2021-09-16,17:30:59,v0.10.1 +argo-rollouts-2.0.2,2021-09-16,19:06:11,v1.0.2 +argo-cd-3.18.0,2021-09-16,17:59:45,2.1.2 +argo-workflows-0.5.2,2021-09-15,22:27:25,v3.1.8 +argo-cd-3.17.7,2021-09-15,10:31:26,2.1.2 +argo-workflows-0.5.1,2021-09-13,16:21:35,v3.1.8 +argo-cd-3.17.6,2021-09-02,21:59:12,2.1.2 +argo-rollouts-2.0.1,2021-08-30,06:46:48,v1.0.2 +argocd-notifications-1.5.0,2021-08-27,13:12:54,1.1.1 +argocd-applicationset-1.4.0,2021-08-27,12:33:43,v0.2.0 +argo-workflows-0.5.0,2021-08-27,12:59:50,v3.1.8 +argo-cd-3.17.5,2021-08-27,13:47:25,2.1.1 +argo-cd-3.17.4,2021-08-27,10:06:21,2.1.1 +argo-cd-3.17.3,2021-08-26,15:11:19,2.1.1 +argo-cd-3.17.2,2021-08-26,14:22:27,2.1.1 +argo-cd-3.17.1,2021-08-26,13:55:36,2.1.0 +argo-cd-3.17.0,2021-08-26,13:43:13,2.1.0 +argocd-notifications-1.4.4,2021-08-25,12:14:37,1.1.1 +argocd-applicationset-1.3.1,2021-08-25,07:05:41,v0.2.0 +argo-cd-3.16.0,2021-08-25,15:05:03,2.1.0 +argo-cd-3.15.0,2021-08-24,12:48:33,2.1.0 +argo-cd-3.14.0,2021-08-24,12:38:02,2.1.0 +argocd-applicationset-1.3.0,2021-08-23,13:05:32,v0.2.0 +argocd-applicationset-1.2.0,2021-08-23,12:23:43,v0.2.0 +argo-workflows-0.4.2,2021-08-23,11:13:42,v3.1.8 +argo-cd-3.13.2,2021-08-23,17:23:36,2.1.0 +argo-cd-3.13.1,2021-08-23,13:01:57,2.1.0 +argo-cd-3.13.0,2021-08-23,12:14:11,2.1.0 +argo-workflows-0.4.1,2021-08-20,16:24:43,v3.1.5 +argocd-notifications-1.4.3,2021-08-18,10:02:11,1.1.1 +argocd-notifications-1.4.2,2021-08-17,09:13:14,1.1.1 +argo-workflows-0.4.0,2021-08-17,07:31:04,v3.1.5 +argocd-image-updater-0.1.0,2021-08-16,15:23:23,v0.10.1 +argo-rollouts-2.0.0,2021-08-16,15:27:43,v1.0.2 +argo-cd-3.12.1,2021-08-14,11:03:56,2.0.5 +argocd-applicationset-1.1.0,2021-08-13,16:37:25,v0.1.0 +argo-cd-3.12.0,2021-08-13,20:15:28,2.0.5 +argo-workflows-0.3.0,2021-08-11,07:32:31,v3.0.7 +argo-cd-3.11.5,2021-08-11,15:44:45,2.0.5 +argo-cd-3.11.4,2021-08-11,07:14:57,2.0.5 +argo-workflows-0.2.13,2021-08-10,13:45:31,v3.0.7 +argo-rollouts-1.0.4,2021-08-10,06:39:57,v1.0.2 +argo-cd-3.11.3,2021-08-09,08:58:30,2.0.5 +argo-events-1.7.0,2021-08-07,22:43:47,1.3.1 +argo-cd-3.11.2,2021-08-07,13:08:09,2.0.5 +argo-cd-3.11.1,2021-07-28,15:42:38,2.0.5 +argo-cd-3.11.0,2021-07-28,14:37:27,2.0.5 +argo-cd-3.10.2,2021-07-27,11:07:30,2.0.5 +argo-cd-3.10.1,2021-07-27,01:33:24,2.0.5 +argo-workflows-0.2.12,2021-07-21,16:02:29,v3.0.7 +argo-workflows-0.2.9,2021-07-20,18:18:54,v3.0.7 +argo-workflows-0.2.8,2021-07-20,18:10:55,v3.0.7 +argo-workflows-0.2.11,2021-07-20,21:51:21,v3.0.7 +argo-workflows-0.2.10,2021-07-20,18:25:05,v3.0.7 +argo-cd-3.10.0,2021-07-20,11:41:23,2.0.4 +argo-cd-3.9.0,2021-07-13,06:35:52,2.0.4 +argo-cd-3.8.2,2021-07-13,06:26:07,2.0.4 +argocd-applicationset-1.0.0,2021-07-12,10:54:40,v0.1.0 +argo-cd-3.8.1,2021-07-12,11:07:21,2.0.4 +argocd-notifications-1.4.1,2021-07-09,11:09:14,1.1.1 +argocd-applicationset-0.1.7,2021-07-09,11:09:13,v0.1.0 +argo-workflows-0.2.7,2021-07-09,11:09:12,v3.0.7 +argo-rollouts-1.0.3,2021-07-09,11:09:12,v1.0.2 +argo-events-1.6.4,2021-07-09,11:09:11,1.3.1 +argo-cd-3.8.0,2021-07-09,12:34:38,2.0.4 +argo-cd-3.7.2,2021-07-09,11:09:10,2.0.4 +argo-rollouts-1.0.2,2021-07-07,15:18:22,v1.0.2 +argo-cd-3.7.1,2021-07-05,09:53:30,2.0.4 +argo-cd-3.7.0,2021-07-05,09:42:21,2.0.4 +argo-cd-3.6.11,2021-06-29,08:49:22,2.0.4 +argo-cd-3.6.10,2021-06-26,15:05:26,2.0.3 +argo-workflows-0.2.6,2021-06-25,06:16:05,v3.0.7 +argo-cd-3.6.9,2021-06-25,06:07:25,2.0.3 +argo-workflows-0.2.5,2021-06-08,13:15:23,v3.0.2 +argo-events-1.6.2,2021-06-07,08:36:00,1.3.1 +argo-cd-3.6.8,2021-06-07,09:40:13,2.0.3 +argo-cd-3.6.7,2021-06-07,08:52:24,2.0.3 +argocd-notifications-1.4.0,2021-06-03,10:08:10,1.1.1 +argocd-applicationset-0.1.6,2021-06-03,17:50:44,v0.1.0 +argo-workflows-0.2.4,2021-06-03,17:11:17,v3.0.2 +argo-workflows-0.2.3,2021-06-03,11:08:38,v3.0.2 +argo-cd-3.6.6,2021-06-02,17:55:17,2.0.3 +argo-workflows-0.2.2,2021-05-31,20:15:38,v3.0.2 +argo-workflows-0.2.1,2021-05-31,16:32:09,v3.0.2 +argo-workflows-0.2.0,2021-05-31,16:18:32,v3.0.2 +argo-rollouts-1.0.1,2021-05-31,21:23:24,v1.0.1 +argo-rollouts-1.0.0,2021-05-31,16:06:49,v1.0.1 +argo-events-1.6.1,2021-05-31,16:09:51,1.3.1 +argo-cd-3.6.5,2021-05-31,20:15:37,2.0.3 +argo-events-1.6.0,2021-05-29,10:30:24,1.3.1 +argo-cd-3.6.4,2021-05-29,14:37:41,2.0.3 +argo-cd-3.6.3,2021-05-29,08:42:00,2.0.3 +argo-workflows-0.1.5,2021-05-27,16:33:49,v3.0.2 +argocd-notifications-1.3.2,2021-05-26,21:41:54,1.1.1 +argo-workflows-0.1.4,2021-05-26,10:00:42,v3.0.2 +argo-rollouts-0.5.5,2021-05-26,09:44:42,0.10.2 +argo-events-1.5.0,2021-05-26,21:27:33,1.3.1 +argo-events-1.4.3,2021-05-26,21:13:44,1.3.1 +argo-cd-3.6.2,2021-05-26,10:35:46,2.0.1 +argo-workflows-0.1.3,2021-05-25,06:06:50,v3.0.2 +argo-rollouts-0.5.4,2021-05-24,21:34:19,0.10.2 +argo-cd-3.6.1,2021-05-24,19:21:16,2.0.1 +argo-cd-3.6.0,2021-05-23,12:25:54,2.0.1 +argocd-notifications-1.3.1,2021-05-21,16:00:09,1.1.1 +argocd-applicationset-0.1.5,2021-05-21,16:00:08,v0.1.0 +argo-workflows-0.1.2,2021-05-21,16:50:29,v3.0.2 +argo-workflows-0.1.1,2021-05-21,16:00:07,v3.0.2 +argo-rollouts-0.5.3,2021-05-21,16:00:06,0.10.2 +argo-events-1.4.2,2021-05-21,16:00:05,1.3.1 +argo-cd-3.5.0,2021-05-21,16:43:57,2.0.1 +argo-cd-3.4.1,2021-05-21,16:00:04,2.0.1 +argo-1.0.0,2021-05-21,16:00:03,v2.12.5 diff --git a/scripts/release-analysis/argo_releases.csv b/scripts/release-analysis/argo_releases.csv new file mode 100644 index 00000000..f630abe7 --- /dev/null +++ b/scripts/release-analysis/argo_releases.csv @@ -0,0 +1,877 @@ +Repository,Release Tag,Release Date,Release Time +argo-cd,v2.14.0-rc6,2025-01-21,21:40:31 +argo-cd,v2.14.0-rc5,2025-01-08,20:16:38 +argo-cd,v2.13.3,2025-01-03,19:23:42 +argo-cd,v2.12.9,2025-01-03,19:21:15 +argo-cd,v2.14.0-rc4,2025-01-02,22:36:35 +argo-cd,v2.14.0-rc3,2024-12-18,19:22:51 +argo-cd,v2.14.0-rc2,2024-12-17,18:43:53 +argo-cd,v2.13.2,2024-12-11,19:18:46 +argo-cd,v2.12.8,2024-12-11,19:17:57 +argo-cd,v2.13.1,2024-11-20,17:11:22 +argo-cd,v2.12.7,2024-11-05,16:08:15 +argo-cd,v2.11.12,2024-11-05,16:09:52 +argo-cd,v2.13.0,2024-11-04,12:46:49 +argo-cd,v2.13.0-rc5,2024-10-18,21:56:52 +argo-cd,v2.12.6,2024-10-18,19:07:18 +argo-cd,v2.11.11,2024-10-18,19:10:03 +argo-cd,v2.13.0-rc4,2024-10-17,22:20:25 +argo-cd,v2.12.5,2024-10-17,22:03:45 +argo-cd,v2.11.10,2024-10-17,22:04:22 +argo-cd,v2.10.18,2024-10-17,22:02:48 +argo-cd,v2.13.0-rc3,2024-10-07,14:11:10 +argo-cd,v2.12.4,2024-09-26,07:14:39 +argo-cd,v2.11.9,2024-09-26,07:39:46 +argo-cd,v2.10.17,2024-09-26,07:39:53 +argo-cd,v2.13.0-rc2,2024-09-20,12:16:17 +argo-cd,v2.13.0-rc1,2024-09-16,09:07:32 +argo-cd,v2.11.8,2024-09-11,07:18:22 +argo-cd,v2.12.3,2024-08-27,12:33:34 +argo-cd,v2.12.2,2024-08-23,04:05:09 +argo-cd,v2.9.22,2024-08-22,18:09:07 +argo-cd,v2.8.21,2024-08-22,00:15:46 +argo-cd,v2.12.1,2024-08-16,17:16:36 +argo-cd,v2.12.0,2024-08-05,14:02:15 +argo-cd,v2.12.0-rc5,2024-08-02,00:02:42 +argo-cd,v2.11.7,2024-07-24,10:27:18 +argo-cd,v2.10.16,2024-07-24,10:27:30 +argo-cd,v2.9.21,2024-07-24,10:27:35 +argo-cd,v2.11.6,2024-07-22,15:19:04 +argo-cd,v2.10.15,2024-07-22,15:28:11 +argo-cd,v2.9.20,2024-07-22,15:26:01 +argo-cd,v2.12.0-rc4,2024-07-15,18:31:03 +argo-cd,v2.11.5,2024-07-15,18:32:15 +argo-cd,v2.10.14,2024-07-15,18:43:13 +argo-cd,v2.9.19,2024-07-15,19:10:33 +argo-cd,v2.12.0-rc3,2024-07-02,19:11:39 +argo-cd,v2.11.4,2024-07-02,19:52:42 +argo-cd,v2.10.13,2024-07-02,19:16:33 +argo-cd,v2.9.18,2024-07-02,20:06:18 +argo-cd,v2.12.0-rc2,2024-06-24,21:07:03 +argo-cd,v2.12.0-rc1,2024-06-18,13:46:04 +argo-cd,v2.11.3,2024-06-06,09:43:29 +argo-cd,v2.10.12,2024-06-06,09:44:03 +argo-cd,v2.9.17,2024-06-06,09:47:39 +argo-cd,v2.11.2,2024-05-23,14:14:51 +argo-cd,v2.10.11,2024-05-23,14:20:08 +argo-cd,v2.9.16,2024-05-23,14:28:35 +argo-cd,v2.8.20,2024-05-23,14:22:46 +argo-cd,v2.11.1,2024-05-21,15:03:58 +argo-cd,v2.10.10,2024-05-21,15:04:04 +argo-cd,v2.9.15,2024-05-21,15:03:15 +argo-cd,v2.8.19,2024-05-21,15:02:42 +argo-cd,v2.11.0,2024-05-07,16:37:25 +argo-cd,v2.10.9,2024-04-30,16:55:10 +argo-cd,v2.9.14,2024-04-30,17:52:42 +argo-cd,v2.8.18,2024-04-30,18:11:05 +argo-cd,v2.11.0-rc3,2024-04-29,20:34:30 +argo-cd,v2.10.8,2024-04-26,14:04:02 +argo-cd,v2.9.13,2024-04-26,13:54:31 +argo-cd,v2.8.17,2024-04-26,13:32:45 +argo-cd,v2.11.0-rc2,2024-04-15,20:21:25 +argo-cd,v2.10.7,2024-04-15,09:21:23 +argo-cd,v2.9.12,2024-04-15,09:23:39 +argo-cd,v2.8.16,2024-04-15,09:24:55 +argo-cd,v2.11.0-rc1,2024-04-05,12:48:47 +argo-cd,v2.10.6,2024-04-05,01:04:01 +argo-cd,v2.9.11,2024-04-05,00:33:21 +argo-cd,v2.8.15,2024-04-05,00:08:33 +argo-cd,v2.7.18,2024-04-04,23:10:16 +argo-cd,v2.10.5,2024-03-28,16:29:02 +argo-cd,v2.9.10,2024-03-28,17:14:04 +argo-cd,v2.8.14,2024-03-28,17:14:13 +argo-cd,v2.10.4,2024-03-18,08:44:51 +argo-cd,v2.9.9,2024-03-18,08:44:29 +argo-cd,v2.8.13,2024-03-18,08:43:03 +argo-cd,v2.10.3,2024-03-13,19:53:05 +argo-cd,v2.9.8,2024-03-13,19:50:14 +argo-cd,v2.8.12,2024-03-13,19:49:30 +argo-cd,v2.8.11,2024-03-08,15:35:57 +argo-cd,v2.10.2,2024-03-01,22:03:43 +argo-cd,v2.9.7,2024-03-01,23:28:36 +argo-cd,v2.10.1,2024-02-14,18:12:43 +argo-cd,v2.10.0,2024-02-06,15:03:51 +argo-cd,v2.9.6,2024-02-02,19:51:46 +argo-cd,v2.8.10,2024-02-02,19:01:36 +argo-cd,v2.7.17,2024-02-02,19:00:32 +argo-cd,v2.10.0-rc4,2024-01-25,21:50:37 +argo-cd,v2.10.0-rc3,2024-01-19,18:33:17 +argo-cd,v2.9.5,2024-01-19,18:32:02 +argo-cd,v2.8.9,2024-01-19,18:47:44 +argo-cd,v2.8.8,2024-01-19,15:17:36 +argo-cd,v2.7.16,2024-01-19,19:38:49 +argo-cd,v2.10.0-rc2,2024-01-18,21:14:40 +argo-cd,v2.9.4,2024-01-18,21:24:02 +argo-cd,v2.10.0-rc1,2023-12-18,21:20:13 +argo-cd,v2.7.15,2023-12-06,15:59:27 +argo-cd,v2.9.3,2023-12-01,23:39:19 +argo-cd,v2.9.2,2023-11-20,17:52:41 +argo-cd,v2.8.7,2023-11-20,17:52:04 +argo-cd,v2.9.1,2023-11-14,15:55:51 +argo-cd,v2.9.0,2023-11-06,05:27:12 +argo-cd,v2.8.6,2023-11-01,17:29:59 +argo-cd,v2.9.0-rc4,2023-10-31,22:28:01 +argo-cd,v2.8.5,2023-10-31,19:30:03 +argo-cd,v2.9.0-rc3,2023-10-25,19:54:22 +argo-cd,v2.9.0-rc2,2023-10-03,16:24:24 +argo-cd,v2.9.0-rc1,2023-09-27,01:06:19 +argo-cd,v2.8.4,2023-09-13,20:08:07 +argo-cd,v2.8.3,2023-09-07,18:06:07 +argo-cd,v2.7.14,2023-09-07,18:05:20 +argo-cd,v2.6.15,2023-09-07,18:32:42 +argo-cd,v2.5.22,2023-08-25,15:21:48 +argo-cd,v2.8.2,2023-08-24,21:05:33 +argo-cd,v2.7.13,2023-08-24,20:58:11 +argo-cd,v2.6.14,2023-08-24,22:01:58 +argo-cd,v2.8.1,2023-08-22,21:19:28 +argo-cd,v2.7.12,2023-08-23,15:02:27 +argo-cd,v2.8.0,2023-08-07,20:03:46 +argo-cd,v2.7.11,2023-08-07,20:07:16 +argo-cd,v2.8.0-rc7,2023-08-03,16:20:46 +argo-cd,v2.7.10,2023-07-31,22:51:19 +argo-cd,v2.8.0-rc6,2023-07-28,14:47:33 +argo-cd,v2.7.9,2023-07-24,18:50:30 +argo-cd,v2.8.0-rc5,2023-07-19,18:28:18 +argo-cd,v2.7.8,2023-07-19,15:58:13 +argo-cd,v2.6.13,2023-07-19,18:32:25 +argo-cd,v2.5.21,2023-07-19,16:18:16 +argo-cd,v2.8.0-rc4,2023-07-19,01:04:24 +argo-cd,v2.8.0-rc3,2023-07-12,21:02:10 +argo-cd,v2.8.0-rc2,2023-07-05,20:16:20 +argo-cd,v2.7.7,2023-07-05,20:25:54 +argo-cd,v2.6.12,2023-07-05,20:26:58 +argo-cd,v2.5.20,2023-07-05,20:21:44 +argo-cd,v2.8.0-rc1,2023-06-27,14:35:51 +argo-cd,v2.7.6,2023-06-20,21:46:46 +argo-cd,v2.6.11,2023-06-20,21:40:36 +argo-cd,v2.7.5,2023-06-16,15:24:00 +argo-cd,v2.6.10,2023-06-16,15:30:18 +argo-cd,v2.5.19,2023-06-16,15:14:25 +argo-cd,v2.7.4,2023-06-05,19:40:08 +argo-cd,v2.6.9,2023-06-05,20:00:21 +argo-cd,v2.5.18,2023-06-05,19:37:35 +argo-cd,v2.6.8,2023-05-25,16:35:40 +argo-cd,v2.5.17,2023-05-25,16:37:48 +argo-cd,v2.7.3,2023-05-24,16:14:02 +argo-cd,v2.7.2,2023-05-12,14:41:07 +argo-cd,v2.7.1,2023-05-02,17:24:44 +argo-cd,v2.7.0,2023-05-02,00:51:25 +argo-cd,v2.7.0-rc2,2023-04-11,16:29:33 +argo-cd,v2.7.0-rc1,2023-03-27,14:42:25 +argo-cd,v2.6.7,2023-03-23,15:45:09 +argo-cd,v2.5.16,2023-03-23,15:34:49 +argo-cd,v2.4.28,2023-03-23,15:35:38 +argo-cd,v2.6.6,2023-03-16,23:07:31 +argo-cd,v2.5.15,2023-03-16,23:35:35 +argo-cd,v2.4.27,2023-03-16,23:05:14 +argo-cd,v2.6.5,2023-03-14,14:59:49 +argo-cd,v2.5.14,2023-03-14,15:03:12 +argo-cd,v2.4.26,2023-03-14,15:01:43 +argo-cd,v2.6.4,2023-03-07,23:29:08 +argo-cd,v2.5.13,2023-03-07,23:28:04 +argo-cd,v2.4.25,2023-03-07,22:29:10 +argo-cd,v2.6.3,2023-02-27,15:20:04 +argo-cd,v2.5.12,2023-02-27,15:21:29 +argo-cd,v2.4.24,2023-02-27,15:22:21 +argo-cd,v2.6.2,2023-02-16,15:43:42 +argo-cd,v2.5.11,2023-02-16,15:46:31 +argo-cd,v2.4.23,2023-02-16,15:41:44 +argo-cd,v2.3.17,2023-02-16,16:01:23 +argo-cd,v2.6.1,2023-02-08,19:39:04 +argo-cd,v2.6.0,2023-02-06,22:04:33 +argo-cd,v2.6.0-rc7,2023-02-02,16:04:58 +argo-cd,v2.5.10,2023-02-02,15:48:00 +argo-cd,v2.4.22,2023-02-02,16:06:04 +argo-cd,v2.3.16,2023-02-02,16:20:13 +argo-cd,v2.6.0-rc6,2023-01-28,00:07:50 +argo-cd,v2.5.9,2023-01-28,00:04:28 +argo-cd,v2.4.21,2023-01-28,00:07:25 +argo-cd,v2.3.15,2023-01-28,01:20:18 +argo-cd,v2.6.0-rc5,2023-01-25,18:35:37 +argo-cd,v2.5.8,2023-01-25,17:05:03 +argo-cd,v2.4.20,2023-01-25,16:19:24 +argo-cd,v2.3.14,2023-01-25,17:07:36 +argo-cd,v2.6.0-rc4,2023-01-18,03:00:03 +argo-cd,v2.5.7,2023-01-18,03:00:02 +argo-cd,v2.4.19,2023-01-18,02:59:01 +argo-cd,v2.3.13,2023-01-18,04:02:17 +argo-cd,v2.6.0-rc3,2023-01-13,20:36:52 +argo-cd,v2.5.6,2023-01-10,20:14:18 +argo-cd,v2.6.0-rc2,2023-01-05,16:02:06 +argo-cd,v2.6.0-rc1,2022-12-19,17:27:17 +argo-cd,v2.5.5,2022-12-16,16:53:08 +argo-cd,v2.4.18,2022-12-16,16:47:09 +argo-cd,v2.3.12,2022-12-16,17:40:00 +argo-cd,v2.5.4,2022-12-06,20:26:51 +argo-cd,v2.5.3,2022-11-28,17:28:00 +argo-cd,v2.5.2,2022-11-07,17:23:44 +argo-cd,v2.4.17,2022-11-07,17:05:27 +argo-cd,v2.5.1,2022-11-01,21:53:59 +argo-cd,v2.4.16,2022-11-01,22:03:02 +argo-cd,v2.3.11,2022-11-01,22:39:18 +argo-cd,v2.2.16,2022-11-01,20:44:20 +argo-cd,v2.5.0,2022-10-25,15:32:28 +argo-cd,v2.2.15,2022-10-18,22:08:59 +argo-cd,v2.5.0-rc3,2022-10-17,18:39:09 +argo-cd,v2.4.15,2022-10-17,21:17:43 +argo-cd,v2.3.10,2022-10-18,01:09:30 +argo-cd,v2.5.0-rc2,2022-10-11,19:55:49 +argo-cd,v2.5.0-rc1,2022-10-05,18:00:34 +argo-cd,v2.4.14,2022-10-05,17:53:31 +argo-cd,v2.3.9,2022-10-05,18:24:18 +argo-cd,v2.2.14,2022-10-05,17:17:02 +argo-cd,v2.4.13,2022-10-03,21:38:39 +argo-cd,v2.3.8,2022-10-03,22:36:32 +argo-cd,v2.2.13,2022-10-03,21:05:16 +argo-cd,v2.4.12,2022-09-16,01:33:23 +argo-cd,v2.4.11,2022-08-22,09:52:10 +argo-cd,v2.4.10,2022-08-17,21:44:09 +argo-cd,v2.4.9,2022-08-11,15:59:47 +argo-cd,v2.4.8,2022-07-29,17:38:38 +argo-cd,v2.3.7,2022-07-29,16:11:01 +argo-cd,v2.2.12,2022-07-29,14:58:00 +argo-cd,v2.4.7,2022-07-18,21:54:21 +argo-cd,v2.4.6,2022-07-12,23:14:34 +argo-cd,v2.4.5,2022-07-12,17:05:35 +argo-cd,v2.3.6,2022-07-12,17:56:53 +argo-cd,v2.2.11,2022-07-12,16:23:51 +argo-cd,v2.4.4,2022-07-07,07:59:34 +argo-cd,v2.4.3,2022-06-27,21:39:15 +argo-cd,v2.4.2,2022-06-21,21:19:40 +argo-cd,v2.4.1,2022-06-21,17:18:01 +argo-cd,v2.3.5,2022-06-21,18:28:28 +argo-cd,v2.2.10,2022-06-21,16:42:53 +argo-cd,v2.1.16,2022-06-21,16:34:29 +argo-cd,v2.4.0,2022-06-10,17:59:33 +argo-cd,v2.4.0-rc5,2022-06-06,19:57:45 +argo-cd,v2.4.0-rc4,2022-06-01,23:51:49 +argo-cd,v2.4.0-rc3,2022-05-31,20:14:43 +argo-cd,v2.4.0-rc2,2022-05-18,13:20:52 +argo-cd,v2.3.4,2022-05-18,13:14:17 +argo-cd,v2.2.9,2022-05-18,12:11:30 +argo-cd,v2.1.15,2022-05-18,12:48:12 +argo-cd,v2.4.0-rc1,2022-05-06,23:59:23 +argo-cd,v2.3.3,2022-03-30,01:55:37 +argo-cd,v2.3.2,2022-03-23,02:12:12 +argo-cd,v2.2.8,2022-03-23,00:38:55 +argo-cd,v2.1.14,2022-03-23,00:25:37 +argo-cd,v2.3.1,2022-03-11,00:07:41 +argo-cd,v2.2.7,2022-03-09,01:16:04 +argo-cd,v2.1.12,2022-03-09,01:06:39 +argo-cd,v2.3.0,2022-03-06,07:59:28 +argo-cd,v2.2.6,2022-03-06,06:08:26 +argo-cd,v2.1.11,2022-03-06,05:44:19 +argo-cd,v2.2.5,2022-02-05,01:42:13 +argo-cd,v2.1.10,2022-02-05,01:27:00 +argo-cd,v2.3.0-rc5,2022-02-05,00:52:33 +argo-cd,v2.3.0-rc4,2022-02-03,23:22:13 +argo-cd,v2.2.4,2022-02-03,20:50:43 +argo-cd,v2.1.9,2022-02-03,20:38:47 +argo-cd,v2.3.0-rc2,2022-02-02,23:59:42 +argo-cd,v2.3.0-rc1,2022-01-30,23:19:12 +argo-cd,v2.2.3,2022-01-18,18:03:37 +argo-cd,v2.2.2,2022-01-01,06:38:42 +argo-cd,v2.2.1,2021-12-17,01:41:25 +argo-cd,v2.2.0,2021-12-14,18:19:23 +argo-cd,v2.1.8,2021-12-13,23:26:15 +argo-cd,v2.1.7,2021-11-17,22:18:58 +argo-cd,v2.2.0-rc1,2021-11-12,16:44:39 +argo-cd,v2.1.6,2021-10-28,20:08:23 +argo-cd,v2.1.5,2021-10-20,15:25:12 +argo-cd,v2.1.4,2021-10-20,00:47:38 +argo-cd,v2.1.3,2021-09-29,21:59:28 +argo-cd,v2.1.2,2021-09-02,18:13:57 +argo-cd,v2.1.1,2021-08-25,15:20:05 +argo-cd,v2.1.0,2021-08-20,05:40:42 +argo-cd,v2.1.0-rc3,2021-08-11,19:54:48 +argo-cd,v2.1.0-rc2,2021-08-03,17:17:22 +argo-cd,v2.1.0-rc1,2021-07-28,22:39:33 +argo-cd,v2.0.5,2021-07-22,21:00:58 +argo-cd,v2.0.4,2021-06-23,01:36:22 +argo-cd,v2.0.3,2021-05-27,17:47:33 +argo-cd,v2.0.2,2021-05-20,19:38:10 +argo-cd,v2.0.1,2021-04-15,22:40:37 +argo-cd,v2.0.0,2021-04-07,06:07:51 +argo-cd,v2.0.0-rc4,2021-04-05,23:22:38 +argo-cd,v2.0.0-rc3,2021-04-02,17:59:51 +argo-cd,v2.0.0-rc2,2021-03-29,21:39:06 +argo-cd,v2.0.0-rc1,2021-03-19,21:37:41 +argo-cd,v1.8.7,2021-03-03,07:20:14 +argo-cd,v1.7.14,2021-03-03,18:45:51 +argo-cd,v1.8.6,2021-02-26,21:29:08 +argo-cd,v1.7.13,2021-02-26,17:29:32 +argo-cd,v1.8.5,2021-02-20,05:47:09 +argo-cd,v1.8.4,2021-02-05,18:02:18 +argo-cd,v1.7.12,2021-02-05,20:29:49 +argo-cd,v1.8.3,2021-01-21,22:26:34 +argo-cd,v1.8.2,2021-01-10,05:47:08 +argo-cd,v1.8.1,2020-12-10,03:05:37 +argo-cd,v1.7.11,2020-12-10,02:47:15 +argo-cd,v1.8.0,2020-12-09,18:35:24 +argo-cd,v1.8.0-rc2,2020-12-03,05:15:48 +argo-cd,v1.8.0-rc1,2020-11-25,18:21:18 +argo-cd,v1.7.10,2020-11-20,19:57:30 +argo-cd,v1.7.9,2020-11-17,23:26:31 +argo-cd,v1.7.8,2020-10-15,22:39:54 +argo-cd,v1.7.7,2020-09-29,05:02:51 +argo-cd,v1.7.6,2020-09-19,00:58:10 +argo-cd,v1.7.5,2020-09-15,23:10:12 +argo-cd,v1.7.4,2020-09-05,02:51:36 +argo-cd,v1.7.3,2020-09-01,23:25:39 +argo-cd,v1.7.2,2020-08-27,23:40:37 +argo-cd,v1.7.1,2020-08-26,21:17:44 +argo-cd,v1.7.0,2020-08-25,19:05:00 +argo-cd,v1.7.0-rc1,2020-08-15,19:37:04 +argo-cd,v1.6.2,2020-07-31,23:51:10 +argo-cd,v1.6.1,2020-06-19,00:47:03 +argo-cd,v1.6.0,2020-06-16,22:46:48 +argo-cd,v1.5.8,2020-06-16,20:05:59 +argo-cd,v1.6.0-rc2,2020-06-09,22:29:03 +argo-cd,v1.5.7,2020-06-09,18:46:23 +argo-cd,v1.6.0-rc1,2020-06-03,04:11:50 +argo-cd,v1.5.6,2020-06-02,19:13:17 +argo-cd,v1.5.5,2020-05-16,15:22:14 +argo-cd,v1.5.4,2020-05-05,19:25:30 +argo-cd,v1.5.3,2020-05-02,04:58:47 +argo-cd,v1.5.2,2020-04-15,19:05:41 +argo-cd,v1.4.3,2020-04-15,19:09:30 +argo-cd,v1.5.1,2020-04-06,16:35:44 +argo-cd,v1.5.0,2020-04-02,18:49:53 +argo-cd,v1.5.0-rc3,2020-03-30,22:42:52 +argo-cd,v1.5.0-rc2,2020-03-26,06:12:25 +argo-cd,v1.5.0-rc1,2020-03-20,23:02:28 +argo-cd,v1.4.2,2020-01-24,01:18:02 +argo-cd,v1.4.1,2020-01-22,23:10:57 +argo-cd,v1.4.0,2020-01-18,06:12:51 +argo-cd,v1.4.0-rc1,2020-01-13,20:48:09 +argo-cd,v1.3.6,2019-12-10,22:54:07 +argo-cd,v1.3.5,2019-12-09,21:25:22 +argo-cd,v1.3.4,2019-12-05,23:31:46 +argo-cd,v1.3.3,2019-12-05,22:55:32 +argo-cd,v1.3.2,2019-12-03,21:40:15 +argo-cd,v1.3.1,2019-12-02,22:35:57 +argo-cd,v1.3.0,2019-11-13,02:17:35 +argo-cd,v1.3.0-rc5,2019-11-11,21:34:47 +argo-cd,v1.3.0-rc4,2019-11-04,06:53:16 +argo-cd,v1.3.0-rc3,2019-10-29,20:19:18 +argo-cd,v1.2.5,2019-10-29,00:14:59 +argo-cd,v1.3.0-rc2,2019-10-23,01:36:08 +argo-cd,v1.2.4,2019-10-23,20:11:59 +argo-cd,v1.3.0-rc1,2019-10-16,21:46:33 +argo-cd,v1.2.3,2019-10-01,21:10:16 +argo-cd,v1.2.2,2019-09-24,19:34:55 +argo-cd,v1.2.1,2019-09-12,17:31:17 +argo-cd,v1.2.0,2019-09-04,21:39:00 +argo-cd,v1.2.0-rc2,2019-08-21,16:04:14 +argo-cd,v1.2.0-rc1,2019-08-06,20:26:20 +argo-cd,v1.1.2,2019-07-30,18:02:46 +argo-cd,v1.1.1,2019-07-24,17:44:23 +argo-cd,v1.1.0,2019-07-24,17:22:37 +argo-cd,v1.1.0-rc8,2019-07-19,22:33:59 +argo-cd,v1.1.0-rc7,2019-07-17,23:30:42 +argo-cd,v1.1.0-rc6,2019-07-16,16:43:32 +argo-cd,v1.1.0-rc5,2019-07-09,21:43:03 +argo-cd,v1.1.0-rc4,2019-07-03,21:23:36 +argo-cd,v1.1.0-rc3,2019-06-28,21:09:41 +argo-cd,v1.1.0-rc2,2019-06-21,23:41:40 +argo-cd,v1.1.0-rc1,2019-06-14,18:42:47 +argo-cd,v1.0.2,2019-06-14,17:23:08 +argo-cd,v1.0.1,2019-05-28,17:32:09 +argo-cd,v1.0.0,2019-05-16,22:13:10 +argo-cd,v1.0.0-rc3,2019-05-09,17:28:45 +argo-cd,v1.0.0-rc2,2019-04-30,21:30:50 +argo-cd,v0.12.3,2019-04-30,06:17:03 +argo-cd,v1.0.0-rc1,2019-04-24,18:21:02 +argo-cd,v0.12.2,2019-04-22,21:50:44 +argo-cd,v0.12.1,2019-04-09,21:28:28 +argo-cd,v0.12.0,2019-03-23,01:35:42 +argo-cd,v0.12.0-rc6,2019-03-20,22:50:14 +argo-cd,v0.12.0-rc5,2019-03-19,08:07:36 +argo-cd,v0.12.0-rc4,2019-03-12,21:55:07 +argo-cd,v0.12.0-rc3,2019-03-07,02:51:44 +argo-cd,v0.12.0-rc2,2019-03-06,11:20:06 +argo-cd,v0.12.0-rc1,2019-03-06,03:04:20 +argo-cd,v0.11.2,2019-02-19,18:00:25 +argo-cd,v0.11.1,2019-01-18,21:14:24 +argo-cd,v0.11.0,2019-01-11,02:13:53 +argo-cd,v0.11.0-rc6,2019-01-10,00:42:34 +argo-cd,v0.11.0-rc5,2019-01-09,00:13:56 +argo-cd,v0.11.0-rc4,2019-01-04,21:48:23 +argo-cd,v0.11.0-rc3,2019-01-03,23:58:08 +argo-cd,v0.11.0-rc2,2018-12-28,01:33:08 +argo-cd,v0.11.0-rc1,2018-12-10,17:50:56 +argo-cd,v0.10.6,2018-11-15,03:01:53 +argo-cd,v0.10.5,2018-11-14,02:40:13 +argo-cd,v0.10.4,2018-11-08,02:06:57 +argo-cd,v0.10.3,2018-10-29,07:03:10 +argo-cd,v0.10.2,2018-10-25,20:12:36 +argo-cd,v0.10.1,2018-10-24,20:28:59 +argo-cd,v0.10.0,2018-10-19,22:01:34 +argo-cd,v0.9.2,2018-09-28,16:59:16 +argo-cd,v0.9.1,2018-09-24,21:46:35 +argo-cd,v0.9.0,2018-09-24,20:41:50 +argo-cd,v0.8.2,2018-09-12,08:55:44 +argo-cd,v0.8.1,2018-09-11,01:34:30 +argo-cd,v0.8.0,2018-09-05,01:10:25 +argo-cd,v0.7.2,2018-08-21,08:22:07 +argo-cd,v0.7.1,2018-08-03,20:45:14 +argo-cd,v0.7.0,2018-07-28,01:30:19 +argo-cd,v0.6.2,2018-07-24,10:04:03 +argo-cd,v0.6.1,2018-07-18,07:44:11 +argo-cd,v0.6.0,2018-07-17,09:42:25 +argo-cd,v0.5.4,2018-06-27,23:25:33 +argo-cd,v0.5.3,2018-06-21,00:09:10 +argo-cd,v0.5.2,2018-06-14,20:19:39 +argo-cd,v0.5.1,2018-06-13,21:46:40 +argo-cd,v0.5.0,2018-06-12,20:39:05 +argo-cd,v0.4.7,2018-06-07,18:37:20 +argo-cd,v0.4.6,2018-06-06,18:12:48 +argo-cd,v0.4.5,2018-05-31,10:29:26 +argo-cd,v0.4.4,2018-05-30,23:40:52 +argo-cd,v0.4.3,2018-05-21,22:38:11 +argo-cd,v0.4.2,2018-05-21,08:25:50 +argo-cd,v0.4.1,2018-05-18,20:40:11 +argo-cd,v0.4.0,2018-05-17,09:55:08 +argo-cd,v0.4.0-alpha1,2018-05-11,23:59:31 +argo-cd,v0.3.2,2018-05-03,18:25:30 +argo-cd,v0.3.1,2018-04-24,23:32:12 +argo-cd,v0.3.0,2018-04-23,08:29:14 +argo-cd,v0.2.0,2018-04-03,18:19:24 +argo-cd,v0.1.0,2018-03-13,00:38:20 +argo-workflows,v3.6.2,2024-12-02,14:12:44 +argo-workflows,v3.5.13,2024-12-02,13:09:39 +argo-workflows,v3.6.0,2024-11-14,19:02:01 +argo-workflows,v3.6.0-rc4,2024-10-31,11:56:16 +argo-workflows,v3.5.12,2024-10-30,11:49:27 +argo-workflows,v3.6.0-rc3,2024-10-24,10:51:47 +argo-workflows,v3.4.18,2024-12-16,09:03:37 +argo-workflows,v3.6.0-rc2,2024-10-03,07:48:59 +argo-workflows,v3.5.11,2024-09-20,14:08:00 +argo-workflows,v3.6.0-rc1,2024-09-18,10:03:03 +argo-workflows,v3.5.10,2024-08-01,06:03:16 +argo-workflows,v3.5.9,2024-07-30,06:58:49 +argo-workflows,v3.5.8,2024-06-18,04:52:31 +argo-workflows,v3.5.7,2024-05-27,07:13:30 +argo-workflows,v3.4.17,2024-05-13,02:47:39 +argo-workflows,v3.5.6,2024-04-19,21:43:07 +argo-workflows,v3.5.5,2024-02-29,21:47:50 +argo-workflows,v3.5.4,2024-01-14,06:19:09 +argo-workflows,v3.4.16,2024-01-14,06:17:57 +argo-workflows,v3.4.15,2024-01-13,23:29:40 +argo-workflows,v3.5.3,2024-01-11,03:12:46 +argo-workflows,v3.5.2,2023-11-27,19:16:42 +argo-workflows,v3.4.14,2023-11-27,18:56:22 +argo-workflows,v3.5.1,2023-11-03,19:57:45 +argo-workflows,v3.4.13,2023-11-03,21:07:31 +argo-workflows,v3.4.12,2023-10-20,13:00:24 +argo-workflows,v3.5.0,2023-10-13,15:00:44 +argo-workflows,v3.5.0-rc2,2023-09-20,19:20:10 +argo-workflows,v3.4.11,2023-09-08,01:14:16 +argo-workflows,v3.5.0-rc1,2023-08-15,20:01:35 +argo-workflows,v3.4.10,2023-08-15,18:59:38 +argo-workflows,v3.4.9,2023-07-20,15:28:41 +argo-workflows,v3.4.8,2023-05-25,23:37:40 +argo-workflows,v3.4.7,2023-04-11,17:26:32 +argo-workflows,v3.4.6,2023-03-31,20:16:18 +argo-workflows,v3.4.5,2023-02-07,13:26:29 +argo-workflows,v3.4.4,2022-11-29,21:15:21 +argo-workflows,v3.3.10,2022-11-29,21:24:54 +argo-workflows,v3.4.3,2022-10-31,09:17:41 +argo-workflows,v3.4.2,2022-10-23,07:36:55 +argo-workflows,v3.4.1,2022-10-01,16:09:34 +argo-workflows,v3.4.0,2022-09-19,05:23:46 +argo-workflows,v3.4.0-rc4,2022-09-10,19:34:15 +argo-workflows,v3.4.0-rc3,2022-09-01,01:28:29 +argo-workflows,v3.4.0-rc2,2022-08-19,14:51:26 +argo-workflows,v3.4.0-rc1,2022-08-10,07:13:17 +argo-workflows,v3.3.9,2022-08-10,01:08:09 +argo-workflows,v3.3.8,2022-06-24,01:18:03 +argo-workflows,v3.3.7,2022-06-21,00:41:49 +argo-workflows,v3.3.6,2022-05-26,01:22:39 +argo-workflows,v3.3.5,2022-05-04,01:13:34 +argo-workflows,v3.2.11,2022-05-03,22:59:55 +argo-workflows,v3.3.4,2022-04-29,19:54:39 +argo-workflows,v3.3.3,2022-04-25,23:19:39 +argo-workflows,v3.3.2,2022-04-20,23:16:10 +argo-workflows,v3.3.1,2022-03-18,19:45:27 +argo-workflows,v3.3.0,2022-03-14,23:06:47 +argo-workflows,v3.3.0-rc10,2022-03-07,23:50:34 +argo-workflows,v3.3.0-rc9,2022-03-05,19:01:28 +argo-workflows,v3.2.9,2022-03-02,23:04:35 +argo-workflows,v3.3.0-rc8,2022-03-01,02:52:15 +argo-workflows,v3.3.0-rc7,2022-02-25,21:14:31 +argo-workflows,v3.3.0-rc6,2022-02-21,20:27:19 +argo-workflows,v3.3.0-rc5,2022-02-21,20:07:56 +argo-workflows,v3.3.0-rc4,2022-02-08,20:05:39 +argo-workflows,v3.2.8,2022-02-04,20:19:52 +argo-workflows,v3.3.0-rc3,2022-02-03,20:31:05 +argo-workflows,v0.0.0-dev-bom-1,2022-02-02,21:21:47 +argo-workflows,v3.3.0-rc2,2022-01-30,01:45:04 +argo-workflows,v3.3.0-rc1,2022-01-29,01:08:13 +argo-workflows,v3.2.7,2022-01-28,02:28:31 +argo-workflows,v3.2.6,2021-12-17,21:12:28 +argo-workflows,v3.2.5,2021-12-16,00:34:48 +argo-workflows,v0.0.0-dev-kc-7,2021-11-19,01:36:27 +argo-workflows,v3.2.4,2021-11-18,00:41:27 +argo-workflows,v3.1.15,2021-11-17,18:46:01 +argo-workflows,v0.0.0-dev-kc-6,2021-11-18,00:10:06 +argo-workflows,v0.0.0-dev-kc-5,2021-11-16,20:03:24 +argo-workflows,v0.0.0-dev-kc-4,2021-11-16,18:38:30 +argo-workflows,v0.0.0-dev-kc-3,2021-11-15,21:54:04 +argo-workflows,v0.0.0-dev-kc-2,2021-11-15,21:36:23 +argo-workflows,v0.0.0-dev-kc-1,2021-11-09,21:24:30 +argo-workflows,v0.0.0-dev-kc-0,2021-11-09,17:10:14 +argo-workflows,v3.2.3,2021-10-27,02:22:57 +argo-workflows,v3.2.2,2021-10-21,18:24:56 +argo-workflows,v3.1.14,2021-10-20,02:52:43 +argo-workflows,v3.2.1,2021-10-19,22:11:39 +argo-workflows,v3.2.0,2021-10-12,16:28:36 +argo-workflows,v3.2.0-rc6,2021-10-06,02:26:30 +argo-workflows,v3.2.0-rc5,2021-09-29,18:09:20 +argo-workflows,v3.1.13,2021-09-28,20:07:21 +argo-workflows,v3.2.0-rc4,2021-09-21,21:03:56 +argo-workflows,v3.1.12,2021-09-16,14:12:07 +argo-workflows,v3.2.0-rc3,2021-09-14,19:40:01 +argo-workflows,v3.1.11,2021-09-14,07:41:28 +argo-workflows,v3.1.10,2021-09-10,18:58:55 +argo-workflows,v3.1.9,2021-09-03,22:39:13 +argo-workflows,v3.2.0-rc2,2021-09-01,23:45:48 +argo-workflows,v0.0.0-dev-mc-4,2021-08-31,18:10:35 +argo-workflows,v0.0.0-dev-mc-3,2021-08-30,17:45:10 +argo-workflows,v0.0.0-dev-mc-2,2021-08-30,17:40:57 +argo-workflows,v0.0.0-dev-mc-1,2021-08-30,00:26:16 +argo-workflows,v0.0.0-dev-mc-0,2021-08-28,02:06:29 +argo-workflows,v3.2.0-rc1,2021-08-20,02:49:34 +argo-workflows,v3.1.8,2021-08-19,00:19:56 +argo-workflows,v3.1.7,2021-08-18,18:21:43 +argo-workflows,v3.0.10,2021-08-18,23:53:38 +argo-workflows,v3.0.9,2021-08-18,17:03:34 +argo-workflows,v2.12.13,2021-08-18,23:42:45 +argo-workflows,v2.12.12,2021-08-18,17:57:06 +argo-workflows,v3.1.6,2021-08-13,00:39:51 +argo-workflows,v0.0.0-dev-dataflow-41,2021-08-11,04:28:21 +argo-workflows,v3.1.5,2021-08-04,07:14:30 +argo-workflows,v0.0.0-dev-dataflow-40,2021-08-04,02:06:40 +argo-workflows,v3.1.4,2021-08-04,01:06:06 +argo-workflows,v0.0.0-dev-dataflow-39,2021-07-30,20:53:39 +argo-workflows,v3.1.3,2021-07-28,05:38:36 +argo-workflows,v0.0.0-dev-dataflow-37,2021-07-23,23:23:18 +argo-workflows,v0.0.0-dev-dataflow-36,2021-07-22,01:29:29 +argo-workflows,v0.0.0-dev-dataflow-34,2021-07-20,18:17:04 +argo-workflows,v0.0.0-dev-dataflow-33,2021-07-16,23:18:16 +argo-workflows,v3.1.2,2021-07-15,22:04:54 +argo-workflows,v0.0.0-dev-dataflow-31,2021-07-14,16:55:52 +argo-workflows,v0.0.0-dev-dataflow-30,2021-07-12,18:40:24 +argo-workflows,v3.1.1,2021-06-28,21:31:33 +argo-workflows,v0.0.0-dev-dataflow-29,2021-06-28,18:51:44 +argo-workflows,v0.0.0-dev-dataflow-28,2021-06-25,03:44:24 +argo-workflows,v3.1.0,2021-06-21,23:35:00 +argo-workflows,v3.0.8,2021-06-21,23:52:48 +argo-workflows,v0.0.0-dev-dataflow-27,2021-06-21,23:00:03 +argo-workflows,v0.0.0-dev-dataflow-26,2021-06-16,00:01:26 +argo-workflows,v0.0.0-dev-dataflow-25,2021-06-16,00:01:43 +argo-workflows,v3.1.0-rc14,2021-06-10,19:18:50 +argo-workflows,v0.0.0-dev-dataflow-24,2021-06-10,17:34:10 +argo-workflows,v0.0.0-dev-dataflow-23,2021-06-10,02:31:42 +argo-workflows,v3.1.0-rc13,2021-06-08,16:45:35 +argo-workflows,v0.0.0-dev-dataflow-22,2021-06-09,20:38:24 +argo-workflows,v0.0.0-dev-dataflow-20,2021-06-08,02:42:49 +argo-workflows,v0.0.0-dev-dataflow-19,2021-06-06,20:41:36 +argo-workflows,v0.0.0-dev-docker-0,2021-06-06,19:00:54 +argo-workflows,v0.0.0-dev-dataflow-18,2021-06-05,00:59:50 +argo-workflows,v0.0.0-dev-dataflow-17,2021-06-04,01:23:11 +argo-workflows,v0.0.0-dev-dataflow-16,2021-06-04,01:03:00 +argo-workflows,v3.1.0-rc12,2021-06-03,01:40:44 +argo-workflows,v3.1.0-rc11,2021-06-01,19:02:58 +argo-workflows,v0.0.0-dev-dataflow-15,2021-06-01,22:31:59 +argo-workflows,v0.0.0-dev-dataflow-14,2021-06-01,20:34:22 +argo-workflows,v0.0.0-dev-dataflow-13,2021-06-01,19:06:07 +argo-workflows,v3.1.0-rc10,2021-05-28,00:00:15 +argo-workflows,v0.0.0-dev-dataflow-11,2021-05-27,02:01:59 +argo-workflows,v3.1.0-rc8,2021-05-25,18:06:14 +argo-workflows,v3.0.7,2021-05-25,19:08:55 +argo-workflows,v0.0.0-dev-dataflow-10,2021-05-25,18:22:42 +argo-workflows,v3.1.0-rc7,2021-05-24,20:15:18 +argo-workflows,v3.0.6,2021-05-24,22:03:27 +argo-workflows,v3.0.5,2021-05-24,20:16:47 +argo-workflows,v3.1.0-rc6,2021-05-21,16:46:01 +argo-workflows,v0.0.0-dev-dataflow-9,2021-05-21,20:56:00 +argo-workflows,v0.0.0-dev-dataflow-8,2021-05-21,06:32:47 +argo-workflows,v0.0.0-dev-dataflow-7,2021-05-21,03:02:41 +argo-workflows,v0.0.0-dev-dataflow-6,2021-05-20,23:34:42 +argo-workflows,v0.0.0-dev-dataflow-5,2021-05-19,23:23:04 +argo-workflows,v0.0.0-dev-dataflow-4,2021-05-19,00:02:40 +argo-workflows,v3.1.0-rc5,2021-05-17,22:42:30 +argo-workflows,v3.1.0-rc4,2021-05-14,21:20:57 +argo-workflows,v3.0.4,2021-05-14,06:52:02 +argo-workflows,v3.1.0-rc3,2021-05-13,21:46:01 +argo-workflows,v3.1.0-rc2,2021-05-13,00:17:44 +argo-workflows,v3.1.0-rc1,2021-05-12,21:19:04 +argo-workflows,v3.0.3,2021-05-11,22:31:06 +argo-workflows,v3.0.2,2021-04-20,15:37:15 +argo-workflows,v2.12.11,2021-04-06,18:10:38 +argo-workflows,v3.0.1,2021-04-01,19:52:20 +argo-workflows,v3.0.0,2021-03-30,20:25:33 +argo-workflows,v3.0.0-rc9,2021-03-23,19:04:46 +argo-workflows,v3.0.0-rc8,2021-03-17,19:30:33 +argo-workflows,v3.0.0-rc7,2021-03-16,23:25:22 +argo-workflows,v3.0.0-rc6,2021-03-10,01:08:31 +argo-workflows,v3.0.0-rc5,2021-03-09,19:50:05 +argo-workflows,v2.12.10,2021-03-08,22:57:52 +argo-workflows,v3.0.0-rc4,2021-03-02,22:26:56 +argo-workflows,v3.0.0-rc3,2021-02-23,21:38:38 +argo-workflows,v3.0.0-rc2,2021-02-16,18:09:12 +argo-workflows,v2.12.9,2021-02-17,01:28:49 +argo-workflows,v3.0.0-rc1,2021-02-09,00:36:27 +argo-workflows,v2.12.8,2021-02-09,00:36:17 +argo-workflows,v2.12.7,2021-02-01,22:21:36 +argo-workflows,v2.12.6,2021-01-25,20:24:13 +argo-workflows,v2.12.5,2021-01-19,22:49:21 +argo-workflows,v2.12.4,2021-01-12,20:53:35 +argo-workflows,v2.12.3,2021-01-05,02:00:00 +argo-workflows,v2.12.2,2020-12-18,18:17:19 +argo-workflows,v2.12.1,2020-12-18,01:11:16 +argo-workflows,v2.12.0,2020-12-17,19:35:41 +argo-workflows,v2.12.0-rc6,2020-12-15,19:00:45 +argo-workflows,v2.12.0-rc5,2020-12-10,13:50:01 +argo-workflows,v2.12.0-rc4,2020-12-03,00:55:16 +argo-workflows,v2.12.0-rc3,2020-11-23,13:35:50 +argo-workflows,v2.11.8,2020-11-21,16:36:24 +argo-workflows,v2.12.0-rc2,2020-11-12,16:23:14 +argo-workflows,v2.12.0-rc1,2020-11-06,19:14:19 +argo-workflows,v2.11.7,2020-11-02,21:50:13 +argo-workflows,v2.11.6,2020-10-19,20:51:22 +argo-workflows,v2.11.5,2020-10-15,23:14:34 +argo-workflows,v2.11.4,2020-10-14,22:30:23 +argo-workflows,v2.11.3,2020-10-07,23:20:10 +argo-workflows,v2.11.2,2020-10-06,00:19:46 +argo-workflows,v2.11.1,2020-09-29,17:55:55 +argo-workflows,v2.11.0,2020-09-17,23:09:05 +argo-workflows,v2.11.0-rc3,2020-09-15,16:50:33 +argo-workflows,v2.10.2,2020-09-14,17:45:20 +argo-workflows,v2.11.0-rc2,2020-09-09,17:43:25 +argo-workflows,v2.10.1,2020-09-03,00:02:01 +argo-workflows,v2.11.0-rc1,2020-09-01,20:17:41 +argo-workflows,v2.10.0,2020-08-18,23:15:58 +argo-workflows,v2.10.0-rc7,2020-08-14,15:48:45 +argo-workflows,v2.10.0-rc6,2020-08-06,23:31:38 +argo-workflows,v2.9.5,2020-08-06,22:45:49 +argo-workflows,v2.10.0-rc5,2020-08-03,23:21:27 +argo-workflows,v2.10.0-rc4,2020-07-29,00:15:54 +argo-workflows,v2.9.4,2020-07-24,21:59:33 +argo-workflows,v2.10.0-rc3,2020-07-23,23:04:45 +argo-workflows,v2.10.0-rc1,2020-07-17,20:10:06 +argo-workflows,v2.9.3,2020-07-15,01:33:15 +argo-workflows,v2.9.2,2020-07-09,00:21:41 +argo-workflows,v2.9.1,2020-07-03,15:28:51 +argo-workflows,v2.9.0,2020-07-02,01:43:01 +argo-workflows,v2.9.0-rc4,2020-06-26,23:05:54 +argo-workflows,v2.9.0-rc3,2020-06-23,19:15:20 +argo-workflows,v2.8.2,2020-06-22,22:28:02 +argo-workflows,v2.9.0-rc2,2020-06-17,04:36:44 +argo-workflows,v2.9.0-rc1,2020-06-11,00:19:33 +argo-workflows,v2.8.1,2020-05-29,00:31:04 +argo-workflows,v2.8.0,2020-05-11,23:50:27 +argo-workflows,v2.8.0-rc4,2020-05-06,23:58:00 +argo-workflows,v2.7.7,2020-05-06,23:32:46 +argo-workflows,v2.8.0-rc3,2020-04-28,16:46:57 +argo-workflows,v2.7.6,2020-04-28,17:31:48 +argo-workflows,v2.8.0-rc2,2020-04-23,23:29:50 +argo-workflows,v2.8.0-rc1,2020-04-21,15:36:43 +argo-workflows,v2.7.5,2020-04-21,01:35:36 +argo-workflows,v2.7.4,2020-04-16,18:20:58 +argo-workflows,v2.6.4,2020-04-16,03:02:24 +argo-workflows,v2.7.3,2020-04-16,02:03:38 +argo-workflows,v2.7.2,2020-04-10,20:29:17 +argo-workflows,v2.7.1,2020-04-07,17:16:19 +argo-workflows,v2.7.0,2020-04-01,03:13:14 +argo-workflows,v2.7.0-rc4,2020-03-30,22:13:50 +argo-workflows,v2.7.0-rc3,2020-03-25,20:18:44 +argo-workflows,v2.7.0-rc2,2020-03-23,18:38:05 +argo-workflows,v2.7.0-rc1,2020-03-19,02:11:45 +argo-workflows,v2.6.3,2020-03-16,18:24:24 +argo-workflows,v2.6.2,2020-03-12,16:23:45 +argo-workflows,v2.6.1,2020-03-04,21:33:38 +argo-workflows,v2.6.0,2020-02-28,23:39:10 +argo-workflows,v2.6.0-rc3,2020-02-25,17:32:04 +argo-workflows,v2.5.2,2020-02-24,23:10:36 +argo-workflows,v2.6.0-rc2,2020-02-22,00:36:29 +argo-workflows,v2.5.1,2020-02-20,18:30:07 +argo-workflows,v2.6.0-rc1,2020-02-19,18:48:23 +argo-workflows,v2.5.0,2020-02-19,02:54:07 +argo-workflows,v2.5.0-rc12,2020-02-14,00:08:36 +argo-workflows,v2.5.0-rc11,2020-02-11,22:25:57 +argo-workflows,v2.5.0-rc10,2020-02-08,00:23:39 +argo-workflows,v2.5.0-rc9,2020-02-07,00:40:24 +argo-workflows,v2.5.0-rc8,2020-02-04,01:25:11 +argo-workflows,v2.5.0-rc7,2020-01-31,22:43:09 +argo-workflows,v2.5.0-rc6,2020-01-30,22:14:51 +argo-workflows,v2.5.0-rc5,2020-01-30,03:13:49 +argo-workflows,v2.5.0-rc4,2020-01-27,21:08:05 +argo-workflows,v2.5.0-rc3,2020-01-27,19:37:31 +argo-workflows,v2.5.0-rc2,2020-01-24,21:43:45 +argo-workflows,v2.5.0-rc1,2020-01-24,20:59:49 +argo-workflows,v2.4.3,2019-12-06,05:53:42 +argo-workflows,v2.4.2,2019-10-21,19:06:52 +argo-workflows,v2.4.1,2019-10-09,00:01:23 +argo-workflows,v2.4.0,2019-10-07,20:35:32 +argo-workflows,v2.4.0-rc1,2019-08-08,22:12:22 +argo-workflows,v2.3.0,2019-05-20,22:34:35 +argo-workflows,v2.3.0-rc3,2019-05-08,00:11:00 +argo-workflows,v2.3.0-rc2,2019-04-21,08:32:04 +argo-workflows,v2.3.0-rc1,2019-04-10,16:08:39 +argo-workflows,v2.2.1,2018-10-11,16:44:01 +argo-workflows,v2.2.0,2018-08-30,09:00:24 +argo-workflows,v2.1.1,2018-05-29,20:52:07 +argo-workflows,v2.1.0,2018-05-01,20:33:03 +argo-workflows,v2.1.0-beta2,2018-03-29,20:55:26 +argo-workflows,v2.1.0-beta1,2018-03-29,15:35:56 +argo-workflows,v2.1.0-alpha1,2018-02-21,22:54:53 +argo-workflows,v2.0.0,2018-02-06,21:55:25 +argo-workflows,v2.0.0-beta1,2018-01-18,22:58:14 +argo-workflows,v2.0.0-alpha3,2018-01-02,21:32:11 +argo-workflows,v2.0.0-alpha2,2017-12-05,05:13:12 +argo-workflows,v2.0.0-alpha1,2017-11-16,22:10:07 +argo-events,v1.9.5,2025-01-10,18:11:20 +argo-events,v1.9.4,2025-01-08,07:48:18 +argo-events,v1.9.3,2024-11-27,06:51:10 +argo-events,v1.9.2,2024-06-14,00:38:39 +argo-events,v1.9.1,2024-02-13,21:21:44 +argo-events,v1.9.0,2024-01-09,08:31:10 +argo-events,v1.8.1,2023-08-31,23:49:47 +argo-events,v1.8.0,2023-05-08,05:54:59 +argo-events,v1.7.6,2023-02-10,07:30:54 +argo-events,v1.7.5,2023-01-23,08:23:36 +argo-events,v1.7.4,2022-12-12,07:45:11 +argo-events,v1.7.3,2022-09-28,22:10:34 +argo-events,v1.7.2,2022-09-12,23:46:11 +argo-events,v1.7.1,2022-06-09,06:27:31 +argo-events,v1.7.0,2022-05-04,22:47:01 +argo-events,v1.7.0-rc1,2022-04-23,07:22:52 +argo-events,v1.6.3,2022-03-03,20:56:12 +argo-events,v1.6.2,2022-03-02,05:39:57 +argo-events,v1.6.1,2022-02-27,08:51:59 +argo-events,v1.6.0,2022-02-13,06:42:27 +argo-events,v1.5.6,2022-01-12,05:18:08 +argo-events,v1.5.5,2021-12-19,03:32:55 +argo-events,v1.5.4,2021-12-10,08:49:46 +argo-events,v1.5.3,2021-11-22,18:36:36 +argo-events,v1.5.2,2021-11-09,20:01:58 +argo-events,v1.5.1,2021-11-08,07:35:38 +argo-events,v1.5.0,2021-10-12,18:48:33 +argo-events,v1.4.3,2021-09-30,15:49:41 +argo-events,v1.4.2,2021-09-21,18:29:51 +argo-events,v1.4.1,2021-09-01,00:37:05 +argo-events,v1.4.0,2021-07-12,16:33:29 +argo-events,v1.3.1,2021-05-04,17:40:52 +argo-events,v1.3.0,2021-04-12,18:14:51 +argo-events,v1.3.0-rc4,2021-04-08,06:37:06 +argo-events,v1.3.0-rc3,2021-04-05,20:42:52 +argo-events,v1.3.0-rc2,2021-03-31,21:34:56 +argo-events,v1.3.0-rc1,2021-03-23,18:05:01 +argo-events,v1.2.3,2021-02-18,17:52:54 +argo-events,v1.2.2,2021-01-27,17:40:28 +argo-events,v1.2.1,2021-01-26,08:22:50 +argo-events,v1.2.0,2021-01-08,08:30:04 +argo-events,v1.1.0,2020-11-16,20:07:55 +argo-events,v1.1.0-rc1,2020-11-05,06:36:21 +argo-events,v1.0.0,2020-09-04,20:57:04 +argo-events,v1.0.0-rc3,2020-08-26,04:36:48 +argo-events,v1.0.0-rc2,2020-08-16,21:20:09 +argo-events,v1.0.0-rc1,2020-08-10,18:25:28 +argo-events,v0.17.0,2020-07-24,12:40:33 +argo-events,v0.16.0,2020-06-14,23:52:44 +argo-events,v0.15.0,2020-05-08,13:42:18 +argo-events,v0.14.0,2020-04-12,23:34:58 +argo-events,v0.13.0,2020-03-21,01:21:15 +argo-events,v0.13.0-rc,2020-02-26,01:33:31 +argo-events,v0.12,2020-01-17,04:51:55 +argo-events,v0.12-rc,2019-12-12,04:52:49 +argo-events,v0.11,2019-11-11,17:11:35 +argo-events,v0.10,2019-10-07,12:51:38 +argo-events,v0.9.3,2019-07-15,12:16:22 +argo-events,v0.9.2,2019-04-26,01:11:53 +argo-events,v0.9.1,2019-04-26,00:33:03 +argo-events,v.0.9,2019-03-30,13:07:25 +argo-events,v0.8.3,2019-03-18,21:09:05 +argo-events,v0.8.2,2019-03-14,10:32:46 +argo-events,v0.8.1,2019-03-11,13:42:08 +argo-events,v0.8,2019-02-27,18:08:21 +argo-events,v0.7,2019-01-30,04:12:58 +argo-events,v0.6,2018-11-27,11:46:02 +argo-events,v0.5,2018-10-18,19:51:19 +argo-events,v0.5-beta1,2018-07-27,15:00:03 +argo-events,v0.5-alpha1,2018-06-20,19:23:36 +argo-rollouts,v1.8.0-rc2,2025-01-16,19:43:44 +argo-rollouts,v1.8.0-rc1,2024-12-09,14:28:35 +argo-rollouts,v1.7.2,2024-08-13,18:42:47 +argo-rollouts,v1.7.1,2024-06-25,01:38:31 +argo-rollouts,v1.7.0,2024-06-13,20:23:14 +argo-rollouts,v1.7.0-rc1,2024-04-05,18:24:00 +argo-rollouts,v1.6.6,2024-02-13,15:56:59 +argo-rollouts,v1.6.5,2024-01-25,20:19:53 +argo-rollouts,v1.6.4,2023-12-11,21:54:30 +argo-rollouts,v1.6.3,2023-12-05,14:36:31 +argo-rollouts,v1.6.2,2023-11-02,19:58:08 +argo-rollouts,v1.6.1,2023-11-01,21:19:43 +argo-rollouts,v1.6.0,2023-09-06,19:00:06 +argo-rollouts,v1.6.0-rc1,2023-08-11,14:22:24 +argo-rollouts,v1.5.1,2023-05-24,19:26:51 +argo-rollouts,v1.5.0,2023-05-08,15:34:06 +argo-rollouts,v1.5.0-rc1,2023-03-27,20:09:25 +argo-rollouts,v1.4.1,2023-02-25,15:23:34 +argo-rollouts,v1.3.3,2023-02-25,04:38:57 +argo-rollouts,v1.4.0,2023-01-09,21:43:34 +argo-rollouts,v1.4.0-rc1,2022-12-20,02:07:55 +argo-rollouts,v1.3.2,2022-12-15,17:05:26 +argo-rollouts,v1.3.1,2022-09-29,17:43:19 +argo-rollouts,v1.3.0,2022-09-19,03:29:00 +argo-rollouts,v1.3.0-rc3,2022-09-15,16:00:07 +argo-rollouts,v1.3.0-rc2,2022-08-25,20:49:49 +argo-rollouts,v1.3.0-rc1,2022-07-29,19:54:34 +argo-rollouts,v1.2.2,2022-07-26,17:49:31 +argo-rollouts,v1.2.1,2022-05-13,20:57:34 +argo-rollouts,v1.2.0,2022-03-22,17:16:13 +argo-rollouts,v1.2.0-rc2,2022-02-25,16:54:46 +argo-rollouts,v1.2.0-rc1,2022-02-07,20:00:22 +argo-rollouts,v1.1.1,2021-11-29,21:44:13 +argo-rollouts,v1.1.0,2021-10-12,17:02:30 +argo-rollouts,v1.1.0-rc2,2021-10-05,23:41:25 +argo-rollouts,v1.0.7,2021-09-29,18:02:01 +argo-rollouts,v1.1.0-rc1,2021-09-21,23:23:21 +argo-rollouts,v1.0.6,2021-08-26,18:13:19 +argo-rollouts,v1.0.4,2021-08-03,04:38:07 +argo-rollouts,v1.0.3,2021-08-03,04:36:59 +argo-rollouts,v1.0.2,2021-06-15,22:33:04 +argo-rollouts,v1.0.1,2021-05-26,08:43:12 +argo-rollouts,v1.0.0,2021-05-20,04:11:28 +argo-rollouts,v1.0.0-rc1,2021-04-29,20:29:41 +argo-rollouts,v0.10.2,2020-12-17,21:20:44 +argo-rollouts,v0.10.1,2020-12-05,01:23:44 +argo-rollouts,v0.10.0,2020-11-14,00:21:31 +argo-rollouts,v0.9.3,2020-11-05,23:24:15 +argo-rollouts,v0.9.2,2020-10-17,04:41:56 +argo-rollouts,v0.9.1,2020-09-28,22:52:01 +argo-rollouts,v0.9.0,2020-08-17,22:17:04 +argo-rollouts,v0.8.3,2020-06-04,00:49:11 +argo-rollouts,v0.8.2,2020-05-06,20:40:16 +argo-rollouts,v0.8.1,2020-04-20,23:55:07 +argo-rollouts,v0.8.0,2020-04-13,16:40:32 +argo-rollouts,v0.7.2,2020-02-25,19:46:06 +argo-rollouts,v0.7.1,2020-02-10,18:01:08 +argo-rollouts,v0.7.0,2020-01-22,05:09:28 +argo-rollouts,v0.6.3,2020-01-22,04:40:30 +argo-rollouts,v0.6.2,2019-12-16,17:14:42 +argo-rollouts,v0.6.1,2019-12-06,00:25:57 +argo-rollouts,v0.6.0,2019-11-17,21:16:29 +argo-rollouts,v0.5.0,2019-09-23,17:59:31 +argo-rollouts,v0.4.2,2019-08-19,20:21:15 +argo-rollouts,v0.4.1,2019-06-26,16:07:32 +argo-rollouts,v0.4.0,2019-06-21,17:48:41 +argo-rollouts,v0.3.2,2019-06-13,17:58:53 +argo-rollouts,v0.3.1,2019-05-18,21:27:51 +argo-rollouts,v0.3.0,2019-05-01,06:36:28 +argo-rollouts,v0.2.2,2019-04-16,23:10:01 +argo-rollouts,v0.2.1,2019-04-04,21:43:44 +argo-rollouts,v0.2.0,2019-03-04,22:30:55 +argo-rollouts,v0.1.0,2019-02-01,19:03:49 diff --git a/scripts/release-analysis/fetch_helmet_releases.py b/scripts/release-analysis/fetch_helmet_releases.py new file mode 100644 index 00000000..77e2fcb3 --- /dev/null +++ b/scripts/release-analysis/fetch_helmet_releases.py @@ -0,0 +1,90 @@ +import csv +import os +from datetime import datetime + +import requests + +# GitHub repository URL +repo_url = "https://api.github.com/repos/argoproj/argo-helm/releases" + +# Get the GitHub token from environment variables +github_token = os.getenv("GITHUB_TOKEN") +if not github_token: + raise ValueError("GITHUB_TOKEN environment variable is not set") + + +# Function to fetch all releases with pagination +def fetch_all_releases(url): + releases = [] + headers = {"Authorization": f"token {github_token}"} + while url: + response = requests.get(url, headers=headers) + response.raise_for_status() + releases.extend(response.json()) + url = response.links.get("next", {}).get("url") + return releases + + +# Function to get the content of Chart.yaml in a release +def get_chart_yaml(repo, tag, chart_path): + url = f"https://raw.githubusercontent.com/{repo}/refs/tags/{tag}/charts/{chart_path}/Chart.yaml" + headers = {"Authorization": f"token {github_token}"} + response = requests.get(url, headers=headers) + if response.status_code == 200: + return response.text + return None + + +# Function to extract appVersion from Chart.yaml content +def extract_app_version(chart_yaml): + for line in chart_yaml.splitlines(): + if line.startswith("appVersion:"): + return line.split(":")[1].strip() + return None + + +# Function to fetch releases and write to a CSV file +def fetch_and_write_helmet_releases(csv_file): + # Fetch all releases + releases = fetch_all_releases(repo_url) + + # Write the release data to the CSV file + with open(csv_file, mode="w", newline="") as file: + writer = csv.writer(file, quoting=csv.QUOTE_NONE, escapechar="\\") + writer.writerow(["Release Name", "Release Date", "Release Time", "App Version"]) + + for release in releases: + tag_name = release["tag_name"] + published_at = release["published_at"] + release_date = datetime.strptime(published_at, "%Y-%m-%dT%H:%M:%SZ").date() + release_time = datetime.strptime(published_at, "%Y-%m-%dT%H:%M:%SZ").time() + + # Extract chart path from the release name + chart_path = "-".join(tag_name.split("-")[:-1]) + current_chart_yaml = get_chart_yaml( + "argoproj/argo-helm", tag_name, chart_path + ) + + if current_chart_yaml: + current_app_version = extract_app_version(current_chart_yaml) + writer.writerow( + [tag_name, release_date, release_time, current_app_version] + ) + + # Read the CSV file, remove any instances of `\"`, and write back the cleaned content + with open(csv_file, mode="r") as file: + content = file.read() + + cleaned_content = content.replace('\\"', "") + + with open(csv_file, mode="w", newline="") as file: + file.write(cleaned_content) + + print( + f'Release data has been written to {csv_file} and cleaned of any instances of \\"' + ) + + +# Example usage +if __name__ == "__main__": + fetch_and_write_helmet_releases("argo_helm_releases.csv") diff --git a/scripts/release-analysis/fetch_releases.py b/scripts/release-analysis/fetch_releases.py new file mode 100644 index 00000000..6d27faee --- /dev/null +++ b/scripts/release-analysis/fetch_releases.py @@ -0,0 +1,57 @@ +import csv +import os +from datetime import datetime + +import requests + +# List of GitHub repository URLs we care about +repos = [ + ("argo-cd", "https://api.github.com/repos/argoproj/argo-cd/releases"), + ("argo-workflows", "https://api.github.com/repos/argoproj/argo-workflows/releases"), + ("argo-events", "https://api.github.com/repos/argoproj/argo-events/releases"), + ("argo-rollouts", "https://api.github.com/repos/argoproj/argo-rollouts/releases"), +] + +# Get the GitHub token from environment variables +github_token = os.getenv("GITHUB_TOKEN") +if not github_token: + raise ValueError("GITHUB_TOKEN environment variable is not set") + + +# Fetch all releases with pagination +def fetch_all_releases(url): + releases = [] + headers = {"Authorization": f"token {github_token}"} + while url: + response = requests.get(url, headers=headers) + response.raise_for_status() + releases.extend(response.json()) + url = response.links.get("next", {}).get("url") + return releases + + +# Fetch releases and write to a CSV file +def fetch_and_write_releases(csv_file): + with open(csv_file, mode="w", newline="") as file: + writer = csv.writer(file) + writer.writerow(["Repository", "Release Tag", "Release Date", "Release Time"]) + + for repo_name, repo_url in repos: + releases = fetch_all_releases(repo_url) + for release in releases: + tag_name = release["tag_name"] + published_at = release["published_at"] + release_date = datetime.strptime( + published_at, "%Y-%m-%dT%H:%M:%SZ" + ).date() + release_time = datetime.strptime( + published_at, "%Y-%m-%dT%H:%M:%SZ" + ).time() + writer.writerow([repo_name, tag_name, release_date, release_time]) + + print(f"Release data has been written to {csv_file}") + + +# Example usage +if __name__ == "__main__": + fetch_and_write_releases("argo_releases.csv") diff --git a/scripts/release-analysis/main.py b/scripts/release-analysis/main.py new file mode 100644 index 00000000..3fcf21ed --- /dev/null +++ b/scripts/release-analysis/main.py @@ -0,0 +1,31 @@ +import os + +from fetch_helmet_releases import fetch_and_write_helmet_releases +from fetch_releases import fetch_and_write_releases +from merge_csvs import merge_csv_files +from plot_graph import plot_time_difference + +# Check there is a github token +github_token = os.getenv("GITHUB_TOKEN") +if not github_token: + raise ValueError("GITHUB_TOKEN environment variable is not set") + +# Do the thing +print("Fetching releases...") +fetch_and_write_releases("argo_releases.csv") +print("Done") + +print("Fetching Team Helmet releases...") +fetch_and_write_helmet_releases("argo_helm_releases.csv") +print("Done") + +print("Merging release info...") +merge_csv_files("argo_releases.csv", "argo_helm_releases.csv", "merged_releases.csv") +print("Done") + +print("Plotting time difference graphs...") +plot_time_difference("merged_releases.csv") +print("Done") + +# Delete __pycache__ directories +os.system("rm -rf __pycache__") diff --git a/scripts/release-analysis/merge_csvs.py b/scripts/release-analysis/merge_csvs.py new file mode 100644 index 00000000..72b6917b --- /dev/null +++ b/scripts/release-analysis/merge_csvs.py @@ -0,0 +1,108 @@ +import csv +from datetime import datetime + + +def merge_csv_files(csv_file_1, csv_file_2, output_csv_file): + # Read the first CSV file into a dictionary + releases_1 = {} + with open(csv_file_1, mode="r") as file: + reader = csv.DictReader(file) + for row in reader: + key = (row["Repository"], row["Release Tag"]) + releases_1[key] = row + + # Read the second CSV file and find the oldest release for each appVersion + oldest_releases = {} + valid_repos = {"argo-cd", "argo-events", "argo-workflows", "argo-rollouts"} + with open(csv_file_2, mode="r") as file: + reader = csv.DictReader(file) + for row in reader: + release_name = row["Release Name"] + repo_name = "-".join(release_name.split("-")[:-1]) + if repo_name in valid_repos: + app_version = row["App Version"] + release_datetime = datetime.strptime( + f"{row['Release Date']} {row['Release Time']}", "%Y-%m-%d %H:%M:%S" + ) + if ( + repo_name, + app_version, + ) not in oldest_releases or release_datetime < oldest_releases[ + (repo_name, app_version) + ][ + "datetime" + ]: + oldest_releases[(repo_name, app_version)] = { + "row": row, + "datetime": release_datetime, + } + + # Merge the oldest releases with the first CSV file + merged_releases = [] + for (repo_name, app_version), data in oldest_releases.items(): + row = data["row"] + for key, release in releases_1.items(): + if ( + repo_name == release["Repository"] + and app_version == release["Release Tag"] + ): + time_difference = data["datetime"] - datetime.strptime( + f"{release['Release Date']} {release['Release Time']}", + "%Y-%m-%d %H:%M:%S", + ) + time_difference_hours = ( + time_difference.total_seconds() / 3600 + ) # Convert to hours + merged_row = { + "Repository": release["Repository"], + "Release Tag": release["Release Tag"], + "Release Date": release["Release Date"], + "Release Time": release["Release Time"], + "App Version": app_version, + "Release Name": row["Release Name"], + "Release Date 2": row["Release Date"], + "Release Time 2": row["Release Time"], + "Time Difference": time_difference_hours, + } + merged_releases.append(merged_row) + break + else: + merged_row = { + "Repository": repo_name, + "Release Tag": "", + "Release Date": "", + "Release Time": "", + "App Version": app_version, + "Release Name": row["Release Name"], + "Release Date 2": row["Release Date"], + "Release Time 2": row["Release Time"], + "Time Difference": "", + } + merged_releases.append(merged_row) + + # Write the merged data to a new CSV file + with open(output_csv_file, mode="w", newline="") as file: + fieldnames = [ + "Repository", + "Release Tag", + "Release Date", + "Release Time", + "App Version", + "Release Name", + "Release Date 2", + "Release Time 2", + "Time Difference", + ] + writer = csv.DictWriter(file, fieldnames=fieldnames) + writer.writeheader() + for row in merged_releases: + writer.writerow(row) + + print(f"Merged data has been written to {output_csv_file}") + + +# Example usage +if __name__ == "__main__": + merge_csv_files( + "argo_releases.csv", "argo_helm_releases.csv", "merged_releases.csv" + ) diff --git a/scripts/release-analysis/merged_releases.csv b/scripts/release-analysis/merged_releases.csv new file mode 100644 index 00000000..a4c13445 --- /dev/null +++ b/scripts/release-analysis/merged_releases.csv @@ -0,0 +1,195 @@ +Repository,Release Tag,Release Date,Release Time,App Version,Release Name,Release Date 2,Release Time 2,Time Difference +argo-cd,v2.13.3,2025-01-03,19:23:42,v2.13.3,argo-cd-7.7.13,2025-01-04,00:07:55,4.736944444444444 +argo-events,v1.9.5,2025-01-10,18:11:20,v1.9.5,argo-events-2.4.13,2025-01-11,10:22:47,16.190833333333334 +argo-workflows,v3.6.2,2024-12-02,14:12:44,v3.6.2,argo-workflows-0.45.1,2024-12-02,17:39:46,3.4505555555555554 +argo-events,v1.9.4,2025-01-08,07:48:18,v1.9.4,argo-events-2.4.12,2025-01-08,08:37:01,0.8119444444444445 +argo-events,v1.9.3,2024-11-27,06:51:10,v1.9.3,argo-events-2.4.9,2024-11-27,20:44:06,13.882222222222222 +argo-rollouts,v1.7.2,2024-08-13,18:42:47,v1.7.2,argo-rollouts-2.37.5,2024-08-14,08:31:31,13.812222222222223 +argo-cd,v2.13.2,2024-12-11,19:18:46,v2.13.2,argo-cd-7.7.10,2024-12-12,05:33:28,10.245 +argo-cd,v2.13.1,2024-11-20,17:11:22,v2.13.1,argo-cd-7.7.4,2024-11-20,20:48:11,3.613611111111111 +argo-workflows,v3.6.0,2024-11-14,19:02:01,v3.6.0,argo-workflows-0.43.0,2024-11-21,08:27:21,157.42222222222222 +argo-cd,v2.13.0,2024-11-04,12:46:49,v2.13.0,argo-cd-7.7.0,2024-11-05,00:00:06,11.221388888888889 +argo-workflows,v3.5.12,2024-10-30,11:49:27,v3.5.12,argo-workflows-0.42.6,2024-10-30,13:24:53,1.5905555555555555 +argo-cd,v2.12.6,2024-10-18,19:07:18,v2.12.6,argo-cd-7.6.12,2024-10-18,19:27:20,0.3338888888888889 +argo-cd,v2.12.5,2024-10-17,22:03:45,v2.12.5,argo-cd-7.6.11,2024-10-18,07:16:30,9.2125 +argo-cd,v2.12.4,2024-09-26,07:14:39,v2.12.4,argo-cd-7.6.5,2024-09-26,07:42:42,0.4675 +argo-workflows,v3.5.11,2024-09-20,14:08:00,v3.5.11,argo-workflows-0.42.3,2024-09-20,15:08:40,1.011111111111111 +argo-cd,v2.12.3,2024-08-27,12:33:34,v2.12.3,argo-cd-7.4.7,2024-08-27,13:30:34,0.95 +argo-events,v1.9.2,2024-06-14,00:38:39,v1.9.2,argo-events-2.4.6,2024-06-14,05:09:08,4.508055555555556 +argo-workflows,v3.5.10,2024-08-01,06:03:16,v3.5.10,argo-workflows-0.41.13,2024-08-01,07:19:01,1.2625 +argo-cd,v2.12.2,2024-08-23,04:05:09,v2.12.2,argo-cd-7.4.5,2024-08-23,08:51:19,4.769444444444445 +argo-cd,v2.12.1,2024-08-16,17:16:36,v2.12.1,argo-cd-7.4.4,2024-08-16,21:36:53,4.338055555555556 +argo-rollouts,v1.7.1,2024-06-25,01:38:31,v1.7.1,argo-rollouts-2.37.0,2024-06-26,09:10:19,31.53 +argo-cd,v2.12.0,2024-08-05,14:02:15,v2.12.0,argo-cd-7.4.0,2024-08-05,15:22:06,1.3308333333333333 +argo-workflows,v3.5.9,2024-07-30,06:58:49,v3.5.9,argo-workflows-0.41.12,2024-07-30,07:39:23,0.6761111111111111 +argo-cd,v2.11.7,2024-07-24,10:27:18,v2.11.7,argo-cd-7.3.11,2024-07-24,11:44:52,1.2927777777777778 +argo-cd,v2.11.6,2024-07-22,15:19:04,v2.11.6,argo-cd-7.3.10,2024-07-22,17:14:41,1.9269444444444443 +argo-cd,v2.11.5,2024-07-15,18:32:15,v2.11.5,argo-cd-7.3.7,2024-07-16,01:17:05,6.747222222222222 +argo-cd,v2.11.4,2024-07-02,19:52:42,v2.11.4,argo-cd-7.3.4,2024-07-02,20:43:46,0.8511111111111112 +argo-cd,v2.11.3,2024-06-06,09:43:29,v2.11.3,argo-cd-7.1.2,2024-06-06,10:51:51,1.1394444444444445 +argo-rollouts,v1.7.0,2024-06-13,20:23:14,v1.7.0,argo-rollouts-2.36.0,2024-06-14,09:00:46,12.625555555555556 +argo-workflows,v3.5.8,2024-06-18,04:52:31,v3.5.8,argo-workflows-0.41.10,2024-06-18,07:47:04,2.9091666666666667 +argo-workflows,v3.5.7,2024-05-27,07:13:30,v3.5.7,argo-workflows-0.41.7,2024-05-27,08:09:42,0.9366666666666666 +argo-cd,v2.11.2,2024-05-23,14:14:51,v2.11.2,argo-cd-6.11.1,2024-05-23,15:37:21,1.375 +argo-events,v1.9.1,2024-02-13,21:21:44,v1.9.1,argo-events-2.4.3,2024-02-14,08:53:00,11.52111111111111 +argo-rollouts,v1.6.6,2024-02-13,15:56:59,v1.6.6,argo-rollouts-2.34.3,2024-02-14,08:50:21,16.889444444444443 +argo-cd,v2.11.1,2024-05-21,15:03:58,v2.11.1,argo-cd-6.10.0,2024-05-21,16:36:49,1.5475 +argo-workflows,v3.5.6,2024-04-19,21:43:07,v3.5.6,argo-workflows-0.41.2,2024-04-20,04:55:21,7.203888888888889 +argo-cd,v2.11.0,2024-05-07,16:37:25,v2.11.0,argo-cd-6.8.0,2024-05-08,06:21:31,13.735 +argo-cd,v2.10.9,2024-04-30,16:55:10,v2.10.9,argo-cd-6.7.18,2024-04-30,17:14:22,0.32 +argo-cd,v2.10.8,2024-04-26,14:04:02,v2.10.8,argo-cd-6.7.16,2024-04-26,14:21:35,0.2925 +argo-cd,v2.10.7,2024-04-15,09:21:23,v2.10.7,argo-cd-6.7.12,2024-04-15,10:43:13,1.363888888888889 +argo-cd,v2.10.6,2024-04-05,01:04:01,v2.10.6,argo-cd-6.7.10,2024-04-05,05:00:08,3.935277777777778 +argo-cd,v2.10.5,2024-03-28,16:29:02,v2.10.5,argo-cd-6.7.4,2024-03-28,17:30:11,1.0191666666666668 +argo-workflows,v3.5.5,2024-02-29,21:47:50,v3.5.5,argo-workflows-0.40.12,2024-03-01,00:03:01,2.2530555555555556 +argo-cd,v2.10.4,2024-03-18,08:44:51,v2.10.4,argo-cd-6.7.3,2024-03-18,09:36:58,0.8686111111111111 +argo-cd,v2.10.3,2024-03-13,19:53:05,v2.10.3,argo-cd-6.7.2,2024-03-13,20:46:14,0.8858333333333334 +argo-cd,v2.10.2,2024-03-01,22:03:43,v2.10.2,argo-cd-6.5.1,2024-03-01,22:33:17,0.49277777777777776 +argo-cd,v2.10.1,2024-02-14,18:12:43,v2.10.1,argo-cd-6.0.14,2024-02-14,21:04:43,2.8666666666666667 +argo-workflows,v3.5.4,2024-01-14,06:19:09,v3.5.4,argo-workflows-0.40.6,2024-01-14,08:11:19,1.8694444444444445 +argo-cd,v2.10.0,2024-02-06,15:03:51,v2.10.0,argo-cd-5.55.0,2024-02-07,07:10:30,16.110833333333332 +argo-cd,v2.9.6,2024-02-02,19:51:46,v2.9.6,argo-cd-5.53.13,2024-02-02,22:50:34,2.98 +argo-cd,v2.9.5,2024-01-19,18:32:02,v2.9.5,argo-cd-5.53.2,2024-01-19,20:20:14,1.8033333333333332 +argo-rollouts,v1.6.5,2024-01-25,20:19:53,v1.6.5,argo-rollouts-2.34.2,2024-01-26,06:31:27,10.192777777777778 +argo-cd,v2.9.4,2024-01-18,21:24:02,v2.9.4,argo-cd-5.53.1,2024-01-19,05:48:47,8.4125 +argo-cd,v2.9.3,2023-12-01,23:39:19,v2.9.3,argo-cd-5.51.6,2023-12-02,11:03:49,11.408333333333333 +argo-workflows,v3.5.3,2024-01-11,03:12:46,v3.5.3,argo-workflows-0.40.5,2024-01-11,07:20:47,4.133611111111111 +argo-events,v1.9.0,2024-01-09,08:31:10,v1.9.0,argo-events-2.4.2,2024-01-09,10:14:30,1.7222222222222223 +argo-rollouts,v1.6.4,2023-12-11,21:54:30,v1.6.4,argo-rollouts-2.32.8,2023-12-13,06:59:39,33.08583333333333 +argo-workflows,v3.5.2,2023-11-27,19:16:42,v3.5.2,argo-workflows-0.39.5,2023-11-27,21:13:09,1.9408333333333334 +argo-rollouts,v1.6.3,2023-12-05,14:36:31,v1.6.3,argo-rollouts-2.32.7,2023-12-08,15:06:58,72.5075 +argo-rollouts,v1.6.2,2023-11-02,19:58:08,v1.6.2,argo-rollouts-2.32.4,2023-11-15,13:09:53,305.1958333333333 +argo-cd,v2.9.2,2023-11-20,17:52:41,v2.9.2,argo-cd-5.51.4,2023-11-20,18:50:04,0.9563888888888888 +argo-workflows,v3.5.1,2023-11-03,19:57:45,v3.5.1,argo-workflows-0.38.0,2023-11-04,05:58:06,10.005833333333333 +argo-cd,v2.9.1,2023-11-14,15:55:51,v2.9.1,argo-cd-5.51.2,2023-11-15,05:59:33,14.061666666666667 +argo-rollouts,v1.6.1,2023-11-01,21:19:43,v1.6.1,argo-rollouts-2.32.3,2023-11-15,10:00:45,324.6838888888889 +argo-cd,v2.9.0,2023-11-06,05:27:12,v2.9.0,argo-cd-5.51.0,2023-11-06,12:54:52,7.461111111111111 +argo-workflows,v3.5.0,2023-10-13,15:00:44,v3.5.0,argo-workflows-0.35.0,2023-10-13,22:07:38,7.115 +argo-cd,v2.8.6,2023-11-01,17:29:59,v2.8.6,argo-cd-5.50.0,2023-10-31,18:12:30,-23.29138888888889 +argo-rollouts,v1.6.0,2023-09-06,19:00:06,v1.6.0,argo-rollouts-2.32.0,2023-09-07,12:23:50,17.395555555555557 +argo-cd,v2.8.5,2023-10-31,19:30:03,v2.8.5,argo-cd-5.48.0,2023-10-28,07:29:05,-84.01611111111112 +argo-cd,v2.8.4,2023-09-13,20:08:07,v2.8.4,argo-cd-5.46.3,2023-09-14,04:56:22,8.804166666666667 +argo-workflows,v3.4.11,2023-09-08,01:14:16,v3.4.11,argo-workflows-0.33.2,2023-09-08,04:20:30,3.1038888888888887 +argo-cd,v2.8.3,2023-09-07,18:06:07,v2.8.3,argo-cd-5.45.3,2023-09-08,00:13:52,6.129166666666666 +argo-cd,v2.8.2,2023-08-24,21:05:33,v2.8.2,argo-cd-5.43.6,2023-08-25,08:46:11,11.677222222222222 +argo-events,v1.8.1,2023-08-31,23:49:47,v1.8.1,argo-events-2.4.1,2023-09-04,01:15:35,73.43 +argo-cd,v2.8.1,2023-08-22,21:19:28,v2.8.1,argo-cd-5.43.5,2023-08-23,03:57:35,6.635277777777778 +argo-workflows,v3.4.10,2023-08-15,18:59:38,v3.4.10,argo-workflows-0.32.3,2023-08-16,11:00:55,16.02138888888889 +argo-rollouts,v1.5.1,2023-05-24,19:26:51,v1.5.1,argo-rollouts-2.31.1,2023-07-20,17:26:45,1365.9983333333332 +argo-cd,v2.8.0,2023-08-07,20:03:46,v2.8.0,argo-cd-5.43.0,2023-08-08,14:36:04,18.538333333333334 +argo-workflows,v3.4.9,2023-07-20,15:28:41,v3.4.9,argo-workflows-0.32.0,2023-07-20,23:20:17,7.86 +argo-cd,v2.7.11,2023-08-07,20:07:16,v2.7.11,argo-cd-5.42.3,2023-08-08,06:11:54,10.077222222222222 +argo-cd,v2.7.10,2023-07-31,22:51:19,v2.7.10,argo-cd-5.42.1,2023-08-01,05:57:37,7.105 +argo-cd,v2.7.9,2023-07-24,18:50:30,v2.7.9,argo-cd-5.41.2,2023-07-25,02:10:03,7.325833333333334 +argo-cd,v2.7.8,2023-07-19,15:58:13,v2.7.8,argo-cd-5.41.1,2023-07-19,22:26:30,6.471388888888889 +argo-cd,v2.7.7,2023-07-05,20:25:54,v2.7.7,argo-cd-5.37.1,2023-07-06,08:26:09,12.004166666666666 +argo-workflows,v3.4.8,2023-05-25,23:37:40,v3.4.8,argo-workflows-0.28.2,2023-05-26,04:19:27,4.6963888888888885 +argo-cd,v2.7.6,2023-06-20,21:46:46,v2.7.6,argo-cd-5.36.5,2023-06-21,04:27:57,6.686388888888889 +argo-events,v1.8.0,2023-05-08,05:54:59,v1.8.0,argo-events-2.4.0,2023-06-21,12:41:55,1062.7822222222221 +argo-cd,v2.7.5,2023-06-16,15:24:00,v2.7.5,argo-cd-5.36.2,2023-06-17,04:55:38,13.527222222222223 +argo-cd,v2.7.4,2023-06-05,19:40:08,v2.7.4,argo-cd-5.35.1,2023-06-06,04:53:38,9.225 +argo-cd,v2.7.3,2023-05-24,16:14:02,v2.7.3,argo-cd-5.34.5,2023-05-24,23:23:36,7.1594444444444445 +argo-rollouts,v1.5.0,2023-05-08,15:34:06,v1.5.0,argo-rollouts-2.28.0,2023-05-10,15:37:42,48.06 +argo-workflows,v3.4.7,2023-04-11,17:26:32,v3.4.7,argo-workflows-0.23.2,2023-04-12,04:52:48,11.437777777777777 +argo-cd,v2.7.2,2023-05-12,14:41:07,v2.7.2,argo-cd-5.33.2,2023-05-12,15:19:23,0.6377777777777778 +argo-cd,v2.7.1,2023-05-02,17:24:44,v2.7.1,argo-cd-5.31.1,2023-05-03,09:48:25,16.39472222222222 +argo-events,v1.7.6,2023-02-10,07:30:54,v1.7.6,argo-events-2.1.3,2023-02-21,01:14:54,257.73333333333335 +argo-rollouts,v1.4.1,2023-02-25,15:23:34,v1.4.1,argo-rollouts-2.22.3,2023-03-02,15:08:16,119.745 +argo-cd,v2.7.0,2023-05-02,00:51:25,v2.7.0,argo-cd-5.30.0,2023-05-02,07:29:11,6.629444444444444 +argo-cd,v2.6.7,2023-03-23,15:45:09,v2.6.7,argo-cd-5.27.2,2023-03-24,00:09:05,8.398888888888889 +argo-workflows,v3.4.6,2023-03-31,20:16:18,v3.4.6,argo-workflows-0.22.16,2023-04-04,11:10:35,86.90472222222222 +argo-workflows,v3.4.5,2023-02-07,13:26:29,v3.4.5,argo-workflows-0.22.10,2023-02-07,15:11:29,1.75 +argo-cd,v2.6.6,2023-03-16,23:07:31,v2.6.6,argo-cd-5.27.1,2023-03-17,08:25:05,9.292777777777777 +argo-cd,v2.6.5,2023-03-14,14:59:49,v2.6.5,argo-cd-5.26.1,2023-03-14,18:42:39,3.713888888888889 +argo-cd,v2.6.4,2023-03-07,23:29:08,v2.6.4,argo-cd-5.24.2,2023-03-08,07:13:22,7.737222222222222 +argo-cd,v2.6.3,2023-02-27,15:20:04,v2.6.3,argo-cd-5.23.3,2023-02-28,08:32:15,17.203055555555554 +argo-cd,v2.6.2,2023-02-16,15:43:42,v2.6.2,argo-cd-5.21.1,2023-02-17,08:23:54,16.67 +argo-cd,v2.6.1,2023-02-08,19:39:04,v2.6.1,argo-cd-5.20.3,2023-02-08,20:15:43,0.6108333333333333 +argo-cd,v2.6.0,2023-02-06,22:04:33,v2.6.0,argo-cd-5.20.0,2023-02-07,15:02:47,16.970555555555556 +argo-cd,v2.5.10,2023-02-02,15:48:00,v2.5.10,argo-cd-5.19.14,2023-02-02,21:56:38,6.143888888888889 +argo-cd,v2.5.9,2023-01-28,00:04:28,v2.5.9,argo-cd-5.19.11,2023-01-28,13:41:15,13.613055555555556 +argo-workflows,v3.4.4,2022-11-29,21:15:21,v3.4.4,argo-workflows-0.20.12,2022-11-30,15:26:09,18.18 +argo-rollouts,v1.4.0,2023-01-09,21:43:34,v1.4.0,argo-rollouts-2.22.0,2023-01-19,21:14:27,239.51472222222222 +argo-events,v1.7.5,2023-01-23,08:23:36,v1.7.5,argo-events-2.1.1,2023-01-29,12:16:37,147.88361111111112 +argo-cd,v2.5.8,2023-01-25,17:05:03,v2.5.8,argo-cd-5.19.7,2023-01-26,08:23:02,15.299722222222222 +argo-events,v1.7.4,2022-12-12,07:45:11,v1.7.4,argo-events-2.0.10,2022-12-24,19:41:24,299.93694444444446 +argo-cd,v2.5.7,2023-01-18,03:00:02,v2.5.7,argo-cd-5.17.2,2023-01-18,06:44:45,3.745277777777778 +argo-rollouts,v1.3.1,2022-09-29,17:43:19,v1.3.1,argo-rollouts-2.21.1,2022-09-30,22:29:28,28.769166666666667 +argo-cd,v2.5.6,2023-01-10,20:14:18,v2.5.6,argo-cd-5.17.1,2023-01-11,06:33:59,10.328055555555556 +argo-cd,v2.5.5,2022-12-16,16:53:08,v2.5.5,argo-cd-5.16.7,2022-12-17,11:36:17,18.719166666666666 +argo-events,v1.7.3,2022-09-28,22:10:34,v1.7.3,argo-events-2.0.6,2022-09-29,15:55:01,17.740833333333335 +argo-cd,v2.5.4,2022-12-06,20:26:51,v2.5.4,argo-cd-5.16.2,2022-12-07,07:41:56,11.251388888888888 +argo-cd,v2.5.3,2022-11-28,17:28:00,v2.5.3,argo-cd-5.14.3,2022-11-28,22:10:18,4.705 +argo-workflows,v3.4.3,2022-10-31,09:17:41,v3.4.3,argo-workflows-0.20.6,2022-11-01,09:26:43,24.150555555555556 +argo-cd,v2.5.2,2022-11-07,17:23:44,v2.5.2,argo-cd-5.13.6,2022-11-08,16:04:52,22.685555555555556 +argo-cd,v2.5.1,2022-11-01,21:53:59,v2.5.1,argo-cd-5.13.1,2022-11-02,07:31:33,9.626111111111111 +argo-cd,v2.5.0,2022-10-25,15:32:28,v2.5.0,argo-cd-5.8.0,2022-10-25,21:22:42,5.8372222222222225 +argo-workflows,v3.4.2,2022-10-23,07:36:55,v3.4.2,argo-workflows-0.20.3,2022-10-24,05:53:54,22.283055555555556 +argo-cd,v2.4.15,2022-10-17,21:17:43,v2.4.15,argo-cd-5.6.1,2022-10-20,11:23:48,62.10138888888889 +argo-workflows,v3.4.1,2022-10-01,16:09:34,v3.4.1,argo-workflows-0.20.1,2022-10-02,09:28:15,17.31138888888889 +argo-cd,v2.4.14,2022-10-05,17:53:31,v2.4.14,argo-cd-5.5.10,2022-10-06,21:05:05,27.192777777777778 +argo-cd,v2.4.13,2022-10-03,21:38:39,v2.4.13,argo-cd-5.5.8,2022-10-04,00:58:31,3.331111111111111 +argo-cd,v2.4.12,2022-09-16,01:33:23,v2.4.12,argo-cd-5.4.4,2022-09-16,08:58:43,7.4222222222222225 +argo-rollouts,v1.3.0,2022-09-19,03:29:00,v1.3.0,argo-rollouts-2.21.0,2022-09-29,06:43:50,243.24722222222223 +argo-workflows,v3.4.0,2022-09-19,05:23:46,v3.4.0,argo-workflows-0.18.0,2022-09-19,16:10:42,10.782222222222222 +argo-events,v1.7.2,2022-09-12,23:46:11,v1.7.2,argo-events-2.0.5,2022-09-20,11:55:01,180.1472222222222 +argo-cd,v2.4.11,2022-08-22,09:52:10,v2.4.11,argo-cd-4.10.9,2022-08-22,14:04:30,4.205555555555556 +argo-workflows,v3.3.9,2022-08-10,01:08:09,v3.3.9,argo-workflows-0.16.9,2022-08-10,11:43:41,10.592222222222222 +argo-rollouts,v1.2.2,2022-07-26,17:49:31,v1.2.2,argo-rollouts-2.19.2,2022-08-26,09:03:17,735.2294444444444 +argo-events,v1.7.1,2022-06-09,06:27:31,v1.7.1,argo-events-2.0.2,2022-07-04,09:50:24,603.3813888888889 +argo-rollouts,v1.2.0,2022-03-22,17:16:13,v1.2.0,argo-rollouts-2.12.0,2022-03-23,21:12:12,27.933055555555555 +argo-cd,v2.4.10,2022-08-17,21:44:09,v2.4.10,argo-cd-4.10.7,2022-08-18,00:28:21,2.736666666666667 +argo-cd,v2.4.9,2022-08-11,15:59:47,v2.4.9,argo-cd-4.10.6,2022-08-11,20:43:51,4.734444444444445 +argo-cd,v2.4.8,2022-07-29,17:38:38,v2.4.8,argo-cd-4.10.4,2022-08-01,13:49:17,68.1775 +argo-cd,v2.4.7,2022-07-18,21:54:21,v2.4.7,argo-cd-4.9.15,2022-07-19,06:25:53,8.525555555555556 +argo-workflows,v3.3.8,2022-06-24,01:18:03,v3.3.8,argo-workflows-0.16.6,2022-06-24,05:47:50,4.496388888888889 +argo-cd,v2.4.6,2022-07-12,23:14:34,v2.4.6,argo-cd-4.9.13,2022-07-13,20:43:07,21.475833333333334 +argo-cd,v2.4.4,2022-07-07,07:59:34,v2.4.4,argo-cd-4.9.12,2022-07-07,16:46:25,8.780833333333334 +argo-cd,v2.4.3,2022-06-27,21:39:15,v2.4.3,argo-cd-4.9.9,2022-06-28,13:20:49,15.692777777777778 +argo-events,v1.7.0,2022-05-04,22:47:01,v1.7.0,argo-events-2.0.0,2022-06-14,15:38:27,976.8572222222223 +argo-cd,v2.4.2,2022-06-21,21:19:40,v2.4.2,argo-cd-4.9.5,2022-06-23,05:50:20,32.51111111111111 +argo-workflows,v3.3.7,2022-06-21,00:41:49,v3.3.7,argo-workflows-0.16.5,2022-06-23,16:01:09,63.32222222222222 +argo-workflows,v3.3.6,2022-05-26,01:22:39,v3.3.6,argo-workflows-0.16.1,2022-05-26,11:20:50,9.969722222222222 +argo-cd,v2.4.0,2022-06-10,17:59:33,v2.4.0,argo-cd-4.9.0,2022-06-14,10:10:37,88.18444444444444 +argo-cd,v2.3.4,2022-05-18,13:14:17,v2.3.4,argo-cd-4.6.2,2022-05-19,17:54:21,28.66777777777778 +argo-workflows,v3.3.5,2022-05-04,01:13:34,v3.3.5,argo-workflows-0.15.2,2022-05-20,21:14:27,404.01472222222225 +argo-workflows,v3.3.2,2022-04-20,23:16:10,v3.3.2,argo-workflows-0.14.0,2022-04-22,07:09:42,31.892222222222223 +argo-cd,v2.3.3,2022-03-30,01:55:37,v2.3.3,argo-cd-4.3.1,2022-03-30,13:40:17,11.744444444444444 +argo-events,v1.6.0,2022-02-13,06:42:27,v1.6.0,argo-events-1.11.0,2022-02-20,18:31:57,179.825 +argo-cd,v2.3.2,2022-03-23,02:12:12,v2.3.2,argo-cd-4.2.2,2022-03-23,09:53:45,7.6925 +argo-workflows,v3.2.9,2022-03-02,23:04:35,v3.2.9,argo-workflows-0.11.2,2022-03-05,08:51:50,57.7875 +argo-cd,v2.3.1,2022-03-11,00:07:41,v2.3.1,argo-cd-4.0.0,2022-03-16,21:02:33,140.91444444444446 +argo-rollouts,v1.1.1,2021-11-29,21:44:13,v1.1.1,argo-rollouts-2.8.1,2022-01-10,18:21:14,1004.6169444444445 +argo-cd,v2.2.5,2022-02-05,01:42:13,v2.2.5,argo-cd-3.33.4,2022-02-05,12:55:15,11.217222222222222 +argo-workflows,v3.2.7,2022-01-28,02:28:31,v3.2.7,argo-workflows-0.10.1,2022-02-09,23:06:55,308.64 +argo-cd,v2.2.4,2022-02-03,20:50:43,v2.2.4,argo-cd-3.33.3,2022-02-04,09:19:44,12.483611111111111 +argo-cd,v2.2.3,2022-01-18,18:03:37,v2.2.3,argo-cd-3.32.0,2022-01-26,15:14:35,189.18277777777777 +argo-workflows,v3.2.6,2021-12-17,21:12:28,v3.2.6,argo-workflows-0.9.4,2021-12-20,11:00:00,61.79222222222222 +argo-events,v1.5.6,2022-01-12,05:18:08,v1.5.6,argo-events-1.10.1,2022-01-18,22:20:08,161.03333333333333 +argo-cd,v2.2.2,2022-01-01,06:38:42,v2.2.2,argo-cd-3.29.5,2022-01-04,10:16:28,75.62944444444445 +argo-events,v1.5.0,2021-10-12,18:48:33,v1.5.0,argo-events-1.8.0,2021-10-27,15:13:58,356.4236111111111 +argo-rollouts,v1.1.0,2021-10-12,17:02:30,v1.1.0,argo-rollouts-2.2.0,2021-10-14,14:58:28,45.93277777777778 +argo-cd,v2.2.1,2021-12-17,01:41:25,v2.2.1,argo-cd-3.29.1,2021-12-17,10:06:18,8.414722222222222 +argo-cd,v2.2.0,2021-12-14,18:19:23,v2.2.0,argo-cd-3.29.0,2021-12-15,10:15:30,15.935277777777777 +argo-cd,v2.1.7,2021-11-17,22:18:58,v2.1.7,argo-cd-3.26.10,2021-11-21,12:48:45,86.49638888888889 +argo-workflows,v3.2.4,2021-11-18,00:41:27,v3.2.4,argo-workflows-0.8.3,2021-11-21,18:59:21,90.29833333333333 +argo-workflows,v3.2.0,2021-10-12,16:28:36,v3.2.0,argo-workflows-0.7.3,2021-10-15,10:22:13,65.89361111111111 +argo-cd,v2.1.6,2021-10-28,20:08:23,v2.1.6,argo-cd-3.26.4,2021-10-31,11:57:25,63.81722222222222 +argo-cd,v2.1.5,2021-10-20,15:25:12,v2.1.5,argo-cd-3.26.3,2021-10-21,20:56:35,29.523055555555555 +argo-cd,,,,2.1.4,argo-cd-3.26.1,2021-10-20,06:32:59, +argo-cd,,,,2.1.3,argo-cd-3.23.1,2021-10-06,15:28:20, +argo-workflows,v3.1.8,2021-08-19,00:19:56,v3.1.8,argo-workflows-0.4.2,2021-08-23,11:13:42,106.89611111111111 +argo-cd,,,,2.1.2,argo-cd-3.17.6,2021-09-02,21:59:12, +argo-rollouts,v1.0.2,2021-06-15,22:33:04,v1.0.2,argo-rollouts-1.0.2,2021-07-07,15:18:22,520.755 +argo-cd,,,,2.1.1,argo-cd-3.17.2,2021-08-26,14:22:27, +argo-cd,,,,2.1.0,argo-cd-3.13.0,2021-08-23,12:14:11, +argo-workflows,v3.1.5,2021-08-04,07:14:30,v3.1.5,argo-workflows-0.4.0,2021-08-17,07:31:04,312.2761111111111 +argo-cd,,,,2.0.5,argo-cd-3.10.1,2021-07-27,01:33:24, +argo-workflows,v3.0.7,2021-05-25,19:08:55,v3.0.7,argo-workflows-0.2.6,2021-06-25,06:16:05,731.1194444444444 +argo-events,,,,1.3.1,argo-events-1.4.2,2021-05-21,16:00:05, +argo-cd,,,,2.0.4,argo-cd-3.6.11,2021-06-29,08:49:22, +argo-cd,,,,2.0.3,argo-cd-3.6.3,2021-05-29,08:42:00, +argo-workflows,v3.0.2,2021-04-20,15:37:15,v3.0.2,argo-workflows-0.1.1,2021-05-21,16:00:07,744.3811111111111 +argo-rollouts,v1.0.1,2021-05-26,08:43:12,v1.0.1,argo-rollouts-1.0.0,2021-05-31,16:06:49,127.39361111111111 +argo-rollouts,,,,0.10.2,argo-rollouts-0.5.3,2021-05-21,16:00:06, +argo-cd,,,,2.0.1,argo-cd-3.4.1,2021-05-21,16:00:04, diff --git a/scripts/release-analysis/plot_graph.py b/scripts/release-analysis/plot_graph.py new file mode 100644 index 00000000..8657fe20 --- /dev/null +++ b/scripts/release-analysis/plot_graph.py @@ -0,0 +1,58 @@ +import csv + +import matplotlib.pyplot as plt +from packaging import version + + +def plot_time_difference(csv_file): + # Read the CSV file and process the data + data = {"argo-cd": [], "argo-events": [], "argo-workflows": [], "argo-rollouts": []} + release_tags = { + "argo-cd": [], + "argo-events": [], + "argo-workflows": [], + "argo-rollouts": [], + } + with open(csv_file, mode="r") as file: + reader = csv.DictReader(file) + for row in reader: + repo = row["Repository"] + time_diff_str = row["Time Difference"] + release_tag = row["Release Tag"] + if repo in data and time_diff_str: + time_diff = float(time_diff_str) + data[repo].append(time_diff) + release_tags[repo].append(release_tag) + + # Sort the release tags based on semantic versioning + for repo in release_tags: + sorted_indices = sorted( + range(len(release_tags[repo])), + key=lambda i: version.parse(release_tags[repo][i]), + ) + release_tags[repo] = [release_tags[repo][i] for i in sorted_indices] + data[repo] = [data[repo][i] for i in sorted_indices] + + # Plot the data + for repo, time_diffs in data.items(): + plt.figure(figsize=(10, 6)) + plt.plot(release_tags[repo], time_diffs, marker="o", label=repo) + plt.axhline(y=72, color="r", linestyle="--", label="SLA (72 hours)") + plt.xlabel("Upstream Release Tag") + plt.ylabel( + "Time difference between upstream release and Helm Chart release (hours)" + ) + plt.title(f"Time to Release Helm Chart for {repo}") + plt.legend() + plt.grid(True) + plt.xticks(rotation=45) + plt.tight_layout() + plt.savefig(f"time_difference_plot_{repo}.png") + plt.close() + + print("The plots have been saved as 'time_difference_plot_.png'") + + +# Example usage +if __name__ == "__main__": + plot_time_difference("merged_releases.csv") diff --git a/scripts/release-analysis/requirements.txt b/scripts/release-analysis/requirements.txt new file mode 100644 index 00000000..1c1b383e --- /dev/null +++ b/scripts/release-analysis/requirements.txt @@ -0,0 +1,2 @@ +requests +matplotlib diff --git a/scripts/release-analysis/time_difference_plot_argo-cd.png b/scripts/release-analysis/time_difference_plot_argo-cd.png new file mode 100644 index 0000000000000000000000000000000000000000..738c0b983d2b5b7ef9b2e0782ba7637c5fb6588c GIT binary patch literal 84009 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 literal 0 HcmV?d00001 diff --git a/scripts/release-analysis/time_difference_plot_argo-events.png b/scripts/release-analysis/time_difference_plot_argo-events.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6c6431583a8994cc1188abb110857bebde0334 GIT binary patch literal 68592 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�*cG;HG6S9v5*mt!u^TGIf>8NT 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 literal 0 HcmV?d00001 diff --git a/scripts/release-analysis/time_difference_plot_argo-rollouts.png b/scripts/release-analysis/time_difference_plot_argo-rollouts.png new file mode 100644 index 0000000000000000000000000000000000000000..4a24f4912b2a6fc5a56ba66c03ba6219cacad7ac GIT binary patch literal 75003 zcmbTe2RPRM-#2_JA!L=2tjuhZY$BB?N(fnz2$dPxC6yFWY1z_JgoHA)8&+kMO(C*U zl=Zwm`d`=aT=#uH$MHOmmFXl$Api z$_jHj8hmGx@0|$#Q1#wn?tS3oQE%VFo{p5ghrQk1PI|i?vllq!=;?Lre$1 zb=6mB?^`F{d~b$AwPN+K#@*4t5VxbTB2=;Oh1FgahO}0tt0}0B=MFcNjL)e{XtPkW zur7ba?0s~cm-6rLtn%7og3DjV)S^SW|GwzUs1q(Of9X-(N?!Z#mEx4O-v3@HxXSLV z;lEejqwHyn`1jIvp{rH@^ZqO3{`*ZS|KHy9o}AFm%iHo?KDqIpxBmMhzdPCZ(ZrXN zrR}Qgb{K!Jd2rx?AssVwz7H4kubJ+Uw7qw?y8HNq>!-i2yC!y=H@2c6ctO=ff_%SF_3EqnG1QdymB+MBL`=+~K3>JSqd>l+qoZeZ z^zy`nd(p3!Lj_)gQG4xQdJQt+eXU1@zc_EPZ%o#{7#&@+i$Ca`Y{~43l#~?54Z=4H zbN&|Y)HSg*^z0DcyqPUzevR-jE#^^v%Cd!f*4P*6&W@%HW8%HBgP zxCo(IOY>`;>f?LIS=3Jb_^jwX+`LNZWLIUfc9`6$QS%{h)p%7Ode_#>DrT+uP=lK? zHv+7D$2!X6RlN2+wN%`4ta%{2)wbB5UFk$e*&Rh!IsfUQ9OkQUc33P~2?^$yJz|^2 zEjT>foUZIYy-C9K@wuKJJ7qOBAx%xbgIPA=<#uJy4p&UH96CAKc~tOmqm5ths>qrP zOuRZ+J}Ld|`x_E9nu<<)QOa<6dj|(Egfnp3&;9A2_5w-mg5`R0_?{-Z}ly;XTXx_pto zx{jI(m&5(ksTUTEy1KvLeNXDa5m)6nzLm4Dr0Xc~SlQInq|_o9;mx-jabSTnoxYycdvyn%@pXjBj5W>ogfUOx$7%k*zPo#PXy>2kWMOAtrOh%i z_G&y;|AquUX=isy5Gy~w?NCYS{1n6I{FBTF4<0Od^{W52Q(}30t`qS+Gx%1Ye~+Ynp|s#{Jn3@_b#SI{u=(DC#0 zb1~9vIoZYYCI6&siv}~l=4Cz&|FRDs*2>7p47FtoG4UwddAz@}L1`jnX(r_1fd@?S z2?@O;Bazx+H0+iuT(@w`JJs`id~C`<6Gl~1QsUg2$%|cmB(jyeB}!~;Nz>>1I@MF7 zbex==AD>vPJ@mqjiZZ`AH}2e?BZ7C@|G*h#!DoFWHL-M&M(amYSq4ZlT%=r zZhZLnX#0+86)a0i^itue>7o7J<6XSL!NFurnVWOj1pjf&=o1x`5YKRGT$<}%N)4D9 zW7f!O9cg-WK+OC5$JIZ-z3=Da7fdz&{QTJ3oZQ^W&#qY;aSb9lq+j=xhfU(Z`t!Sk zD-NA34wpQbY4>O9>#fa>^es;hiD}G4%9fN(^j0(#2lz@^6|f8s51SWyihRy^lj)<2VoR27^n;{eZc-^NpF2~PS<#K+-o3uMar?e>eRiwTU|yV! z?gPUFchtjzf&#s))8%JZacTH(!OPF!zVc}Jud9jX-_@FFZNQtgNkL)l%y_q~x4NQY zUSoE1)Xl3`L-DZ=wO2QCZEbPZ8^qf6ZFfJkymxycw^qYfT6DZCHuw+~;8HRL+IMcxEs$fGLcYxjIhz5Gi>nhbztxwdaaaekT5I(41q$ zW>K%cyguyu^>t6IUvYH4@~w#x+C?vIVOtuku~|Vuo>b&t{?p^#{Nm!`w-jADs-t)% zi`Rd=zxS@7ga6kX2lo|vI=)NN;>QiCyk?{sfqFwl!Kw*M)CfpLMY@HKw|VpCXMuk_ zpCA9ifisq!)=)&DA^ZL3U_;1}sQ`2Vw=XZ&gwd?g!I~QDe09M{YhfL>S0(l>3lEQ* z#{!loLxSN2@dNh-BqbSC6PVCN6c&GFg^)8ce`ZI;#>OV+@^KToWqV)YS%IE*r=+Tq zpgHnAv<&K3r+&P?d$J?~HL5=?TGM}Ya1BMqrsyJ?7++S=6g{~Jsy^R)aLJuN++WlD z;e$NZ)$HHD_WjjY{C>APWjnr&vkzikx5am1py)oO2V-}v;95_+ctmOWa*>t7?S**+sJY*(~(k0_qGc=1i=>|}rVg#|i3 z&A+G)7>~42Ff{&fZuf4+1WZKCfA=izU3(I?zU|l`9=QeeSEM!Asih+KWjG&b@`Fa ztB-$v&g$~%u?R0NVA75!qStmmG|h->#Ky!=cekcLc))P@@L?S+X6Y!6A#CgwlwMSq zn^B4Z_R4-_x5hAtgJM*S^_BJ98tVj8QqS{e)6E9W*}h$;cToh?ajmPkWfc@Y^v&%K)bKC1xuxcNBBkIl(8G{xKGvHK zK8W0d;kJ{d3!;=~v+X&@zig!no#+Y}w@?r1DLZpkKb6+Vjxt>78lrss_{Yh6}UuYZKH@8&d?(K0n)E#!{!FoCC_x zuc6SP>KMj&F!5_z`OiN~awR<=Wn5M;bxQcHXnKE5bpQ15hvt6%ka^aHzrQL%7Ju>| zadLVqPtCeNTnT&4&);7^8hvwhSy5>x&_tgfz=z3d4MD*b5fKr7i+=_^mKKAClXj+Q zzm1b-kY<+2#NrT8Q`>M&bZ<`EPt~LExcvP5)&+>W-juQK86S_ndXV$%`}_LH@~|oi{F7qZZIq}U@%E;y!%$<&#mLBOiFf1T z&f}suEG;fHmkgW@IC^ELP+wo)zTBgG{Z60m#pY;Mk(HH=M|Hj_Yb)dVuDSBiJ_2G` zS@#chV<(Hx`JFg%f@|}Ui_-;$398s*I>r9K?qw+mEV+)MLqr$ZdU{R?IkoX~Y%jmV zh>9U?`TQA|L0Z$c2Op>?dqmgv_4mhIyA}q3a40ZJcO?yDXlZFkMBk>Up&{pZ_0wzs z-J#LZ(cVS-({>Jh&XZi6DP3asug}OTv3wFR^2>jCPFzWe)5F8V-OFn``v0ZCD<}r} zv!9CrxDAsuuiUipUyWmIp2RXw#j@dOSm<6_q`k5;EMl#gB~M8I6(s?>6~TYL-n6gc z;ovZHHvPJ^IHUF4x#_jNO6lFZ8&GQ_!3O#}3cadc=KIM~ZmFO4Oi`vXFLo>0WdHOG zDrA}SmN%zt1ylQC(=W|QW)+&k4)6}lDf4F(oJtK?jC9;aF%gm7OIp5TR?|PeaOSzT?)38mSRXpWX&cCT zgeoPlGtiMhFXN&tt?9wz3w&$RE}-t+zO+4Lccm4}1;?LFprU(G)Q zYjt<-6jV|=s5&?@a%ku;?YLyMS?7K+GcKdd;HaYL1eO5(&tXOTv^FWuU zoqt?Qjb#;B%0sQ4V?O>!q<(YB@6WF0=<1?-@0`OWtpGj;Zry&KG5g_SXUcY3D^Mz} z#aW?K<6Tz>G$03T_S7=GDQ(wH2^-g1`NTZiL(B*APgut*d#u>Me}8!Fd~EeT_b0NY z^JK4VBarFa-IIa>0u=5mGz=V4n@mhtLQ^FoIF;i5{2X-n_U^VH*7_t^$?KXLT9-U- z6c>pc`k>QA)y$f+6s({az6wP0$Fz*}3#vjTdhTL|z#3tuVM@O_3h zf4@rx;*@V`2EBBf>CACtKo5y}dMMvA(7NPjy;@btu4A$4`^&QyXsrv}sQ|0Z^7nti z%M$&+ivy3f^!eG_3(n8aU*i1&+CrZYFk$ZOyosD7`bVV2Gy|uMdB;flO`9C^$2Rfj z)VFMzPT@~FJ0la-*tqZ39#Irui#um%LjlS+%F8$P*>rVvg_k(x=H{~U@*ejX^{}OV zYMG}4Dj;{VOWm!jXgz32MXPPd72I`BwG)DZuC+O|#ixIM^BXUonW*Bl?LjxKQD{(K zNx69W^7Y3FY^*WI2_@j;TPJuafVPjldyoX;&93Qv2?m?zU|d@*RM_=Z*aB(UGMVxkn%FPovSC?FkdiNa764 z+?gi6MWHD0&yRj7+$TMGN_NKRQAN@S9vqRYoJ zRB7qVL&g3+DdYVYf_R06h1dO^jm$X7=Qa#ghU3U>ZClV$;IZ?dD!pL0adFMZ+jG9A zJTRjXT|#ee6J)A{NUF1j4G?-uLNlW z&s|%YAWl`@l6TmLBkp+R%S_A6SBX_k|LY>hqfah@K+A+y~LLpsA!_0U2#qlpX8K3%~0<;yKRwybijvNhN+yv}YjY`*4 z8WN)Z^PK_~Y~^FqjD4t6g59Cw`X~%NU%!T%W|)Utn8_d|lN`Tg{)sDS z{kxC109{9pR#;n+H$*R%_Z-lBe(VFy1EZvB@E|F(N9y(Se||RQpR^?uM`%}+u8z(M ztdBF$;Uc3CBxwc_@qyg8Y9Q~X0uP7LuHp@(*rFHN+|8fx)6-{-hiBk3)pxb()<03jrFN#-eCNIe4 zGBMFU)=&s#y=8=iw%69z%lu%`)n%%=v(*)3v!u$0*>y?yg>1mHy^Ww(=RnpN z5)%{8mfNvFE!lXPOJ0X`a)*BF+@n{>`p`~mTIaI&xqTIV%8AaGXU#I$A;}3}-k@X% z^x-$E!O!tPfDZd9b6?udH7PhS9Yez?0lKs9zrLIHqOuXFzv`)(B#52GQ0J?BFqJqR z{%f>{#1fP}bo|B&2dQmsZMCyn86ag6MIqcaWWn^M=*ErODA4zM1_#9o3JX_**>Zwn z?0cy3Az-{%3>ZrXkdY1YQ8*|OJyZ(G>A6hhNliw|;rZD~k-r5NbCbhu*=f*A!*u%3 zoj=dfZaB6-TVoU67(6(x@!8?+kdt=EaWU%n`4z|o{q^3cs`@uuUVXOMZu9MP=y>Fa z&e~*g-r0IwVia%H)~%2Vh`#@!ZD~o*z`%4{oGbI3=2~j)wp^#^#uvvAmAAKBOiWC$ zfcptS_p9&Y&UQ3+a~s`WvkCgZ0Y3o7bIHj9Wf zmR}rzxGrAQ{{~Vy)SS*hbYE&(+J3-A^E?;Apgn+41m_;DWsTWf8=K52HNF4Y@o)jU zeUD74#x!=5Pffpe{rb6VhnhY>w2N1+glA+(s``#y25K)&mzdwFtLtbKM-AC1BxK+Z zK!4mRI&w1jx*%%sU-pDI(ms{t;c6!KMjxUK|>mB*Rlp{N4d&Lf+9 z!H?X1ee?aEl8@HaHIZKpK1I?pwc=uFHilThn@n9q8~TelQC`6*w`559lxJQ zehe-x>4(@CG*8W3N8F|4wvOO`;wqZeM|rD{YKYX-v^}Y4d-7mlmg}w$*WF*&d6Hrs z*20Dm5*F5d!)c(8i*T4I@91%HUs<*a$+*r;OzaChJJ#2?0zIHAh*jbL&07Xs&HIw< zxVzCPLDg~6oP}C<*RKB3r3G2EZowKZmVXl=Mne$TqBfMuSY=u}lX|DSXB zbj}eTiiwHgi2mfFIKQxPSdMF;K;u8AP{lP7ZRRy=ZuG;sB40Tm2LL3`eYiL-?-YuU zkH32R_M_TUAN8Y*R%ai}vjiI7{HoM#M_=&Lf^XnNIW3WWD9Nb6e(01-?}G;gB0qZw_0Cgk@cuT>5rFIy=v8NQ79z#?mFYjwW3AK%MDO-(~1C?WCYyN^mH=8cMq?BFYxE*ab#n04d5D?q1b zWVCC~9!845rcHXk<&W%cB(BPiNRHlLt+qF#_Qor-Vm(!Z%^pgnE=H$BlO7bxDg?H$ z3HYHn`ZO6*0dC z=l{dzC{lgDl572cHXy%4E|WuUVr;*ITgzd$mII!Fm*1INN9OZxW~`Ns8#m74YVQZMj_eQkJxa<5&vrcy87n$i zk;lXr!p6FaBSS+ekq(B2h7*&M%>Jws#-Rx$Hw;O`na{X zw_~-J0fE>IjYw)}6r0S%iD(lAg~a>K5cGUWR<-J<_rUtmP}W!EUZADBZfrxP$16FPLgp{GTr7<@f&jQPJ5J zVpzA3Im0qCGM)=th*N8C)7Pi(={4dSHA z0T@}ixHcXC%=vX-Kmf)G-h~p1D+S=)(8oQQ?e{)x+CM1eD?@1EyOQQ$0rnkr9-IH4 ztLvdUWtH0>cy8#Y*9LtI-R!V(AYvRHk&c0(0;*Kwz1?f)(Ng`sKYDQW>QxHr$lYpD z+C0lOH}p*hT7!?3avpKbZ2_W&C19KRg?$*DP#2n@RFn@`Agl*Ll$zBPVi&WmT}x^p zF-<7Xe8+9TN1wa38^8R9^FI$!TQd|D1#X~W%-b)^e*MF~I>pt>Z0nK9-Ph%a427PS4&Jk8Ps*CPRZd0x? z9>r!EJM8QPzJGkQvP|8p8`S3VdIcIZ2gvD_=T@(kJ5tN?NaPFd5%C@`b1TxHEdIp- z7d;GmOdnWX&hPZ)kU`AK_S2%=UcssthVJbdHoy9SYJB=pG+*yjert|d`R-l2c(PJs z9IeZ~zP*Y1A3%)eEnC(BB;kr~M`(ba-60?zG$xgp=%1g9Q|zV&>d0S?zQ1ES8sPT% z`DzrR9jI5NL=ke8aWE^c9x|8x%vdKli!P`Tar*3_O1Wi|g{rIDhC}KvQ9ltAzp||J z-k!^IQ_80jBV=A>`;O^C4g#%N1yBr-wE?trm0hBu*&~x#Xfuu34!dC1k`Gl;Q32CP zosI``V}NeC3q9%{sWgZCDkJFV=t9fww&ATN0A{o{$6dJMwE4Ci1UnPRa_}4X-q}(P zcw#WEiUt+1#krA!Z{pflpxZfn*uXga^5Qs04dF4Te;%b=oqC6&tCMb=g4<0A?GBz> z12r}j@Cjg(AYZ6wX}a0%vA{G$cD;6O?WxhWGs(%x#>d;nKR&uv>f>lgLW7LRawMfx1i++C*j zr6Kj+y)PmIDe1|NWh@&#qkY9su@I`1*!@c6L^M z^L^TyLqv0gY#;b{_yM{7Af^|bl7cwU$94dT^UZNb^QxUk7jS^QGuv9a7+$*gmjQnH z5-n~ecvY%7{{v9VWHdzZ1!lAp3IJSuJkRt@V(`!WX%s?%!ey-tPCHQ58jNH@Kh0JZBJr!kon&5S>$aoHO2RuLX-RNF?;Kf z6DNENhAt(YTEit*);9?lNCbbc!TR#|@7GY|jx`Ib&vbY-D?-k%0me?hV<&0$q>L!n z!-1BT+{CGbK9GzPql6+B0vxu2q&cA3|Eayj$1@(rtXW3fUf7uwx%}5%`6u}yO`nYh zAI{G5nCz<>>L^q=S|7if^3eL#R;;oMxU!{ft6!FuYEjBsTMtT1^YZgY-@7MF7C7V+ zie1-=<3>j;`fN&rgE~q>Y@-gLvg}`VU;*EVkL#JYp}`kii(w{ zk4>^KKI-vuMUU9GIG4ZIurU}wqP-*bBfzzMX=NH0hEuKtH6k97_uUD?_1kdz<1;J*i8 zi*P8V?!d713P;I3#3Gf**yrfzb9U_OSI6u)TNY|WecJoDwOJ5|(*Gqxhl{TALMUc3 z{AfJ`8%0;lu}|-ax@GG`(2$R=E_0gkqf5o_ih`s=s84gdD~adUDlwT-R%onowtZ{+ zTWJmaqGhArB9{gx0WD?z&tOt?U=$Q0!XyX|hCoiC41D|62Y1MLE}L7?1>#~as2JUv zHLL6lPeHdix#!N7)f9lTP+$}^oXEO1+S7i10?Nu zTf5-&Pf?VV-))1%M3RSh?b7lj0^7_U*#}_0tD+{>*4FYTI+Tn4e7kEr_Z>TaqlN}A zR2vD8cmgH6P7m^ae7Julslw>p9#aFmQPLloHxNKHF>uYOuhX}?s&w&}ER;|dvO6LC z2wMMy^yW}?iJdfOPcN@Y#W+fB4DVjrP9IXnBpPKcLWR+G| zMyw_JDYRWXNNdIn*%wZaJk58X8M7vSE3`<^1gV$4<1+7et}F{#nzO|nE1K<#gf^uO zMJ5~h6~BOho67Y-CW7MPt4|h9(g1Tq!3%QhE-5x=@1W|55KAmWek2kszZYk{1Iq5V z`UKbg0%H}-T9vgiLZmB$GCPn!*s0N5-d%Ndt05^?5FyXCMe6yPg=4> zKV}?chW;6sDbK}d{=#iN%nq|ra|o4Y1Ag#GNZthZJHcKf>!I0axRjervP+V2Uq(MW zTAbF>)ag9=U`_R}w+EP%5Bi=fggOd(MVv!yBQyU*NYLCgp&cxdyfLa=b#Tepg|M;6nN=4 zFZYeBpA?3GSSpH6|7^^2JxKCjKzZfmx4R=Q@|>}Jy39l!->joM8w$k~DsIh~f9L^mHg9YiDVriLtc41Q z@RuQIu7x+bZRbuJm?Cm+ZF0nVfGXr!ZGd-YdW>bry|_N2G)s&^srF^87#RDtPR(J5 z?!9#&HsOy`uLb3(YIB0SIl!amQg%<~nMD3{|0<4~aovNhZ%u0k;xAs5SeG%g95Ahu z-YR17cd6jx=q@YBKLdWtxziZIBivpwvA2aZqV~S`ul$4$j=HcMGZohlHueaj;hhJ03ZQc#L)Zc7KsL~~UhRnfiSP%zWX<328Cl6q&T_%?v-Z(iXj{mNEuGn!MrCJs&s4%R zB?O7VtBJXGdKdC<461EP&`3 zF`jqohvl9GRd(B;U+jp<@CPhF6^uY3vxfrOoW0z3RW1K=A{vRvB7$&wFTY_k)S#Jo zz+A+wfR~fq|sQJ4b1?xyih}uPZ9x0jwb|-dC3WhyQ6wz;DM=`VkC?N#a@- zW8~M*_BTB~~kvQjKsCh%G~+ zvrr`Y)V?AA7YcQlWR}2q<+y(y+$$n1+yf2$Y<|8Hu2CZ*Y{U^%)j~cFp{UBfU@%N= zkd%8hea3&`@QG-VsRC^85kqv zLk8aNLN76}S+QkBZlI@fy|=D58>vrHBjtJ#8#ozDuBs%u?g;rg zNzPHer8<%3CnzMu%E9rwaj+9<1C(24jgY~5-ubDwvXJ9`3e_Yc8u z0Qq2ILub8dAk6{s==u$G0oFK=SVd6yi`r@;+Jx)OW* zYGPs(GOzX!{7BdWNtAzr?LZl|_SIMqTP0qn#)yYH+;Vo5v5vwp06yF`zF8;(6EHB% z-$`j9%ukJsYa>b*B{V6CAAt|2YgYM1?eR{{AIf7}~wPH1o;E z{q3B{?Z7i4Tv0fAs?9ti2eLtKkf;aCWK#{%gSG2*@Kfme{P4*5;KUk2Yfiu7b$Bg{A$(STXIxtr$&iuygyz4Mol$L zS82Ws6Ny`U?$>A<-80Kz$m^4G`SS`ARh5IUuP={QFi+{i?+ql{0h~lay+j;^5V?v1 ztB;m~pdzOlUt#U$u*8^{jm58e5IrWL9g7@lXn1k`zp-twv)jE6CeUR1KUkqKB*nH% zceAHY&}=EKQ#8NN@iPN6F|BWi5?&=!#LLNffn?F(#3>pks*5kEdGt{upviYTN%8pS zbwCc1QytLqqDbHuKsLM{&c^DsqCH^SWw3_%3on-x5P=Nr7W!ygU!HZ5-+qbdZ{VRg z9!ufj9iMhcUV=(MDg#l7KR!A@#w>o1bxI~^d3|Fffix|xQsdIN*jPuJVxTtS6i%Rf z3Chc}679k8K?P*jY`;l+;zdRsCXH4*0wnVlAEhTVSKUx|U!{5YGF=uU}QLA5)AUN!8E5{U>n;?1)P|rPv}UQVubL zsBMvecN~RTfvC_#K@WzCQGgge2q@(pdrty?pitT^wAyf331p{|+;;ESSQJTh!AEay zUO?7uh)qokyS?ZdVlUqU_! z`0QQ0%37i~AS@%5xq#t=#^=WlM23*!K|~F#N>2THs-KIvI{E#<`>RInx^e=620`gCyT!9J^bkj5F zCvzsq;ZtL2$#W~6xC}MK?#*@a=;ExKH#t$GE|EYsq81eZ&&zH)q0yLWp?xEMz) zZaUwB)t~_`Ma-^HNZ0+CZnT49{IYeeab`W~|#BW&>%SoDTw6$U@zG&Lbcy`Yqdl5$pG2W$`!r zvtuzglbr_dT#b)$$an@cdmZd(1Dt3PiI#89&n=&ROs(gDx8ek)3lY;~%RCn{M*(iT zrcC|rqMeZn5KSuW?tsRhaRq9RsF=e}r`Wo=+<)H(P^$;I4m$eu1vCFFx}DK{$Fup1 zi|TSJg8-+=)COE4l5QCGBXTB0;{U#$E*8Q}l=%*Cz4~|BZu(nYasniQVktSlw3!(h zb?xkutFqB~YkdL;?6YI$h*(LnRno}pG;&H&#^=f%F=!-v32|Ev03O{_FB}`1kpX$5 z$Vg~d^4yMh$#buUrRvGQR4ul01}^++B{^<1fM~?FsCK5YLXWCKZRs5z7XOD-lJ|(F z)KYgUo!pvGjAnGNvYxrcgiFjnK1V854BG@c&Lp{!*s1`sHRv1Yz2^_woL&Wj=*g&! zn#d#}UP0%O`6t>L9ZlfY(!`|KS4LG8YzVG^@mMT>t&{2&<;m0IOIVcoRC92b9j zx9E)DJJWRQX0m}nM=t+gE5X!M=PlgmA{Ef4jvYG&7vrn|9Xu0o``pwnWfr)%>6PD5 z*ReU`>h4kl$#!*hfoW4w$b=aNvb2$&in(=bw)Q?L_qxWBc`M$2p(>Ldmq)Lzcu`Jv?-AfU~8v%rfP7j1W1(z^sN+h^q#n$v&4 z)6FwRMB6soeicAH6$L9`D-=0g6fkZ>ez1IH%CuKsVE~P#5{;qaIz2Zg{A=*TlD3wD96bQ#2KRAa-pu9shBhd;k zMnqu72!&NS;P(?N485_&tYlm3T}m5QFp|ezu;HE8>g!VXlS0E*Kz}0GiXi3})Jv};{^nU0v z@RO-v#U17+bD92|vbV)YXYg_R^lA<^^Lf{UR_|XWV8HK<^$ls*4nRj4-5S5!gdT#4 z5QC^Ma9wa-CTEldw6q7=e6joKP_A}B57_~O;cJly+2hY@M2DK$e8~jm!0Z#lMlqvA zt5H`@SsS+>NH`O1BYnhPzJT`YjCKR+_r6E;vSFAh^;`$_3IuXfi_iQHeY}uah$AGR zjqznxhKk33FNx2dk>mu6EE1B(zvLU$E8`|TTyZG~caS3Itmv+!yir7fHv5qUnKP|T zsWYy!_J-0=3}|3e3S8BJB4T~3+-keNhr*nsO*?hXm)uIhU1A1j`2da}YNuiLap+S9 zxm{EgNPDj_OtL>U;0HDq3amCp?l3b70a`QxaST7mW+ZTg=_EnmZrS2#Ho#^FkLcN1 zKgJDP8R27+AroXKuOg-F@&3_)2S{fHK$kgp?wlPuNK3IF?nllY6XCIq3Pan@=y)t2 zdpYhQl!Ou3ouQ}g_sG^U&%Tr^E0q8 zTKZlhaNY~q2G^+!v6p8dOTm|U)y!0r;Ix8z5cUhsRRPEujafqnv}lpQuVgoJM`!dg zt-Gb|B!c_w>7Mi4;tPT&xH92jo#s4QV4xU7#bx=0897WONKM5<55}2DMLjjoUO^}| z1lj$0E~fEXA$&xzMtbcE68$SFak92iHpTwEa2vMaVs1VDnN;8>hw_;)3ILU&4BVBV zzewFg9QGSSGeenJ1uu#^^dZTj8c!OsLE@!W`&(Mxsd`sPruO_7DnfeSY=jPp+%z%{ zlu*cauQ7%Lw3Cbo1PZxw;H=!=nQ@Y5Oa%yQ9G-&h1BnW(h(rPrOk}un?Z%DpCr{?J z7-O$pqq=pobHkPD&Hg^=V*dv>pRMoJUFS@Tv`-Iv`b?BXCri6dhxgjYDjZ*&GicX*9uBmCH7yUTmCVTy)cXCSIB^7!3&jp^%W;hKDTg75uzX{d zZK+^`)6t`;FfSe+%9p`)qNX6pt4WfD5N#~2Hb6{A?#m7e;84rc4Y2wrh94y950bG) z)b<|es1M;Xreu@ZWxQ~mY6+AC!R~k>kMDXFvqDOpTbvsF!u_JHlx1cE%=? z5<2&&{n8(Ei9bKz{Ld^_vxDRnW3eG%9u5ELG6II-=->Q(s*3yML{B*(|0IhGZ8h>I zFw{XM#@p4E3sD(W7yZdXB!!Q zyu0-{$x)L)2}qqF&=7^pZ%z+2tt9jUVvBoE85M@zsW7BK3L?c0nF?SfE=8Ah^@$ph zBtC(CmuLPO?N8S+V|Mk+KY^z*cR&7%e-B(dG8{(mx!sS?d7d5gkQa6U29Q2ODI=OF z{_^gQB18Vk?rK~PkC7H>GA9UV*IbH{Xz;QI9?d>XJHX^xPa@wi!=?P=1OA_Vd6TG0 zYU@2^{ME^y$~x_ArhSv1wh;BUE{9e_OpJD<j6#@iP8d1Q}&!kDc3 z<7a^$m+I%>6GG{ZF1io-XSP3D>k=;~x!wk&u8Rfhy(tsEAB0HX5x02QJ8ssJf}gdY zLkmYmCZY+20(4`-awlWw`RUx2CBXrPdml;7JpISiwR!$8%k!6*?4QP*Ln4e!F@L1X=- zeo;C2#J3Uq1Gz{L->!nTcf6V_HlLiIEZxr2T+E@jK ztk3Aip492z!xph)0f8mhcV6bAD%K3SZHYArk{ympcwI&Zy~a~nq%-V9qf1Ywua3SM z)7XQfzfRX0AWs=`gC( zSrd|^rsfQ?oP}Rb<9ah>sk+d)<1K z+ImH*TG>T2oRaPj9#|zZ`;+tbdly7=(JyoXC8X_rLc!5wJHOIY?ipgb+{w^HU+MyV?(AbLa9*RxZvqIoNbk8l~_F_|E z#QsYki44coex|lA(p0NChl}3cj~C}CV%?#O*h5qxGvuK1nscKHWHJjn>MY{PU;nAO zx^6ZxN=s~G+Dbrrt#>(>Jow476~wP&L~eCb;M8gwMlK3b72zC$f0ThIW*_??`X8Xb zkv&4Pm(jm`u)~SiJxqFW)EWQ};1;xYT_{!ba!@#SXs2 zEGh?riW3m(``;^dU;oFBD3iz9hy^hIiplMqC?`InW}0}WeU@up>19S1Ry2I;m3v9s&_r?BV;lJ&L167y*_ z6dBG6xEqIJ6axS+2RmYCpx9USH6fh8giy7U*mX*Tjn z|9RDu=R5isE!T8Re_Iu5^^I(k>hB_B*TjtC7Q2sZCPO^S!5c*vYQ&;Fe!w?)8hw>) zo1MpQ7DP7eegCF>;iH?$%uUJ7xFBD0RkcCG&Qh7OVErbz+<;R_`t6E;FHTF z{+{bc%xkJ=PkJ)V4wbGl{2u;~5AMOEQ!tEa4^0i;e0V*8%3%cP%%P1RTaHuHZrpW7 zIeD9`_ZWGW4()-*)C;%>&YvEC+TNfAzYl5X!2f!s?b#DHg`9WqSbx8TQ@(!Bgg|L- zU|xQIO%ah*c$7o>`epk>cad%8^`U+pIc=`SIu(gPtlynX>{CV5r?K&9oKWvf$LPovSG z$$m|3cUa;L2OSqP!$+hl7}ICWLEnch5`~oXDk3@}%SiSfr3{aAdFIr>M<#mkV277d zX8=`Wg5GwAo!Im#DBg#=U^wCGof~0o*QE+JJUQ782y{;v2ZCX8BD0f>H<`GB8VZo) z(wcb%p!jg}z1@v2e+;hSiVS=Slj#ytl%xfW+TU6FF&_=d_?$5^jw-v8@aUZTh6xh8 z)R!0d*r2Jk><>QgvZ8kj{#L5XD`va+Cq6>4Q~UH9>SKOKzKuzaoLPPZQq;L+Gx|p1 zocOnPuQ0PUNlo; zF*pXX*(J!ZvF?!vQvu0u6~pS63%nmj*^!=A>Sff~Hd=09g)s>N8~g3!H;=txL~-?%9Hv6jRgg z+mtP{^Hci~FPbn+`a8tRcVuJ&lOwx-YYd&9se2>85m$SR=Bd<-2>OAD#nDD6!NmAc zIS~#-k_LN|U2xDU zbG^4y!cLdgQ(8B|NgegjkT@Vff}24$w^@zk1UZta_iS%?;T z9_dMBXQJM{o3C_idv+K~l@u1lGlv=`qRyd^->65IN`tiw$F2$<@dO@^L(+w0LqF;l zi#>#7WPDP6%EMLhec38n3H_eFg2r14Zx*Z!O}cAdmoP_4y?ia?UC@SEcqb%R1#?0> zBhTvSDX<*-?u>sie5YlLDptfm4*D6H>84CT;Z8G7*C!E4GKc>EHZ4@`w#j-QvlYCJ(p5Qwnxqm)~>1$|KS@6Q4RUU3;M7Lqv%srXcP%p7DamEnLR_ z?Z*$uprN;Fg7;peI_T|f~#x@HJ3p^`lX{7*ICj}!?;5TpkzP{19yf;FA z^NYR+!#$F}eRihpTEFY3v;N-#gtI5*m&4gNoC53C?>sViORdOn{l{qD+=A>s1$V@# z$3)U^eyOpjOFHB~+#W*vTTpXu~>Q``Eh2E2Er|L0uO zgMl{P{{;3!AdlQa9VR32So3urZv|J;(5#?9D0Pw#3m)&%0A195DJm*j-FNyQrN5cT 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 WlFz;%?==kmtu$Y=BI7Hkp#K0Kw2$@x literal 0 HcmV?d00001 From 2a212836412cc5a4831c442062d03d711922f1f9 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 23:46:59 +0100 Subject: [PATCH 13/27] chore(argo-cd): Update dependency argoproj/argo-cd to v2.13.4 (#3145) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> --- charts/argo-cd/Chart.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index e29eb6fb..c932235e 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -1,9 +1,9 @@ apiVersion: v2 -appVersion: v2.13.3 +appVersion: v2.13.4 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.7.21 +version: 7.7.22 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -26,5 +26,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: fixed - description: remove required function in $cluster_key from clusterCredentials + - kind: changed + description: Bump argo-cd to v2.13.4 From c9e59be22ff60c8505b728c9d9916dd91194fc63 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:51:42 +0900 Subject: [PATCH 14/27] chore(deps): update actions/create-github-app-token action to v1.11.2 (#3147) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> --- .github/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index 087e124d..450330ba 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Get token - uses: actions/create-github-app-token@c1a285145b9d317df6ced56c09f525b5c2b6f755 # v1.11.1 + uses: actions/create-github-app-token@136412a57a7081aa63c935a2cc2918f76c34f514 # v1.11.2 id: get_token with: app-id: ${{ vars.RENOVATE_APP_ID }} From 4cfcbc2e26f30c164c966bcf71d266dbcdc2ac26 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 01:54:40 +0000 Subject: [PATCH 15/27] chore(argo-rollouts): Update dependency argoproj/argo-rollouts to v1.8.0 (#3146) * chore(argo-rollouts): Update dependency argoproj/argo-rollouts to v1.8.0 Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> * chore: Sync CRDs from upstream release Signed-off-by: Marco Maurer * chore: Bump minor chart version Signed-off-by: Marco Maurer --------- Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Signed-off-by: Marco Maurer Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: Marco Maurer Co-authored-by: Aikawa --- charts/argo-rollouts/Chart.yaml | 10 ++-- .../templates/crds/analysis-run-crd.yaml | 29 +++++++++- .../templates/crds/analysis-template-crd.yaml | 26 ++++++++- .../crds/cluster-analysis-template-crd.yaml | 26 ++++++++- .../templates/crds/experiment-crd.yaml | 2 +- .../templates/crds/rollout-crd.yaml | 55 ++++++++++++++++++- 6 files changed, 137 insertions(+), 11 deletions(-) diff --git a/charts/argo-rollouts/Chart.yaml b/charts/argo-rollouts/Chart.yaml index 757a6329..a9ed74ee 100644 --- a/charts/argo-rollouts/Chart.yaml +++ b/charts/argo-rollouts/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 -appVersion: v1.7.2 +appVersion: v1.8.0 description: A Helm chart for Argo Rollouts name: argo-rollouts -version: 2.38.2 +version: 2.39.0 home: https://github.com/argoproj/argo-helm icon: https://argoproj.github.io/argo-rollouts/assets/logo.png keywords: @@ -18,7 +18,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: added - description: Add lifecycle settings for controller - - kind: added - description: Add terminationGracePeriodSeconds for controller + - kind: changed + description: Bump argo-rollouts to v1.8.0 diff --git a/charts/argo-rollouts/templates/crds/analysis-run-crd.yaml b/charts/argo-rollouts/templates/crds/analysis-run-crd.yaml index d79c3608..d723b248 100644 --- a/charts/argo-rollouts/templates/crds/analysis-run-crd.yaml +++ b/charts/argo-rollouts/templates/crds/analysis-run-crd.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 {{- if .Values.keepCRDs }} "helm.sh/resource-policy": keep {{- end }} @@ -108,6 +108,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer @@ -217,6 +222,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: @@ -3025,6 +3037,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object @@ -3076,6 +3091,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer @@ -3210,6 +3234,9 @@ spec: consecutiveError: format: int32 type: integer + consecutiveSuccess: + format: int32 + type: integer count: format: int32 type: integer diff --git a/charts/argo-rollouts/templates/crds/analysis-template-crd.yaml b/charts/argo-rollouts/templates/crds/analysis-template-crd.yaml index 3c46bbad..b0f34229 100644 --- a/charts/argo-rollouts/templates/crds/analysis-template-crd.yaml +++ b/charts/argo-rollouts/templates/crds/analysis-template-crd.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 {{- if .Values.keepCRDs }} "helm.sh/resource-policy": keep {{- end }} @@ -104,6 +104,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer @@ -213,6 +218,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: @@ -3021,6 +3033,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object @@ -3072,6 +3087,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer diff --git a/charts/argo-rollouts/templates/crds/cluster-analysis-template-crd.yaml b/charts/argo-rollouts/templates/crds/cluster-analysis-template-crd.yaml index b7b07c2e..e8a9a6d4 100644 --- a/charts/argo-rollouts/templates/crds/cluster-analysis-template-crd.yaml +++ b/charts/argo-rollouts/templates/crds/cluster-analysis-template-crd.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 {{- if .Values.keepCRDs }} "helm.sh/resource-policy": keep {{- end }} @@ -104,6 +104,11 @@ spec: - type: integer - type: string x-kubernetes-int-or-string: true + consecutiveSuccessLimit: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true count: anyOf: - type: integer @@ -213,6 +218,13 @@ spec: type: object query: type: string + secretRef: + properties: + name: + type: string + namespaced: + type: boolean + type: object type: object graphite: properties: @@ -3021,6 +3033,9 @@ spec: type: string query: type: string + timeout: + format: int64 + type: integer required: - query type: object @@ -3072,6 +3087,15 @@ spec: type: boolean query: type: string + rangeQuery: + properties: + end: + type: string + start: + type: string + step: + type: string + type: object timeout: format: int64 type: integer diff --git a/charts/argo-rollouts/templates/crds/experiment-crd.yaml b/charts/argo-rollouts/templates/crds/experiment-crd.yaml index 2f2ea2dc..58c0e72e 100644 --- a/charts/argo-rollouts/templates/crds/experiment-crd.yaml +++ b/charts/argo-rollouts/templates/crds/experiment-crd.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 {{- if .Values.keepCRDs }} "helm.sh/resource-policy": keep {{- end }} diff --git a/charts/argo-rollouts/templates/crds/rollout-crd.yaml b/charts/argo-rollouts/templates/crds/rollout-crd.yaml index a22a9364..a883137d 100644 --- a/charts/argo-rollouts/templates/crds/rollout-crd.yaml +++ b/charts/argo-rollouts/templates/crds/rollout-crd.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 {{- if .Values.keepCRDs }} "helm.sh/resource-policy": keep {{- end }} @@ -672,6 +672,16 @@ spec: - type: string x-kubernetes-int-or-string: true type: object + plugin: + properties: + config: + type: object + x-kubernetes-preserve-unknown-fields: true + name: + type: string + required: + - name + type: object setCanaryScale: properties: matchTrafficWeight: @@ -944,6 +954,10 @@ spec: type: object annotationPrefix: type: string + canaryIngressAnnotations: + additionalProperties: + type: string + type: object stableIngress: type: string stableIngresses: @@ -3727,6 +3741,45 @@ spec: type: object stablePingPong: type: string + stepPluginStatuses: + items: + properties: + backoff: + type: string + disabled: + type: boolean + executions: + format: int32 + type: integer + finishedAt: + format: date-time + type: string + index: + format: int32 + type: integer + message: + type: string + name: + type: string + operation: + type: string + phase: + type: string + startedAt: + format: date-time + type: string + status: + type: object + x-kubernetes-preserve-unknown-fields: true + updatedAt: + format: date-time + type: string + required: + - index + - name + - operation + type: object + type: array weights: properties: additional: From 2602b7a364eb5e24db9be041da24810681e764d5 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 14:56:35 +0900 Subject: [PATCH 16/27] chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.153.2 (#3149) --- .github/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index 450330ba..e9cc0a19 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -30,7 +30,7 @@ jobs: with: configurationFile: .github/configs/renovate-config.js # renovate: datasource=docker depName=ghcr.io/renovatebot/renovate - renovate-version: 39.86.4 + renovate-version: 39.153.2 token: '${{ steps.get_token.outputs.token }}' mount-docker-socket: true env: From 55d2330df6ec86995d7a259d63ddfea956fc874e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 09:35:20 -0600 Subject: [PATCH 17/27] chore(deps): bump the dependencies group with 2 updates (#3150) --- .github/workflows/lint-and-test.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index f8f9fe02..c719d45d 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -32,7 +32,7 @@ jobs: version: v3.10.1 # Also update in publish.yaml - name: Set up python - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 + uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0 with: python-version: 3.9 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e9a10387..194c864e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -68,6 +68,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3.28.5 + uses: github/codeql-action/upload-sarif@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 with: sarif_file: results.sarif From ffacdd45f9468a574f3215a31316f76d65f4c46a Mon Sep 17 00:00:00 2001 From: iwin1203 Date: Mon, 3 Feb 2025 18:39:13 +0900 Subject: [PATCH 18/27] chore(argo-cd): Fix typo on README (#3153) fix typo in argocd chart readme Signed-off-by: Ganzidaeyong --- charts/argo-cd/Chart.yaml | 6 +++--- charts/argo-cd/README.md | 2 +- charts/argo-cd/README.md.gotmpl | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index c932235e..54f47290 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -3,7 +3,7 @@ appVersion: v2.13.4 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.7.22 +version: 7.7.23 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -26,5 +26,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: changed - description: Bump argo-cd to v2.13.4 + - kind: fixed + description: Fixed typo in README diff --git a/charts/argo-cd/README.md b/charts/argo-cd/README.md index 3a4a2560..bc557cd1 100644 --- a/charts/argo-cd/README.md +++ b/charts/argo-cd/README.md @@ -312,7 +312,7 @@ This version introduces authentication for Redis to mitigate GHSA-9766-5277-j5hr Upstream steps in the [FAQ] are not enough, since we chose a different approach. (We use a Kubernetes Job with [Chart Hooks] to create the auth secret `argocd-redis`.) -Steps to roteate the secret when using the helm chart (bold step is additional to upstream): +Steps to rotate the secret when using the helm chart (bold step is additional to upstream): * Delete `argocd-redis` secret in the namespace where Argo CD is installed. ```bash kubectl delete secret argocd-redis -n diff --git a/charts/argo-cd/README.md.gotmpl b/charts/argo-cd/README.md.gotmpl index 0520c40f..4e0f1ab5 100644 --- a/charts/argo-cd/README.md.gotmpl +++ b/charts/argo-cd/README.md.gotmpl @@ -312,7 +312,7 @@ This version introduces authentication for Redis to mitigate GHSA-9766-5277-j5hr Upstream steps in the [FAQ] are not enough, since we chose a different approach. (We use a Kubernetes Job with [Chart Hooks] to create the auth secret `argocd-redis`.) -Steps to roteate the secret when using the helm chart (bold step is additional to upstream): +Steps to rotate the secret when using the helm chart (bold step is additional to upstream): * Delete `argocd-redis` secret in the namespace where Argo CD is installed. ```bash kubectl delete secret argocd-redis -n From 6b1ea92acba9d15f423cc03efc4d7a18dee6f9b5 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:25:53 +0100 Subject: [PATCH 19/27] chore(deps): update renovatebot/github-action action to v41.0.12 (#3151) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> --- .github/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index e9cc0a19..87c2afac 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Self-hosted Renovate - uses: renovatebot/github-action@d385c88822a237acaead89c462fa0aef7502748f # v41.0.11 + uses: renovatebot/github-action@9ad1a8e771c002ece340d1ff028fae4503fe041b # v41.0.12 with: configurationFile: .github/configs/renovate-config.js # renovate: datasource=docker depName=ghcr.io/renovatebot/renovate From f30bcd682d92023c4631cbb44fe233d9d5310275 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 00:43:31 -0600 Subject: [PATCH 20/27] chore(deps): update actions/create-github-app-token action to v1.11.3 (#3156) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> --- .github/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index 87c2afac..b27a99ac 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Get token - uses: actions/create-github-app-token@136412a57a7081aa63c935a2cc2918f76c34f514 # v1.11.2 + uses: actions/create-github-app-token@67e27a7eb7db372a1c61a7f9bdab8699e9ee57f7 # v1.11.3 id: get_token with: app-id: ${{ vars.RENOVATE_APP_ID }} From c77cb712e078abbce1e015000a6057481580e3f8 Mon Sep 17 00:00:00 2001 From: "Marco Maurer (-Kilchhofer)" Date: Tue, 4 Feb 2025 12:25:53 +0100 Subject: [PATCH 21/27] feat(argo-cd): Update to Argo CD 2.14 (#3155) * feat(argo-cd): Update to Argo CD 2.14 Signed-off-by: Marco Maurer * fix: Add more customization options to commit-server Signed-off-by: Marco Maurer * fix: Bump appVersion to v2.14.1 Signed-off-by: Marco Maurer * fix: Add 'resources' to commit-server Signed-off-by: Marco Maurer * chore: Drop commitServer.service.type Signed-off-by: Marco Maurer * fix: Add ability to disable the commit-server Signed-off-by: Marco Maurer * chore: Drop commitServer.replicas since there are no upstream docs Signed-off-by: Marco Maurer * feat: Allow adding extraVolume and mounts Signed-off-by: Marco Maurer * chore: Disable commit-server by default Signed-off-by: Marco Maurer * feat: Dedicated metrics service with basic customization options Signed-off-by: Marco Maurer --------- Signed-off-by: Marco Maurer --- charts/argo-cd/Chart.yaml | 8 +- charts/argo-cd/README.md | 63 +- charts/argo-cd/README.md.gotmpl | 18 +- .../argo-cd/ci/with-commit-server-values.yaml | 3 + charts/argo-cd/templates/_helpers.tpl | 18 + .../deployment.yaml | 24 + .../statefulset.yaml | 30 + .../argocd-applicationset/deployment.yaml | 12 + .../argocd-commit-server/deployment.yaml | 238 ++++ .../argocd-commit-server/metrics.yaml | 35 + .../argocd-commit-server/networkpolicy.yaml | 25 + .../argocd-commit-server/service.yaml | 26 + .../argocd-commit-server/serviceaccount.yaml | 19 + .../argocd-repo-server/deployment.yaml | 6 + .../templates/argocd-server/deployment.yaml | 6 + .../templates/crds/crd-application.yaml | 387 ++++++ .../templates/crds/crd-applicationset.yaml | 1163 +++++++++++++++++ charts/argo-cd/values.yaml | 183 ++- 18 files changed, 2257 insertions(+), 7 deletions(-) create mode 100644 charts/argo-cd/ci/with-commit-server-values.yaml create mode 100644 charts/argo-cd/templates/argocd-commit-server/deployment.yaml create mode 100644 charts/argo-cd/templates/argocd-commit-server/metrics.yaml create mode 100644 charts/argo-cd/templates/argocd-commit-server/networkpolicy.yaml create mode 100644 charts/argo-cd/templates/argocd-commit-server/service.yaml create mode 100644 charts/argo-cd/templates/argocd-commit-server/serviceaccount.yaml diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index 54f47290..869e9e41 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -1,9 +1,9 @@ apiVersion: v2 -appVersion: v2.13.4 +appVersion: v2.14.1 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.7.23 +version: 7.8.0 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -26,5 +26,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: fixed - description: Fixed typo in README + - kind: changed + description: Bump argo-cd to v2.14.1 diff --git a/charts/argo-cd/README.md b/charts/argo-cd/README.md index bc557cd1..f1140f1f 100644 --- a/charts/argo-cd/README.md +++ b/charts/argo-cd/README.md @@ -708,7 +708,7 @@ NAME: my-release | global.logging.level | string | `"info"` | Set the global logging level. One of: `debug`, `info`, `warn` or `error` | | global.networkPolicy.create | bool | `false` | Create NetworkPolicy objects for all components | | global.networkPolicy.defaultDenyIngress | bool | `false` | Default deny all ingress traffic | -| global.nodeSelector | object | `{}` | Default node selector for all components | +| global.nodeSelector | object | `{"kubernetes.io/os":"linux"}` | Default node selector for all components | | global.podAnnotations | object | `{}` | Annotations for the all deployed pods | | global.podLabels | object | `{}` | Labels for the all deployed pods | | global.priorityClassName | string | `""` | Default priority class for all components | @@ -1621,6 +1621,65 @@ If you use an External Redis (See Option 3 above), this Job is not deployed. | notifications.topologySpreadConstraints | list | `[]` (defaults to global.topologySpreadConstraints) | Assign custom [TopologySpreadConstraints] rules to the application controller | | notifications.triggers | object | `{}` | The trigger defines the condition when the notification should be sent | +## Commit server (Manifest Hydrator) + +The Argo CD Commit Server provides push access to git repositories for hydrated manifests. + +To read more about this component, please read [Argo CD Manifest Hydrator] and [Manifest Hydrator]. + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| commitServer.affinity | object | `{}` (defaults to global.affinity preset) | Assign custom [affinity] rules | +| commitServer.automountServiceAccountToken | bool | `false` | Automount API credentials for the Service Account into the pod. | +| commitServer.containerSecurityContext | object | See [values.yaml] | commit server container-level security context | +| commitServer.deploymentAnnotations | object | `{}` | Annotations to be added to commit server Deployment | +| commitServer.deploymentStrategy | object | `{}` | Deployment strategy to be added to the commit server Deployment | +| commitServer.dnsConfig | object | `{}` | [DNS configuration] | +| commitServer.dnsPolicy | string | `"ClusterFirst"` | Alternative DNS policy for commit server pods | +| commitServer.enabled | bool | `false` | Enable commit server | +| commitServer.extraArgs | list | `[]` | commit server command line flags | +| commitServer.extraEnv | list | `[]` | Environment variables to pass to the commit server | +| commitServer.extraEnvFrom | list | `[]` (See [values.yaml]) | envFrom to pass to the commit server | +| commitServer.extraVolumeMounts | list | `[]` | List of extra mounts to add (normally used with extraVolumes) | +| commitServer.extraVolumes | list | `[]` | List of extra volumes to add | +| commitServer.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the commit server | +| commitServer.image.repository | string | `""` (defaults to global.image.repository) | Repository to use for the commit server | +| commitServer.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the commit server | +| commitServer.livenessProbe.enabled | bool | `true` | Enable Kubernetes liveness probe for commit server | +| commitServer.livenessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| commitServer.livenessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before [probe] is initiated | +| commitServer.livenessProbe.periodSeconds | int | `30` | How often (in seconds) to perform the [probe] | +| commitServer.livenessProbe.timeoutSeconds | int | `5` | Number of seconds after which the [probe] times out | +| commitServer.metrics.enabled | bool | `false` | Enables prometheus metrics server | +| commitServer.metrics.service.annotations | object | `{}` | Metrics service annotations | +| commitServer.metrics.service.clusterIP | string | `""` | Metrics service clusterIP. `None` makes a "headless service" (no virtual IP) | +| commitServer.metrics.service.labels | object | `{}` | Metrics service labels | +| commitServer.metrics.service.portName | string | `"metrics"` | Metrics service port name | +| commitServer.metrics.service.servicePort | int | `8087` | Metrics service port | +| commitServer.metrics.service.type | string | `"ClusterIP"` | Metrics service type | +| commitServer.name | string | `"commit-server"` | Commit server name | +| commitServer.nodeSelector | object | `{}` (defaults to global.nodeSelector) | [Node selector] | +| commitServer.podAnnotations | object | `{}` | Annotations for the commit server pods | +| commitServer.podLabels | object | `{}` | Labels for the commit server pods | +| commitServer.priorityClassName | string | `""` (defaults to global.priorityClassName) | Priority class for the commit server pods | +| commitServer.readinessProbe.enabled | bool | `true` | Enable Kubernetes liveness probe for commit server | +| commitServer.readinessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| commitServer.readinessProbe.initialDelaySeconds | int | `5` | Number of seconds after the container has started before [probe] is initiated | +| commitServer.readinessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| commitServer.readinessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| commitServer.resources | object | `{}` | Resource limits and requests for the commit server pods. | +| commitServer.runtimeClassName | string | `""` (defaults to global.runtimeClassName) | Runtime class name for the commit server | +| commitServer.service.annotations | object | `{}` | commit server service annotations | +| commitServer.service.labels | object | `{}` | commit server service labels | +| commitServer.serviceAccount.annotations | object | `{}` | Annotations applied to created service account | +| commitServer.serviceAccount.automountServiceAccountToken | bool | `true` | Automount API credentials for the Service Account | +| commitServer.serviceAccount.create | bool | `true` | Create commit server service account | +| commitServer.serviceAccount.labels | object | `{}` | Labels applied to created service account | +| commitServer.serviceAccount.name | string | `"argocd-commit-server"` | commit server service account name | +| commitServer.terminationGracePeriodSeconds | int | `30` | terminationGracePeriodSeconds for container lifecycle hook | +| commitServer.tolerations | list | `[]` (defaults to global.tolerations) | [Tolerations] for use with node taints | +| commitServer.topologySpreadConstraints | list | `[]` (defaults to global.topologySpreadConstraints) | Assign custom [TopologySpreadConstraints] rules to the commit server | + ---------------------------------------------- Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs) @@ -1653,3 +1712,5 @@ Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/ [Applications in any namespace]: https://argo-cd.readthedocs.io/en/stable/operator-manual/app-any-namespace/#applications-in-any-namespace [Argo CD Extensions]: https://github.com/argoproj-labs/argocd-extensions?tab=readme-ov-file#deprecation-notice [Argo CD Extension Installer]: https://github.com/argoproj-labs/argocd-extension-installer +[Argo CD Manifest Hydrator]: https://argo-cd.readthedocs.io/en/stable/proposals/manifest-hydrator/ +[Manifest Hydrator]: https://github.com/argoproj/argo-cd/blob/master/docs/proposals/manifest-hydrator.md diff --git a/charts/argo-cd/README.md.gotmpl b/charts/argo-cd/README.md.gotmpl index 4e0f1ab5..d2862792 100644 --- a/charts/argo-cd/README.md.gotmpl +++ b/charts/argo-cd/README.md.gotmpl @@ -672,7 +672,7 @@ NAME: my-release | Key | Type | Default | Description | |-----|------|---------|-------------| {{- range .Values }} - {{- if not (or (hasPrefix "global" .Key) (hasPrefix "configs" .Key) (hasPrefix "controller" .Key) (hasPrefix "repoServer" .Key) (hasPrefix "server" .Key) (hasPrefix "applicationSet" .Key) (hasPrefix "notifications" .Key) (hasPrefix "dex" .Key) (hasPrefix "redis" .Key) (hasPrefix "externalRedis" .Key) ) }} + {{- if not (or (hasPrefix "global" .Key) (hasPrefix "configs" .Key) (hasPrefix "controller" .Key) (hasPrefix "repoServer" .Key) (hasPrefix "server" .Key) (hasPrefix "applicationSet" .Key) (hasPrefix "notifications" .Key) (hasPrefix "dex" .Key) (hasPrefix "redis" .Key) (hasPrefix "externalRedis" .Key) (hasPrefix "commitServer" .Key) ) }} | {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} | {{- end }} {{- end }} @@ -813,6 +813,20 @@ If you use an External Redis (See Option 3 above), this Job is not deployed. {{- end }} {{- end }} +## Commit server (Manifest Hydrator) + +The Argo CD Commit Server provides push access to git repositories for hydrated manifests. + +To read more about this component, please read [Argo CD Manifest Hydrator] and [Manifest Hydrator]. + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +{{- range .Values }} + {{- if hasPrefix "commitServer" .Key }} +| {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} | + {{- end }} +{{- end }} + ---------------------------------------------- Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs) @@ -845,3 +859,5 @@ Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/ [Applications in any namespace]: https://argo-cd.readthedocs.io/en/stable/operator-manual/app-any-namespace/#applications-in-any-namespace [Argo CD Extensions]: https://github.com/argoproj-labs/argocd-extensions?tab=readme-ov-file#deprecation-notice [Argo CD Extension Installer]: https://github.com/argoproj-labs/argocd-extension-installer +[Argo CD Manifest Hydrator]: https://argo-cd.readthedocs.io/en/stable/proposals/manifest-hydrator/ +[Manifest Hydrator]: https://github.com/argoproj/argo-cd/blob/master/docs/proposals/manifest-hydrator.md diff --git a/charts/argo-cd/ci/with-commit-server-values.yaml b/charts/argo-cd/ci/with-commit-server-values.yaml new file mode 100644 index 00000000..b4ffedca --- /dev/null +++ b/charts/argo-cd/ci/with-commit-server-values.yaml @@ -0,0 +1,3 @@ +# Test Argo CD with optional component "commit-server" +commitServer: + enabled: true diff --git a/charts/argo-cd/templates/_helpers.tpl b/charts/argo-cd/templates/_helpers.tpl index 1ef054b1..aeaf3df8 100644 --- a/charts/argo-cd/templates/_helpers.tpl +++ b/charts/argo-cd/templates/_helpers.tpl @@ -177,6 +177,24 @@ Create the name of the notifications service account to use {{- end -}} {{- end -}} +{{/* +Create argocd commit-server name and version as used by the chart label. +*/}} +{{- define "argo-cd.commitServer.fullname" -}} +{{- printf "%s-%s" (include "argo-cd.fullname" .) .Values.commitServer.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create the name of the commit-server service account to use +*/}} +{{- define "argo-cd.commitServer.serviceAccountName" -}} +{{- if .Values.commitServer.serviceAccount.create -}} + {{ default (include "argo-cd.commitServer.fullname" .) .Values.commitServer.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.commitServer.serviceAccount.name }} +{{- end -}} +{{- end -}} + {{/* Argo Configuration Preset Values (Influenced by Values configuration) */}} diff --git a/charts/argo-cd/templates/argocd-application-controller/deployment.yaml b/charts/argo-cd/templates/argocd-application-controller/deployment.yaml index e61a8525..0b8285b7 100644 --- a/charts/argo-cd/templates/argocd-application-controller/deployment.yaml +++ b/charts/argo-cd/templates/argocd-application-controller/deployment.yaml @@ -175,6 +175,12 @@ spec: name: argocd-cmd-params-cm key: controller.self.heal.backoff.cap.seconds optional: true + - name: ARGOCD_APPLICATION_CONTROLLER_SYNC_TIMEOUT + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: controller.sync.timeout.seconds + optional: true - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT valueFrom: configMapKeyRef: @@ -311,6 +317,24 @@ spec: name: argocd-cmd-params-cm key: controller.ignore.normalizer.jq.timeout optional: true + - name: ARGOCD_HYDRATOR_ENABLED + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: hydrator.enabled + optional: true + - name: ARGOCD_CLUSTER_CACHE_BATCH_EVENTS_PROCESSING + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: controller.cluster.cache.batch.events.processing + optional: true + - name: ARGOCD_CLUSTER_CACHE_EVENTS_PROCESSING_INTERVAL + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: controller.cluster.cache.events.processing.interval + optional: true {{- with .Values.controller.envFrom }} envFrom: {{- toYaml . | nindent 10 }} diff --git a/charts/argo-cd/templates/argocd-application-controller/statefulset.yaml b/charts/argo-cd/templates/argocd-application-controller/statefulset.yaml index a907ac76..733290d1 100644 --- a/charts/argo-cd/templates/argocd-application-controller/statefulset.yaml +++ b/charts/argo-cd/templates/argocd-application-controller/statefulset.yaml @@ -174,6 +174,12 @@ spec: name: argocd-cmd-params-cm key: controller.self.heal.backoff.cap.seconds optional: true + - name: ARGOCD_APPLICATION_CONTROLLER_SYNC_TIMEOUT + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: controller.sync.timeout.seconds + optional: true - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT valueFrom: configMapKeyRef: @@ -310,6 +316,26 @@ spec: name: argocd-cmd-params-cm key: controller.ignore.normalizer.jq.timeout optional: true + - name: ARGOCD_HYDRATOR_ENABLED + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: hydrator.enabled + optional: true + - name: ARGOCD_CLUSTER_CACHE_BATCH_EVENTS_PROCESSING + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: controller.cluster.cache.batch.events.processing + optional: true + - name: ARGOCD_CLUSTER_CACHE_EVENTS_PROCESSING_INTERVAL + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: controller.cluster.cache.events.processing.interval + optional: true + - name: KUBECACHEDIR + value: /tmp/kubecache {{- with .Values.controller.envFrom }} envFrom: {{- toYaml . | nindent 10 }} @@ -344,6 +370,8 @@ spec: name: argocd-home - name: argocd-cmd-params-cm mountPath: /home/argocd/params + - name: argocd-application-controller-tmp + mountPath: /tmp {{- with .Values.controller.extraContainers }} {{- tpl (toYaml .) $ | nindent 6 }} {{- end }} @@ -385,6 +413,8 @@ spec: {{- else }} emptyDir: {} {{- end }} + - emptyDir: {} + name: argocd-application-controller-tmp - name: argocd-repo-server-tls secret: secretName: argocd-repo-server-tls diff --git a/charts/argo-cd/templates/argocd-applicationset/deployment.yaml b/charts/argo-cd/templates/argocd-applicationset/deployment.yaml index 303106b5..9c085123 100644 --- a/charts/argo-cd/templates/argocd-applicationset/deployment.yaml +++ b/charts/argo-cd/templates/argocd-applicationset/deployment.yaml @@ -151,6 +151,12 @@ spec: key: applicationsetcontroller.enable.progressive.syncs name: argocd-cmd-params-cm optional: true + - name: ARGOCD_APPLICATIONSET_CONTROLLER_TOKENREF_STRICT_MODE + valueFrom: + configMapKeyRef: + key: applicationsetcontroller.enable.tokenref.strict.mode + name: argocd-cmd-params-cm + optional: true - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_NEW_GIT_FILE_GLOBBING valueFrom: configMapKeyRef: @@ -211,6 +217,12 @@ spec: name: argocd-cmd-params-cm key: applicationsetcontroller.webhook.parallelism.limit optional: true + - name: ARGOCD_APPLICATIONSET_CONTROLLER_REQUEUE_AFTER + valueFrom: + configMapKeyRef: + key: applicationsetcontroller.requeue.after + name: argocd-cmd-params-cm + optional: true {{- with .Values.applicationSet.extraEnvFrom }} envFrom: {{- toYaml . | nindent 12 }} diff --git a/charts/argo-cd/templates/argocd-commit-server/deployment.yaml b/charts/argo-cd/templates/argocd-commit-server/deployment.yaml new file mode 100644 index 00000000..96cf6575 --- /dev/null +++ b/charts/argo-cd/templates/argocd-commit-server/deployment.yaml @@ -0,0 +1,238 @@ +{{- if .Values.commitServer.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + {{- with (mergeOverwrite (deepCopy .Values.global.deploymentAnnotations) .Values.commitServer.deploymentAnnotations) }} + annotations: + {{- range $key, $value := . }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} + name: {{ template "argo-cd.commitServer.fullname" . }} + namespace: {{ include "argo-cd.namespace" . }} + labels: + {{- include "argo-cd.labels" (dict "context" . "component" .Values.commitServer.name "name" .Values.commitServer.name) | nindent 4 }} +spec: + {{- with include "argo-cd.strategy" (mergeOverwrite (deepCopy .Values.global.deploymentStrategy) .Values.commitServer.deploymentStrategy) }} + strategy: + {{- trim . | nindent 4 }} + {{- end }} + revisionHistoryLimit: {{ .Values.global.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.commitServer.name) | nindent 6 }} + template: + metadata: + annotations: + {{- with (mergeOverwrite (deepCopy .Values.global.podAnnotations) .Values.commitServer.podAnnotations) }} + {{- range $key, $value := . }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} + labels: + {{- include "argo-cd.labels" (dict "context" . "component" .Values.commitServer.name "name" .Values.commitServer.name) | nindent 8 }} + {{- with (mergeOverwrite (deepCopy .Values.global.podLabels) .Values.commitServer.podLabels) }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.commitServer.runtimeClassName | default .Values.global.runtimeClassName }} + runtimeClassName: {{ . }} + {{- end }} + {{- with .Values.commitServer.imagePullSecrets | default .Values.global.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.global.hostAliases }} + hostAliases: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.global.securityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.commitServer.priorityClassName | default .Values.global.priorityClassName }} + priorityClassName: {{ . }} + {{- end }} + {{- with .Values.commitServer.terminationGracePeriodSeconds }} + terminationGracePeriodSeconds: {{ . }} + {{- end }} + serviceAccountName: {{ include "argo-cd.commitServer.serviceAccountName" . }} + automountServiceAccountToken: {{ .Values.commitServer.automountServiceAccountToken }} + containers: + - name: {{ .Values.commitServer.name }} + image: {{ default .Values.global.image.repository .Values.commitServer.image.repository }}:{{ default (include "argo-cd.defaultTag" .) .Values.commitServer.image.tag }} + imagePullPolicy: {{ default .Values.global.image.imagePullPolicy .Values.commitServer.image.imagePullPolicy }} + args: + - /usr/local/bin/argocd-commit-server + {{- with .Values.commitServer.extraArgs }} + {{- toYaml . | nindent 8 }} + {{- end }} + env: + {{- with (concat .Values.global.env .Values.commitServer.extraEnv) }} + {{- toYaml . | nindent 10 }} + {{- end }} + - name: ARGOCD_COMMIT_SERVER_LISTEN_ADDRESS + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: commitserver.listen.address + optional: true + - name: ARGOCD_COMMIT_SERVER_METRICS_LISTEN_ADDRESS + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: commitserver.metrics.listen.address + optional: true + - name: ARGOCD_COMMIT_SERVER_LOGFORMAT + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: commitserver.log.format + optional: true + - name: ARGOCD_COMMIT_SERVER_LOGLEVEL + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: commitserver.log.level + optional: true + - name: ARGOCD_LOG_FORMAT_TIMESTAMP + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: log.format.timestamp + optional: true + {{- with .Values.commitServer.envFrom }} + envFrom: + {{- toYaml . | nindent 10 }} + {{- end }} + ports: + - containerPort: 8086 + name: server + protocol: TCP + - containerPort: 8087 + name: metrics + protocol: TCP + {{- if .Values.commitServer.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: /healthz?full=true + port: 8087 + initialDelaySeconds: {{ .Values.commitServer.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.commitServer.livenessProbe.periodSeconds }} + failureThreshold: {{ .Values.commitServer.livenessProbe.failureThreshold }} + timeoutSeconds: {{ .Values.commitServer.livenessProbe.timeoutSeconds }} + {{- end }} + {{- if .Values.commitServer.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: /healthz + port: 8087 + initialDelaySeconds: {{ .Values.commitServer.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.commitServer.readinessProbe.periodSeconds }} + failureThreshold: {{ .Values.commitServer.readinessProbe.failureThreshold }} + timeoutSeconds: {{ .Values.commitServer.readinessProbe.timeoutSeconds }} + {{- end }} + resources: + {{- toYaml .Values.commitServer.resources | nindent 10 }} + {{- with .Values.commitServer.containerSecurityContext }} + securityContext: + {{- toYaml . | nindent 10 }} + {{- end }} + {{- with .Values.commitServer.lifecycle }} + lifecycle: + {{- toYaml . | nindent 10 }} + {{- end }} + volumeMounts: + {{- with .Values.commitServer.extraVolumeMounts }} + {{- toYaml . | nindent 8 }} + {{- end }} + - name: ssh-known-hosts + mountPath: /app/config/ssh + - name: tls-certs + mountPath: /app/config/tls + - name: gpg-keys + mountPath: /app/config/gpg/source + - name: gpg-keyring + mountPath: /app/config/gpg/keys + # We need a writeable temp directory for the askpass socket file. + - name: tmp + mountPath: /tmp + initContainers: + - command: + - /bin/cp + - -n + - /usr/local/bin/argocd + - /var/run/argocd/argocd-cmp-server + image: {{ default .Values.global.image.repository .Values.commitServer.image.repository }}:{{ default (include "argo-cd.defaultTag" .) .Values.commitServer.image.tag }} + name: copyutil + resources: + {{- toYaml .Values.commitServer.resources | nindent 10 }} + {{- with .Values.commitServer.containerSecurityContext }} + securityContext: + {{- toYaml . | nindent 10 }} + {{- end }} + volumeMounts: + - mountPath: /var/run/argocd + name: var-files + volumes: + {{- with .Values.commitServer.extraVolumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + - name: ssh-known-hosts + configMap: + name: argocd-ssh-known-hosts-cm + - name: tls-certs + configMap: + name: argocd-tls-certs-cm + - name: gpg-keys + configMap: + name: argocd-gpg-keys-cm + - name: gpg-keyring + emptyDir: {} + - name: tmp + emptyDir: {} + - name: argocd-commit-server-tls + secret: + secretName: argocd-commit-server-tls + optional: true + items: + - key: tls.crt + path: tls.crt + - key: tls.key + path: tls.key + - key: ca.crt + path: ca.crt + - emptyDir: {} + name: var-files + {{- with include "argo-cd.affinity" (dict "context" . "component" .Values.commitServer) }} + affinity: + {{- trim . | nindent 8 }} + {{- end }} + {{- with .Values.commitServer.nodeSelector | default .Values.global.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.commitServer.tolerations | default .Values.global.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.commitServer.topologySpreadConstraints | default .Values.global.topologySpreadConstraints }} + topologySpreadConstraints: + {{- range $constraint := . }} + - {{ toYaml $constraint | nindent 8 | trim }} + {{- if not $constraint.labelSelector }} + labelSelector: + matchLabels: + {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.commitServer.name) | nindent 12 }} + {{- end }} + {{- end }} + {{- end }} + {{- if .Values.commitServer.hostNetwork }} + hostNetwork: {{ .Values.commitServer.hostNetwork }} + {{- end }} + {{- with .Values.commitServer.dnsConfig }} + dnsConfig: + {{- toYaml . | nindent 8 }} + {{- end }} + dnsPolicy: {{ .Values.commitServer.dnsPolicy }} +{{- end }} diff --git a/charts/argo-cd/templates/argocd-commit-server/metrics.yaml b/charts/argo-cd/templates/argocd-commit-server/metrics.yaml new file mode 100644 index 00000000..7d198a70 --- /dev/null +++ b/charts/argo-cd/templates/argocd-commit-server/metrics.yaml @@ -0,0 +1,35 @@ +{{- if and .Values.commitServer.enabled .Values.commitServer.metrics.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "argo-cd.commitServer.fullname" . }}-metrics + namespace: {{ include "argo-cd.namespace" . }} + labels: + {{- include "argo-cd.labels" (dict "context" . "component" .Values.commitServer.name "name" "metrics") | nindent 4 }} + {{- with .Values.commitServer.metrics.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if or .Values.commitServer.metrics.service.annotations .Values.global.addPrometheusAnnotations }} + annotations: + {{- if .Values.global.addPrometheusAnnotations }} + prometheus.io/port: {{ .Values.commitServer.metrics.service.servicePort | quote }} + prometheus.io/scrape: "true" + {{- end }} + {{- range $key, $value := .Values.commitServer.metrics.service.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} +spec: + type: {{ .Values.commitServer.metrics.service.type }} + {{- if and .Values.commitServer.metrics.service.clusterIP (eq .Values.commitServer.metrics.service.type "ClusterIP") }} + clusterIP: {{ .Values.commitServer.metrics.service.clusterIP }} + {{- end }} + {{- include "argo-cd.dualStack" . | indent 2 }} + ports: + - name: {{ .Values.commitServer.metrics.service.portName }} + protocol: TCP + port: {{ .Values.commitServer.metrics.service.servicePort }} + targetPort: 8087 + selector: + {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.commitServer.name) | nindent 4 }} +{{- end }} diff --git a/charts/argo-cd/templates/argocd-commit-server/networkpolicy.yaml b/charts/argo-cd/templates/argocd-commit-server/networkpolicy.yaml new file mode 100644 index 00000000..6ec0a6ac --- /dev/null +++ b/charts/argo-cd/templates/argocd-commit-server/networkpolicy.yaml @@ -0,0 +1,25 @@ +{{- if and .Values.commitServer.enabled .Values.global.networkPolicy.create }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ template "argo-cd.commitServer.fullname" . }} + namespace: {{ include "argo-cd.namespace" . }} +spec: + podSelector: + matchLabels: + {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.commitServer.name) | nindent 6 }} + policyTypes: + - Ingress + ingress: + - from: + - podSelector: + matchLabels: + {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.controller.name) | nindent 14 }} + ports: + - protocol: TCP + port: 8086 + - from: + - namespaceSelector: { } + ports: + - port: 8087 +{{- end }} diff --git a/charts/argo-cd/templates/argocd-commit-server/service.yaml b/charts/argo-cd/templates/argocd-commit-server/service.yaml new file mode 100644 index 00000000..7b0bf878 --- /dev/null +++ b/charts/argo-cd/templates/argocd-commit-server/service.yaml @@ -0,0 +1,26 @@ +{{- if .Values.commitServer.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "argo-cd.commitServer.fullname" . }} + namespace: {{ include "argo-cd.namespace" . }} + labels: + {{- include "argo-cd.labels" (dict "context" . "component" .Values.commitServer.name "name" .Values.commitServer.name) | nindent 4 }} + {{- with .Values.commitServer.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.commitServer.service.annotations }} + annotations: + {{- range $key, $value := . }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} +spec: + ports: + - name: server + protocol: TCP + port: 8086 + targetPort: 8086 + selector: + {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.commitServer.name) | nindent 4 }} +{{- end }} diff --git a/charts/argo-cd/templates/argocd-commit-server/serviceaccount.yaml b/charts/argo-cd/templates/argocd-commit-server/serviceaccount.yaml new file mode 100644 index 00000000..d0cf9e73 --- /dev/null +++ b/charts/argo-cd/templates/argocd-commit-server/serviceaccount.yaml @@ -0,0 +1,19 @@ +{{- if and .Values.commitServer.enabled .Values.commitServer.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: {{ .Values.commitServer.serviceAccount.automountServiceAccountToken }} +metadata: + name: {{ include "argo-cd.commitServer.serviceAccountName" . }} + namespace: {{ include "argo-cd.namespace" . }} + {{- with .Values.commitServer.serviceAccount.annotations }} + annotations: + {{- range $key, $value := . }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} + labels: + {{- include "argo-cd.labels" (dict "context" . "component" .Values.commitServer.name "name" .Values.commitServer.name) | nindent 4 }} + {{- with .Values.commitServer.serviceAccount.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/argo-cd/templates/argocd-repo-server/deployment.yaml b/charts/argo-cd/templates/argocd-repo-server/deployment.yaml index 2617251d..f12332e9 100755 --- a/charts/argo-cd/templates/argocd-repo-server/deployment.yaml +++ b/charts/argo-cd/templates/argocd-repo-server/deployment.yaml @@ -239,6 +239,12 @@ spec: name: argocd-cmd-params-cm key: reposerver.plugin.tar.exclusions optional: true + - name: ARGOCD_REPO_SERVER_PLUGIN_USE_MANIFEST_GENERATE_PATHS + valueFrom: + configMapKeyRef: + key: reposerver.plugin.use.manifest.generate.paths + name: argocd-cmd-params-cm + optional: true - name: ARGOCD_REPO_SERVER_ALLOW_OUT_OF_BOUNDS_SYMLINKS valueFrom: configMapKeyRef: diff --git a/charts/argo-cd/templates/argocd-server/deployment.yaml b/charts/argo-cd/templates/argocd-server/deployment.yaml index cc5f7bfe..0b75f062 100755 --- a/charts/argo-cd/templates/argocd-server/deployment.yaml +++ b/charts/argo-cd/templates/argocd-server/deployment.yaml @@ -373,6 +373,12 @@ spec: name: argocd-cmd-params-cm key: applicationsetcontroller.enable.scm.providers optional: true + - name: ARGOCD_HYDRATOR_ENABLED + valueFrom: + configMapKeyRef: + name: argocd-cmd-params-cm + key: hydrator.enabled + optional: true {{- with .Values.server.envFrom }} envFrom: {{- toYaml . | nindent 10 }} diff --git a/charts/argo-cd/templates/crds/crd-application.yaml b/charts/argo-cd/templates/crds/crd-application.yaml index 7e3afda6..2c69f9ba 100644 --- a/charts/argo-cd/templates/crds/crd-application.yaml +++ b/charts/argo-cd/templates/crds/crd-application.yaml @@ -319,6 +319,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema validation + (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -466,6 +474,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is displayed + in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. @@ -685,6 +697,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema + validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -834,6 +854,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is displayed + in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. @@ -1166,6 +1190,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema validation + (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation step + (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -1312,6 +1344,10 @@ spec: use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is displayed + in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. @@ -1378,6 +1414,64 @@ spec: required: - repoURL type: object + sourceHydrator: + description: SourceHydrator provides a way to push hydrated manifests + back to git before syncing them to the cluster. + properties: + drySource: + description: DrySource specifies where the dry "don't repeat yourself" + manifest source lives. + properties: + path: + description: Path is a directory path within the Git repository + where the manifests are located + type: string + repoURL: + description: RepoURL is the URL to the git repository that + contains the application manifests + type: string + targetRevision: + description: TargetRevision defines the revision of the source + to hydrate + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + description: |- + HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then + have to move manifests to the SyncSource, e.g. by pull request. + properties: + targetBranch: + description: TargetBranch is the branch to which hydrated + manifests should be committed + type: string + required: + - targetBranch + type: object + syncSource: + description: SyncSource specifies where to sync hydrated manifests + from. + properties: + path: + description: |- + Path is a directory path within the git repository where hydrated manifests should be committed to and synced + from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced. + type: string + targetBranch: + description: TargetBranch is the branch to which hydrated + manifests should be committed + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: description: Sources is a reference to the location of the application's manifests or chart @@ -1523,6 +1617,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema validation + (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -1670,6 +1772,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is displayed + in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. @@ -1848,6 +1954,11 @@ spec: description: Health contains information about the application's current health status properties: + lastTransitionTime: + description: LastTransitionTime is the time the HealthStatus was + set or updated + format: date-time + type: string message: description: Message is a human-readable informational message describing the health status @@ -2045,6 +2156,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema + validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -2194,6 +2313,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is displayed + in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. @@ -2414,6 +2537,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema + validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -2565,6 +2696,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is + displayed in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. @@ -2933,6 +3068,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema + validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -3085,6 +3228,11 @@ spec: Kustomize to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and + is displayed in the UI. It is used in multi-source + Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced @@ -3320,6 +3468,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON + schema validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -3475,6 +3631,11 @@ spec: of Kustomize to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and + is displayed in the UI. It is used in multi-source + Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications @@ -3824,6 +3985,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema + validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -3975,6 +4144,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is + displayed in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. @@ -4205,6 +4378,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema + validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -4357,6 +4538,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is + displayed in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced @@ -4463,6 +4648,11 @@ spec: description: HealthStatus contains information about the currently observed health state of an application or resource properties: + lastTransitionTime: + description: LastTransitionTime is the time the HealthStatus + was set or updated + format: date-time + type: string message: description: Message is a human-readable informational message describing the health status @@ -4480,6 +4670,8 @@ spec: type: string namespace: type: string + requiresDeletionConfirmation: + type: boolean requiresPruning: type: boolean status: @@ -4493,6 +4685,177 @@ spec: type: string type: object type: array + sourceHydrator: + description: SourceHydrator stores information about the current state + of source hydration + properties: + currentOperation: + description: CurrentOperation holds the status of the hydrate + operation + properties: + drySHA: + description: DrySHA holds the resolved revision (sha) of the + dry source as of the most recent reconciliation + type: string + finishedAt: + description: FinishedAt indicates when the hydrate operation + finished + format: date-time + type: string + hydratedSHA: + description: HydratedSHA holds the resolved revision (sha) + of the hydrated source as of the most recent reconciliation + type: string + message: + description: Message contains a message describing the current + status of the hydrate operation + type: string + phase: + description: Phase indicates the status of the hydrate operation + enum: + - Hydrating + - Failed + - Hydrated + type: string + sourceHydrator: + description: SourceHydrator holds the hydrator config used + for the hydrate operation + properties: + drySource: + description: DrySource specifies where the dry "don't + repeat yourself" manifest source lives. + properties: + path: + description: Path is a directory path within the Git + repository where the manifests are located + type: string + repoURL: + description: RepoURL is the URL to the git repository + that contains the application manifests + type: string + targetRevision: + description: TargetRevision defines the revision of + the source to hydrate + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + description: |- + HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then + have to move manifests to the SyncSource, e.g. by pull request. + properties: + targetBranch: + description: TargetBranch is the branch to which hydrated + manifests should be committed + type: string + required: + - targetBranch + type: object + syncSource: + description: SyncSource specifies where to sync hydrated + manifests from. + properties: + path: + description: |- + Path is a directory path within the git repository where hydrated manifests should be committed to and synced + from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced. + type: string + targetBranch: + description: TargetBranch is the branch to which hydrated + manifests should be committed + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object + startedAt: + description: StartedAt indicates when the hydrate operation + started + format: date-time + type: string + required: + - message + - phase + type: object + lastSuccessfulOperation: + description: LastSuccessfulOperation holds info about the most + recent successful hydration + properties: + drySHA: + description: DrySHA holds the resolved revision (sha) of the + dry source as of the most recent reconciliation + type: string + hydratedSHA: + description: HydratedSHA holds the resolved revision (sha) + of the hydrated source as of the most recent reconciliation + type: string + sourceHydrator: + description: SourceHydrator holds the hydrator config used + for the hydrate operation + properties: + drySource: + description: DrySource specifies where the dry "don't + repeat yourself" manifest source lives. + properties: + path: + description: Path is a directory path within the Git + repository where the manifests are located + type: string + repoURL: + description: RepoURL is the URL to the git repository + that contains the application manifests + type: string + targetRevision: + description: TargetRevision defines the revision of + the source to hydrate + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + description: |- + HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then + have to move manifests to the SyncSource, e.g. by pull request. + properties: + targetBranch: + description: TargetBranch is the branch to which hydrated + manifests should be committed + type: string + required: + - targetBranch + type: object + syncSource: + description: SyncSource specifies where to sync hydrated + manifests from. + properties: + path: + description: |- + Path is a directory path within the git repository where hydrated manifests should be committed to and synced + from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced. + type: string + targetBranch: + description: TargetBranch is the branch to which hydrated + manifests should be committed + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object + type: object + type: object sourceType: description: SourceType specifies the type of this application type: string @@ -4730,6 +5093,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema + validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -4881,6 +5252,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is + displayed in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. @@ -5111,6 +5486,14 @@ spec: description: SkipCrds skips custom resource definition installation step (Helm's --skip-crds) type: boolean + skipSchemaValidation: + description: SkipSchemaValidation skips JSON schema + validation (Helm's --skip-schema-validation) + type: boolean + skipTests: + description: SkipTests skips test manifest installation + step (Helm's --skip-tests). + type: boolean valueFiles: description: ValuesFiles is a list of Helm value files to use when generating a template @@ -5263,6 +5646,10 @@ spec: to use for rendering manifests type: string type: object + name: + description: Name is used to refer to a source and is + displayed in the UI. It is used in multi-source Applications. + type: string path: description: Path is a directory path within the Git repository, and is only valid for applications sourced diff --git a/charts/argo-cd/templates/crds/crd-applicationset.yaml b/charts/argo-cd/templates/crds/crd-applicationset.yaml index 6cf09222..eff945f8 100644 --- a/charts/argo-cd/templates/crds/crd-applicationset.yaml +++ b/charts/argo-cd/templates/crds/crd-applicationset.yaml @@ -242,6 +242,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -340,6 +344,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -385,6 +391,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -472,6 +514,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -570,6 +616,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -676,6 +724,8 @@ spec: type: object clusters: properties: + flatList: + type: boolean selector: properties: matchExpressions: @@ -864,6 +914,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -962,6 +1016,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -1007,6 +1063,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -1094,6 +1186,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -1192,6 +1288,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -1487,6 +1585,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -1585,6 +1687,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -1630,6 +1734,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -1717,6 +1857,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -1815,6 +1959,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -2090,6 +2236,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -2188,6 +2338,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -2233,6 +2385,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -2320,6 +2508,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -2418,6 +2610,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -2718,6 +2912,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -2816,6 +3014,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -2861,6 +3061,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -2948,6 +3184,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -3046,6 +3286,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -3152,6 +3394,8 @@ spec: type: object clusters: properties: + flatList: + type: boolean selector: properties: matchExpressions: @@ -3340,6 +3584,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -3438,6 +3686,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -3483,6 +3733,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -3570,6 +3856,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -3668,6 +3958,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -3963,6 +4255,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -4061,6 +4357,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -4106,6 +4404,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -4193,6 +4527,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -4291,6 +4629,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -4566,6 +4906,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -4664,6 +5008,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -4709,6 +5055,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -4796,6 +5178,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -4894,6 +5280,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -5177,6 +5565,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -5275,6 +5667,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -5320,6 +5714,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -5407,6 +5837,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -5505,6 +5939,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -6007,6 +6443,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -6105,6 +6545,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -6150,6 +6592,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -6237,6 +6715,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -6335,6 +6817,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -6832,6 +7316,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -6930,6 +7418,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -6975,6 +7465,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -7062,6 +7588,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -7160,6 +7690,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -7452,6 +7984,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -7550,6 +8086,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -7595,6 +8133,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -7682,6 +8256,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -7780,6 +8358,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -8082,6 +8662,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -8180,6 +8764,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -8225,6 +8811,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -8312,6 +8934,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -8410,6 +9036,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -8516,6 +9144,8 @@ spec: type: object clusters: properties: + flatList: + type: boolean selector: properties: matchExpressions: @@ -8704,6 +9334,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -8802,6 +9436,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -8847,6 +9483,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -8934,6 +9606,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -9032,6 +9708,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -9327,6 +10005,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -9425,6 +10107,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -9470,6 +10154,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -9557,6 +10277,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -9655,6 +10379,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -9930,6 +10656,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -10028,6 +10758,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -10073,6 +10805,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -10160,6 +10928,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -10258,6 +11030,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -10541,6 +11315,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -10639,6 +11417,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -10684,6 +11464,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -10771,6 +11587,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -10869,6 +11689,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -11371,6 +12193,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -11469,6 +12295,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -11514,6 +12342,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -11601,6 +12465,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -11699,6 +12567,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -12196,6 +13066,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -12294,6 +13168,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -12339,6 +13215,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -12426,6 +13338,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -12524,6 +13440,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -12820,6 +13738,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -12918,6 +13840,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -12963,6 +13887,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -13050,6 +14010,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -13148,6 +14112,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -13430,6 +14396,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -13528,6 +14498,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -13573,6 +14545,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -13660,6 +14668,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -13758,6 +14770,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -14260,6 +15274,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -14358,6 +15376,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -14403,6 +15423,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -14490,6 +15546,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -14588,6 +15648,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -15085,6 +16147,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -15183,6 +16249,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -15228,6 +16296,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -15315,6 +16419,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -15413,6 +16521,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -15780,6 +16890,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -15878,6 +16992,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -15923,6 +17039,42 @@ spec: required: - repoURL type: object + sourceHydrator: + properties: + drySource: + properties: + path: + type: string + repoURL: + type: string + targetRevision: + type: string + required: + - path + - repoURL + - targetRevision + type: object + hydrateTo: + properties: + targetBranch: + type: string + required: + - targetBranch + type: object + syncSource: + properties: + path: + type: string + targetBranch: + type: string + required: + - path + - targetBranch + type: object + required: + - drySource + - syncSource + type: object sources: items: properties: @@ -16010,6 +17162,10 @@ spec: type: string skipCrds: type: boolean + skipSchemaValidation: + type: boolean + skipTests: + type: boolean valueFiles: items: type: string @@ -16108,6 +17264,8 @@ spec: version: type: string type: object + name: + type: string path: type: string plugin: @@ -16267,6 +17425,9 @@ spec: type: string health: properties: + lastTransitionTime: + format: date-time + type: string message: type: string status: @@ -16280,6 +17441,8 @@ spec: type: string namespace: type: string + requiresDeletionConfirmation: + type: boolean requiresPruning: type: boolean status: diff --git a/charts/argo-cd/values.yaml b/charts/argo-cd/values.yaml index 4c069086..93e480ad 100644 --- a/charts/argo-cd/values.yaml +++ b/charts/argo-cd/values.yaml @@ -119,7 +119,8 @@ global: priorityClassName: "" # -- Default node selector for all components - nodeSelector: {} + nodeSelector: + kubernetes.io/os: linux # -- Default tolerations for all components tolerations: [] @@ -3749,3 +3750,183 @@ notifications: # For more information: https://argo-cd.readthedocs.io/en/stable/operator-manual/notifications/triggers/#default-triggers # defaultTriggers: | # - on-sync-status-unknown + +commitServer: + # -- Enable commit server + enabled: false + + # -- Commit server name + name: commit-server + + # -- Runtime class name for the commit server + # @default -- `""` (defaults to global.runtimeClassName) + runtimeClassName: "" + + ## commit server controller image + image: + # -- Repository to use for the commit server + # @default -- `""` (defaults to global.image.repository) + repository: "" + # -- Tag to use for the commit server + # @default -- `""` (defaults to global.image.tag) + tag: "" + # -- Image pull policy for the commit server + # @default -- `""` (defaults to global.image.imagePullPolicy) + imagePullPolicy: "" + + # -- commit server command line flags + extraArgs: [] + + # -- Environment variables to pass to the commit server + extraEnv: [] + # - name: "MY_VAR" + # value: "value" + + # -- envFrom to pass to the commit server + # @default -- `[]` (See [values.yaml]) + extraEnvFrom: [] + # - configMapRef: + # name: config-map-name + # - secretRef: + # name: secret-name + + # -- List of extra mounts to add (normally used with extraVolumes) + extraVolumeMounts: [] + + # -- List of extra volumes to add + extraVolumes: [] + + metrics: + # -- Enables prometheus metrics server + enabled: false + service: + # -- Metrics service type + type: ClusterIP + # -- Metrics service clusterIP. `None` makes a "headless service" (no virtual IP) + clusterIP: "" + # -- Metrics service annotations + annotations: {} + # -- Metrics service labels + labels: {} + # -- Metrics service port + servicePort: 8087 + # -- Metrics service port name + portName: metrics + + ## commit server service configuration + service: + # -- commit server service annotations + annotations: {} + # -- commit server service labels + labels: {} + + # -- Automount API credentials for the Service Account into the pod. + automountServiceAccountToken: false + + serviceAccount: + # -- Create commit server service account + create: true + # -- commit server service account name + name: argocd-commit-server + # -- Annotations applied to created service account + annotations: {} + # -- Labels applied to created service account + labels: {} + # -- Automount API credentials for the Service Account + automountServiceAccountToken: true + + # -- Annotations to be added to commit server Deployment + deploymentAnnotations: {} + + # -- Annotations for the commit server pods + podAnnotations: {} + + # -- Labels for the commit server pods + podLabels: {} + + # -- Resource limits and requests for the commit server pods. + resources: {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + # -- [DNS configuration] + dnsConfig: {} + # -- Alternative DNS policy for commit server pods + dnsPolicy: "ClusterFirst" + + # -- commit server container-level security context + # @default -- See [values.yaml] + containerSecurityContext: + runAsNonRoot: true + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + seccompProfile: + type: RuntimeDefault + + ## Probes for commit server (optional) + ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ + readinessProbe: + # -- Enable Kubernetes liveness probe for commit server + enabled: true + # -- Number of seconds after the container has started before [probe] is initiated + initialDelaySeconds: 5 + # -- How often (in seconds) to perform the [probe] + periodSeconds: 10 + # -- Number of seconds after which the [probe] times out + timeoutSeconds: 1 + # -- Minimum consecutive failures for the [probe] to be considered failed after having succeeded + failureThreshold: 3 + + livenessProbe: + # -- Enable Kubernetes liveness probe for commit server + enabled: true + # -- Number of seconds after the container has started before [probe] is initiated + initialDelaySeconds: 30 + # -- How often (in seconds) to perform the [probe] + periodSeconds: 30 + # -- Number of seconds after which the [probe] times out + timeoutSeconds: 5 + # -- Minimum consecutive failures for the [probe] to be considered failed after having succeeded + failureThreshold: 3 + + # -- terminationGracePeriodSeconds for container lifecycle hook + terminationGracePeriodSeconds: 30 + + # -- [Node selector] + # @default -- `{}` (defaults to global.nodeSelector) + nodeSelector: {} + + # -- [Tolerations] for use with node taints + # @default -- `[]` (defaults to global.tolerations) + tolerations: [] + + # -- Assign custom [affinity] rules + # @default -- `{}` (defaults to global.affinity preset) + affinity: {} + + # -- Assign custom [TopologySpreadConstraints] rules to the commit server + # @default -- `[]` (defaults to global.topologySpreadConstraints) + ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## If labelSelector is left out, it will default to the labelSelector configuration of the deployment + topologySpreadConstraints: [] + # - maxSkew: 1 + # topologyKey: topology.kubernetes.io/zone + # whenUnsatisfiable: DoNotSchedule + + # -- Deployment strategy to be added to the commit server Deployment + deploymentStrategy: {} + # type: RollingUpdate + # rollingUpdate: + # maxSurge: 25% + # maxUnavailable: 25% + + # -- Priority class for the commit server pods + # @default -- `""` (defaults to global.priorityClassName) + priorityClassName: "" From b732ef4689aa571c7fb99fa3f3d5c2ac0bef02f6 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:07:42 +0000 Subject: [PATCH 22/27] chore(argo-cd): Update dependency argoproj/argo-cd to v2.14.2 (#3160) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> --- charts/argo-cd/Chart.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index 869e9e41..2c8122a2 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -1,9 +1,9 @@ apiVersion: v2 -appVersion: v2.14.1 +appVersion: v2.14.2 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.8.0 +version: 7.8.1 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -27,4 +27,4 @@ annotations: url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - kind: changed - description: Bump argo-cd to v2.14.1 + description: Bump argo-cd to v2.14.2 From f7b5090efb272e40881a78127db2ef9954c4b2c5 Mon Sep 17 00:00:00 2001 From: PatrickSpies <57619316+PatrickSpies@users.noreply.github.com> Date: Thu, 6 Feb 2025 11:34:55 +0100 Subject: [PATCH 23/27] fix(argo-cd): only create dex-servicemonitor if dex is enabled (#3159) * fix(argo-cd): only create dex-servicemonitor of dex is enabled Signed-off-by: Patrick Spies * numbers are difficult Signed-off-by: Tim Collins <45351296+tico24@users.noreply.github.com> --------- Signed-off-by: Patrick Spies Signed-off-by: Tim Collins <45351296+tico24@users.noreply.github.com> Co-authored-by: Tim Collins <45351296+tico24@users.noreply.github.com> --- charts/argo-cd/Chart.yaml | 6 +++--- charts/argo-cd/templates/dex/servicemonitor.yaml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index 2c8122a2..ff93b69d 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -3,7 +3,7 @@ appVersion: v2.14.2 kubeVersion: ">=1.25.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 7.8.1 +version: 7.8.2 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -26,5 +26,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: changed - description: Bump argo-cd to v2.14.2 + - kind: fixed + description: Create ServiceMonitor for dex only if dex is enabled diff --git a/charts/argo-cd/templates/dex/servicemonitor.yaml b/charts/argo-cd/templates/dex/servicemonitor.yaml index 93c9fa32..2564cfa1 100644 --- a/charts/argo-cd/templates/dex/servicemonitor.yaml +++ b/charts/argo-cd/templates/dex/servicemonitor.yaml @@ -1,4 +1,4 @@ -{{- if and (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1") .Values.dex.metrics.enabled .Values.dex.metrics.serviceMonitor.enabled }} +{{- if and (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1") .Values.dex.enabled .Values.dex.metrics.enabled .Values.dex.metrics.serviceMonitor.enabled }} apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: From d40470b95dd61c2232bf3e7a63f0af6a371a728a Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Sat, 8 Feb 2025 14:58:48 +0900 Subject: [PATCH 24/27] chore(argo-workflows): Update dependency argoproj/argo-workflows to v3.6.3 (#3164) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> --- charts/argo-workflows/Chart.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/argo-workflows/Chart.yaml b/charts/argo-workflows/Chart.yaml index be8df0c6..a9fafdda 100644 --- a/charts/argo-workflows/Chart.yaml +++ b/charts/argo-workflows/Chart.yaml @@ -1,9 +1,9 @@ apiVersion: v2 -appVersion: v3.6.2 +appVersion: v3.6.3 name: argo-workflows description: A Helm chart for Argo Workflows type: application -version: 0.45.4 +version: 0.45.5 icon: https://argo-workflows.readthedocs.io/en/stable/assets/logo.png home: https://github.com/argoproj/argo-helm sources: @@ -16,5 +16,5 @@ annotations: fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - - kind: added - description: Support configuring workflow events in the controller + - kind: changed + description: Bump argo-workflows to v3.6.3 From 56b2429f3b110acbc46bedb01767ba0f2242a694 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Feb 2025 20:18:18 +0100 Subject: [PATCH 25/27] chore(deps): bump github/codeql-action from 3.28.8 to 3.28.9 in the dependencies group (#3166) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 194c864e..29f267d3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -68,6 +68,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 + uses: github/codeql-action/upload-sarif@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 with: sarif_file: results.sarif From ff078480685bd22b93fafc5a3035fdbe1c4da942 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 07:16:36 -0600 Subject: [PATCH 26/27] chore(deps): update renovatebot/github-action action to v41.0.13 (#3167) --- .github/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index b27a99ac..15d4d3a8 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Self-hosted Renovate - uses: renovatebot/github-action@9ad1a8e771c002ece340d1ff028fae4503fe041b # v41.0.12 + uses: renovatebot/github-action@e084b5ac6fd201023db6dd7743aec023babb02c8 # v41.0.13 with: configurationFile: .github/configs/renovate-config.js # renovate: datasource=docker depName=ghcr.io/renovatebot/renovate From 3a329eae633ebf374d1aa2f6673b828848f9c994 Mon Sep 17 00:00:00 2001 From: "argoproj-renovate[bot]" <161757507+argoproj-renovate[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 08:30:15 -0600 Subject: [PATCH 27/27] chore(argo-workflows): Update dependency argoproj/argo-workflows to v3.6.4 (#3168) Signed-off-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> Co-authored-by: argoproj-renovate[bot] <161757507+argoproj-renovate[bot]@users.noreply.github.com> --- charts/argo-workflows/Chart.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/charts/argo-workflows/Chart.yaml b/charts/argo-workflows/Chart.yaml index a9fafdda..364868f6 100644 --- a/charts/argo-workflows/Chart.yaml +++ b/charts/argo-workflows/Chart.yaml @@ -1,9 +1,9 @@ apiVersion: v2 -appVersion: v3.6.3 +appVersion: v3.6.4 name: argo-workflows description: A Helm chart for Argo Workflows type: application -version: 0.45.5 +version: 0.45.6 icon: https://argo-workflows.readthedocs.io/en/stable/assets/logo.png home: https://github.com/argoproj/argo-helm sources: @@ -17,4 +17,4 @@ annotations: url: https://argoproj.github.io/argo-helm/pgp_keys.asc artifacthub.io/changes: | - kind: changed - description: Bump argo-workflows to v3.6.3 + description: Bump argo-workflows to v3.6.4