Compare commits

..

428 Commits

Author SHA1 Message Date
Michael Crenshaw
1e71863944 feat(hydrator): add commit-server component
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Co-authored-by: Omer Azmon <omer_azmon@intuit.com>
Co-authored-by: daengdaengLee <gunho1020@gmail.com>
Co-authored-by: Juwon Hwang (Kevin) <juwon8891@gmail.com>
Co-authored-by: thisishwan2 <feel000617@gmail.com>
Co-authored-by: mirageoasis <kimhw0820@naver.com>
Co-authored-by: Robin Lieb <robin.j.lieb@gmail.com>
Co-authored-by: miiiinju1 <gms07073@ynu.ac.kr>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

go mod tidy

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

one test file for both implementations

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

simplify

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

fix test for linux

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

fix git client mock

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

fix git client mock

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

address comments

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

unit tests

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

lint

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

fix image, fix health checks, fix merge issue

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

fix lint issues

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

remove code that doesn't work for GHE

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

changes from comments

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-12-14 12:47:26 -05:00
Michael Crenshaw
cc1f9f53f1 feat(hydrator): add sourceHydrator types
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Co-authored-by: Omer Azmon <omer_azmon@intuit.com>
Co-authored-by: daengdaengLee <gunho1020@gmail.com>
Co-authored-by: Juwon Hwang (Kevin) <juwon8891@gmail.com>
Co-authored-by: thisishwan2 <feel000617@gmail.com>
Co-authored-by: mirageoasis <kimhw0820@naver.com>
Co-authored-by: Robin Lieb <robin.j.lieb@gmail.com>
Co-authored-by: miiiinju1 <gms07073@ynu.ac.kr>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

fix(codegen): use kube_codegen.sh deepcopy and client gen correctly

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

deepcopy gen

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-12-14 12:46:40 -05:00
adriananeci
030a7be7e2 fix: Populate destination name when destination server is specified (#21063)
* Populate destination name when destination server is specified

Signed-off-by: Adrian Aneci <aneci@adobe.com>

* Lint nit

Signed-off-by: Adrian Aneci <aneci@adobe.com>

* Trigger CI

Signed-off-by: Adrian Aneci <aneci@adobe.com>

---------

Signed-off-by: Adrian Aneci <aneci@adobe.com>
2024-12-14 10:40:48 +05:30
Dan Garfield
8dbddb101a Update golang test image to use 1.23.4 multiarch (#21174)
Seems to be an issue with the current sha but this one is working.

Signed-off-by: Dan Garfield <dan@codefresh.io>
2024-12-13 15:10:52 -05:00
Michael Crenshaw
72c711e7f0 chore: simplify sync status comparison (#21140)
* chore: simplify sync status comparison

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* add tests

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* more tests, some docs

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-12-13 17:52:21 +00:00
dependabot[bot]
be080a5319 chore(deps): bump actions/setup-go from 5.1.0 to 5.2.0 (#21123)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](41dfa10bad...3041bf56c9)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 15:28:16 +05:30
dependabot[bot]
4b229c0484 chore(deps): bump go.opentelemetry.io/otel from 1.32.0 to 1.33.0 (#21166)
Bumps [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go) from 1.32.0 to 1.33.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go/compare/v1.32.0...v1.33.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 15:26:04 +05:30
dependabot[bot]
87c853e872 chore(deps): bump chromedriver from 131.0.2 to 131.0.3 in /ui-test (#21144)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 131.0.2 to 131.0.3.
- [Commits](https://github.com/giggio/node-chromedriver/compare/131.0.2...131.0.3)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-12 11:35:38 +05:30
dependabot[bot]
cc68f018fe chore(deps): bump golang.org/x/crypto from 0.30.0 to 0.31.0 (#21147)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.30.0 to 0.31.0.
- [Commits](https://github.com/golang/crypto/compare/v0.30.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-12 11:34:58 +05:30
Andrii Korotkov
d9be098d9c fix: Fix server side diff with fields removal (#20792) (#20842)
* fix: Fix server side diff with fields removal (#20792)

Fixes #20792

Use a new version of gitops engine with a fix.

This needs to be cherry-picked in v2.11-2.13.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Use newer versions of gitops-engine and structured-merge-diff

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

---------

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-12-11 21:08:30 +00:00
Minchao
6897c2e33f fix: incorrect expr for server stats in Grafana dashboard.json (#21098)
Signed-off-by: Minchao <minchao.220@gmail.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-12-11 15:50:17 +00:00
dependabot[bot]
6a3cdb6ea5 chore(deps): bump softprops/action-gh-release from 2.1.0 to 2.2.0 (#21124)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](01570a1f39...7b4da11513)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-11 16:07:55 +05:30
Michael Crenshaw
deb4d2b01e chore: avoid unnecessary alloc (#21121)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-12-11 15:59:37 +05:30
Henry Liu
a78b6287b1 fix(ui): fix select destination cluster type in create app (#20970)
Signed-off-by: henry.liu <henry.liu@daocloud.io>
2024-12-11 15:58:10 +05:30
thecooldrop
bd322fe451 chore: Improve the documentation regarding the selection of Application by Sync Windows (#21093)
Signed-off-by: TheCoolDrop <vanio.begic123@gmail.com>
2024-12-11 15:26:51 +05:30
Grégoire Bellon-Gervais
f2e4739178 docs: Add keycloak PKCE and argo-cd cli method documentation (#20698)
* Add keycloak PKCE and argo-cd cli method

Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>

* add company

Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>

* Oups

Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>

* Docaposte in a separated pr

Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>

* Fix typo and improve doc

Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>

* A good idea :)

Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>

---------

Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>
2024-12-11 15:18:44 +05:30
Blake Pettersson
2fe9a220dd fix: add missing fields in listrepositories (#20991)
This fixes a regression in 2.12. Before 2.12 githubAppInstallationID,
`githubAppID` and `gitHubAppEnterpriseBaseURL` were returned, but with
2.12 the repo is retrieved with getRepositories`, which does not
include those fields.

To fix this, add those missing fields to `ListRepositories`.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-12-11 15:17:44 +05:30
niv8
2f51067e75 psmdb.percona.com/PerconaServerMongoDB resource customization (#20628)
Signed-off-by: Niv Amitai <niv@connecteam.com>
2024-12-10 16:14:43 +05:30
Andrii Korotkov
9741c065d8 feat: Sync timeouts for applications (#6055) (#20816)
* feat: Sync timeouts for applications (#6055)

Helps with #6055

Introduces a controller-level configuration for terminating sync after timeout.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Fix env variable name

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

---------

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-12-10 13:59:04 +05:30
Pasha Kostohrys
90a148987d chore: reduce default max payload size in webhooks to 50MB (#21101)
* chore: reduce default max payload size in webhooks to 50MB

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* chore: reduce default max payload size in webhooks to 50MB

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* chore: reduce default max payload size in webhooks to 50MB

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* chore: reduce default max payload size in webhooks to 50MB

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-12-10 13:08:18 +05:30
rumstead
dfbfdbab11 feat(appset): reduce cluster secret logging (#21109)
* feat(appset): reduce cluster secret logging

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* feat(appset): reduce cluster secret logging

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* feat(appset): reduce cluster secret logging

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* e2e

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

---------

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-12-09 16:19:35 -05:00
github-actions[bot]
eadc2a47dc [Bot] docs: Update Snyk reports (#21090)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-12-09 19:00:23 +00:00
Amine Benseddik
eb1bb831d4 docs: Fix argocd admin proj docs and examples (#21057)
Signed-off-by: Amine Benseddik <amine.benseddik@gmail.com>
2024-12-09 13:55:23 -05:00
dependabot[bot]
1bf56d8905 chore(deps): bump tj-actions/changed-files from 45.0.4 to 45.0.5 (#21095)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.4 to 45.0.5.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](4edd678ac3...bab30c2299)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 13:53:48 -05:00
dependabot[bot]
ed2fde1a8f chore(deps): bump github.com/cyphar/filepath-securejoin (#21096)
Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.3.4 to 0.3.5.
- [Release notes](https://github.com/cyphar/filepath-securejoin/releases)
- [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.3.4...v0.3.5)

---
updated-dependencies:
- dependency-name: github.com/cyphar/filepath-securejoin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 13:53:20 -05:00
Joowon Lim
35c12d9486 chore: use %q to simplify fmt.Sprintf (#21108)
Signed-off-by: Joowon Lim <m4rinesnow34@gmail.com>
2024-12-09 13:52:32 -05:00
dependabot[bot]
96d0226a49 chore(deps): bump actions/cache from 4.1.2 to 4.2.0 (#21084)
Bumps [actions/cache](https://github.com/actions/cache) from 4.1.2 to 4.2.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](6849a64899...1bd1e32a3b)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-06 10:48:36 -05:00
Manuel Kieweg
8f0d3d0f6a feat: Timestamp for Health Status (#16972) (#18660)
* add lastTransitionTime to health status

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* address first feedback

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* set transition time if health status is unknown

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* extend health improvement tests

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* add apoplication controller test

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* use require for NoError

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* more extensive tests for health state changes

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* Apply suggestions from code review

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Manuel Kieweg <2939765+mkieweg@users.noreply.github.com>

* Code review suggestions

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* remove obsolete assert

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>

* Change LastTransitionTime field to pointer type

Due to implementation limitations, setting LastTransitionTime at the resource level is challenging.
Converting it to a pointer type allows it to be skipped at the resource level and prevents it from appearing
in .status.resources of the Application CR. Additionally, it doesn’t provide much value or have a known
use case right now.

Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>

* Resolve rebase conflicts

Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>

* Address review comment

Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>

* Trigger CI

Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>

---------

Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>
Signed-off-by: Manuel Kieweg <2939765+mkieweg@users.noreply.github.com>
Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Siddhesh Ghadi <sghadi1203@gmail.com>
2024-12-06 17:43:36 +05:30
JM (Jason Meridth)
4f6e4088ef chore(deps): bump gitops-engine to latest (#21056)
Related to https://github.com/argoproj/gitops-engine/pull/638

Signed-off-by: jmeridth <jmeridth@gmail.com>
2024-12-05 15:03:29 -05:00
Matt Finkel
71658c8897 chore: add ziprecruiter to users (#21076)
Signed-off-by: Matt Finkel <finkel.matt@gmail.com>
2024-12-05 10:05:55 -07:00
Ishita Sequeira
fa9023a006 fix: 20791 - sync multi-source application out of order source syncs (#21071)
Signed-off-by: Ishita Sequeira <ishiseq29@gmail.com>
2024-12-05 09:35:05 -07:00
dependabot[bot]
cdec7e2868 chore(deps): bump golang.org/x/net from 0.31.0 to 0.32.0 (#21069)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.31.0 to 0.32.0.
- [Commits](https://github.com/golang/net/compare/v0.31.0...v0.32.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 09:16:09 +00:00
dependabot[bot]
9f71ecbf5f chore(deps): bump google.golang.org/grpc from 1.67.1 to 1.68.1 (#21066)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.67.1 to 1.68.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.67.1...v1.68.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 14:00:40 +05:30
dependabot[bot]
6ace657e2a chore(deps): bump golang.org/x/crypto from 0.29.0 to 0.30.0 (#21068)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/crypto/compare/v0.29.0...v0.30.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 13:59:53 +05:30
dependabot[bot]
0a57d21c3d chore(deps): bump library/golang in /test/container (#21048)
Bumps library/golang from 1.23.3 to 1.23.4.

---
updated-dependencies:
- dependency-name: library/golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 13:08:16 +05:30
dependabot[bot]
955858eaad chore(deps): bump library/golang from 1.23.3 to 1.23.4 in /test/remote (#21049)
Bumps library/golang from 1.23.3 to 1.23.4.

---
updated-dependencies:
- dependency-name: library/golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 13:07:58 +05:30
dependabot[bot]
e28aa2eb54 chore(deps): bump chromedriver from 131.0.1 to 131.0.2 in /ui-test (#21050)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 131.0.1 to 131.0.2.
- [Commits](https://github.com/giggio/node-chromedriver/compare/131.0.1...131.0.2)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 13:03:38 +05:30
dependabot[bot]
89f222b6a2 chore(deps-dev): bump dotenv from 16.4.6 to 16.4.7 in /ui-test (#21051)
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.4.6 to 16.4.7.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.4.6...v16.4.7)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 13:02:52 +05:30
dependabot[bot]
0fbbc0dda9 chore(deps): bump golang.org/x/term from 0.26.0 to 0.27.0 (#21070)
Bumps [golang.org/x/term](https://github.com/golang/term) from 0.26.0 to 0.27.0.
- [Commits](https://github.com/golang/term/compare/v0.26.0...v0.27.0)

---
updated-dependencies:
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 13:00:10 +05:30
Keith Chong
522d07a8d8 fix: UI: Nothing happens selecting cluster URL/Name dropdown (#13655) (#21028)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-12-04 13:15:50 +05:30
Andrii Korotkov
730363f14b fix: Graceful shutdown for the API server (#18642) (#20981)
* fix: Graceful shutdown for the API server (#18642)

Closes #18642

Implements a graceful shutdown the the API server. Without this, ArgoCD API server will eventually return 502 during rolling update. However, healthcheck would return 503 if the server is terminating.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
Co-authored-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* Init server only once, but keep re-initializing listeners

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Check error for SetParamInSettingConfigMap as needed after fresh master

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Prevent a data race

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Remove unused variable, don't pass lock when not necessary

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Try overriding URL instead of additional URLs

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Use a more specific url

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

---------

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
Co-authored-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-12-03 15:32:26 -05:00
dependabot[bot]
523b0e6a78 chore(deps): bump SonarSource/sonarqube-scan-action from 3.1.0 to 4.1.0 (#21034)
* chore(deps): bump SonarSource/sonarqube-scan-action from 3.1.0 to 4.1.0

Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 3.1.0 to 4.1.0.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](13990a6956...1b442ee39a)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Apply suggestions from code review

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-12-03 17:15:55 +00:00
Andrii Korotkov
975786629f chore: Add support for AdditionalURLs field in server settings query (#21045)
Helps with #18642

Needed for consistency and for future testing in another PR.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-12-03 16:20:01 +00:00
dependabot[bot]
52dbe514e0 chore(deps-dev): bump dotenv from 16.4.5 to 16.4.6 in /ui-test (#21031)
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.4.5 to 16.4.6.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.4.5...v16.4.6)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 19:44:50 +05:30
dependabot[bot]
51a7966b92 chore(deps): bump sigs.k8s.io/controller-runtime from 0.19.2 to 0.19.3 (#21032)
Bumps [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) from 0.19.2 to 0.19.3.
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](https://github.com/kubernetes-sigs/controller-runtime/compare/v0.19.2...v0.19.3)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 19:44:25 +05:30
dudinea
0d7f1f7053 chore: fix tests failing with Kustomize based errors (#21037)
Signed-off-by: Eugene Doudine <eugene.d@trekflow.com>
2024-12-03 12:04:25 +02:00
Andrii Korotkov
b8e118ff7d fix: Bitbucket Cloud PR Author is processed correctly (#20769) (#20990)
Fixes #20769

Author there is a struct, not a string. Use nickname from that struct as an author name.

Let's cherry pick to 2.11-2.13

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-12-03 14:22:22 +05:30
dependabot[bot]
aef4c5a276 chore(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc (#20741)
Bumps [go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc](https://github.com/open-telemetry/opentelemetry-go) from 1.31.0 to 1.32.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go/compare/v1.31.0...v1.32.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 06:54:12 +00:00
dependabot[bot]
79b05d62c3 chore(deps): bump softprops/action-gh-release from 2.0.9 to 2.1.0 (#20760)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.9 to 2.1.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](e7a8f85e1c...01570a1f39)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 11:47:30 +05:30
dependabot[bot]
d6deaa96e1 chore(deps): bump selenium-webdriver from 4.26.0 to 4.27.0 in /ui-test (#20953)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.26.0 to 4.27.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.26.0...selenium-4.27.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 11:45:33 +05:30
dependabot[bot]
dd2b458c43 chore(deps): bump github.com/Azure/kubelogin from 0.1.4 to 0.1.5 (#21033)
Bumps [github.com/Azure/kubelogin](https://github.com/Azure/kubelogin) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/Azure/kubelogin/releases)
- [Changelog](https://github.com/Azure/kubelogin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Azure/kubelogin/compare/v0.1.4...v0.1.5)

---
updated-dependencies:
- dependency-name: github.com/Azure/kubelogin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 11:44:55 +05:30
dmosesson
9b481b1907 feat: Adding skipSchemaValidation flag (#20771) (#20831)
* Adding skipSchemaValidation flag

Signed-off-by: Daniel Mosesson (soandos) <danielmosesson@gmail.com>

* Adding specific test for skip schema validation

Signed-off-by: Daniel Mosesson (soandos) <danielmosesson@gmail.com>

* Fix merge conflict

Signed-off-by: Daniel Mosesson (soandos) <danielmosesson@gmail.com>

* Fixing index.yaml to support helm 3.16

Signed-off-by: Daniel Mosesson (soandos) <danielmosesson@gmail.com>

---------

Signed-off-by: Daniel Mosesson (soandos) <danielmosesson@gmail.com>
Co-authored-by: Daniel Mosesson (soandos) <danielmosesson@gmail.com>
2024-12-03 11:43:42 +05:30
Jonathan West
9587ec9c92 chore: Fix to intermittent E2E test failures in deployment_test.go (#20974)
Signed-off-by: Jonathan West <jonwest@redhat.com>
2024-12-03 11:41:34 +05:30
Alexandre Gaudreault
205b3d38c7 docs(ingress): use GRPC instead of HTTP2 (#21029)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-12-03 02:07:53 +00:00
Andrii Korotkov
bd5d76f254 chore: Parallelize EnsureCleanState for e2e tests, adding timing information (#20998)
* chore: Parallelize EnsureCleanState for e2e tests, adding timing information

Closes #20968
Closes #20967

A number of cleanup and create steps can be done in parallel, reducing the total runtime. Gather timing information as well and log it.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Add underscores to function map keys

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Have separate log statements for timing fields, since everything doesn't fit in Github logs and gets truncated

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Re-run tests

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Fix duplicate removal attempts, cleanup things in namespaces before removing namespaces

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Combine config map cleanups, since they seem to have some kind of locking based on timings

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Re-order some cleanups to not wait if something is already covered by no wait commands

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Move rm temp dir to be together with re-creation, since otherwise repo server watcher seems to fail

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Only update config maps and login as admin if there were any changes

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Also check for user being logged in

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Improve config maps equivalency check

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Remove timing information

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Improve loops with sleep

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Properly propagate and handle errors for parallel functions

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Add missing CheckError

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Fix import

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Fix imports linter error (try 2)

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Parallelize EnsureCleanState for application sets

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Fix errors.IsNotFound

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Use errgroup to run functions in parallel

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Remove name keys for functions as unused

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Use apierr directly

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

---------

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-12-02 23:26:46 +00:00
Andrii Korotkov
5fc306ed3a chore: Remove or reduce sleep in e2e tests (#21010)
Closes #21009

Some sleeps may no longer be necessary or be too long. Try removing or reducing duration.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-12-02 10:03:40 -05:00
dependabot[bot]
c06974f213 chore(deps): bump github.com/itchyny/gojq from 0.12.16 to 0.12.17 (#21018)
Bumps [github.com/itchyny/gojq](https://github.com/itchyny/gojq) from 0.12.16 to 0.12.17.
- [Release notes](https://github.com/itchyny/gojq/releases)
- [Changelog](https://github.com/itchyny/gojq/blob/main/CHANGELOG.md)
- [Commits](https://github.com/itchyny/gojq/compare/v0.12.16...v0.12.17)

---
updated-dependencies:
- dependency-name: github.com/itchyny/gojq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 09:53:33 -05:00
Andrii Korotkov
155514e8ca fix: Allow to delete repos with invalid urls (#20921) (#20975)
* fix: Allow to delete repos with invalid urls (#20921)

Fixes #20921

Normalization of repo url is attempted during repo deletion before comparison with existing repos. Before this change, it'd fail on invalid urls and return "", resulting in permission denied. This ended up in a state where people can add repos with invalid urls but couldn't delete them. Return raw repo url if url parsing failed. Add a test to validate the deletion can be performed and make sure it fails without the main change.

This needs to be cherry-picked to v2.11-2.13

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

* Don't modify the original NormalizeGitURL

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>

---------

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-12-02 14:00:35 +02:00
Anthony Goddard
f4d1e0f9f6 clarify usage of ref for multiple sources doc (#21011)
Signed-off-by: Anthony Goddard <anthony@anthonygoddard.com>
2024-12-02 10:32:58 +01:00
dependabot[bot]
2d0a5e904a chore(deps): bump github.com/casbin/casbin/v2 from 2.101.0 to 2.102.0 (#21019)
Bumps [github.com/casbin/casbin/v2](https://github.com/casbin/casbin) from 2.101.0 to 2.102.0.
- [Release notes](https://github.com/casbin/casbin/releases)
- [Changelog](https://github.com/casbin/casbin/blob/master/.releaserc.json)
- [Commits](https://github.com/casbin/casbin/compare/v2.101.0...v2.102.0)

---
updated-dependencies:
- dependency-name: github.com/casbin/casbin/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 10:01:06 +02:00
jingkai.
91360648d3 docs: remove outdated ciphers (#21006)
Signed-off-by: jingkai. <contact@jingk.ai>
2024-11-30 21:30:45 +01:00
Cornelius Roemer
b4b6307cd2 doc: fix grammar (#21004)
Signed-off-by: Cornelius Roemer <cornelius.roemer@gmail.com>
2024-11-30 13:41:50 -05:00
Andrii Korotkov
8320f88fa2 chore: Remove sleep from when/then in e2e tests (#21008)
These sleeps might be unnecessary, remove them and check the e2e tests.

Closes #21007

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-30 13:20:46 -05:00
dependabot[bot]
02d6866f8a chore(deps): bump docker/build-push-action from 6.9.0 to 6.10.0 (#20966)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.9.0 to 6.10.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](4f58ea7922...48aba3b46d)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-28 14:25:33 -05:00
Andrii Korotkov
19bdbcaddb chore: Optimize e2e tests by improving EnsureCleanState (#20942)
Closes #20941

Batch some kubectl operations, create gpg using APIs instead of CLI.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-28 14:24:59 -05:00
Andrii Korotkov
97701f353a chore: Optimize e2e tests by removing redundant ensure clean state + some refactoring (#20939)
Closes #20938

There's no need to do multiple ensure clean state in tests, which `Given` does, so using `GivenWithSameState` in places not using it already. There were only a few, so I don't expect a big win, but it may help with test consistency as well.
Also, refactor to use `Given` and `GivenWithSameState` for repo fixture instead of `Given(t, <bool>)`.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-28 14:24:36 -05:00
Thomas Decaux
e31aebe14c fix(ui): update ui e2e tests (#14619)
Signed-off-by: ebuildy <tdecaux@petalmd.com>
2024-11-28 12:52:20 -05:00
Erik Sjölund
fc6105b2bd docs: Fix post selector example (#20969)
Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2024-11-27 01:10:54 -10:00
Atif Ali
36d189c133 feat(ui): Support filter for configured and unchanged on SYNC STATUS view (#20850) 2024-11-27 09:53:10 +05:30
dependabot[bot]
9a14d7f5dd chore(deps): bump thehanimo/pr-title-checker from 1.4.2 to 1.4.3 (#20951)
Bumps [thehanimo/pr-title-checker](https://github.com/thehanimo/pr-title-checker) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/thehanimo/pr-title-checker/releases)
- [Commits](1d8cd483a2...7fbfe05602)

---
updated-dependencies:
- dependency-name: thehanimo/pr-title-checker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 13:45:05 -05:00
Alexander Matyushentsev
7f6340f653 fix: API server should not attempt to read secrets in all namespaces (#20950)
* fix: api server is trying to list cluster wide secrets while generating apps

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>

* Revert "fix: Fix argocd appset generate failure due to missing clusterrole (#20162)"

This reverts commit fad534bcfe.

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-11-26 10:53:28 +05:30
renovate[bot]
98688e0686 chore(deps): update module github.com/golangci/golangci-lint to v1.62.2 (#20947)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-25 15:53:46 +00:00
dependabot[bot]
8bce61e330 chore(deps): bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (#20930)
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: github.com/stretchr/testify
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 10:14:18 -05:00
Andrii Korotkov
4d306f1139 chore: Reduse e2e tests runtime by using better sleep intervals in Expect (#20926)
Closes #20923

Right now the condition is checked immediately and then only after 3 seconds and so on. But sometimes the need for a wait may be much smaller than 3 seconds. So, try using smaller intervals with exponential increase up to 3 seconds instead.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-25 09:41:51 -05:00
Tomas Dabašinskas
b546ea7b13 docs(applicationset): complete sentence about Application deletion (#20944)
Fixed an incomplete sentence in the Application Deletion documentation that describes what happens to Application resources when an ApplicationSet is deleted.

Signed-off-by: Tomas Dabašinskas <tomas@dabasinskas.net>
2024-11-25 03:09:10 -10:00
Andrii Korotkov
9009e57c32 chore: Graceful handling of panic in application set controller reconcile (#20935) (#20940)
Closes #20935

Recover from panic if it happens, similar to how application controller does it.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-25 07:36:37 -05:00
Andrii Korotkov
2d9d2fd4e8 docs: Update FAQ about known types (#6008) (#20929)
Closes #6008

Make more emphasis on the issue users may be searching for, update wording slightly and another example.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-25 00:04:32 -10:00
Shaw Ho
faa10098ba Add Alauda to USERS (#20936)
Signed-off-by: Shaw Ho <tossmilestone@gmail.com>
2024-11-24 23:57:48 -10:00
dependabot[bot]
e8d52650b1 chore(deps-dev): bump typescript from 5.6.3 to 5.7.2 in /ui-test (#20931)
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.6.3 to 5.7.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.6.3...v5.7.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 11:50:48 +05:30
dependabot[bot]
c92efcf130 chore(deps-dev): bump @types/node from 22.8.7 to 22.9.3 in /ui-test (#20932)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.8.7 to 22.9.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 11:49:51 +05:30
Michael Crenshaw
62a84d5747 chore: rename Rollout 'Restart' action to 'Restart Pods' (#20841)
* chore: rename Rollout 'Restart' action to 'Restart Pods'

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* fix tests

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-11-25 09:55:03 +05:30
Michael Crenshaw
6a09102389 chore: log panics in JSON (#20924) (#20925)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-11-24 20:05:39 -05:00
github-actions[bot]
8024407a13 [Bot] docs: Update Snyk reports (#20919)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-11-24 20:11:04 +00:00
Suraj yadav
1120a08653 feat(ui): Added timing info to container state UI (#20920)
Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-11-24 15:08:19 -05:00
Revital Barletz
a849d41b6f docs: Proposal to add installation steps for local development using Kind (#20821)
* Update getting_started.md

Adding some steps for running Argo CD locally using Kind. 

Signed-off-by: Revital Barletz <revitalbarletz@gmail.com>

* Moved instructions to a different file

Signed-off-by: Revital Barletz <revitalbarletz@gmail.com>

* Update getting_started.md

Moved the instructions to a different file.

Signed-off-by: Revital Barletz <revitalbarletz@gmail.com>

* Update try_argo_cd_locally.md

Signed-off-by: Revital Barletz <revitalbarletz@gmail.com>

* Update try_argo_cd_locally.md

Signed-off-by: Revital Barletz <revitalbarletz@gmail.com>

* Update docs/try_argo_cd_locally.md

Signed-off-by: Dan Garfield <dan@codefresh.io>

* Update try_argo_cd_locally.md

Signed-off-by: Revital Barletz <revitalbarletz@gmail.com>

---------

Signed-off-by: Revital Barletz <revitalbarletz@gmail.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-11-24 08:51:09 -07:00
Nicholas Morey
ff08643186 docs(resource_actions): specify when mergeBuiltinActions was introduced (#20917)
The feature was made available in 2.13.0 onwards.

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-11-23 12:22:52 -07:00
Nitish Kumar
32cc6638f7 fix: show multisource details for an appset when using argocd appset get command (#20903)
* fix: show multisource details for an appset

Signed-off-by: nitishfy <justnitish06@gmail.com>

* remove extra comment

Signed-off-by: nitishfy <justnitish06@gmail.com>

* fix failing tests

Signed-off-by: nitishfy <justnitish06@gmail.com>

* fix lint issues

Signed-off-by: nitishfy <justnitish06@gmail.com>

---------

Signed-off-by: nitishfy <justnitish06@gmail.com>
2024-11-22 06:25:03 -05:00
dependabot[bot]
9f1431e1eb chore(deps): bump sigs.k8s.io/controller-runtime from 0.19.1 to 0.19.2 (#20906)
Bumps [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) from 0.19.1 to 0.19.2.
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](https://github.com/kubernetes-sigs/controller-runtime/compare/v0.19.1...v0.19.2)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 10:38:15 +05:30
Adam Chandler
c6804e9854 fix: Memory leak in repo-server (#20876)
Signed-off-by: Adam Chandler <adam_chandler@trimble.com>
2024-11-21 10:07:10 -05:00
ABBOUD Moncef
4a140515fe feat(app): add ignore-healthcheck annotation (#20462)
Signed-off-by: cef <moncef.abboud95@gmail.com>
2024-11-21 07:16:53 -05:00
jaehanbyun
b6cc0e6193 docs: Update orphaned resource number metric explanation in doc (#20702)
Signed-off-by: jaehanbyun <awbrg789@naver.com>
2024-11-21 17:33:22 +05:30
Michael Crenshaw
e34d86ff07 test: more destination check tests (#20617)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-11-21 17:31:11 +05:30
dependabot[bot]
3b81d3c072 chore(deps): bump go.opentelemetry.io/otel/sdk from 1.31.0 to 1.32.0 (#20745)
Bumps [go.opentelemetry.io/otel/sdk](https://github.com/open-telemetry/opentelemetry-go) from 1.31.0 to 1.32.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go/compare/v1.31.0...v1.32.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel/sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 10:17:17 +05:30
rumstead
c8c22d3d5a fix(server): make a copy of secret objects when listing from the informers #19913 (#20805)
* fix(server): make a copy of secret objects when listing from the informers

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* fix(server): make a copy of secret objects when listing from the informers

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* fix(server): make a copy of secret objects when listing from the informers

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* fix(server): make a copy of secret objects when listing from the informers

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* fix(server): make a copy of secret objects when listing from the informers

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* fix(server): make a copy of secret objects when listing from the informers

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

* e2e

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>

---------

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-11-21 04:43:53 +00:00
OpenGuidou
2c2e669247 fix(cli): Fix appset generate in --core mode (#20717)
Signed-off-by: OpenGuidou <guillaume.doussin@gmail.com>
2024-11-20 23:41:30 -05:00
dependabot[bot]
32c9e41248 chore(deps): bump github.com/bradleyfalzon/ghinstallation/v2 (#20778)
Bumps [github.com/bradleyfalzon/ghinstallation/v2](https://github.com/bradleyfalzon/ghinstallation) from 2.11.0 to 2.12.0.
- [Release notes](https://github.com/bradleyfalzon/ghinstallation/releases)
- [Commits](https://github.com/bradleyfalzon/ghinstallation/compare/v2.11.0...v2.12.0)

---
updated-dependencies:
- dependency-name: github.com/bradleyfalzon/ghinstallation/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 10:10:33 +05:30
dependabot[bot]
74b219a628 chore(deps): bump github.com/xanzy/go-gitlab from 0.113.0 to 0.114.0 (#20832)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.113.0 to 0.114.0.
- [Release notes](https://github.com/xanzy/go-gitlab/releases)
- [Changelog](https://github.com/xanzy/go-gitlab/blob/main/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.113.0...v0.114.0)

---
updated-dependencies:
- dependency-name: github.com/xanzy/go-gitlab
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 10:06:09 +05:30
dependabot[bot]
0ea189d5a2 chore(deps): bump chromedriver from 130.0.4 to 131.0.1 in /ui-test (#20855)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 130.0.4 to 131.0.1.
- [Commits](https://github.com/giggio/node-chromedriver/compare/130.0.4...131.0.1)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 10:05:38 +05:30
Leonardo Luz Almeida
fc9b33b325 chore: Fix get-previous-release test case (#20863)
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-11-20 19:57:31 +00:00
rumstead
6cf363c0fa chore: setting up 2.14 release champion and approver (#20870)
Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-11-20 19:42:35 +00:00
dependabot[bot]
29ac23827a chore(deps): bump github.com/Masterminds/semver/v3 from 3.3.0 to 3.3.1 (#20852)
Bumps [github.com/Masterminds/semver/v3](https://github.com/Masterminds/semver) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/Masterminds/semver/releases)
- [Changelog](https://github.com/Masterminds/semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Masterminds/semver/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: github.com/Masterminds/semver/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-20 10:49:52 -05:00
Matthieu MOREL
0ca1ddb88c fix: order conditions summary (#20759)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-11-20 10:46:01 -05:00
Andrii Korotkov
3da5a3de52 fix: Fix repeated 403 due to app namespace being undefined (#20699) (#20819)
Fixes #20699

Constructor may not get called every time the application changes, so previous this.appNamespace could be stale. But the update to use `this.props.match.params.appnamespace` could also fail if it's undefined.
As a fix, create and use a helper function `getAppNamespace` which has a special case handling for undefined.

Also, use a namespaced endpoint when namespace is not undefined.

It needs to be cherry-picked to v2.11-2.13.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-20 12:57:03 +02:00
ABBOUD Moncef
83953fe276 feat(app): Add optional 'name' to Source object (#20470)
Signed-off-by: cef <moncef.abboud95@gmail.com>
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-11-18 21:23:49 +00:00
Revital Barletz
be24ef4acc fix: remove broken link from code-contributions.md (#20795)
* Update code-contributions.md

Deleting the section that contains a broken link per this discussion: https://github.com/argoproj/argo-cd/issues/20728

Signed-off-by: Revital Barletz <revitalb@monada.co>

* Update code-contributions.md

Remove the part that talks about the enhancement proposal.

Signed-off-by: Revital Barletz <revitalb@monada.co>

---------

Signed-off-by: Revital Barletz <revitalb@monada.co>
2024-11-18 08:54:32 -07:00
Andrii Korotkov
b3916428c1 docs: Improve self-heal and auto-sync behaviors explanation for multi-source apps (#20809) (#20811)
Closes #20809

In single-source apps self-heal disabled guarantees that with no source changes the live changes won't get overridden. That's no longer the case for multi-source apps, since one of the sources changing can trigger a sync of everything. Add a note explaining this behavior.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-17 23:35:47 -05:00
dependabot[bot]
c4f51c0313 chore(deps): bump google.golang.org/protobuf from 1.35.1 to 1.35.2 (#20804)
Bumps google.golang.org/protobuf from 1.35.1 to 1.35.2.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-17 23:33:00 -05:00
Suraj yadav
d8dd2fc02c feat(ui): Added a warning popup before closing the application create panel (#20807)
* added-warning

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>

* removed?

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-11-17 23:26:15 -05:00
dependabot[bot]
00d45ed74f chore(deps): bump github.com/casbin/casbin/v2 from 2.100.0 to 2.101.0 (#20817)
Bumps [github.com/casbin/casbin/v2](https://github.com/casbin/casbin) from 2.100.0 to 2.101.0.
- [Release notes](https://github.com/casbin/casbin/releases)
- [Changelog](https://github.com/casbin/casbin/blob/master/.releaserc.json)
- [Commits](https://github.com/casbin/casbin/compare/v2.100.0...v2.101.0)

---
updated-dependencies:
- dependency-name: github.com/casbin/casbin/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-17 23:17:25 -05:00
Daco
6d8d32f170 fix: ApplicationSet webhooks should use stricter comparison of repository URL (#20486)
Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>
2024-11-14 08:23:36 -05:00
SuminSSon
0f872f51be chore: improve error logs in server/cluster/cluser.go (#20711) 2024-11-13 08:04:38 -05:00
Matthieu MOREL
993d79ca27 chore: use testify instead of testing.Fatal or testing.Error in server (#20755)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-11-11 20:35:19 -05:00
dependabot[bot]
2a72df260d chore(deps): bump go.opentelemetry.io/otel from 1.31.0 to 1.32.0 (#20744)
Bumps [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go) from 1.31.0 to 1.32.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go/compare/v1.31.0...v1.32.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 20:29:03 -05:00
Pasha Kostohrys
76537ce557 chore: rename force-prompts-enabled to prompts-enabled flag name (#20752)
* chore: rename force-prompts-enabled to prompts-enabled flag name

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* chore: rename force-prompts-enabled to prompts-enabled flag name

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-11-11 13:42:25 -05:00
Matthieu MOREL
0da5744788 chore: use testify instead of testing.Fatal or testing.Error in test (#20754)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-11-11 17:55:52 +02:00
Matthieu MOREL
6b3e532194 chore: use testify instead of testing.Fatal or testing.Error in cmd (#20750)
* chore: use testify instead of testing.Fatal or testing.Error in cmd

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>

* chore: use testify instead of testing.Fatal or testing.Error in cmd

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>

---------

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-11-11 17:55:30 +02:00
Matthieu MOREL
a6cce1d0b3 chore: use testify instead of testing.Fatal or testing.Error in util (#20751)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-11-11 17:55:11 +02:00
renovate[bot]
b39f3b15fb chore(deps): update module github.com/golangci/golangci-lint to v1.62.0 (#20737)
* chore(deps): update module github.com/golangci/golangci-lint to v1.62.0

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix lint issues

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-11-11 05:28:48 +00:00
dependabot[bot]
4a66a2a1ea chore(deps): bump golang.org/x/net from 0.30.0 to 0.31.0 (#20742)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.30.0 to 0.31.0.
- [Commits](https://github.com/golang/net/compare/v0.30.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 04:58:08 +00:00
dependabot[bot]
0066b0ab9d chore(deps): bump tj-actions/changed-files from 45.0.3 to 45.0.4 (#20739)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.3 to 45.0.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](c3a1bb2c99...4edd678ac3)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 04:57:31 +00:00
dependabot[bot]
1fba4ea049 chore(deps): bump SonarSource/sonarqube-scan-action from 3.0.0 to 3.1.0 (#20740)
Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](884b79409b...13990a6956)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 04:57:06 +00:00
dependabot[bot]
a8f95dcb0d chore(deps): bump github.com/fsnotify/fsnotify from 1.7.0 to 1.8.0 (#20629)
Bumps [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/fsnotify/fsnotify/releases)
- [Changelog](https://github.com/fsnotify/fsnotify/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fsnotify/fsnotify/compare/v1.7.0...v1.8.0)

---
updated-dependencies:
- dependency-name: github.com/fsnotify/fsnotify
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-10 21:02:20 -05:00
Matthieu MOREL
2998687416 chore: enable perfsprint linter (#20685)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-11-10 21:00:57 -05:00
github-actions[bot]
345d81ebf0 [Bot] docs: Update Snyk reports (#20734)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-11-11 02:00:51 +00:00
Matthieu MOREL
7cc5907be3 chore: use testify instead of testing.Fatal or testing.Error in applicationset (#20726)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-11-10 20:58:35 -05:00
Will Hu
5d0a3e6e9a add flaglerhealth.io to userlist (#20724) 2024-11-08 14:49:10 -08:00
renovate[bot]
aa1267aa8b chore(deps): update group golang to v1.23.3 (#20686)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-08 14:21:53 -08:00
dependabot[bot]
cc7c21ea1e chore(deps): bump library/golang in /test/container (#20700)
Bumps library/golang from 1.23.1 to 1.23.3.

---
updated-dependencies:
- dependency-name: library/golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 14:21:22 -08:00
dependabot[bot]
146c1bb9b0 chore(deps): bump golang.org/x/crypto from 0.28.0 to 0.29.0 (#20707)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.28.0 to 0.29.0.
- [Commits](https://github.com/golang/crypto/compare/v0.28.0...v0.29.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 14:20:36 -08:00
Edwin Smulders
acfc03e2c2 Fix minor grammatical error in operator manual overview (#20691)
Signed-off-by: Edwin Smulders <edwin@edwinsmulders.eu>
2024-11-08 21:46:40 +01:00
dependabot[bot]
b78f209716 chore(deps): bump golang.org/x/term from 0.25.0 to 0.26.0 (#20705)
Bumps [golang.org/x/term](https://github.com/golang/term) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/term/compare/v0.25.0...v0.26.0)

---
updated-dependencies:
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 17:49:06 +00:00
dependabot[bot]
556b8c6d5d chore(deps): bump golang.org/x/oauth2 from 0.23.0 to 0.24.0 (#20708)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.23.0 to 0.24.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.23.0...v0.24.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 17:48:32 +00:00
dependabot[bot]
c68776e32a chore(deps): bump goreleaser/goreleaser-action from 6.0.0 to 6.1.0 (#20701)
Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)
- [Commits](286f3b13b1...9ed2f89a66)

---
updated-dependencies:
- dependency-name: goreleaser/goreleaser-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 12:35:02 -05:00
dependabot[bot]
0eaa3d44d2 chore(deps): bump golang.org/x/sync from 0.8.0 to 0.9.0 (#20709)
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.8.0 to 0.9.0.
- [Commits](https://github.com/golang/sync/compare/v0.8.0...v0.9.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 08:40:55 -08:00
Jason Hall
4776e486a3 chore: update azure/kubelogin to address CVE (#20578)
* update azure/kubelogin to address CVE

Signed-off-by: Jason Hall <jason@chainguard.dev>

* actually emit token

Signed-off-by: Jason Hall <jason@chainguard.dev>

* update deps, go mod tidy

Signed-off-by: Jason Hall <jason@chainguard.dev>

* fix go.sum

Signed-off-by: Jason Hall <jason@chainguard.dev>

* bcho's suggestion

Signed-off-by: Jason Hall <jason@chainguard.dev>

---------

Signed-off-by: Jason Hall <jason@chainguard.dev>
2024-11-08 10:34:52 -05:00
Pasha Kostohrys
e2bc96bb86 fix: Ability to disable Server Side Apply on individual resource level (#20697)
* fix: Ability to disable Server Side Apply on individual resource level

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* fix: Ability to disable Server Side Apply on individual resource level

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* fix: Ability to disable Server Side Apply on individual resource level

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* chore: improve doc

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-11-08 10:54:43 +02:00
dependabot[bot]
b652b6aacb chore(deps): bump chromedriver from 130.0.2 to 130.0.4 in /ui-test (#20687)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 130.0.2 to 130.0.4.
- [Commits](https://github.com/giggio/node-chromedriver/compare/130.0.2...130.0.4)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 10:35:32 +02:00
dependabot[bot]
21fa481495 chore(deps): bump library/golang from 1.23.1 to 1.23.3 in /test/remote (#20703)
Bumps library/golang from 1.23.1 to 1.23.3.

---
updated-dependencies:
- dependency-name: library/golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 10:35:18 +02:00
dependabot[bot]
aac69803ae chore(deps): bump golang.org/x/time from 0.7.0 to 0.8.0 (#20704)
Bumps [golang.org/x/time](https://github.com/golang/time) from 0.7.0 to 0.8.0.
- [Commits](https://github.com/golang/time/compare/v0.7.0...v0.8.0)

---
updated-dependencies:
- dependency-name: golang.org/x/time
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 10:35:07 +02:00
Andrii Korotkov
a7ff791ba5 chore: Don't degrade PDB on InsufficientPods (#20171) (#20665)
Closes #20171

There are valid use cases for InsufficientPods, e.g. running some jobs or tests that don't want to be terminated. See the discussion on the issue for more details. So don't degrade the PDB on InsufficientPods condition.

This needs to be cherry picked to 2.13, as many people may not upgrade otherwise.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-07 09:09:52 -08:00
Andrii Korotkov
3c366edc24 chore: Improve a sync with replace warning (#14161) (#20638)
Helps with #14161

Tell more about possible practical implications of sync with replace such as pods scaling down to min replicas.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-07 11:30:57 -05:00
Soumya Ghosh Dastidar
17c412e3f3 fix: check for source position when --show-params is set (#20682)
Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2024-11-06 19:04:20 +00:00
dependabot[bot]
35b9158418 chore(deps): bump github.com/xanzy/go-gitlab from 0.112.0 to 0.113.0 (#20676)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.112.0 to 0.113.0.
- [Release notes](https://github.com/xanzy/go-gitlab/releases)
- [Changelog](https://github.com/xanzy/go-gitlab/blob/main/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.112.0...v0.113.0)

---
updated-dependencies:
- dependency-name: github.com/xanzy/go-gitlab
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-06 11:09:40 -05:00
Pasha Kostohrys
4a38442b99 feat: move appset delete confirmation to new prompt logic (#20677)
* feat: move appset delete confirmation to new prompt logic

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: move appset delete confirmation to new prompt logic

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: move appset delete confirmation to new prompt logic

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-11-06 17:11:07 +02:00
Pasha Kostohrys
881025b3ca chore: cover cli utils and prompts utils with tests (#20674) 2024-11-05 17:28:23 -05:00
Max Lancaster
b14f1d13a6 Add Alarm.com to users list. (#20672)
Signed-off-by: Max Lancaster <max.lancaster@gmail.com>
2024-11-05 23:22:36 +02:00
Pasha Kostohrys
b9d5387979 feat: adopt delete app confirmation to new prompt util (#20664)
* feat: adopt delete app confirmation to new prompt util

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: adopt delete app confirmation to new prompt util

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: adopt delete app confirmation to new prompt util

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: adopt delete app confirmation to new prompt util

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* chore: remove type where it is not needed

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-11-05 15:41:49 +00:00
Andrii Korotkov
d963b61350 chore: Add some empty dir volume mounts for the application controller (#19474) (#19480)
Closes #19474

Kube cache couldn't be used on read-only root file system leading to errors as revealed with `--gloglevel` equal to 6.
Create an empty dir mount for `/tmp` and override `KUBECACHEDIR` to be in `/tmp`.

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-11-05 09:14:42 -05:00
변재한
5138dd5118 feat: add orphaned resource count metric (#20521)
Signed-off-by: jaehanbyun <awbrg789@naver.com>
2024-11-05 08:18:36 -05:00
Pasha Kostohrys
36ef5639da feat: add prompting to confirm application commands (#20658)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-11-04 22:10:29 +00:00
Pasha Kostohrys
262059346b feat: add prompting to confirm project window deletion (#20656)
* feat: add prompting to confirm project window deletion

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: add prompting to confirm project window deletion

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: add prompting to confirm project window deletion

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-11-04 16:37:16 -05:00
Pasha Kostohrys
621330c11b feat: add prompting to confirm account token deletion (#20654)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-11-04 16:10:26 -05:00
Keith Chong
8cf990bced fix: Rollback multi-source apps; 2nd follow-up to PR 14124 (#20566)
* fix: Rollback multi-source apps; 2nd follow-up to PR 14124

Signed-off-by: Keith Chong <kykchong@redhat.com>

* Pull out styles changes; Make arrows more pronounced

Signed-off-by: Keith Chong <kykchong@redhat.com>

* Lint issue again

Signed-off-by: Keith Chong <kykchong@redhat.com>

* More lint errors. (Need to update my linter)

Signed-off-by: Keith Chong <kykchong@redhat.com>

* Simplify code

Signed-off-by: Keith Chong <kykchong@redhat.com>

---------

Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-11-04 16:53:17 +02:00
Alexandre Gaudreault
a68d057c9d fix(server): accept HTTP/1.1 for backward compatibility (#20639)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-11-04 09:41:48 -05:00
dependabot[bot]
16649c64f8 chore(deps-dev): bump @types/node from 22.8.4 to 22.8.7 in /ui-test (#20647)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.8.4 to 22.8.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 07:56:14 -05:00
dependabot[bot]
df54a43e2e chore(deps): bump chromedriver from 130.0.1 to 130.0.2 in /ui-test (#20648)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 130.0.1 to 130.0.2.
- [Commits](https://github.com/giggio/node-chromedriver/compare/130.0.1...130.0.2)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 07:55:59 -05:00
dependabot[bot]
d7731790fd chore(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1 (#20649)
Bumps [github.com/golang-jwt/jwt/v4](https://github.com/golang-jwt/jwt) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/golang-jwt/jwt/releases)
- [Changelog](https://github.com/golang-jwt/jwt/blob/main/VERSION_HISTORY.md)
- [Commits](https://github.com/golang-jwt/jwt/compare/v4.5.0...v4.5.1)

---
updated-dependencies:
- dependency-name: github.com/golang-jwt/jwt/v4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 07:55:47 -05:00
Michael Crenshaw
438e01bc4f fix(codegen): use kube_codegen.sh deepcopy and client gen correctly (#20644) 2024-11-03 22:31:04 -05:00
Alexandre Gaudreault
b187fbbaf7 fix(redis): CPU stuck at 100% after rolling update (#20645)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-11-03 14:25:59 -05:00
Ashu
d761c94b7d fix(ui): fix the slider tansition (#20641) 2024-11-01 16:50:24 -04:00
dependabot[bot]
11267b912b chore(deps): bump softprops/action-gh-release from 2.0.8 to 2.0.9 (#20631)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](c062e08bd5...e7a8f85e1c)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 17:13:40 +02:00
dependabot[bot]
efd196407a chore(deps): bump selenium-webdriver from 4.25.0 to 4.26.0 in /ui-test (#20633)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.25.0 to 4.26.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.25.0...selenium-4.26.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 17:13:20 +02:00
Dillen Padhiar
59ea2a809e feat: support Suspended state for MonoVertexRollout (#20583)
Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>
2024-10-31 13:53:41 -04:00
James McShane
3988861edf feat(cmp): parameter to enable git creds to be shared from repo server to the plugin (#15107)
Signed-off-by: jmcshane <james.mcshane@superorbital.io>
2024-10-31 13:35:08 -04:00
Michael Crenshaw
f89e1cf80f docs(rbac): clarify glob pattern behavior for fine-grain RBAC (#20624)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-31 17:33:45 +00:00
Pasha Kostohrys
8a4e7e021f feat: add prompting to confirm project role deletion (#20613)
* Revert "fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574)"

This reverts commit 33ecbbc4a8.

* feat: add prompting to confirm project role deletion

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* Revert "Revert "fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574)""

This reverts commit cecf8f49fd.

* feat: add prompting to confirm project role deletion

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-31 14:14:29 +00:00
Nikolai Momot
79abbbe4ec chore: Add TextNow to USERS.md (#20602)
Signed-off-by: Nikolai.Momot <nikolai.momot@textnow.com>
2024-10-31 04:00:47 -10:00
Pasha Kostohrys
83b1b6c574 feat: add prompting to confirm project deletion (#20612)
* Revert "fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574)"

This reverts commit 33ecbbc4a8.

* feat: add prompting to confirm project deletion

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* Revert "Revert "fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574)""

This reverts commit cecf8f49fd.

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-31 08:58:11 -04:00
Pasha Kostohrys
d44d7ec043 feat: add prompting to confirm application resource deletion (#20611)
* Revert "fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574)"

This reverts commit 33ecbbc4a8.

* feat: add prompting to confirm app resource deletion

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* Revert "Revert "fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574)""

This reverts commit cecf8f49fd.

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-31 08:57:24 -04:00
Alexandre Gaudreault
a7637cd106 fix(server): missing selected ALPN property (#20579)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-10-31 13:50:45 +02:00
dependabot[bot]
c90deaabd6 chore(deps): bump @types/selenium-webdriver in /ui-test (#20589)
Bumps [@types/selenium-webdriver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/selenium-webdriver) from 4.1.26 to 4.1.27.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/selenium-webdriver)

---
updated-dependencies:
- dependency-name: "@types/selenium-webdriver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-31 13:22:11 +02:00
dependabot[bot]
14ba2216d7 chore(deps-dev): bump @types/node from 22.7.9 to 22.8.4 in /ui-test (#20588)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.7.9 to 22.8.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-31 13:21:55 +02:00
Michael Crenshaw
e861b550e0 fix(diff): avoid cache miss in server-side diff (#20605)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-30 21:35:23 -04:00
Siddhesh Ghadi
eb10b70e8a feat: Add ability to hide certain annotations on secret resources (#18216)
Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>
2024-10-30 09:52:37 -07:00
Yiwei Gong
83eb0b1871 rerender when extensions update (#20559)
Signed-off-by: Yiwei Gong <imwithye@gmail.com>
2024-10-30 08:22:19 -07:00
q-yusufmahtab
38546a5e43 Fix docs/user-guide/diffing.md code block (#20596)
Signed-off-by: Yusuf Mahtab <yusufmahtab@quantexa.com>
2024-10-30 08:12:33 -06:00
austin5219
092bb7328c fix(pkce): 20111 PKCE auth flow does not return user to previous path like dex auth flow (#20202)
* Adding non-default basehref support for PKCE auth flow

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* Adding ; for linting

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* removing hook function

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* Moving unauthorized error handling to class component to access context for error handling within 401 error

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* Store the subsrition handle to close in unmount

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* reorder imports

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* Actually saving the subscriptions now

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* returning the 401 subscription from helper function

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* Handle the promise of a subscription

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* Removing then from non async subscribe

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* Linter fixes

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

* Adding path caching to sessionStorage on pkceLogin and redirect step to cached path if available in pkceCallback to mirror Dex functionality

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>

---------

Signed-off-by: austin5219 <3936059+austin5219@users.noreply.github.com>
2024-10-30 12:37:18 +02:00
Preethi Sureshkumar
d408909df6 docs: Update Dex OIDC example (#20545)
* docs: Update Dex OIDC example

Type for using OIDC claim should be `oidc` instead of `OIDC`.

Signed-off-by: Preethi Sureshkumar <40830235+preethi-sv@users.noreply.github.com>

* docs: Update Dex OIDC example

Signed-off-by: Preethi Sureshkumar <40830235+preethi-sv@users.noreply.github.com>

---------

Signed-off-by: Preethi Sureshkumar <40830235+preethi-sv@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-10-30 04:29:52 +00:00
Shubham Zanzad
d8fe100278 Docs: Added prerequisites for argoCD, fork and clone repository, upstreaming, common make targets, steps before submitting a PR. (#20540)
Signed-off-by: Shubham Zanzad <shubhamzanzad25@gmail.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-10-30 04:28:23 +00:00
dependabot[bot]
bb1e75fe82 chore(deps): bump actions/setup-go from 5.0.2 to 5.1.0 (#20529)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](0a12ed9d6a...41dfa10bad)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 20:40:35 +00:00
dependabot[bot]
683d030843 chore(deps): bump actions/setup-node from 4.0.4 to 4.1.0 (#20528)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.0.4 to 4.1.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](0a44ba7841...39370e3970)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 20:37:38 +00:00
Chirag Jain
73fbcc9ce4 chore: add bajaj finserv health ltd. in list of users (#20555)
Signed-off-by: Chirag Jain <chirag.jain1@bajajfinserv.in>
2024-10-29 15:42:01 -04:00
Julie Vogelman
9687619541 fix: updates to health status for Numaplane resources (#20544)
* fix: updates to health status for Numaplane resources

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* health checks

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* fix testdata path

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* additional health check tests

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* temporary file removal

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* add file renamed

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* fix: empty commit

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* move check for no status

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* fix: empty commit

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* fix: empty commit

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

---------

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>
2024-10-29 15:32:01 -04:00
ABBOUD Moncef
76fbc1f0c9 fix(ci): ignore temporary files when checking for out of bound symlinks (#20527)
Signed-off-by: cef <moncef.abboud95@gmail.com>
2024-10-29 14:31:11 -04:00
renovate[bot]
3625689264 chore(deps): update dependency pymdown-extensions to v10.12 (#20567)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-29 11:54:17 -04:00
SuminSSon
4dcbbd7d24 docs: correct typos in documentation (#20569)
* docs: update Cluster Generator example for cluster name accuracy

Signed-off-by: SuminSSon <itoodo12@gmail.com>

* docs: standardized 'GitPod' to 'Gitpod' for consistency

Signed-off-by: SuminSSon <itoodo12@gmail.com>

---------

Signed-off-by: SuminSSon <itoodo12@gmail.com>
2024-10-29 17:25:30 +02:00
pasha-codefresh
33ecbbc4a8 fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574) 2024-10-29 10:06:00 -04:00
pasha-codefresh
29d52299da feat: add prompting to confirm delete certificate (#20547)
* feat: add prompting to confirm delete certificate

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: add prompting to confirm delete certificate

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-28 15:01:30 +00:00
pasha-codefresh
9b6d3a9a95 feat: add prompting to confirm prune during backup import (#20546)
* feat: add prompting to confirm prune during backup import

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: add prompting to confirm prune during backup import

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: add prompting to confirm prune during backup import

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-28 08:11:09 -04:00
pasha-codefresh
eb6d2e635f feat: add prompting to confirm remove of repository credentials (#20541)
* feat: add prompting to confirm remove of repository credentials

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: add prompting to confirm remove of repository credentials

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-28 07:18:41 -04:00
Ramesh Gaikwad
5c01cf6ebf chore: improve error logs in commands/admin/app.go (#20549)
* chore: imporve error response, wrap context with error

Signed-off-by: Ramesh Gaikwad <rameshgkwd05@gmail.com>

* correct error messge

Signed-off-by: Ramesh Gaikwad <rameshgkwd05@gmail.com>

---------

Signed-off-by: Ramesh Gaikwad <rameshgkwd05@gmail.com>
2024-10-27 10:09:33 +00:00
github-actions[bot]
3bf226d709 [Bot] docs: Update Snyk reports (#20551)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-10-27 10:52:41 +02:00
pasha-codefresh
16e7517044 feat: add prompting to confirm deletion of gpg public key (#20539) 2024-10-26 09:26:55 +03:00
dependabot[bot]
745f1cc348 chore(deps): bump sigs.k8s.io/controller-runtime from 0.19.0 to 0.19.1 (#20530)
Bumps [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) from 0.19.0 to 0.19.1.
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](https://github.com/kubernetes-sigs/controller-runtime/compare/v0.19.0...v0.19.1)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 21:45:34 +03:00
dependabot[bot]
7eb2a198b1 chore(deps): bump chromedriver from 130.0.0 to 130.0.1 in /ui-test (#20515)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 130.0.0 to 130.0.1.
- [Commits](https://github.com/giggio/node-chromedriver/compare/130.0.0...130.0.1)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-10-25 21:45:17 +03:00
변재한
4e215234ad doc: Update Show Orphaned Button Screenshot in Orphaned Resources Monitoring Documentation (#20533)
Signed-off-by: jaehanbyun <awbrg789@naver.com>
2024-10-25 05:57:33 -10:00
dependabot[bot]
a0b694384c chore(deps): bump library/redis in /test/container (#20494)
Bumps library/redis from `00faee9` to `a06cea9`.

---
updated-dependencies:
- dependency-name: library/redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-10-25 14:50:10 +03:00
pasha-codefresh
604c75b00d chore: change invalid comment (#20500) 2024-10-25 07:19:59 -04:00
dependabot[bot]
adf08ed87f chore(deps-dev): bump @types/node from 22.7.6 to 22.7.9 in /ui-test (#20514)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.7.6 to 22.7.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 10:57:08 +03:00
dependabot[bot]
1a478a531b chore(deps): bump bitnami/kubectl in /test/container (#20516)
Bumps bitnami/kubectl from `b509ab6` to `4d757d9`.

---
updated-dependencies:
- dependency-name: bitnami/kubectl
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 10:56:53 +03:00
dependabot[bot]
e9ff075610 chore(deps): bump actions/cache from 4.1.1 to 4.1.2 (#20493)
Bumps [actions/cache](https://github.com/actions/cache) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](3624ceb22c...6849a64899)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 10:38:58 +03:00
renovate[bot]
229ac1bf9d chore(deps): update docker.io/library/golang:1.23.2 docker digest to ad5c126 (#20419)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-25 10:38:37 +03:00
david-wu-octopus
b5d8eddb82 feat: Add reusable interactive prompts and configure command (issue #19528) (#19637)
* Add `Prompt`, with `prompts.enabled` setting in `argocd-cm`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Make `SettingsOpts`, `SettingsOpts.ArgocdCMPath`, `SettingsOpts.CreateSettingsManager()`  and `commandContext.CreateSettingsManager()` exportable

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add `prompt_test.go`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Refactor `NewPrompt()` and move into new package `utils`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Update `NewPrompt()` to use local config

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add `NewConfigurationCommand()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Move `prompt_test.go`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Remove `prompt_test.go` for now

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add back and update `prompt_test.go`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add `configuration_test.go`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Fix linting issues

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Fix linting issues

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Reverse early-termination logic in `Confirm()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Rename `ArgocdCMPath` to `argocdCMPath`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Rename `SettingsOpts` to `settingsOpts`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Rename `CreateSettingsManager()` to `createSettingsManager()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Rename `configuration` to `configure`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Further rename `configuration` to `configure`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Remove redundant Argo CD ConfigMap logic

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Fix terminal output spacing

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Make `argocd configure` use local config value as the default value for `--prompts-enabled`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add global CLI flag `--force-prompts-enabled`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Update existing `prompt_test.go` test cases

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add test case for `(p *Prompt).Confirm()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add test cases for `GetBoolFlagWithFallback()` to `env_test.go`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Format imports

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Further format imports and remove unused variable

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Again format imports

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add fallback to `GetPromptsEnabled()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Fix bug in `GetPromptsEnabled()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Fix missing import

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add auto-generated docs for `argocd configure`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add auto-generated docs for new global CLI flag `--force-prompts-enabled`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Update `NewPrompt()` to receive a `bool` rather than `*apiclient.ClientOptions` arg

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Remove arg `fallback` from `GetPromptsEnabled()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add arg `useCLIOpts bool` to `GetPromptsEnabled()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Make `config.LoadFlags()` exportable

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Add tests for `GetPromptsEnabled()`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Fix linting errors in tests

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

* Run `make codegen-local`

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>

---------

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>
2024-10-25 10:21:23 +03:00
dependabot[bot]
f4577e3b5a chore(deps): bump github.com/ktrysmt/go-bitbucket from 0.9.80 to 0.9.81 (#20397)
Bumps [github.com/ktrysmt/go-bitbucket](https://github.com/ktrysmt/go-bitbucket) from 0.9.80 to 0.9.81.
- [Release notes](https://github.com/ktrysmt/go-bitbucket/releases)
- [Commits](https://github.com/ktrysmt/go-bitbucket/compare/v0.9.80...v0.9.81)

---
updated-dependencies:
- dependency-name: github.com/ktrysmt/go-bitbucket
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 09:34:28 +03:00
Chris Fidao
21026dba43 fixed formatting issue + added a few tidbits (#20522)
Signed-off-by: Chris Fidao <fideloper@gmail.com>
2024-10-25 09:09:46 +03:00
Rohen
1675b0b2ae chore: Update USERS.md (#20513) 2024-10-24 09:24:40 -07:00
dependabot[bot]
8c00cf0ce1 chore(deps): bump http-proxy-middleware from 2.0.4 to 2.0.7 in /ui (#20518) 2024-10-24 08:00:40 -04:00
Chris Fidao
c4453999f2 docs: Declarative argo clusters docs update for EKS (#20503)
* first stab at updating argo cd declaritive docs for eks

Signed-off-by: Chris Fidao <fideloper@gmail.com>

* some refinements

Signed-off-by: Chris Fidao <fideloper@gmail.com>

* Update docs/operator-manual/declarative-setup.md

Co-authored-by: Nitish Kumar <justnitish06@gmail.com>
Signed-off-by: Chris Fidao <fideloper@gmail.com>

---------

Signed-off-by: Chris Fidao <fideloper@gmail.com>
Co-authored-by: Nitish Kumar <justnitish06@gmail.com>
2024-10-24 05:23:52 -06:00
Alexander Matyushentsev
7c9bd2d2d3 feat: application resource deletion protection (#20497)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-10-24 00:08:24 -07:00
Leonardo Luz Almeida
212efa4914 feat: allow individual extension configs (#20491)
* feat: allow individual extension configs

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* fix test

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* update ext docs

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* + docs

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* pr review

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* address review comments

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-10-23 12:33:53 -04:00
Yash Talele
5b25b281c8 Fixed incorrect pluralization on resources (#20468)
Extra s was being added to the resources. So, I am checking if the
resource is ending in 's' or not. If it is ending in 's' no change, but
if not then 's' is added at the end of the word.

Signed-off-by: Yash Talele <yashrtalele@gmail.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-10-23 14:40:06 +00:00
Michael Crenshaw
0b48670ebb docs: clarify priority of health statuses (#20490)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-23 08:32:34 -06:00
ABBOUD Moncef
e953a2de8b fix(appset): avoid panic when no steps in rollingSync (#20357)
Signed-off-by: cef <moncef.abboud95@gmail.com>
2024-10-22 21:37:58 -04:00
dependabot[bot]
ea46572326 chore(deps): bump library/redis in /test/container (#20442)
Bumps library/redis from `5412098` to `00faee9`.

---
updated-dependencies:
- dependency-name: library/redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-22 00:55:54 -04:00
Rune Antonsen
ac69f5223c docs(applicationset): explain how to add repo credentials (#20453)
* docs(applicationset): add section explaining how to set up repo credentials for git generator

Signed-off-by: Rune Antonsen <rune.antonsen@gmail.com>

* Update docs/operator-manual/applicationset/Generators-Git.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Rune Antonsen <rune.antonsen@gmail.com>

* Update docs/operator-manual/applicationset/Generators-Git.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Rune Antonsen <rune.antonsen@gmail.com>

* Update docs/operator-manual/applicationset/Generators-Git.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Rune Antonsen <rune.antonsen@gmail.com>

* Update docs/operator-manual/applicationset/Generators-Git.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Rune Antonsen <rune.antonsen@gmail.com>

---------

Signed-off-by: Rune Antonsen <rune.antonsen@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-10-21 22:05:02 +02:00
Alexandre Gaudreault
aff5e6132b docs: document all unstable configurations (#20336) (#20438)
* overview

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>

* 12

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>

* document fields

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>

* spec path wildcard

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>

* order

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>

* move links to bottom

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-10-21 00:14:45 -04:00
github-actions[bot]
fdf250309f [Bot] docs: Update Snyk reports (#20465)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-10-20 12:12:45 +00:00
Michael Crenshaw
ec499bb070 fix(diff): avoid cache miss in server-side diff (#20423) (#20424)
* fix(diff): avoid cache miss in server-side diff (#20423)

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* fix silly mistakes

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-18 09:36:42 -04:00
Blake Pettersson
76104dae21 fix: don't disable buttons for multi-source apps (#20446)
With #20381 multi-source apps were not taken into account 🤦

Fixes #20445.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-10-18 03:16:59 -10:00
dependabot[bot]
e7e6f5bae9 chore(deps): bump github.com/redis/go-redis/v9 from 9.6.2 to 9.7.0 (#20441)
Bumps [github.com/redis/go-redis/v9](https://github.com/redis/go-redis) from 9.6.2 to 9.7.0.
- [Release notes](https://github.com/redis/go-redis/releases)
- [Changelog](https://github.com/redis/go-redis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/go-redis/compare/v9.6.2...v9.7.0)

---
updated-dependencies:
- dependency-name: github.com/redis/go-redis/v9
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 07:32:39 -04:00
dependabot[bot]
1d12fcfecf chore(deps): bump chromedriver from 129.0.4 to 130.0.0 in /ui-test (#20415)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 129.0.4 to 130.0.0.
- [Commits](https://github.com/giggio/node-chromedriver/compare/129.0.4...130.0.0)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 13:17:40 +03:00
dependabot[bot]
4e92079c91 chore(deps-dev): bump @types/node from 22.7.5 to 22.7.6 in /ui-test (#20414)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.7.5 to 22.7.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 13:14:46 +03:00
renovate[bot]
8b06307500 chore(deps): update node.js to v23 (#20413)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-18 13:09:53 +03:00
Michael Crenshaw
79ba36026a fix(ci): handle new k3s test version matrix (#20223) (#20427)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-17 16:05:38 -04:00
변재한
d1ef0f85fa fix(docs): ensure version dropdown sorts correctly regardless of browser language #20289 (#20322)
Signed-off-by: jaehanbyun <awbrg789@naver.com>
2024-10-17 10:06:44 -04:00
Michael Crenshaw
c216ece3a4 chore(server): better error message for missing action (#20408) (#20409)
* chore(server): better error message for missing action

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* Update util/lua/lua_test.go

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-17 09:28:41 -04:00
Pan Luo
4faf8dd11c fix: the unmatching template issue introduced from #20237 (#20410)
* Fix the unmatching template error

The error in the notification controller shows unmatching "{{end}}"
```
error in 'app-health-degraded' teams.potentialAction: template:
app-health-degraded:14: unexpected {{end}}"
```

Signed-off-by: Pan Luo <pan.luo@ubc.ca>

* update templates to match the install.yaml

Signed-off-by: Pan Luo <pan.luo@ubc.ca>

* fix inconsistent yaml block style formating

Signed-off-by: Pan Luo <pan.luo@ubc.ca>

---------

Signed-off-by: Pan Luo <pan.luo@ubc.ca>
2024-10-17 08:17:10 -04:00
Michael Crenshaw
f6eaaea769 fix(ui): display correct init info in Pod UI (#20387)
* fix(controller): change pod status calculate with sidecar

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* fix(controller): add restartable sidecar count in total container display

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* test UI, fix bugs

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

oops

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

indent

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

fix accidental duplication

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* apply recommendation

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: linghaoSu <linghao.su@daocloud.io>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: linghaoSu <linghao.su@daocloud.io>
2024-10-17 08:16:51 -04:00
Michael Crenshaw
9b15589729 docs(cli): fix example command (#20402)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-10-17 08:14:39 -04:00
Michael Crenshaw
dff4152e8e docs: update note about timeout.reconciliation (#20407)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-17 10:05:13 +02:00
Blake Pettersson
ed4c0ee713 fix(ui): source can in fact be undefined (#20381)
* fix(ui): source can in fact be `undefined`

The assumption that a source is always there is not always true. To
repro, create an app-of-apps containing a single app without any `source`
present. In the UI this will crash, horribly. This PR fixes that so
that instead of crashing the user will get useful info indicating what
is wrong with the app.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* chore(ui): some cr tweaks

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* chore(ui): some cr tweaks

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-10-16 21:55:17 -04:00
Matthieu MOREL
cc989251ef chore: enable thelper linter (#20405)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-10-16 17:37:03 +00:00
dependabot[bot]
f031f490e6 chore(deps): bump github.com/prometheus/client_golang (#20398)
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.20.4 to 1.20.5.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.20.4...v1.20.5)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-10-16 10:48:26 -04:00
Matthieu MOREL
e0ebb02443 chore: enable usestdlibvars linter (#20399) 2024-10-16 07:54:00 -04:00
Sujin Kim
049ba0aab3 docs: correct typos in authz-authn.md and proxy-extensions.md (#20391)
* docs : correct typo from "bellow" to "below" in authz-authn.md

Signed-off-by: Sujin Kim <108571492+cowboysj@users.noreply.github.com>

* docs : correct typo from "modifiying" to "modifying" in extensions.md

Signed-off-by: Sujin Kim <108571492+cowboysj@users.noreply.github.com>

---------

Signed-off-by: Sujin Kim <108571492+cowboysj@users.noreply.github.com>
2024-10-16 00:39:21 +02:00
Linghao Su
e80de49043 fix(controller/ui): fix pod with sidecar state (#19843)
* fix(controller): change pod status calculate with sidecar

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* fix(controller): add restartable sidecar count in total container display

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* fix(controller): update info test case conditions

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Linghao Su <slh001@live.cn>

* fix(controller): add more test case to cover more conditions

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* fix(ui): check is condition exist before for of

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

---------

Signed-off-by: linghaoSu <linghao.su@daocloud.io>
Signed-off-by: Linghao Su <slh001@live.cn>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-15 15:05:34 -04:00
pasha-codefresh
d16df525d7 feat: manage clusters via proxy (#20374)
* feat: proxy support

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: proxy support

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: proxy support

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* fix linter

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* small improvements

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* add cluster test

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* fix linter

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* change error message

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* override always will change proxy url

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-15 09:47:52 -07:00
dependabot[bot]
b2e52de591 chore(deps): bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc (#20376)
Bumps [go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc](https://github.com/open-telemetry/opentelemetry-go-contrib) from 0.55.0 to 0.56.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go-contrib/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.55.0...zpages/v0.56.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-15 09:38:04 -07:00
pasha-codefresh
a25378f1ef feat: appset scm generators and PR generators should be able to access only secrets related to appset (#20309) 2024-10-15 08:28:13 -04:00
dependabot[bot]
195de1a7ab chore(deps): bump github.com/redis/go-redis/v9 from 9.6.1 to 9.6.2 (#20377)
Bumps [github.com/redis/go-redis/v9](https://github.com/redis/go-redis) from 9.6.1 to 9.6.2.
- [Release notes](https://github.com/redis/go-redis/releases)
- [Changelog](https://github.com/redis/go-redis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/go-redis/compare/v9.6.1...v9.6.2)

---
updated-dependencies:
- dependency-name: github.com/redis/go-redis/v9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-15 01:58:39 -04:00
dependabot[bot]
81785b861c chore(deps): bump github.com/xanzy/go-gitlab from 0.111.0 to 0.112.0 (#20378)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.111.0 to 0.112.0.
- [Release notes](https://github.com/xanzy/go-gitlab/releases)
- [Changelog](https://github.com/xanzy/go-gitlab/blob/main/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.111.0...v0.112.0)

---
updated-dependencies:
- dependency-name: github.com/xanzy/go-gitlab
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-15 01:58:14 -04:00
Michael Crenshaw
e654ed59f8 fix(cli): add missing resources and actions to cani CLI (#20347)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-14 22:32:40 -04:00
Michael Crenshaw
7ab5015691 docs: feature maturity page for alpha and beta features (#20336) (#20337)
* docs: feature maturity page for alpha and beta features (#20336)

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* typos

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-14 04:11:50 -10:00
Michael Crenshaw
0cdbc3cb3e chore: simplify 'get repo' API implementation (#20348)
* chore: simplify 'get repo' API implementation

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* import order

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-14 09:01:55 -04:00
dependabot[bot]
898c2b5902 chore(deps): bump github.com/bmatcuk/doublestar/v4 from 4.6.1 to 4.7.1 (#20363)
Bumps [github.com/bmatcuk/doublestar/v4](https://github.com/bmatcuk/doublestar) from 4.6.1 to 4.7.1.
- [Release notes](https://github.com/bmatcuk/doublestar/releases)
- [Commits](https://github.com/bmatcuk/doublestar/compare/v4.6.1...v4.7.1)

---
updated-dependencies:
- dependency-name: github.com/bmatcuk/doublestar/v4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-14 08:58:36 -04:00
dependabot[bot]
e2c4b23701 chore(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc (#20361) 2024-10-14 12:36:47 +00:00
dependabot[bot]
e03d609a1c chore(deps): bump codecov/test-results-action from 1.0.0 to 1.0.1 (#20359) 2024-10-14 07:44:25 -04:00
dependabot[bot]
ed9d18f4e6 chore(deps): bump go.opentelemetry.io/otel from 1.30.0 to 1.31.0 (#20360) 2024-10-14 07:39:37 -04:00
kswadi
439edd0ef0 docs: added Podman based set up in contributors quick-start (#20367) 2024-10-14 07:38:41 -04:00
github-actions[bot]
a5a31a9539 [Bot] docs: Update Snyk reports (#20354)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-10-13 12:37:50 +00:00
Kunho Lee
9b11b21f00 fix: check err before use schedule and duration (#20043)
* fix: check err before use schedule and duration

Signed-off-by: daengdaengLee <gunho1020@gmail.com>

* test: add tests for invalid schedule and duration

Signed-off-by: daengdaengLee <gunho1020@gmail.com>

* feat: change to return error when sync window is invalid

Signed-off-by: daengdaengLee <gunho1020@gmail.com>

* fix: use assert.Error or assert.NoError

Signed-off-by: daengdaengLee <gunho1020@gmail.com>

* fix: use require instead of assert

Signed-off-by: daengdaengLee <gunho1020@gmail.com>

---------

Signed-off-by: daengdaengLee <gunho1020@gmail.com>
2024-10-12 13:32:46 -04:00
Anton Gilgur
cf498f674d chore(deps): upgrade argo-ui, including breaking changes (#19655)
* chore(deps): upgrade `argo-ui`, including one breaking change

- upgrade to a7b01f9f00

- `moment` is no longer used internally by `argo-ui`, so change `Ticker` usage to account for this
  - CD should also remove the deprecated `moment` library for the same reasons as downstream and Workflows

Signed-off-by: Anton Gilgur <agilgur5@gmail.com>

* type-check and format fixes

Signed-off-by: Anton Gilgur <agilgur5@gmail.com>

* set `durationMs={0}` instead of `null`

bc in JS `0 || null == null`, so the edge case of a `0` duration caused the component to render just an empty string

Signed-off-by: Anton Gilgur <agilgur5@gmail.com>

* update argo-ui once more for deprecated durationMs removal

Signed-off-by: Anton Gilgur <agilgur5@gmail.com>

---------

Signed-off-by: Anton Gilgur <agilgur5@gmail.com>
2024-10-11 18:58:08 -04:00
Ashley Manraj
86769fc4db docs: Update USERS.md (#20349)
Added Pvotal technologies to the official user list

Signed-off-by: Ashley Manraj <90852185+a-manraj-pvotal@users.noreply.github.com>
2024-10-11 16:24:19 -04:00
ABBOUD Moncef
27eebaa53c feat(appset): add 'project' to the Cluster Generator params (#20338)
Signed-off-by: cef <moncef.abboud95@gmail.com>
2024-10-11 17:02:27 +00:00
Dillen Padhiar
b05cafdfca feat: add custom actions for Numaflow CRDs (#20332)
* feat: add pause/unpause actions for Numaflow CRDs

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* fix: codegen

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

---------

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>
2024-10-11 16:14:58 +00:00
Michael Crenshaw
b8f85c9500 fix(ci): get correct previous release version for release notes (#19443) (#20315)
* better release notes

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* work on fork

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* don't do unnecessary stuff

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* fix path

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* fix path

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* help debug

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* refactor, clean up

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* use a workspace to avoid touching the main go.mod

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-11 11:50:31 -04:00
ALIHAMZA99
d542b023f2 docs: updating links to the directory and wording (#20335)
* docs: updating links to the directory and wording

Signed-off-by: alnoor <alihamzanoor99@gmail.com>

* Update docs/developer-guide/test-e2e.md

Co-authored-by: rumstead <37445536+rumstead@users.noreply.github.com>
Signed-off-by: ALIHAMZA99 <46565563+ALIHAMZA99@users.noreply.github.com>

* Update links

Signed-off-by: ALIHAMZA99 <46565563+ALIHAMZA99@users.noreply.github.com>

* Update links

Signed-off-by: ALIHAMZA99 <46565563+ALIHAMZA99@users.noreply.github.com>

* Update links

Signed-off-by: ALIHAMZA99 <46565563+ALIHAMZA99@users.noreply.github.com>

* Update links

Signed-off-by: ALIHAMZA99 <46565563+ALIHAMZA99@users.noreply.github.com>

---------

Signed-off-by: alnoor <alihamzanoor99@gmail.com>
Signed-off-by: ALIHAMZA99 <46565563+ALIHAMZA99@users.noreply.github.com>
Co-authored-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-10-11 11:09:20 -04:00
dependabot[bot]
47f63f0d14 chore(deps): bump chromedriver from 129.0.3 to 129.0.4 in /ui-test (#20340)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 129.0.3 to 129.0.4.
- [Commits](https://github.com/giggio/node-chromedriver/compare/129.0.3...129.0.4)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-11 09:47:23 -04:00
dependabot[bot]
94e81cdae5 chore(deps): bump github.com/xanzy/go-gitlab from 0.110.0 to 0.111.0 (#20339)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.110.0 to 0.111.0.
- [Release notes](https://github.com/xanzy/go-gitlab/releases)
- [Changelog](https://github.com/xanzy/go-gitlab/blob/main/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.110.0...v0.111.0)

---
updated-dependencies:
- dependency-name: github.com/xanzy/go-gitlab
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-11 08:46:23 -04:00
Nitish Kumar
ed311fea13 add docs to build site locally (#20342)
Signed-off-by: nitishfy <justnitish06@gmail.com>
2024-10-11 05:20:38 -07:00
Alexandre Gaudreault
29c59ab135 Revert "feat: exclude Endpoints and EndpointSlices Kubernetes resource by default" (#20334)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-10-10 17:43:16 +00:00
변재한
8ebf4a8841 feat: Enable ignoreResourceUpdate by default #19992 (#20303)
Signed-off-by: jaehanbyun <awbrg789@naver.com>
2024-10-10 12:39:04 -04:00
Alexander Matyushentsev
6b5cdc764d docs: document server side pagination proposal (#17222)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-10-10 12:02:05 -04:00
yan xu
d85a1dee23 fix(#18495): Add Alternate color of resources in sync panel (#19250)
* add Alternate color of resources in sync panel

Co-authored-by: Xu Yan <Yan.Xu@fmr.com>
Co-authored-by: Jessie Teng <jessie.teng@fmr.com>
Signed-off-by: Xu, Yan <Yan.Xu@fmr.com>

* format code

Signed-off-by: Xu, Yan <Yan.Xu@fmr.com>

* update style based on maintainer's feedback

Signed-off-by: Jessie Teng <jessie.teng@fmr.com>

* Add these styles to prevent overflow

Signed-off-by: Xu, Yan <Yan.Xu@fmr.com>

* add style base on maintainer feedback

Signed-off-by: Xu, Yan <Yan.Xu@fmr.com>

---------

Signed-off-by: Xu, Yan <Yan.Xu@fmr.com>
Signed-off-by: Jessie Teng <jessie.teng@fmr.com>
Co-authored-by: Jessie Teng <jessie.teng@fmr.com>
2024-10-10 16:46:29 +03:00
dependabot[bot]
e144d5c189 chore(deps): bump github.com/cyphar/filepath-securejoin (#20319)
Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.3.3 to 0.3.4.
- [Release notes](https://github.com/cyphar/filepath-securejoin/releases)
- [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.3.3...v0.3.4)

---
updated-dependencies:
- dependency-name: github.com/cyphar/filepath-securejoin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-10 11:25:50 +03:00
dependabot[bot]
c4fb5d9b2a chore(deps): bump chromedriver from 129.0.2 to 129.0.3 in /ui-test (#20317)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 129.0.2 to 129.0.3.
- [Commits](https://github.com/giggio/node-chromedriver/compare/129.0.2...129.0.3)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-10 11:25:06 +03:00
renovate[bot]
77b57af230 chore(deps): update docker.io/library/golang:1.23.2 docker digest to a7f2fc9 (#20318)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 11:20:41 +03:00
dependabot[bot]
7031387b7f chore(deps): bump actions/upload-artifact from 4.4.2 to 4.4.3 (#20320)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.2 to 4.4.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](84480863f2...b4b15b8c7c)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-10 11:20:25 +03:00
Rungsikorn Rungsikavarnich
19613a20fb feat(controller): support Istio ServiceEntry network node #20270 (#20273)
add serviceentry node to network diagram and link to workload
by workloadSelector label reference

Signed-off-by: zapkub <rungsikorn@me.com>
2024-10-10 11:19:39 +03:00
Michael Crenshaw
45bbd46287 chore(ui): fix sonarcloud warning (#16496)
* chore(ui): fix sonarcloud warning

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* accept suggestion

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-10-10 11:14:40 +03:00
Linghao Su
24e67df099 feat(ui): support enable word wrap in live and desired manifest panel (#20299)
Signed-off-by: linghaoSu <linghao.su@daocloud.io>
2024-10-09 22:30:35 -04:00
Dillen Padhiar
951f749406 fix: remove hardcoded conditions from Numaflow CRD health checks (#20316)
Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>
2024-10-09 17:32:14 -04:00
Dillen Padhiar
82484ce758 feat: introduce health checks for Numaflow CRDs (#20297)
Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>
2024-10-09 16:36:21 +00:00
Julie Vogelman
4722a7f78f feat: add Actions for PipelineRollout to allow/disallow data loss (#20298)
* add Actions for PipelineRollout to allow/disallow data loss

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* fix: test, add codegen generated docs

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* fix name

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* fix: make actions more robust to handle empty metadata

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

* spacing

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>

---------

Signed-off-by: Julie Vogelman <julievogelman0@gmail.com>
2024-10-09 11:15:10 -04:00
rezellme
19d85aa9fb feat(health): Adding more health checks for Keycloak, Postgres, Grafana, SolrCloud (#20294)
* feat(health): Add healtchcheck for acid.zalan.do/postgresql

Signed-off-by: Remo Zellmer <rze@vizrt.com>

* feat(health): Add healthcheck for grafana.integreatly.org/Grafana and GrafanaDatasource

Signed-off-by: Remo Zellmer <rze@vizrt.com>

* feat(health): Add healthcheck for k8s.keycloak.org/Keycloak

Signed-off-by: Remo Zellmer <rze@vizrt.com>

* feat(health): Add healthcheck for solr.apache.org/SolrCloud

Signed-off-by: Remo Zellmer <rze@vizrt.com>

---------

Signed-off-by: Remo Zellmer <rze@vizrt.com>
2024-10-09 11:12:09 -04:00
Daan Verstraten
e1472f309a chore: replacing custom map util functions with golang std (#20311)
Signed-off-by: Daan Verstraten <daanverstraten@hotmail.com>
2024-10-09 10:34:03 -04:00
OpenGuidou
1bbeab7a03 feat(clusters) - Add disableCompression option in the cluster config (#20291)
Signed-off-by: OpenGuidou <guillaume.doussin@gmail.com>
2024-10-09 15:36:46 +03:00
Nitish Kumar
cfa1c89c43 fix: disable automaxprocs logging (#20069)
* disable automaxprocs logging

Signed-off-by: nitishfy <justnitish06@gmail.com>

fix lint checks

Signed-off-by: nitishfy <justnitish06@gmail.com>

move maxprocs to main.go

Signed-off-by: nitishfy <justnitish06@gmail.com>

move set auto max procs to a function

Signed-off-by: nitishfy <justnitish06@gmail.com>

add info log

Signed-off-by: nitishfy <justnitish06@gmail.com>

* add info log

Signed-off-by: nitishfy <justnitish06@gmail.com>

* fix lint checks

Signed-off-by: nitishfy <justnitish06@gmail.com>

* fix lint checks

Signed-off-by: nitishfy <justnitish06@gmail.com>

* add unit test

Signed-off-by: nitishfy <justnitish06@gmail.com>

* fix lint issues

Signed-off-by: nitishfy <justnitish06@gmail.com>

---------

Signed-off-by: nitishfy <justnitish06@gmail.com>
2024-10-09 11:21:24 +00:00
dependabot[bot]
f9845694d0 chore(deps): bump actions/cache from 4.1.0 to 4.1.1 (#20301)
Bumps [actions/cache](https://github.com/actions/cache) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](2cdf405574...3624ceb22c)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 14:14:54 +03:00
dependabot[bot]
78c85a2295 chore(deps-dev): bump @types/node from 22.7.2 to 22.7.5 in /ui-test (#20281)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.7.2 to 22.7.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 14:10:46 +03:00
dependabot[bot]
3da774bb0b chore(deps): bump actions/upload-artifact from 4.4.1 to 4.4.2 (#20300)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.1 to 4.4.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](604373da63...84480863f2)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 13:59:37 +03:00
Michael Crenshaw
8647db1157 chore(controller): remove unnecessary field (#20295)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-09 13:59:03 +03:00
dependabot[bot]
c6d45d8dcf chore(deps-dev): bump typescript from 5.6.2 to 5.6.3 in /ui-test (#20302)
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.6.2 to 5.6.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.6.2...v5.6.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 13:40:59 +03:00
Alexander Matyushentsev
dc27102cff feat: support using exponential backoff between self heal attempts (#20275)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-10-08 16:32:00 +00:00
Blake Pettersson
6002c7d8f3 fix: allow pipes to be present in git username (#20040)
* fix: [#15949] split git revision metadata by newline not pipe symbol

pipe symbol '|' could appear in username or commit message body

Signed-off-by: Petr Studeny <studenyp@gmail.com>

* test: add test

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* Update util/git/client_test.go

Co-authored-by: Petr Studeny <studenyp@gmail.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* test: fix test

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

---------

Signed-off-by: Petr Studeny <studenyp@gmail.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Petr Studeny <studenyp@gmail.com>
2024-10-08 08:10:46 -04:00
변재한
a288b4d8c9 feat: exclude Endpoints and EndpointSlices Kubernetes resource by default (#20251)
Signed-off-by: jaehanbyun <awbrg789@naver.com>
2024-10-08 17:32:00 +05:30
ayatk
3f249ffc8d chore: Update notification engine to 2fef5c9 (#20276)
* Update notification-engine to 2fef5c9049fd

Signed-off-by: ayatk <ayatk@users.noreply.github.com>

* make notification-docs

Signed-off-by: ayatk <ayatk@users.noreply.github.com>

---------

Signed-off-by: ayatk <ayatk@users.noreply.github.com>
Co-authored-by: ayatk <ayatk@users.noreply.github.com>
2024-10-08 09:38:27 +03:00
dependabot[bot]
8d9a3a743a chore(deps): bump library/redis from 7.4.0 to 7.4.1 in /test/container (#20282)
Bumps library/redis from 7.4.0 to 7.4.1.

---
updated-dependencies:
- dependency-name: library/redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 09:36:53 +03:00
dependabot[bot]
c641304b2a chore(deps-dev): bump @types/mocha from 10.0.8 to 10.0.9 in /ui-test (#20280)
Bumps [@types/mocha](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mocha) from 10.0.8 to 10.0.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mocha)

---
updated-dependencies:
- dependency-name: "@types/mocha"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 09:35:20 +03:00
dependabot[bot]
1e84af73df chore(deps): bump actions/upload-artifact from 4.4.0 to 4.4.1 (#20279)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.0 to 4.4.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](50769540e7...604373da63)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 09:34:26 +03:00
dependabot[bot]
419cf25f28 chore(deps): bump google.golang.org/protobuf from 1.34.2 to 1.35.1 (#20277)
Bumps google.golang.org/protobuf from 1.34.2 to 1.35.1.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 09:34:09 +03:00
dependabot[bot]
948aaf6f90 chore(deps): bump SonarSource/sonarqube-scan-action (#20278)
Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 0c0f3958d90fc466625f1d1af1f47bddd4cc6bd1 to 884b79409bbd464b2a59edc326a4b77dc56b2195.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](0c0f3958d9...884b79409b)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 09:33:54 +03:00
youhonglian
20e2e78476 fix(ui): history error reported in the dev environment (#20133)
Signed-off-by: honglian.you <honglian.you@daocloud.io>
2024-10-07 17:52:24 +03:00
dcoppa
345c8a18a2 fix: GOLANGCI_LINT_VERSION (#20264)
* Fix GOLANGCI_LINT_VERSION

Signed-off-by: David Coppa <dcoppa@cocus.com>

* chore(deps): bump SonarSource/sonarqube-scan-action from 2.3.0 to 3.0.0 (#19524)

Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 2.3.0 to 3.0.0.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](aecaf43ae5...0c0f3958d9)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: David Coppa <dcoppa@cocus.com>

* Update install-lint-tools.sh

Signed-off-by: dcoppa <dcoppa@gmail.com>

---------

Signed-off-by: David Coppa <dcoppa@cocus.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: dcoppa <dcoppa@gmail.com>
Co-authored-by: David Coppa <dcoppa@cocus.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-07 11:47:17 +00:00
Pavel Soloviev
6a9fe45871 docs: Add 404 Not Found github notify error to troubleshooting docs (#20085)
* docs: Add `404 Not Found` github notification error to troubleshooting docs

Signed-off-by: Moleus <fafufuburr@gmail.com>

* Update docs/operator-manual/notifications/troubleshooting-errors.md

Signed-off-by: Dan Garfield <dan@codefresh.io>

Signed-off-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* Update docs/operator-manual/notifications/troubleshooting-errors.md

Signed-off-by: Dan Garfield <dan@codefresh.io>

Signed-off-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: CVE-2024-45296 Backtracking regular expressions cause ReDoS by upgrading path-to-regexp from 1.8.0 to 1.9.0 (#20087)

Signed-off-by: Cheng Fang <cfang@redhat.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps-dev): bump @types/node from 22.5.5 to 22.7.2 in /ui-test (#20112)

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.5.5 to 22.7.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix(extension): add header to support apps-in-any-namespace (#20123)

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* Fix typo (#20127)

Remove a redundant "is".

Signed-off-by: Symeon Meichanetzoglou <simosmeih@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix(ui): add optional check to avoid undefined reference in project detail (#20044)

Signed-off-by: linghaoSu <linghao.su@daocloud.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump Helm from 3.15.2 to 3.15.4 (#20135)

* sec: upgrade helm version in order to fix critical vulnerability

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* sec: upgrade helm version in order to fix critical vulnerability

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: oras-go client should fallback to docker config if no credentials specified (#18133)

* oras-go client should fallback to docker config if no credentials specified

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

* Fix tests

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

* Fix lint

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

* gofumpt

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

* Validate auth header

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

---------

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump docker/build-push-action from 6.7.0 to 6.8.0 (#20154)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.8.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5cd11c3a4c...32945a3392)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: Fix argocd appset generate failure due to missing clusterrole (#20162)

* fix: FIx argocd-server clusterrole to allow argocd appset generate using cluster generator

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>

* fix: update generated code

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>

---------

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* [Bot] docs: Update Snyk reports (#20146)

Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: repo generate paths value in namespace install is incorrectly formatted (#20139)

* Fix repo generate paths value in namespace install

Signed-off-by: todaywasawesome <dan@codefresh.io>

* Fix in base and regen

Signed-off-by: todaywasawesome <dan@codefresh.io>

---------

Signed-off-by: todaywasawesome <dan@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat: introduce pause/unpause actions for Numaplane CRDs (#20128)

* feat: introduce pause/unpause actions for Numaplane CRDs

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* test: fixed incorrect file names

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* chore: codegen

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* fix: empty check for lifecycle

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* fix: nil check

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* fix: nil checks

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* test: testing different starting spec

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* feat: add nil checks for all possible nil fields

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* chore: rerun tests

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

---------

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat(appset): Add a cache layer for Argo Projects to speed-up application validation (#18703)

* feat(appset): Add a cache layer for Argo Projects to speed-up application validation

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Use local client rather than custom cache

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Clean go.mod

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Merge master

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Fix after merging master
Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Initialize appProject variable inside loop

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Remove unused ArgoAppClientset field
Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Fix linter issue
Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

---------

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* docs: added note re. arch of example application on getting_started.md (#20143)

added warning that example application may not run on all archs

Signed-off-by: Crumbs <44215646+Crumb5@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix(ui): hide resource actions menu if it's empty (#20051)

Signed-off-by: cef <moncef.abboud95@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* Fixes minor typo which lead to using the bearer token as api URL and was obviously not working. (#20169)

Signed-off-by: asjervanasten <asjer94@live.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore: Try to make CodeQL happy (#20094) (#20129)

* chore(common): Split const from unrelated util/clusterauth const

Signed-off-by: Josh Soref <jsoref@gmail.com>

* chore: Try to make CodeQL happy

Signed-off-by: Josh Soref <jsoref@gmail.com>

---------

Signed-off-by: Josh Soref <jsoref@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump docker/build-push-action from 6.8.0 to 6.9.0 (#20174)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.8.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](32945a3392...4f58ea7922)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat(ui): make name property for repos (#20077)

* name-option-added

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>

* lint

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat: basic e2e tests in order to verify notification service health (#20182)

* feat: basic e2e tests in order to verify notification service health

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: basic e2e tests in order to verify notification service health

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore: document credentials server (#20078)

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat: Add nodeSelector for Linux nodes (#20148)

* feat: Add nodeSelector for Linux nodes in application-controller, applicationset-controller, and repo-server

Signed-off-by: leehosu <hosu4549@gmail.com>

* refactor : Reversal the wrong part and correct it.

Signed-off-by: leehosu <hosu4549@gmail.com>

* Update argocd-application-controller-statefulset.yaml

Signed-off-by: l2h <hosu4549@gmail.com>

* feat: Add nodeSelector for Linux nodes in dex-server, argo-server

Signed-off-by: leehosu <hosu4549@gmail.com>

* refactor: update code to resolving for intergration test

Signed-off-by: leehosu <hosu4549@gmail.com>

* refactor: update code to resolving for codegen

Signed-off-by: leehosu <hosu4549@gmail.com>

* Run make manifests-local and then commit

Signed-off-by: leehosu <hosu4549@gmail.com>

---------

Signed-off-by: leehosu <hosu4549@gmail.com>
Signed-off-by: l2h <hosu4549@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump github.com/cyphar/filepath-securejoin (#20173)

Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/cyphar/filepath-securejoin/releases)
- [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.3.2...v0.3.3)

---
updated-dependencies:
- dependency-name: github.com/cyphar/filepath-securejoin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat(appset): parameterize requeue time #20063 (#20064)

Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(ci): better handling of Go and Node dependency bumps (#20168)

* chore(ci): better handling of Go and Node dependency bumps

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

temporarily remove condition

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

quit early if there are no changes

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

use latest checkout action and actually test version change

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

use github token

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

workflow for node

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

clean up after changing node version

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

revert temporary changes

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

more docs

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* bump linter version

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump codecov/codecov-action from 4.5.0 to 4.6.0 (#20188)

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](e28ff129e5...b9fd7d16f6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* docs(ui): sorting version (#20181)

Signed-off-by: nueavv <nuguni@kakao.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* docs: add outpost24 to users.md (#20197)

Signed-off-by: Phong Do <dominhphong306@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* docs: Update argocd path for command in notifification in troubleshooting docs (#20120)

Co-authored-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump google.golang.org/grpc from 1.67.0 to 1.67.1 (#20190)

Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.67.0 to 1.67.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.67.0...v1.67.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump chromedriver from 129.0.0 to 129.0.2 in /ui-test (#20189)

Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 129.0.0 to 129.0.2.
- [Commits](https://github.com/giggio/node-chromedriver/compare/129.0.0...129.0.2)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump bitnami/kubectl in /test/container (#20191)

Bumps bitnami/kubectl from `da4a986` to `b509ab6`.

---
updated-dependencies:
- dependency-name: bitnami/kubectl
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump library/busybox in /test/e2e/multiarch-container (#20193)

Bumps library/busybox from `c230832` to `768e5c6`.

---
updated-dependencies:
- dependency-name: library/busybox
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix(helm): escape consecutive commas in cleanSetParameters (#19269) (#20113)

Signed-off-by: KangManJoo <eogns47@konkuk.ac.kr>
Signed-off-by: daengdaengLee <gunho1020@gmail.com>
Co-authored-by: daengdaengLee <gunho1020@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* Update troubleshooting-errors.md (#20201)

Fixing some phrasing and adding more clarity.

Signed-off-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: Rework git tag semver resolution (#20083) (#20096)

* Write initial tests

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Improve git tag semver resolution

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Add company to list of users

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Fix broken error string check

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Fix incorrect semver test assumption

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* switch to debug statement

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Add more testcases for review

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* review comments

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

---------

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump golangci/golangci-lint-action from 6.1.0 to 6.1.1 (#20207)

Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat(ui): support auto theme (#20080)

* feat(theme): support auto theme

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* fix(ui): set default theme as light

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* fix(ui): only register listener when theme is auto

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

---------

Signed-off-by: linghaoSu <linghao.su@daocloud.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump selenium-webdriver from 4.24.1 to 4.25.0 in /ui-test (#20058)

Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.24.1 to 4.25.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/commits/selenium-4.25.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: refine deny destination checks (#20045)

* fix: refine server deny check

Fixes #19804. The deny destination check can be made more intuitive by
doing the following:

* short-circuit any deny destination
* first, for any deny server destination, _also_ check if the namespace matches
* for any deny namespace destination, reject as before

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* fix: also assert that server matches on ns deny

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore: Added unit tests and fix e2e tests for application sync decoupling feature (#19966)

* fixed doc comments and added unit tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Added comments for the newly added unit tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Refactored method name to deriveServiceAccountToImpersonate

Signed-off-by: anandf <anjoseph@redhat.com>

* Using const name in return value

Signed-off-by: anandf <anjoseph@redhat.com>

* Added unit tests for argocd proj add-destination-service-accounts

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed failing e2e tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Fix linting errors

Signed-off-by: anandf <anjoseph@redhat.com>

* Using require package instead of assert and fixed code generation

Signed-off-by: anandf <anjoseph@redhat.com>

* Removed parallel execution of tests for sync with impersonate

Signed-off-by: anandf <anjoseph@redhat.com>

* Added err checks for glob validations

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed e2e tests for sync impersonation

Signed-off-by: anandf <anjoseph@redhat.com>

* Using consistently based expects in E2E tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Added more unit tests and fixed go generate

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed failed lint errors, unit and e2e test failures

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed goimports linter issue

Signed-off-by: anandf <anjoseph@redhat.com>

* Added code comments and added few missing unit tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Added missing unit test for GetDestinationServiceAccounts method

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed goimports formatting with local for project_test.go

Signed-off-by: anandf <anjoseph@redhat.com>

* Corrected typo in a field name additionalObjs

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed failing unit tests

Signed-off-by: anandf <anjoseph@redhat.com>

---------

Signed-off-by: anandf <anjoseph@redhat.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: Fix false positive in plugin application discovery (#20196)

* fix: fix false positive in plugin application discovery

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>

* fix: apply suggestion to return immediately if discovery is not configured for unnamed plugin

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>

---------

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: update health check to support modelmesh (#20142)

Signed-off-by: Trevor Royer <troyer@redhat.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore: rename protobuf field according to convention (#20221)

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* docs: add TBC Bank to USERS.md (#20227)

* docs: add TBC Bank to USERS.md

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>

* docs: reorder TBC Bank by alphabetical

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>

---------

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump docker/setup-buildx-action from 3.6.1 to 3.7.0 (#20224)

Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.6.1 to 3.7.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](988b5a0280...8026d2bc36)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump tj-actions/changed-files from 45.0.2 to 45.0.3 (#20225)

Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.2 to 45.0.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](48d8f15b2a...c3a1bb2c99)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: use `ErrorContains(t, err` instead of `Contains(t, err.Error()` (#20220)

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* docs: Correct ApplicationSet (spec.preservedFields) (#20206)

* Fix docs

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

* Remove another errant block; improved comments

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

* Actually removed the errant block

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

* More doc fixes

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

* More spec fixes + USERS

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

---------

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix(health): only consider non-empty health checks (#20232)

* fix(health): only consider non-empty health checks

For wildcard health checks, only consider wildcards with a non-empty
health check. Fixes #16905 (at least partially).

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* test: renaming test case for clarity

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* refactor: add clarity as to what the function is supposed to do

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* Update docs/operator-manual/health.md

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* test: add test case for `*/*` override with empty healthcheck

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: support managing cluster with multiple argocd instances and annotation based tracking (#20222)

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix notification-catlog issue (#20237)

Signed-off-by: ajinkyak423 <ajinkyakumbhar423@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(ci): add renovate for golangci-lint, go and node version (#20236)

Signed-off-by: ggjulio <juligonz@student.42.fr>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump actions/cache from 4.0.2 to 4.1.0 (#20240)

Bumps [actions/cache](https://github.com/actions/cache) from 4.0.2 to 4.1.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](0c45773b62...2cdf405574)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump docker/setup-buildx-action from 3.7.0 to 3.7.1 (#20241)

Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.7.0 to 3.7.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](8026d2bc36...c47758b77c)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump golang.org/x/time from 0.6.0 to 0.7.0 (#20244)

Bumps [golang.org/x/time](https://github.com/golang/time) from 0.6.0 to 0.7.0.
- [Commits](https://github.com/golang/time/compare/v0.6.0...v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/time
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat(cli): Add app diff option to specify exit code when diff (#20144)

The argocd app diff command returns 1 if a difference is found. In related issues,
they want to return an error code that is distinguishable from common errors.
However, changing the existing behavior is likely to break user's automation code.
So we want to provide an explicit option(--diff-exit-code) to specify an error code.

Related: #3588

Signed-off-by: Eugene Kim <eugene70kim@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat: add support for helm skipTests flag (#20118)

Signed-off-by: jaehanbyun <awbrg789@naver.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump sigstore/cosign-installer from 3.6.0 to 3.7.0 (#20242)

Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](4959ce089c...dc72c7d5c4)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump golang.org/x/term from 0.24.0 to 0.25.0 (#20245)

Bumps [golang.org/x/term](https://github.com/golang/term) from 0.24.0 to 0.25.0.
- [Commits](https://github.com/golang/term/compare/v0.24.0...v0.25.0)

---
updated-dependencies:
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump golang.org/x/crypto from 0.27.0 to 0.28.0 (#20243)

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.27.0 to 0.28.0.
- [Commits](https://github.com/golang/crypto/compare/v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): bump golang.org/x/net from 0.29.0 to 0.30.0 (#20246)

Bumps [golang.org/x/net](https://github.com/golang/net) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/net/compare/v0.29.0...v0.30.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore: update notifications-engine to 22ccfe0caf45 (#20239)

* Update notifications-engine

Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>

* Update docs for Opsgenie notifications

Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>

* docs: Fix outdated slack notification configuration readme

Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>

---------

Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* [Bot] docs: Update Snyk reports (#20250)

Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: handle incorrect cluster RESTconfig without panic (#20150)

Signed-off-by: cef <moncef.abboud95@gmail.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): update node version (#20248)

* chore(deps): update node version

* Update ui/.nvmrc

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* sec: update alpine/helm to 3.16.1 (#20253)

Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(ci): update renovate config (#20254)

Signed-off-by: ggjulio <juligonz@student.42.fr>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* fix: Policy/policy.open-cluster-management.io health check is broken (#20108) (#20109)

Tried using the health check as listed here but it gave error:

| error setting app health: failed to get resource health for "Policy" with name "XXXX" in namespace "local-cluster": <string>:35: invalid value (nil) at index 1 in table for concat stack traceback: [G]: in function 'concat' <string>:35: in main chunk [G]: ?

This change fixes the error by updating how the noncompliant clusters are tracked and counted to use latest Lua recommendations.

Signed-off-by: Ian Tewksbury <itewk@redhat.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* feat(applicationset): Add FlatList option to cluster generator - Fixes #20212 (#20231)

* (feat) - Add FlatList option to cluster generator

Signed-off-by: OpenGuidou <guillaume.doussin@gmail.com>

* Update docs/operator-manual/applicationset/Generators-Cluster.md

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: OpenGuidou <guillaume.doussin@gmail.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): update docs dependencies (#20257)

* chore(deps): update docs dependencies

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* bump rtd python version

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore(deps): update group golang to v1.23.2 (#20256)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Moleus <fafufuburr@gmail.com>

* chore: bump k8s versions in e2e tests (#19669)

Signed-off-by: Moleus <fafufuburr@gmail.com>

---------

Signed-off-by: Moleus <fafufuburr@gmail.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Cheng Fang <cfang@redhat.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Signed-off-by: Symeon Meichanetzoglou <simosmeih@gmail.com>
Signed-off-by: linghaoSu <linghao.su@daocloud.io>
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>
Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>
Signed-off-by: CI <ci@argoproj.com>
Signed-off-by: todaywasawesome <dan@codefresh.io>
Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>
Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>
Signed-off-by: Crumbs <44215646+Crumb5@users.noreply.github.com>
Signed-off-by: cef <moncef.abboud95@gmail.com>
Signed-off-by: asjervanasten <asjer94@live.com>
Signed-off-by: Josh Soref <jsoref@gmail.com>
Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: leehosu <hosu4549@gmail.com>
Signed-off-by: l2h <hosu4549@gmail.com>
Signed-off-by: nueavv <nuguni@kakao.com>
Signed-off-by: Phong Do <dominhphong306@gmail.com>
Signed-off-by: KangManJoo <eogns47@konkuk.ac.kr>
Signed-off-by: daengdaengLee <gunho1020@gmail.com>
Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: anandf <anjoseph@redhat.com>
Signed-off-by: Trevor Royer <troyer@redhat.com>
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Signed-off-by: jyoungs <jyoungs@bluenightmare.com>
Signed-off-by: ajinkyak423 <ajinkyakumbhar423@gmail.com>
Signed-off-by: ggjulio <juligonz@student.42.fr>
Signed-off-by: Eugene Kim <eugene70kim@gmail.com>
Signed-off-by: jaehanbyun <awbrg789@naver.com>
Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>
Signed-off-by: Ian Tewksbury <itewk@redhat.com>
Signed-off-by: OpenGuidou <guillaume.doussin@gmail.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Cheng Fang <cfang@redhat.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Co-authored-by: Symeon Meichanetzoglou <sym@open.ch>
Co-authored-by: Linghao Su <linghao.su@daocloud.io>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: Tony Au-Yeung <tonyay163@gmail.com>
Co-authored-by: aria <pradithya.pura@gojek.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: CI <ci@argoproj.com>
Co-authored-by: Dillen Padhiar <38965141+dpadhiar@users.noreply.github.com>
Co-authored-by: Daco <dacofr@users.noreply.github.com>
Co-authored-by: Crumbs <44215646+Crumb5@users.noreply.github.com>
Co-authored-by: ABBOUD Moncef <moncef.abboud95@gmail.com>
Co-authored-by: appiepollo14 <asjer94@live.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: Suraj yadav <harrypotter1108@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: l2h <hosu4549@gmail.com>
Co-authored-by: rumstead <37445536+rumstead@users.noreply.github.com>
Co-authored-by: 1102 <90682513+nueavv@users.noreply.github.com>
Co-authored-by: Phong Do <dominhphong306@gmail.com>
Co-authored-by: Olivier Wenger <14903492+owngr@users.noreply.github.com>
Co-authored-by: KangManJoo <eogns47@konkuk.ac.kr>
Co-authored-by: daengdaengLee <gunho1020@gmail.com>
Co-authored-by: Paul Larsen <pnvlarsen@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Anand Francis Joseph <anjoseph@redhat.com>
Co-authored-by: Trevor Royer <troyer@redhat.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Mate Gogiberidze <101423812+mategogiberidze@users.noreply.github.com>
Co-authored-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Co-authored-by: Jeff Youngs <jyoungs@bluenightmare.com>
Co-authored-by: Ajinkya Ganesh Kumbhar <ajinkyakumbhar423@gmail.com>
Co-authored-by: Julio <juligonz@student.42.fr>
Co-authored-by: Eugene Kim <eugene70kim@gmail.com>
Co-authored-by: 변재한 <awbrg789@naver.com>
Co-authored-by: SLASHLogin <loginmlgxd@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ian Tewksbury <itewk@redhat.com>
Co-authored-by: OpenGuidou <73480729+OpenGuidou@users.noreply.github.com>
2024-10-07 17:13:26 +05:30
srikanth597
7718af14a1 fix(ui): adjust transform origin in application resource tree (#20180)
Signed-off-by: srikanth597 <alapatisrikanth597@gmail.com>
2024-10-07 17:08:11 +05:30
dependabot[bot]
ae183ad245 chore(deps): bump SonarSource/sonarqube-scan-action from 2.3.0 to 3.0.0 (#19524)
Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 2.3.0 to 3.0.0.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](aecaf43ae5...0c0f3958d9)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-07 12:36:25 +03:00
dependabot[bot]
1e359c8c0d chore(deps): bump github.com/xanzy/go-gitlab from 0.109.0 to 0.110.0 (#20260)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.109.0 to 0.110.0.
- [Release notes](https://github.com/xanzy/go-gitlab/releases)
- [Changelog](https://github.com/xanzy/go-gitlab/blob/main/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.109.0...v0.110.0)

---
updated-dependencies:
- dependency-name: github.com/xanzy/go-gitlab
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-07 10:25:46 +03:00
Michael Crenshaw
9a76d9f40b chore: bump k8s versions in e2e tests (#19669) 2024-10-06 20:30:32 -04:00
renovate[bot]
14c50bd50d chore(deps): update group golang to v1.23.2 (#20256)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-06 17:49:24 -04:00
renovate[bot]
95922502c7 chore(deps): update docs dependencies (#20257)
* chore(deps): update docs dependencies

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* bump rtd python version

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-06 21:20:46 +00:00
OpenGuidou
5543900345 feat(applicationset): Add FlatList option to cluster generator - Fixes #20212 (#20231)
* (feat) - Add FlatList option to cluster generator

Signed-off-by: OpenGuidou <guillaume.doussin@gmail.com>

* Update docs/operator-manual/applicationset/Generators-Cluster.md

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: OpenGuidou <guillaume.doussin@gmail.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-06 20:31:32 +00:00
Ian Tewksbury
e1258ccb9d fix: Policy/policy.open-cluster-management.io health check is broken (#20108) (#20109)
Tried using the health check as listed here but it gave error:

| error setting app health: failed to get resource health for "Policy" with name "XXXX" in namespace "local-cluster": <string>:35: invalid value (nil) at index 1 in table for concat stack traceback: [G]: in function 'concat' <string>:35: in main chunk [G]: ?

This change fixes the error by updating how the noncompliant clusters are tracked and counted to use latest Lua recommendations.

Signed-off-by: Ian Tewksbury <itewk@redhat.com>
2024-10-06 15:33:32 -04:00
Julio
7b1c076148 chore(ci): update renovate config (#20254)
Signed-off-by: ggjulio <juligonz@student.42.fr>
2024-10-06 15:30:53 -04:00
pasha-codefresh
3570d7de14 sec: update alpine/helm to 3.16.1 (#20253)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-06 17:40:06 +00:00
renovate[bot]
e0863d9e33 chore(deps): update node version (#20248)
* chore(deps): update node version

* Update ui/.nvmrc

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-06 17:15:41 +00:00
ABBOUD Moncef
fe7771cc83 fix: handle incorrect cluster RESTconfig without panic (#20150)
Signed-off-by: cef <moncef.abboud95@gmail.com>
2024-10-06 17:55:26 +03:00
github-actions[bot]
b0a3c5407c [Bot] docs: Update Snyk reports (#20250)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-10-06 12:29:37 +03:00
SLASHLogin
5583ebdcb8 chore: update notifications-engine to 22ccfe0caf45 (#20239)
* Update notifications-engine

Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>

* Update docs for Opsgenie notifications

Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>

* docs: Fix outdated slack notification configuration readme

Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>

---------

Signed-off-by: SLASHLogin <loginmlgxd@gmail.com>
2024-10-06 12:28:02 +03:00
dependabot[bot]
d063e6087f chore(deps): bump golang.org/x/net from 0.29.0 to 0.30.0 (#20246)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/net/compare/v0.29.0...v0.30.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-06 02:40:24 +00:00
dependabot[bot]
3b2de54b66 chore(deps): bump golang.org/x/crypto from 0.27.0 to 0.28.0 (#20243)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.27.0 to 0.28.0.
- [Commits](https://github.com/golang/crypto/compare/v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-06 01:43:42 +00:00
dependabot[bot]
3a666dd400 chore(deps): bump golang.org/x/term from 0.24.0 to 0.25.0 (#20245)
Bumps [golang.org/x/term](https://github.com/golang/term) from 0.24.0 to 0.25.0.
- [Commits](https://github.com/golang/term/compare/v0.24.0...v0.25.0)

---
updated-dependencies:
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-06 00:46:29 +00:00
dependabot[bot]
0014b2505b chore(deps): bump sigstore/cosign-installer from 3.6.0 to 3.7.0 (#20242)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](4959ce089c...dc72c7d5c4)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-06 00:43:32 +00:00
변재한
0aa6c49465 feat: add support for helm skipTests flag (#20118)
Signed-off-by: jaehanbyun <awbrg789@naver.com>
2024-10-05 19:55:46 -04:00
Eugene Kim
4c29c33f02 feat(cli): Add app diff option to specify exit code when diff (#20144)
The argocd app diff command returns 1 if a difference is found. In related issues,
they want to return an error code that is distinguishable from common errors.
However, changing the existing behavior is likely to break user's automation code.
So we want to provide an explicit option(--diff-exit-code) to specify an error code.

Related: #3588

Signed-off-by: Eugene Kim <eugene70kim@gmail.com>
2024-10-05 19:53:29 -04:00
dependabot[bot]
853c6b4935 chore(deps): bump golang.org/x/time from 0.6.0 to 0.7.0 (#20244)
Bumps [golang.org/x/time](https://github.com/golang/time) from 0.6.0 to 0.7.0.
- [Commits](https://github.com/golang/time/compare/v0.6.0...v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/time
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-05 23:31:46 +00:00
dependabot[bot]
5ebb61b519 chore(deps): bump docker/setup-buildx-action from 3.7.0 to 3.7.1 (#20241)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.7.0 to 3.7.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](8026d2bc36...c47758b77c)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-05 23:30:27 +00:00
dependabot[bot]
4272b03b33 chore(deps): bump actions/cache from 4.0.2 to 4.1.0 (#20240)
Bumps [actions/cache](https://github.com/actions/cache) from 4.0.2 to 4.1.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](0c45773b62...2cdf405574)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-05 23:30:14 +00:00
Julio
d17aafd19a chore(ci): add renovate for golangci-lint, go and node version (#20236)
Signed-off-by: ggjulio <juligonz@student.42.fr>
2024-10-05 21:33:30 +00:00
Ajinkya Ganesh Kumbhar
52d5653c86 fix notification-catlog issue (#20237)
Signed-off-by: ajinkyak423 <ajinkyakumbhar423@gmail.com>
2024-10-05 21:46:43 +03:00
Alexander Matyushentsev
03a16099b0 fix: support managing cluster with multiple argocd instances and annotation based tracking (#20222)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-10-04 17:54:37 -07:00
Blake Pettersson
5ba2405fa9 fix(health): only consider non-empty health checks (#20232)
* fix(health): only consider non-empty health checks

For wildcard health checks, only consider wildcards with a non-empty
health check. Fixes #16905 (at least partially).

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* test: renaming test case for clarity

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* refactor: add clarity as to what the function is supposed to do

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* Update docs/operator-manual/health.md

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* test: add test case for `*/*` override with empty healthcheck

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-04 15:34:58 -04:00
Jeff Youngs
2f6b6adb1c docs: Correct ApplicationSet (spec.preservedFields) (#20206)
* Fix docs

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

* Remove another errant block; improved comments

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

* Actually removed the errant block

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

* More doc fixes

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

* More spec fixes + USERS

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>

---------

Signed-off-by: jyoungs <jyoungs@bluenightmare.com>
2024-10-04 10:44:39 -06:00
Matthieu MOREL
1c6ec19a86 fix: use ErrorContains(t, err instead of Contains(t, err.Error() (#20220)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-10-04 09:36:05 -04:00
dependabot[bot]
ba0683c4d4 chore(deps): bump tj-actions/changed-files from 45.0.2 to 45.0.3 (#20225)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.2 to 45.0.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](48d8f15b2a...c3a1bb2c99)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-04 09:27:20 -04:00
dependabot[bot]
8ea78a1bc1 chore(deps): bump docker/setup-buildx-action from 3.6.1 to 3.7.0 (#20224)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.6.1 to 3.7.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](988b5a0280...8026d2bc36)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-04 09:27:00 -04:00
Mate Gogiberidze
3b623a6663 docs: add TBC Bank to USERS.md (#20227)
* docs: add TBC Bank to USERS.md

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>

* docs: reorder TBC Bank by alphabetical

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>

---------

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>
2024-10-04 14:26:49 +02:00
Alexander Matyushentsev
f5061272b8 chore: rename protobuf field according to convention (#20221)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-10-03 21:58:39 +00:00
Trevor Royer
49431b9add fix: update health check to support modelmesh (#20142)
Signed-off-by: Trevor Royer <troyer@redhat.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-10-03 14:07:34 -04:00
aria
b2091e3984 fix: Fix false positive in plugin application discovery (#20196)
* fix: fix false positive in plugin application discovery

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>

* fix: apply suggestion to return immediately if discovery is not configured for unnamed plugin

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>

---------

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>
2024-10-03 13:15:49 -04:00
Anand Francis Joseph
5f8de971c6 chore: Added unit tests and fix e2e tests for application sync decoupling feature (#19966)
* fixed doc comments and added unit tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Added comments for the newly added unit tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Refactored method name to deriveServiceAccountToImpersonate

Signed-off-by: anandf <anjoseph@redhat.com>

* Using const name in return value

Signed-off-by: anandf <anjoseph@redhat.com>

* Added unit tests for argocd proj add-destination-service-accounts

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed failing e2e tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Fix linting errors

Signed-off-by: anandf <anjoseph@redhat.com>

* Using require package instead of assert and fixed code generation

Signed-off-by: anandf <anjoseph@redhat.com>

* Removed parallel execution of tests for sync with impersonate

Signed-off-by: anandf <anjoseph@redhat.com>

* Added err checks for glob validations

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed e2e tests for sync impersonation

Signed-off-by: anandf <anjoseph@redhat.com>

* Using consistently based expects in E2E tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Added more unit tests and fixed go generate

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed failed lint errors, unit and e2e test failures

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed goimports linter issue

Signed-off-by: anandf <anjoseph@redhat.com>

* Added code comments and added few missing unit tests

Signed-off-by: anandf <anjoseph@redhat.com>

* Added missing unit test for GetDestinationServiceAccounts method

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed goimports formatting with local for project_test.go

Signed-off-by: anandf <anjoseph@redhat.com>

* Corrected typo in a field name additionalObjs

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed failing unit tests

Signed-off-by: anandf <anjoseph@redhat.com>

---------

Signed-off-by: anandf <anjoseph@redhat.com>
2024-10-03 07:37:50 -07:00
Blake Pettersson
be880add20 fix: refine deny destination checks (#20045)
* fix: refine server deny check

Fixes #19804. The deny destination check can be made more intuitive by
doing the following:

* short-circuit any deny destination
* first, for any deny server destination, _also_ check if the namespace matches
* for any deny namespace destination, reject as before

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* fix: also assert that server matches on ns deny

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-10-03 07:37:19 -07:00
dependabot[bot]
86519ca690 chore(deps): bump selenium-webdriver from 4.24.1 to 4.25.0 in /ui-test (#20058)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.24.1 to 4.25.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/commits/selenium-4.25.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-03 07:35:50 -07:00
Linghao Su
308890661b feat(ui): support auto theme (#20080)
* feat(theme): support auto theme

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* fix(ui): set default theme as light

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

* fix(ui): only register listener when theme is auto

Signed-off-by: linghaoSu <linghao.su@daocloud.io>

---------

Signed-off-by: linghaoSu <linghao.su@daocloud.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-10-03 16:58:40 +03:00
dependabot[bot]
8d268e78c7 chore(deps): bump golangci/golangci-lint-action from 6.1.0 to 6.1.1 (#20207) 2024-10-03 08:07:53 -04:00
Paul Larsen
7de5d27dc0 fix: Rework git tag semver resolution (#20083) (#20096)
* Write initial tests

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Improve git tag semver resolution

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Add company to list of users

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Fix broken error string check

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Fix incorrect semver test assumption

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* switch to debug statement

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* Add more testcases for review

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

* review comments

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>

---------

Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>
2024-10-03 15:52:01 +05:30
Dan Garfield
99560fbbba Update troubleshooting-errors.md (#20201)
Fixing some phrasing and adding more clarity.

Signed-off-by: Dan Garfield <dan@codefresh.io>
2024-10-03 11:01:18 +02:00
KangManJoo
3070297d6b fix(helm): escape consecutive commas in cleanSetParameters (#19269) (#20113)
Signed-off-by: KangManJoo <eogns47@konkuk.ac.kr>
Signed-off-by: daengdaengLee <gunho1020@gmail.com>
Co-authored-by: daengdaengLee <gunho1020@gmail.com>
2024-10-02 15:04:22 -04:00
dependabot[bot]
1a84db5dad chore(deps): bump library/busybox in /test/e2e/multiarch-container (#20193)
Bumps library/busybox from `c230832` to `768e5c6`.

---
updated-dependencies:
- dependency-name: library/busybox
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-02 16:38:27 +00:00
dependabot[bot]
109473fca4 chore(deps): bump bitnami/kubectl in /test/container (#20191)
Bumps bitnami/kubectl from `da4a986` to `b509ab6`.

---
updated-dependencies:
- dependency-name: bitnami/kubectl
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-10-02 16:37:40 +00:00
dependabot[bot]
54bd69463b chore(deps): bump chromedriver from 129.0.0 to 129.0.2 in /ui-test (#20189)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 129.0.0 to 129.0.2.
- [Commits](https://github.com/giggio/node-chromedriver/compare/129.0.0...129.0.2)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-02 18:35:47 +03:00
dependabot[bot]
2e9532d79b chore(deps): bump google.golang.org/grpc from 1.67.0 to 1.67.1 (#20190)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.67.0 to 1.67.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.67.0...v1.67.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-02 18:35:27 +03:00
Olivier Wenger
807b6fb472 docs: Update argocd path for command in notifification in troubleshooting docs (#20120)
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-10-02 14:58:57 +00:00
Phong Do
1dcf3a5665 docs: add outpost24 to users.md (#20197)
Signed-off-by: Phong Do <dominhphong306@gmail.com>
2024-10-02 15:01:37 +02:00
1102
6b19f10e7f docs(ui): sorting version (#20181)
Signed-off-by: nueavv <nuguni@kakao.com>
2024-10-02 08:59:48 -04:00
dependabot[bot]
48551b3746 chore(deps): bump codecov/codecov-action from 4.5.0 to 4.6.0 (#20188)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](e28ff129e5...b9fd7d16f6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-02 04:17:08 +00:00
Michael Crenshaw
d3a3fe5e68 chore(ci): better handling of Go and Node dependency bumps (#20168)
* chore(ci): better handling of Go and Node dependency bumps

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

temporarily remove condition

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

quit early if there are no changes

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

use latest checkout action and actually test version change

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

use github token

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

workflow for node

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

clean up after changing node version

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

revert temporary changes

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

more docs

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* bump linter version

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-02 00:02:07 -04:00
rumstead
9e9c9a9aca feat(appset): parameterize requeue time #20063 (#20064) 2024-10-01 21:26:08 -04:00
dependabot[bot]
f78e741220 chore(deps): bump github.com/cyphar/filepath-securejoin (#20173)
Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/cyphar/filepath-securejoin/releases)
- [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.3.2...v0.3.3)

---
updated-dependencies:
- dependency-name: github.com/cyphar/filepath-securejoin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-01 13:08:33 -04:00
l2h
ab8fdb8a6d feat: Add nodeSelector for Linux nodes (#20148)
* feat: Add nodeSelector for Linux nodes in application-controller, applicationset-controller, and repo-server

Signed-off-by: leehosu <hosu4549@gmail.com>

* refactor : Reversal the wrong part and correct it.

Signed-off-by: leehosu <hosu4549@gmail.com>

* Update argocd-application-controller-statefulset.yaml

Signed-off-by: l2h <hosu4549@gmail.com>

* feat: Add nodeSelector for Linux nodes in dex-server, argo-server

Signed-off-by: leehosu <hosu4549@gmail.com>

* refactor: update code to resolving for intergration test

Signed-off-by: leehosu <hosu4549@gmail.com>

* refactor: update code to resolving for codegen

Signed-off-by: leehosu <hosu4549@gmail.com>

* Run make manifests-local and then commit

Signed-off-by: leehosu <hosu4549@gmail.com>

---------

Signed-off-by: leehosu <hosu4549@gmail.com>
Signed-off-by: l2h <hosu4549@gmail.com>
2024-10-01 12:13:05 -04:00
Michael Crenshaw
f869d235cb chore: document credentials server (#20078)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-10-01 10:51:29 -04:00
pasha-codefresh
2d8659b466 feat: basic e2e tests in order to verify notification service health (#20182)
* feat: basic e2e tests in order to verify notification service health

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* feat: basic e2e tests in order to verify notification service health

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-10-01 14:20:01 +00:00
Suraj yadav
5796a7c22d feat(ui): make name property for repos (#20077)
* name-option-added

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>

* lint

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-10-01 16:58:29 +05:30
dependabot[bot]
afcc71be23 chore(deps): bump docker/build-push-action from 6.8.0 to 6.9.0 (#20174)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.8.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](32945a3392...4f58ea7922)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-01 04:50:35 -04:00
Josh Soref
fc1986e3e5 chore: Try to make CodeQL happy (#20094) (#20129)
* chore(common): Split const from unrelated util/clusterauth const

Signed-off-by: Josh Soref <jsoref@gmail.com>

* chore: Try to make CodeQL happy

Signed-off-by: Josh Soref <jsoref@gmail.com>

---------

Signed-off-by: Josh Soref <jsoref@gmail.com>
2024-09-30 19:37:51 -04:00
appiepollo14
04e47cd5d4 Fixes minor typo which lead to using the bearer token as api URL and was obviously not working. (#20169)
Signed-off-by: asjervanasten <asjer94@live.com>
2024-09-30 20:39:23 +00:00
ABBOUD Moncef
0681098299 fix(ui): hide resource actions menu if it's empty (#20051)
Signed-off-by: cef <moncef.abboud95@gmail.com>
2024-09-30 11:28:05 -04:00
Crumbs
0cd5ac473c docs: added note re. arch of example application on getting_started.md (#20143)
added warning that example application may not run on all archs

Signed-off-by: Crumbs <44215646+Crumb5@users.noreply.github.com>
2024-09-30 10:26:04 -04:00
Daco
92e0b553a7 feat(appset): Add a cache layer for Argo Projects to speed-up application validation (#18703)
* feat(appset): Add a cache layer for Argo Projects to speed-up application validation

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Use local client rather than custom cache

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Clean go.mod

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Merge master

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Fix after merging master
Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Initialize appProject variable inside loop

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Remove unused ArgoAppClientset field
Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

* Fix linter issue
Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>

---------

Signed-off-by: Philippe Da Costa <pdacosta@gmail.com>
2024-09-30 10:22:49 -04:00
Dillen Padhiar
5d89339c14 feat: introduce pause/unpause actions for Numaplane CRDs (#20128)
* feat: introduce pause/unpause actions for Numaplane CRDs

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* test: fixed incorrect file names

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* chore: codegen

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* fix: empty check for lifecycle

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* fix: nil check

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* fix: nil checks

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* test: testing different starting spec

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* feat: add nil checks for all possible nil fields

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

* chore: rerun tests

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>

---------

Signed-off-by: Dillen Padhiar <dillen_padhiar@intuit.com>
2024-09-30 10:01:17 -04:00
Dan Garfield
52c3f93010 fix: repo generate paths value in namespace install is incorrectly formatted (#20139)
* Fix repo generate paths value in namespace install

Signed-off-by: todaywasawesome <dan@codefresh.io>

* Fix in base and regen

Signed-off-by: todaywasawesome <dan@codefresh.io>

---------

Signed-off-by: todaywasawesome <dan@codefresh.io>
2024-09-30 09:54:58 -04:00
github-actions[bot]
8e070ce05a [Bot] docs: Update Snyk reports (#20146)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-09-30 13:45:23 +00:00
aria
fad534bcfe fix: Fix argocd appset generate failure due to missing clusterrole (#20162)
* fix: FIx argocd-server clusterrole to allow argocd appset generate using cluster generator

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>

* fix: update generated code

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>

---------

Signed-off-by: Pradithya Aria <pradithya.pura@gojek.com>
2024-09-30 09:42:12 -04:00
dependabot[bot]
7d3661cb21 chore(deps): bump docker/build-push-action from 6.7.0 to 6.8.0 (#20154)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.8.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5cd11c3a4c...32945a3392)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-30 09:39:58 -04:00
Tony Au-Yeung
fa54ce221e fix: oras-go client should fallback to docker config if no credentials specified (#18133)
* oras-go client should fallback to docker config if no credentials specified

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

* Fix tests

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

* Fix lint

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

* gofumpt

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

* Validate auth header

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>

---------

Signed-off-by: Tony Au-Yeung <tony@elevenlabs.io>
2024-09-27 21:33:42 +05:30
pasha-codefresh
ea71067059 chore(deps): bump Helm from 3.15.2 to 3.15.4 (#20135)
* sec: upgrade helm version in order to fix critical vulnerability

Signed-off-by: pashakostohrys <pavel@codefresh.io>

* sec: upgrade helm version in order to fix critical vulnerability

Signed-off-by: pashakostohrys <pavel@codefresh.io>

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-09-27 09:45:58 -04:00
Linghao Su
159eeecd17 fix(ui): add optional check to avoid undefined reference in project detail (#20044)
Signed-off-by: linghaoSu <linghao.su@daocloud.io>
2024-09-27 09:15:49 -04:00
Symeon Meichanetzoglou
bc15ae89d8 Fix typo (#20127)
Remove a redundant "is".

Signed-off-by: Symeon Meichanetzoglou <simosmeih@gmail.com>
2024-09-26 23:14:50 +02:00
Alexandre Gaudreault
ca91dd9d6b fix(extension): add header to support apps-in-any-namespace (#20123)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-09-26 15:12:21 -04:00
dependabot[bot]
e28a05f5c0 chore(deps-dev): bump @types/node from 22.5.5 to 22.7.2 in /ui-test (#20112)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.5.5 to 22.7.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-26 10:24:44 +03:00
Cheng Fang
f03146d3a0 fix: CVE-2024-45296 Backtracking regular expressions cause ReDoS by upgrading path-to-regexp from 1.8.0 to 1.9.0 (#20087)
Signed-off-by: Cheng Fang <cfang@redhat.com>
2024-09-24 22:27:52 -04:00
Javier Solana
b8249567ae feat: transmit manifest-generate-path resources to the cmp-server for plugin-based applications (#19209)
* chore: transmit manifest-generate-path resources to the cmp-server for plugin-based applications
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* use SecureJoin
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* make cmp manifests generation using manifest generate path annotation configurable by environment variable
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* fix missing doc running codegen-local
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* set reposerver.plugin.enable.manifests.generation.using.annotations false by default
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* define ARGOCD_REPO_SERVER_PLUGIN_ENABLE_GENERATE_MANIFESTS_USING_MANIFEST_GENERATE_PATHS_ANNOTATION properly
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* define ARGOCD_REPO_SERVER_PLUGIN_ENABLE_GENERATE_MANIFESTS_USING_MANIFEST_GENERATE_PATHS_ANNOTATION properly
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* Fix conflict
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* autogenerate install manifests
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* add note about common root path calculation for manifest paths annotation
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* log common root path calculated
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* app path must be the lower common path
Signed-off-by: Javier Solana <javier.solana@cabify.com>

* tweaks

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Javier Solana <javier.solana@cabify.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-09-24 12:14:02 -04:00
github-actions[bot]
e1429f8ea6 [Bot] docs: Update Snyk reports (#20052)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-09-24 14:42:31 +00:00
dependabot[bot]
0710ff9103 chore(deps): bump go.uber.org/automaxprocs from 1.5.3 to 1.6.0 (#20068) 2024-09-24 14:51:58 +03:00
Nitish Kumar
dbc94ba13f fix: fix broken link (#20070)
* fix broken link

Signed-off-by: nitishfy <justnitish06@gmail.com>

* fix broken link

Signed-off-by: nitishfy <justnitish06@gmail.com>

---------

Signed-off-by: nitishfy <justnitish06@gmail.com>
2024-09-24 09:36:19 +02:00
1102
fe67cd54eb fix: corrected --roleARN to --role-arn as per updated CLI option (#20065)
Signed-off-by: nueavv <nuguni@kakao.com>
2024-09-23 17:24:47 -07:00
dependabot[bot]
864917b7cc chore(deps): bump google.golang.org/grpc from 1.66.2 to 1.67.0 (#20059)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.66.2 to 1.67.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.66.2...v1.67.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-23 09:53:29 -04:00
Linghao Su
fb825f705a feat(ui): move graphs by dragging mouse in app resource tree view (#18025) (#20009)
Signed-off-by: linghaoSu <linghao.su@daocloud.io>
2024-09-23 09:41:50 -04:00
Cayde6
eba559a449 feat: option to disable writing k8s events(#18205) (#18441)
* feat: option to disable writing k8s events

optioned to write logs for k8s events.
Each is passed as an environment variable and defaults to true,
disabling it requires explicitly setting the option to false.

Signed-off-by: Jack-R-lantern <tjdfkr2421@gmail.com>

* feat: option to disable writing k8s events

fix unit test
- application_test
- applicationset_test
- project_test
- appcontroller_tes
- audit_logger_test

Signed-off-by: Jack-R-lantern <tjdfkr2421@gmail.com>

* rebase

Signed-off-by: Jack-R-lantern <tjdfkr2421@gmail.com>

---------

Signed-off-by: Jack-R-lantern <tjdfkr2421@gmail.com>
2024-09-23 08:32:17 +05:30
Josh Soref
ddb79fe2e3 ci: Allow forks to opt-in for codeql (#19996)
Signed-off-by: Josh Soref <jsoref@gmail.com>
2024-09-22 19:25:06 -04:00
Allan M. de Azevedo
e77727cf12 docs: fix paragraph in "User Guide/Kustomize" (#20053)
Without the extra line break, the paragraph was rendered as part of the Kustomize application manifest.

Signed-off-by: Allan M. de Azevedo <4llan@users.noreply.github.com>
2024-09-22 19:22:28 -04:00
Nicholas Morey
602665feed docs: add project to repo creds examples (#20057)
* docs: add link to example repo creds yaml

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

* docs: add project to repo creds examples

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

---------

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-09-23 00:02:11 +02:00
Jungho
555854c3e9 fix(ui): add state parameter in the pkce flow (#17235)
* Add state to pkce flow

Signed-off-by: Jungho Son <js3692@users.noreply.github.com>

* Call unset

Signed-off-by: Jungho Son <js3692@users.noreply.github.com>

---------

Signed-off-by: Jungho Son <js3692@users.noreply.github.com>
2024-09-22 23:30:50 +05:30
Ajinkya Ganesh Kumbhar
0573ed79c1 chore: improve error logs (#20050)
Signed-off-by: ajinkyak423 <ajinkyakumbhar423@gmail.com>
2024-09-21 20:13:13 -04:00
1102
5f23bb6097 docs: add user to users.md (#20042)
Signed-off-by: nueavv <nuguni@kakao.com>
2024-09-21 15:33:40 -04:00
Linghao Su
40c60775bb fix(ui): carry over state when using full screen mode button (#20022) 2024-09-20 17:50:54 -04:00
Josh Soref
9ac1670c91 fix(ui): Sync Health Statuses for Applications and everything else (#20020)
Signed-off-by: Josh Soref <jsoref@gmail.com>
2024-09-20 20:49:23 +05:30
Josh Soref
de06f7716c docs: Remove FOSSA badge (#20038)
Signed-off-by: Josh Soref <jsoref@gmail.com>
2024-09-20 11:14:53 -04:00
dependabot[bot]
6b6d23bdf5 chore(deps): bump actions/setup-node from 4.0.3 to 4.0.4 (#20025)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](1e60f620b9...0a44ba7841)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-20 04:21:36 +00:00
dependabot[bot]
9b01c46e48 chore(deps): bump bitnami/kubectl in /test/container (#20024)
Bumps bitnami/kubectl from `27e5f50` to `da4a986`.

---
updated-dependencies:
- dependency-name: bitnami/kubectl
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-20 04:18:51 +00:00
Josh Soref
b0e3160ccf fix(ui): Change tab title to Sync Windows (#20018)
Signed-off-by: Josh Soref <jsoref@gmail.com>
2024-09-19 20:47:40 -07:00
dependabot[bot]
2b64c71e4d chore(deps): bump selenium-webdriver and @types/selenium-webdriver (#19959)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) and [@types/selenium-webdriver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/selenium-webdriver). These dependencies needed to be updated together.

Updates `selenium-webdriver` from 4.21.0 to 4.24.1
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/commits)

Updates `@types/selenium-webdriver` from 4.1.23 to 4.1.26
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/selenium-webdriver)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/selenium-webdriver"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 20:45:02 -07:00
Justin Marquis
f460bf4573 docs: Update Okta OIDC CLI instructions (#20021)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-09-19 16:19:31 -07:00
dependabot[bot]
2c206a51d1 chore(deps): bump dompurify from 2.3.6 to 2.5.6 in /ui (#19955)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.6 to 2.5.6.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.3.6...2.5.6)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 15:17:00 -04:00
Alexandre Gaudreault
a78594beb1 docs: Endpoints not excluded by default (#16023) (#20014)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-09-19 18:59:15 +00:00
rumstead
735d090061 docs(reconcile): adding optional condition when ignoring json (#20010)
Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-09-19 11:47:02 -04:00
dependabot[bot]
229826eb68 chore(deps): bump peter-evans/create-pull-request from 7.0.3 to 7.0.5 (#20000)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.3 to 7.0.5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](6cd32fd936...5e914681df)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 09:03:07 -04:00
Henry Liu
1fcbcc1c23 fix(ui): fix open application detail in new tab when basehref is set (#20004) 2024-09-19 08:23:27 -04:00
dependabot[bot]
9e6d78effa chore(deps): bump library/node from 22.8.0 to 22.9.0 in /test/container (#20001)
Bumps library/node from 22.8.0 to 22.9.0.

---
updated-dependencies:
- dependency-name: library/node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 08:19:09 -04:00
Tchoupinax
f4c519ade5 feat(ui): display sha's revision in every history release (#19963)
Signed-off-by: Tchoupinax <corentinfiloche@hotmail.fr>
2024-09-19 13:15:02 +05:30
dependabot[bot]
02a4d9f2c0 chore(deps): bump chromedriver from 128.0.3 to 129.0.0 in /ui-test (#19998)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 128.0.3 to 129.0.0.
- [Commits](https://github.com/giggio/node-chromedriver/compare/128.0.3...129.0.0)

---
updated-dependencies:
- dependency-name: chromedriver
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 10:41:26 +03:00
dependabot[bot]
c8eb5b5443 chore(deps): bump library/node from 22.8.0 to 22.9.0 (#19999)
Bumps library/node from 22.8.0 to 22.9.0.

---
updated-dependencies:
- dependency-name: library/node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 09:43:04 +03:00
dependabot[bot]
97d110bf27 chore(deps): bump library/node from fa4b468 to cbe2d5f in /ui-test (#19997)
Bumps library/node from `fa4b468` to `cbe2d5f`.

---
updated-dependencies:
- dependency-name: library/node
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 09:42:37 +03:00
dependabot[bot]
f64db6dba7 chore(deps): bump github.com/prometheus/client_golang (#19974)
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.20.3 to 1.20.4.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.20.3...v1.20.4)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 17:24:26 -04:00
dependabot[bot]
04919f0a6f chore(deps): bump library/node from 22.8.0 to 22.9.0 in /ui-test (#19975)
Bumps library/node from 22.8.0 to 22.9.0.

---
updated-dependencies:
- dependency-name: library/node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 17:23:39 -04:00
Linghao Su
e09ff60d75 feat(ui): add token diff support in diff view (#19983)
Signed-off-by: linghaoSu <linghao.su@daocloud.io>
2024-09-18 13:17:15 -07:00
Ilya Gorban
2a199bc7ae feat(health): add healthchecks for Gloo resources (#11379)
* feat(custom healthchecks): add healthchecks for Gloo resources

Signed-off-by: Ilya Gorban <zelig81@users.noreply.github.com>

* fix(gloo custom healthchecks): fix healthcheck and add older cases

Signed-off-by: Ilya Gorban <zelig81@users.noreply.github.com>

* feat(custom healthchecks): fix tabulation in Gloo resources lua files

Signed-off-by: Ilya Gorban <zelig81@users.noreply.github.com>

---------

Signed-off-by: Ilya Gorban <zelig81@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-09-18 19:01:33 +00:00
Álvaro Aguilar-Tablada Espinosa
7d28c89f36 feat(health): resource customization for RabbitMQCluster (#15286)
Signed-off-by: Álvaro Aguilar <alvaro.aguilar@scrm.lidl>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-09-18 18:57:28 +00:00
pasha-codefresh
7f417e2be4 fix notificaion controller crash loop (#19984)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-09-18 18:56:05 +00:00
Michael Crenshaw
ae028c2322 chore: bump gitops-engine for performance improvement (#19954)
* chore: bump gitops-engine for performance improvement

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* bump gitops-engine version

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* fix merge mistake

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-09-18 08:06:38 -04:00
itaynvn-runai
fd4cc93a30 feat: Change the file name convention when downloading pod logs (#19938)
* changed log file name convention

Signed-off-by: itaynvn-runai <itay.anavian@run.ai>

* fixed condition

Signed-off-by: itaynvn-runai <itay.anavian@run.ai>

* Update forwarder_overwrite.go

changed `appNamespace` to `namespace`.
as `appNamespace` will always be "argocd", and `namespace` is based on the actual k8s namespace, and will be unique.
so each log file name will always be unique, and descriptive.

Signed-off-by: itaynvn-runai <165032271+itaynvn-runai@users.noreply.github.com>

* Update forwarder_overwrite.go

added `container` to the file name

Signed-off-by: itaynvn-runai <165032271+itaynvn-runai@users.noreply.github.com>

---------

Signed-off-by: itaynvn-runai <itay.anavian@run.ai>
Signed-off-by: itaynvn-runai <165032271+itaynvn-runai@users.noreply.github.com>
2024-09-18 13:44:36 +05:30
Netanel Kadosh
fcc186bdd5 fix: Add redis password to forwardCacheClient struct (#19599)
Signed-off-by: Netanel Kadosh <kadoshnetanel@gmail.com>
2024-09-17 19:18:40 +03:00
Max Gautier
21d1f88106 docs: include cluster-management.md in TOC (#19964)
While it is searchable in the docs UI, the Cluster Management page is
not included in the Table of contents of https://argo-cd.readthedocs.io

Add it to increase it's discoverability.
We put it just before cluster-bootstrapping since an user would be
expected to add a cluster to argocd just before "bootstrapping"

Signed-off-by: Max Gautier <mg@max.gautier.name>
2024-09-17 08:33:46 -07:00
Regina Voloshin
a8e70e43ac chore: Make dev env redis password protected (#19863)
* create pr

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>

* create pr

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>

* create pr

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>

* initial

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>

* initial

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>

* initial

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>

* checking Redis is installed locally per Nitish's suggestion

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>

* Update hack/start-redis-with-password.sh

Co-authored-by: Nitish Kumar <justnitish06@gmail.com>
Signed-off-by: Regina Voloshin <19544836+reggie-k@users.noreply.github.com>

* Update hack/start-redis-with-password.sh

Co-authored-by: Nitish Kumar <justnitish06@gmail.com>
Signed-off-by: Regina Voloshin <19544836+reggie-k@users.noreply.github.com>

* fixed unreachable code

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>

---------

Signed-off-by: reggie-k <regina.voloshin@codefresh.io>
Signed-off-by: Regina Voloshin <19544836+reggie-k@users.noreply.github.com>
Co-authored-by: Nitish Kumar <justnitish06@gmail.com>
2024-09-17 19:19:01 +05:30
ilia-medvedev-codefresh
20f9719001 fix: cleanup tempdir when errors occur in Helm chart extraction (#19861)
Fixed merge conflicts. 

Signed-off-by: Ilia Medvedev <ilia.medvedev@codefresh.io>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-09-17 15:15:32 +05:30
Dmytro Bondar
dce41c430e fix: Get pull request target branch for Azure DevOps (#19869) (#19871)
Signed-off-by: Dmytro Bondar <git@bonddim.com>
2024-09-17 15:10:49 +05:30
Nathan Shaaban
4e13b7f36c feat: allow auth token to be passed in via env (#19898)
* feat: allow auth token to be passed in via env

Allows the authentication token to come from environment if it's not found in cli args.

Signed-off-by: Nathan Shaaban <86252985+ctrlaltf24@users.noreply.github.com>

* chore: generate cli docs

Signed-off-by: Nathan Shaaban <86252985+ctrlaltf24@users.noreply.github.com>

---------

Signed-off-by: Nathan Shaaban <86252985+ctrlaltf24@users.noreply.github.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-09-17 15:04:25 +05:30
morapet
bcc224b32c prevent crash during timer expiration after stream is closed (#19917)
Reorder ticker stop and close merge to prevent send(true) happens after merge is closed, in rare situation when the timer expires exactly at the point between close(merge) and ticker.Stop()

Signed-off-by: morapet <peter@moran.sk>
2024-09-17 15:02:38 +05:30
dependabot[bot]
308c6cb526 chore(deps): bump github.com/casbin/casbin/v2 from 2.99.0 to 2.100.0 (#19960)
Bumps [github.com/casbin/casbin/v2](https://github.com/casbin/casbin) from 2.99.0 to 2.100.0.
- [Release notes](https://github.com/casbin/casbin/releases)
- [Changelog](https://github.com/casbin/casbin/blob/master/.releaserc.json)
- [Commits](https://github.com/casbin/casbin/compare/v2.99.0...v2.100.0)

---
updated-dependencies:
- dependency-name: github.com/casbin/casbin/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-17 11:37:10 +03:00
Pavel Soloviev
4b478ef2c8 docs: Add empty GitHub.repoURL error to troubleshooting docs (#19926)
Signed-off-by: Moleus <fafufuburr@gmail.com>
2024-09-17 11:34:21 +03:00
Falanty
c8dcd83f88 feat: add ARGOCD_APP_REVISION_SHORT_8 variable in build environment (#19931)
Signed-off-by: Adam, Patrick <p.adam@mail.de>
Co-authored-by: Adam, Patrick <p.adam@mail.de>
2024-09-17 11:20:02 +03:00
github-actions[bot]
94e02101c6 Bump version in master (#19947)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pasha-codefresh <39732895+pasha-codefresh@users.noreply.github.com>
2024-09-17 05:37:40 +00:00
dependabot[bot]
d636e53665 chore(deps): bump peter-evans/create-pull-request from 7.0.2 to 7.0.3 (#19957)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](d121e62763...6cd32fd936)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-17 00:38:25 -04:00
dependabot[bot]
8f65594ca9 chore(deps): bump tj-actions/changed-files from 45.0.1 to 45.0.2 (#19958)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.1 to 45.0.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](e9772d1404...48d8f15b2a)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-17 00:36:49 -04:00
Michael Crenshaw
14a1a552dc chore: bump gitops-engine for performance improvements (#19953)
* chore: bump gitops-engine for performance improvement

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* bump gitops-engine version

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-09-16 21:40:25 +00:00
github-actions[bot]
bb1123ad7f [Bot] docs: Update Snyk reports (#19936)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-09-16 21:06:38 +00:00
Frederic MARTIN
757c395e64 docs: fix typo in upgrading section of operator manual (#19950)
Signed-off-by: Frederic MARTIN <frederic@martin.lc>
2024-09-16 03:26:55 -10:00
kswadi
038a83276c docs: fix typo in ingress section of operator manual (#19946)
Signed-off-by: kswadi <kswadi01@gmail.com>
2024-09-16 01:39:42 -10:00
995 changed files with 76102 additions and 30922 deletions

View File

@@ -31,6 +31,11 @@ updates:
directory: "/"
schedule:
interval: "daily"
ignore:
# We use consistent go and node versions across a lot of different files, and updating via dependabot would cause
# drift among those files, instead we let renovate bot handle them.
- dependency-name: "library/golang"
- dependency-name: "library/node"
- package-ecosystem: "docker"
directory: "/test/container/"

View File

@@ -13,7 +13,8 @@ on:
env:
# Golang version to use across CI steps
GOLANG_VERSION: '1.22'
# renovate: datasource=golang-version packageName=golang
GOLANG_VERSION: '1.23.3'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -31,7 +32,7 @@ jobs:
docs: ${{ steps.filter.outputs.docs_any_changed }}
steps:
- uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- uses: tj-actions/changed-files@e9772d140489982e0e3704fea5ee93d536f1e275 # v45.0.1
- uses: tj-actions/changed-files@bab30c2299617f6615ec02a68b9a40d10bd21366 # v45.0.5
id: filter
with:
# Any file which is not under docs/, ui/ or is not a markdown file is counted as a backend file
@@ -56,7 +57,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Download all Go modules
@@ -77,7 +78,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Restore go build cache
@@ -104,13 +105,14 @@ jobs:
- name: Checkout code
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Run golangci-lint
uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 # v6.1.0
uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 # v6.1.1
with:
version: v1.58.2
# renovate: datasource=go packageName=github.com/golangci/golangci-lint versioning=regex:^v(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)?$
version: v1.62.2
args: --verbose
test-go:
@@ -131,7 +133,7 @@ jobs:
- name: Create symlink in GOPATH
run: ln -s $(pwd) ~/go/src/github.com/argoproj/argo-cd
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Install required packages
@@ -172,7 +174,7 @@ jobs:
- name: Run all unit tests
run: make test-local
- name: Generate test results artifacts
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: test-results
path: test-results
@@ -195,7 +197,7 @@ jobs:
- name: Create symlink in GOPATH
run: ln -s $(pwd) ~/go/src/github.com/argoproj/argo-cd
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Install required packages
@@ -236,7 +238,7 @@ jobs:
- name: Run all unit tests
run: make test-race-local
- name: Generate test results artifacts
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: race-results
path: test-results/
@@ -251,7 +253,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Create symlink in GOPATH
@@ -303,9 +305,10 @@ jobs:
- name: Checkout code
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup NodeJS
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: '21.6.1'
# renovate: datasource=node-version packageName=node versioning=node
node-version: '22.9.0'
- name: Restore node dependency cache
id: cache-dependencies
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
@@ -367,13 +370,13 @@ jobs:
path: test-results
- name: combine-go-coverage
# We generate coverage reports for all Argo CD components, but only the applicationset-controller,
# app-controller, and repo-server report contain coverage data. The other components currently don't shut down
# gracefully, so no coverage data is produced. Once those components are fixed, we can add references to their
# coverage output directories.
# app-controller, repo-server, and commit-server report contain coverage data. The other components currently
# don't shut down gracefully, so no coverage data is produced. Once those components are fixed, we can add
# references to their coverage output directories.
run: |
go tool covdata percent -i=test-results,e2e-code-coverage/applicationset-controller,e2e-code-coverage/repo-server,e2e-code-coverage/app-controller -o test-results/full-coverage.out
go tool covdata percent -i=test-results,e2e-code-coverage/applicationset-controller,e2e-code-coverage/repo-server,e2e-code-coverage/app-controller,e2e-code-coverage/commit-server -o test-results/full-coverage.out
- name: Upload code coverage information to codecov.io
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
with:
file: test-results/full-coverage.out
fail_ci_if_error: true
@@ -381,7 +384,7 @@ jobs:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Upload test results to Codecov
if: github.ref == 'refs/heads/master' && github.event_name == 'push' && github.repository == 'argoproj/argo-cd'
uses: codecov/test-results-action@1b5b448b98e58ba90d1a1a1d9fcb72ca2263be46 # v1.0.0
uses: codecov/test-results-action@9739113ad922ea0a9abb4b2c0f8bf6a4aa8ef820 # v1.0.1
with:
file: test-results/junit.xml
fail_ci_if_error: true
@@ -390,7 +393,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
uses: SonarSource/sonarqube-scan-action@aecaf43ae57e412bd97d70ef9ce6076e672fe0a9 # v2.2
uses: SonarSource/sonarqube-scan-action@1b442ee39ac3fa7c2acdd410208dcb2bcfaae6c4 # v4.1.0
if: env.sonar_secret != ''
test-e2e:
name: Run end-to-end tests
@@ -400,14 +403,14 @@ jobs:
fail-fast: false
matrix:
k3s:
- version: v1.30.2
- version: v1.31.0
# We designate the latest version because we only collect code coverage for that version.
latest: true
- version: v1.29.6
- version: v1.30.4
latest: false
- version: v1.28.11
- version: v1.29.8
latest: false
- version: v1.27.15
- version: v1.28.13
latest: false
needs:
- build-go
@@ -429,7 +432,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: GH actions workaround - Kill XSP4 process
@@ -506,13 +509,13 @@ jobs:
goreman run stop-all || echo "goreman trouble"
sleep 30
- name: Upload e2e coverage report
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: e2e-code-coverage
path: /tmp/coverage
if: ${{ matrix.k3s.latest }}
- name: Upload e2e-server logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: e2e-server-k8s${{ matrix.k3s.version }}.log
path: /tmp/e2e-server.log
@@ -539,4 +542,4 @@ jobs:
exit 0
else
exit 1
fi
fi

View File

@@ -23,7 +23,7 @@ jobs:
actions: read # for github/codeql-action/init to get workflow details
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/autobuild to send a status report
if: github.repository == 'argoproj/argo-cd'
if: github.repository == 'argoproj/argo-cd' || vars.enable_codeql
# CodeQL runs on ubuntu-latest and windows-latest
runs-on: ubuntu-22.04
@@ -33,7 +33,7 @@ jobs:
# Use correct go version. https://github.com/github/codeql-action/issues/1842#issuecomment-1704398087
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version-file: go.mod

View File

@@ -69,15 +69,15 @@ jobs:
if: ${{ github.ref_type != 'tag'}}
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ inputs.go-version }}
- name: Install cosign
uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0
uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0
- uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
- uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1
- uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1
- name: Setup tags for container image as a CSV type
run: |
@@ -143,7 +143,7 @@ jobs:
- name: Build and push container image
id: image
uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 #v6.7.0
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 #v6.10.0
with:
context: .
platforms: ${{ inputs.platforms }}

View File

@@ -52,7 +52,8 @@ jobs:
uses: ./.github/workflows/image-reuse.yaml
with:
# Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations)
go-version: 1.22
# renovate: datasource=golang-version packageName=golang
go-version: 1.23.3
platforms: ${{ needs.set-vars.outputs.platforms }}
push: false
@@ -68,7 +69,8 @@ jobs:
quay_image_name: quay.io/argoproj/argocd:latest
ghcr_image_name: ghcr.io/argoproj/argo-cd/argocd:${{ needs.set-vars.outputs.image-tag }}
# Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations)
go-version: 1.22
# renovate: datasource=golang-version packageName=golang
go-version: 1.23.3
platforms: ${{ needs.set-vars.outputs.platforms }}
push: true
secrets:

View File

@@ -64,7 +64,7 @@ jobs:
git stash pop
- name: Create pull request
uses: peter-evans/create-pull-request@d121e62763d8cc35b5fb1710e887d6e69a52d3a4 # v7.0.2
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
with:
commit-message: "Bump version to ${{ inputs.TARGET_VERSION }}"
title: "Bump version to ${{ inputs.TARGET_VERSION }} on ${{ inputs.TARGET_BRANCH }} branch"

View File

@@ -23,7 +23,7 @@ jobs:
name: Validate PR Title
runs-on: ubuntu-latest
steps:
- uses: thehanimo/pr-title-checker@1d8cd483a2b73118406a187f54dca8a9415f1375 # v1.4.2
- uses: thehanimo/pr-title-checker@7fbfe05602bdd86f926d3fb3bccb6f3aed43bc70 # v1.4.3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
configuration_path: ".github/pr-title-checker-config.json"

View File

@@ -10,7 +10,8 @@ on:
permissions: {}
env:
GOLANG_VERSION: '1.22' # Note: go-version must also be set in job argocd-image.with.go-version
# renovate: datasource=golang-version packageName=golang
GOLANG_VERSION: '1.23.3' # Note: go-version must also be set in job argocd-image.with.go-version
jobs:
argocd-image:
@@ -23,7 +24,8 @@ jobs:
with:
quay_image_name: quay.io/argoproj/argocd:${{ github.ref_name }}
# Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations)
go-version: 1.22
# renovate: datasource=golang-version packageName=golang
go-version: 1.23.3
platforms: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le
push: true
secrets:
@@ -67,20 +69,16 @@ jobs:
- name: Fetch all tags
run: git fetch --force --tags
- name: Set GORELEASER_PREVIOUS_TAG # Workaround, GoReleaser uses 'git-describe' to determine a previous tag. Our tags are created in realease branches.
run: |
set -xue
if echo ${{ github.ref_name }} | grep -E -- '-rc1+$';then
echo "GORELEASER_PREVIOUS_TAG=$(git -c 'versionsort.suffix=-rc' tag --list --sort=version:refname | tail -n 2 | head -n 1)" >> $GITHUB_ENV
else
echo "This is not the first release on the branch, Using GoReleaser defaults"
fi
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Set GORELEASER_PREVIOUS_TAG # Workaround, GoReleaser uses 'git-describe' to determine a previous tag. Our tags are created in release branches.
run: |
set -xue
echo "GORELEASER_PREVIOUS_TAG=$(go run hack/get-previous-release/get-previous-version-for-release-notes.go ${{ github.ref_name }})" >> $GITHUB_ENV
- name: Set environment variables for ldflags
id: set_ldflag
run: |
@@ -96,14 +94,14 @@ jobs:
tool-cache: false
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0
uses: goreleaser/goreleaser-action@9ed2f89a662bf1735a48bc8557fd212fa902bebf # v6.1.0
id: run-goreleaser
with:
version: latest
args: release --clean --timeout 55m
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KUBECTL_VERSION: ${{ env.KUBECTL_VERSION }}
KUBECTL_VERSION: ${{ env.KUBECTL_VERSION }}
GIT_TREE_STATE: ${{ env.GIT_TREE_STATE }}
- name: Generate subject for provenance
@@ -153,7 +151,7 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Golang
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
with:
go-version: ${{ env.GOLANG_VERSION }}
@@ -186,7 +184,7 @@ jobs:
fi
cd /tmp && tar -zcf sbom.tar.gz *.spdx
- name: Generate SBOM hash
shell: bash
id: sbom-hash
@@ -195,15 +193,15 @@ jobs:
# base64 -w0 encodes to base64 and outputs on a single line.
# sha256sum /tmp/sbom.tar.gz ... | base64 -w0
echo "hashes=$(sha256sum /tmp/sbom.tar.gz | base64 -w0)" >> "$GITHUB_OUTPUT"
- name: Upload SBOM
uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8
uses: softprops/action-gh-release@7b4da11513bf3f43f9999e90eabced41ab8bb048 # v2.2.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
/tmp/sbom.tar.gz
sbom-provenance:
needs: [generate-sbom]
permissions:
@@ -211,13 +209,13 @@ jobs:
id-token: write # Needed for provenance signing and ID
contents: write # Needed for release uploads
if: github.repository == 'argoproj/argo-cd'
# Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator
# Must be referenced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0
with:
base64-subjects: "${{ needs.generate-sbom.outputs.hashes }}"
provenance-name: "argocd-sbom.intoto.jsonl"
upload-assets: true
post-release:
needs:
- argocd-image
@@ -295,7 +293,7 @@ jobs:
if: ${{ env.UPDATE_VERSION == 'true' }}
- name: Create PR to update VERSION on master branch
uses: peter-evans/create-pull-request@d121e62763d8cc35b5fb1710e887d6e69a52d3a4 # v7.0.2
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
with:
commit-message: Bump version in master
title: "chore: Bump version in master"

View File

@@ -54,7 +54,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: SARIF file
path: results.sarif

1
.gitignore vendored
View File

@@ -1,6 +1,7 @@
.vscode/
.idea/
.DS_Store
.run/
vendor/
dist/*
ui/dist/app/*

View File

@@ -18,10 +18,13 @@ linters:
- govet
- ineffassign
- misspell
- perfsprint
- staticcheck
- testifylint
- thelper
- unparam
- unused
- usestdlibvars
- whitespace
linters-settings:
gocritic:
@@ -37,6 +40,17 @@ linters-settings:
- typeSwitchVar
goimports:
local-prefixes: github.com/argoproj/argo-cd/v2
perfsprint:
# Optimizes even if it requires an int or uint type cast.
int-conversion: true
# Optimizes into `err.Error()` even if it is only equivalent for non-nil errors.
err-error: false
# Optimizes `fmt.Errorf`.
errorf: false
# Optimizes `fmt.Sprintf` with only one argument.
sprintf1: true
# Optimizes into strings concatenation.
strconcat: false
testifylint:
enable-all: true
disable:

View File

@@ -26,6 +26,13 @@ packages:
github.com/argoproj/argo-cd/v2/applicationset/utils:
interfaces:
Renderer:
github.com/argoproj/argo-cd/v2/commitserver/commit:
interfaces:
RepoClientFactory:
github.com/argoproj/argo-cd/v2/commitserver/apiclient:
interfaces:
CommitServiceClient:
Clientset:
github.com/argoproj/argo-cd/v2/controller/cache:
interfaces:
LiveStateCache:

View File

@@ -2,11 +2,10 @@ version: 2
formats: all
mkdocs:
fail_on_warning: false
configuration: mkdocs.yml
python:
install:
- requirements: docs/requirements.txt
build:
os: "ubuntu-22.04"
tools:
python: "3.7"
python: "3.12"

View File

@@ -1,10 +1,5 @@
# Changelog
## v2.13.6 (2025-03-21)
### Bug fixes
- fix: handle annotated git tags correctly in repo server cache (#21548) (#21771)
## v2.4.8 (2022-07-29)
### Bug fixes

View File

@@ -4,7 +4,7 @@ ARG BASE_IMAGE=docker.io/library/ubuntu:24.04@sha256:3f85b7caad41a95462cf5b787d8
# Initial stage which pulls prepares build dependencies and CLI tooling we need for our final image
# Also used as the image in CI jobs so needs all dependencies
####################################################################################################
FROM docker.io/library/golang:1.23.1@sha256:2fe82a3f3e006b4f2a316c6a21f62b66e1330ae211d039bb8d1128e12ed57bf1 AS builder
FROM docker.io/library/golang:1.23.3@sha256:d56c3e08fe5b27729ee3834854ae8f7015af48fd651cd25d1e3bcf3c19830174 AS builder
RUN echo 'deb http://archive.debian.org/debian buster-backports main' >> /etc/apt/sources.list
@@ -83,7 +83,7 @@ WORKDIR /home/argocd
####################################################################################################
# Argo CD UI stage
####################################################################################################
FROM --platform=$BUILDPLATFORM docker.io/library/node:22.8.0@sha256:bd00c03095f7586432805dbf7989be10361d27987f93de904b1fc003949a4794 AS argocd-ui
FROM --platform=$BUILDPLATFORM docker.io/library/node:23.0.0@sha256:e643c0b70dca9704dff42e12b17f5b719dbe4f95e6392fc2dfa0c5f02ea8044d AS argocd-ui
WORKDIR /src
COPY ["ui/package.json", "ui/yarn.lock", "./"]
@@ -101,7 +101,7 @@ RUN HOST_ARCH=$TARGETARCH NODE_ENV='production' NODE_ONLINE_ENV='online' NODE_OP
####################################################################################################
# Argo CD Build stage which performs the actual build of Argo CD binaries
####################################################################################################
FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.23.1@sha256:2fe82a3f3e006b4f2a316c6a21f62b66e1330ae211d039bb8d1128e12ed57bf1 AS argocd-build
FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.23.3@sha256:d56c3e08fe5b27729ee3834854ae8f7015af48fd651cd25d1e3bcf3c19830174 AS argocd-build
WORKDIR /go/src/github.com/argoproj/argo-cd
@@ -140,7 +140,8 @@ RUN ln -s /usr/local/bin/argocd /usr/local/bin/argocd-server && \
ln -s /usr/local/bin/argocd /usr/local/bin/argocd-dex && \
ln -s /usr/local/bin/argocd /usr/local/bin/argocd-notifications && \
ln -s /usr/local/bin/argocd /usr/local/bin/argocd-applicationset-controller && \
ln -s /usr/local/bin/argocd /usr/local/bin/argocd-k8s-auth
ln -s /usr/local/bin/argocd /usr/local/bin/argocd-k8s-auth && \
ln -s /usr/local/bin/argocd /usr/local/bin/argocd-commit-server
USER $ARGOCD_USER_ID
ENTRYPOINT ["/usr/bin/tini", "--"]

View File

@@ -472,6 +472,7 @@ start-e2e-local: mod-vendor-local dep-ui-local cli-local
mkdir -p /tmp/coverage/repo-server
mkdir -p /tmp/coverage/applicationset-controller
mkdir -p /tmp/coverage/notification
mkdir -p /tmp/coverage/commit-server
# set paths for locally managed ssh known hosts and tls certs data
ARGOCD_SSH_DATA_PATH=/tmp/argo-e2e/app/config/ssh \
ARGOCD_TLS_DATA_PATH=/tmp/argo-e2e/app/config/tls \
@@ -486,6 +487,7 @@ start-e2e-local: mod-vendor-local dep-ui-local cli-local
BIN_MODE=$(ARGOCD_BIN_MODE) \
ARGOCD_APPLICATION_NAMESPACES=argocd-e2e-external,argocd-e2e-external-2 \
ARGOCD_APPLICATIONSET_CONTROLLER_NAMESPACES=argocd-e2e-external,argocd-e2e-external-2 \
ARGOCD_APPLICATIONSET_CONTROLLER_TOKENREF_STRICT_MODE=true \
ARGOCD_APPLICATIONSET_CONTROLLER_ALLOWED_SCM_PROVIDERS=http://127.0.0.1:8341,http://127.0.0.1:8342,http://127.0.0.1:8343,http://127.0.0.1:8344 \
ARGOCD_E2E_TEST=true \
goreman -f $(ARGOCD_PROCFILE) start ${ARGOCD_START}

View File

@@ -1,9 +1,10 @@
controller: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/app-controller} HOSTNAME=testappcontroller-1 FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-application-controller $COMMAND --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081} --otlp-address=${ARGOCD_OTLP_ADDRESS} --application-namespaces=${ARGOCD_APPLICATION_NAMESPACES:-''} --server-side-diff-enabled=${ARGOCD_APPLICATION_CONTROLLER_SERVER_SIDE_DIFF:-'false'}"
api-server: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/api-server} FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-server $COMMAND --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --disable-auth=${ARGOCD_E2E_DISABLE_AUTH:-'true'} --insecure --dex-server http://localhost:${ARGOCD_E2E_DEX_PORT:-5556} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081} --port ${ARGOCD_E2E_APISERVER_PORT:-8080} --otlp-address=${ARGOCD_OTLP_ADDRESS} --application-namespaces=${ARGOCD_APPLICATION_NAMESPACES:-''}"
dex: sh -c "ARGOCD_BINARY_NAME=argocd-dex go run github.com/argoproj/argo-cd/v2/cmd gendexcfg -o `pwd`/dist/dex.yaml && (test -f dist/dex.yaml || { echo 'Failed to generate dex configuration'; exit 1; }) && docker run --rm -p ${ARGOCD_E2E_DEX_PORT:-5556}:${ARGOCD_E2E_DEX_PORT:-5556} -v `pwd`/dist/dex.yaml:/dex.yaml ghcr.io/dexidp/dex:$(grep "image: ghcr.io/dexidp/dex" manifests/base/dex/argocd-dex-server-deployment.yaml | cut -d':' -f3) dex serve /dex.yaml"
redis: bash -c "if [ \"$ARGOCD_REDIS_LOCAL\" = 'true' ]; then redis-server --save '' --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}; else docker run --rm --name argocd-redis -i -p ${ARGOCD_E2E_REDIS_PORT:-6379}:${ARGOCD_E2E_REDIS_PORT:-6379} docker.io/library/redis:$(grep "image: redis" manifests/base/redis/argocd-redis-deployment.yaml | cut -d':' -f3) --save '' --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}; fi"
redis: hack/start-redis-with-password.sh
repo-server: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/repo-server} FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_GNUPGHOME=${ARGOCD_GNUPGHOME:-/tmp/argocd-local/gpg/keys} ARGOCD_PLUGINSOCKFILEPATH=${ARGOCD_PLUGINSOCKFILEPATH:-./test/cmp} ARGOCD_GPG_DATA_PATH=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source} ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-repo-server ARGOCD_GPG_ENABLED=${ARGOCD_GPG_ENABLED:-false} $COMMAND --loglevel debug --port ${ARGOCD_E2E_REPOSERVER_PORT:-8081} --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --otlp-address=${ARGOCD_OTLP_ADDRESS}"
cmp-server: [ "$ARGOCD_E2E_TEST" = 'true' ] && exit 0 || [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_BINARY_NAME=argocd-cmp-server ARGOCD_PLUGINSOCKFILEPATH=${ARGOCD_PLUGINSOCKFILEPATH:-./test/cmp} $COMMAND --config-dir-path ./test/cmp --loglevel debug --otlp-address=${ARGOCD_OTLP_ADDRESS}"
commit-server: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/commit-server} FORCE_LOG_COLORS=1 ARGOCD_BINARY_NAME=argocd-commit-server $COMMAND --loglevel debug --port ${ARGOCD_E2E_COMMITSERVER_PORT:-8086}"
ui: sh -c 'cd ui && ${ARGOCD_E2E_YARN_CMD:-yarn} start'
git-server: test/fixture/testrepos/start-git.sh
helm-registry: test/fixture/testrepos/start-helm-registry.sh

View File

@@ -8,7 +8,6 @@
[![codecov](https://codecov.io/gh/argoproj/argo-cd/branch/master/graph/badge.svg)](https://codecov.io/gh/argoproj/argo-cd)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4486/badge)](https://bestpractices.coreinfrastructure.org/projects/4486)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/argoproj/argo-cd/badge)](https://scorecard.dev/viewer/?uri=github.com/argoproj/argo-cd)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fargoproj%2Fargo-cd.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fargoproj%2Fargo-cd?ref=badge_shield)
**Social:**
[![Twitter Follow](https://img.shields.io/twitter/follow/argoproj?style=social)](https://twitter.com/argoproj)
@@ -57,7 +56,7 @@ Participation in the Argo CD project is governed by the [CNCF Code of Conduct](h
### Blogs and Presentations
1. [Awesome-Argo: A Curated List of Awesome Projects and Resources Related to Argo](https://github.com/terrytangyuan/awesome-argo)
1. [Unveil the Secret Ingredients of Continuous Delivery at Enterprise Scale with Argo CD](https://akuity.io/blog/unveil-the-secret-ingredients-of-continuous-delivery-at-enterprise-scale-with-argocd-kubecon-china-2021/)
1. [Unveil the Secret Ingredients of Continuous Delivery at Enterprise Scale with Argo CD](https://akuity.io/blog/secret-ingredients-of-continuous-delivery-at-enterprise-scale-with-argocd/)
1. [GitOps Without Pipelines With ArgoCD Image Updater](https://youtu.be/avPUQin9kzU)
1. [Combining Argo CD (GitOps), Crossplane (Control Plane), And KubeVela (OAM)](https://youtu.be/eEcgn_gU3SM)
1. [How to Apply GitOps to Everything - Combining Argo CD and Crossplane](https://youtu.be/yrj4lmScKHQ)

View File

@@ -3,9 +3,9 @@ header:
expiration-date: '2024-10-31T00:00:00.000Z' # One year from initial release.
last-updated: '2023-10-27'
last-reviewed: '2023-10-27'
commit-hash: fe606708859574b9b6102a505e260fac5d3fb14e
commit-hash: 74a367d10e7110209610ba3ec225539ebe5f7522
project-url: https://github.com/argoproj/argo-cd
project-release: v2.13.0
project-release: v2.14.0
changelog: https://github.com/argoproj/argo-cd/releases
license: https://github.com/argoproj/argo-cd/blob/master/LICENSE
project-lifecycle:

View File

@@ -16,6 +16,8 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Adyen](https://www.adyen.com)
1. [AirQo](https://airqo.net/)
1. [Akuity](https://akuity.io/)
1. [Alarm.com](https://alarm.com/)
1. [Alauda](https://alauda.io/)
1. [Albert Heijn](https://ah.nl/)
1. [Alibaba Group](https://www.alibabagroup.com/)
1. [Allianz Direct](https://www.allianzdirect.de/)
@@ -35,6 +37,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Axians ACSP](https://www.axians.fr)
1. [Axual B.V.](https://axual.com)
1. [Back Market](https://www.backmarket.com)
1. [Bajaj Finserv Health Ltd.](https://www.bajajfinservhealth.in)
1. [Baloise](https://www.baloise.com)
1. [BCDevExchange DevOps Platform](https://bcdevexchange.org/DevOpsPlatform)
1. [Beat](https://thebeat.co/en/)
@@ -76,6 +79,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Codility](https://www.codility.com/)
1. [Cognizant](https://www.cognizant.com/)
1. [Commonbond](https://commonbond.co/)
1. [Compatio.AI](https://compatio.ai/)
1. [Contlo](https://contlo.com/)
1. [Coralogix](https://coralogix.com/)
1. [Crédit Agricole CIB](https://www.ca-cib.com)
@@ -85,6 +89,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [D2iQ](https://www.d2iq.com)
1. [DaoCloud](https://daocloud.io/)
1. [Datarisk](https://www.datarisk.io/)
1. [Daydream](https://daydream.ing)
1. [Deloitte](https://www.deloitte.com/)
1. [Deutsche Telekom AG](https://telekom.com)
1. [Devopsi - Poland Software/DevOps Consulting](https://devopsi.pl/)
@@ -115,6 +120,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [freee](https://corp.freee.co.jp/en/company/)
1. [Freshop, Inc](https://www.freshop.com/)
1. [Future PLC](https://www.futureplc.com/)
1. [Flagler Health](https://www.flaglerhealth.io/)
1. [G DATA CyberDefense AG](https://www.gdata-software.com/)
1. [G-Research](https://www.gresearch.com/teams/open-source-software/)
1. [Garner](https://www.garnercorp.com)
@@ -243,6 +249,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Optoro](https://www.optoro.com/)
1. [Orbital Insight](https://orbitalinsight.com/)
1. [Oscar Health Insurance](https://hioscar.com/)
1. [Outpost24](https://outpost24.com/)
1. [p3r](https://www.p3r.one/)
1. [Packlink](https://www.packlink.com/)
1. [PagerDuty](https://www.pagerduty.com/)
@@ -271,6 +278,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [PT Boer Technology (Btech)](https://btech.id/)
1. [PUBG](https://www.pubg.com)
1. [Puzzle ITC](https://www.puzzle.ch/)
1. [Pvotal Technologies](https://pvotal.tech/)
1. [Qonto](https://qonto.com)
1. [QuintoAndar](https://quintoandar.com.br)
1. [Quipper](https://www.quipper.com/)
@@ -307,6 +315,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Skyscanner](https://www.skyscanner.net/)
1. [Smart Pension](https://www.smartpension.co.uk/)
1. [Smilee.io](https://smilee.io)
1. [Smilegate Stove](https://www.onstove.com/)
1. [Smood.ch](https://www.smood.ch/)
1. [Snapp](https://snapp.ir/)
1. [Snyk](https://snyk.io/)
@@ -330,10 +339,12 @@ Currently, the following organizations are **officially** using Argo CD:
1. [TableCheck](https://tablecheck.com/)
1. [Tailor Brands](https://www.tailorbrands.com)
1. [Tamkeen Technologies](https://tamkeentech.sa/)
1. [TBC Bank](https://tbcbank.ge/)
1. [Techcombank](https://www.techcombank.com.vn/trang-chu)
1. [Technacy](https://www.technacy.it/)
1. [Telavita](https://www.telavita.com.br/)
1. [Tesla](https://tesla.com/)
1. [TextNow](https://www.textnow.com/)
1. [The Scale Factory](https://www.scalefactory.com/)
1. [ThousandEyes](https://www.thousandeyes.com/)
1. [Ticketmaster](https://ticketmaster.com)
@@ -381,4 +392,5 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Yubo](https://www.yubo.live/)
1. [ZDF](https://www.zdf.de/)
1. [Zimpler](https://www.zimpler.com/)
1. [ZipRecuiter](https://www.ziprecruiter.com/)
1. [ZOZO](https://corp.zozo.com/)

View File

@@ -1 +1 @@
2.13.7
2.14.0

View File

@@ -18,7 +18,9 @@ import (
"context"
"fmt"
"reflect"
"runtime/debug"
"sort"
"strconv"
"strings"
"time"
@@ -52,7 +54,6 @@ import (
"github.com/argoproj/argo-cd/v2/util/db"
argov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
appclientset "github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned"
argoutil "github.com/argoproj/argo-cd/v2/util/argo"
"github.com/argoproj/argo-cd/v2/util/argo/normalizers"
@@ -79,7 +80,6 @@ type ApplicationSetReconciler struct {
Recorder record.EventRecorder
Generators map[string]generators.Generator
ArgoDB db.ArgoDB
ArgoAppClientset appclientset.Interface
KubeClientset kubernetes.Interface
Policy argov1alpha1.ApplicationsSyncPolicy
EnablePolicyOverride bool
@@ -96,9 +96,22 @@ type ApplicationSetReconciler struct {
// +kubebuilder:rbac:groups=argoproj.io,resources=applicationsets,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=argoproj.io,resources=applicationsets/status,verbs=get;update;patch
func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, err error) {
startReconcile := time.Now()
logCtx := log.WithField("applicationset", req.NamespacedName)
defer func() {
if rec := recover(); rec != nil {
logCtx.Errorf("Recovered from panic: %+v\n%s", rec, debug.Stack())
result = ctrl.Result{}
var ok bool
err, ok = rec.(error)
if !ok {
err = fmt.Errorf("%v", r)
}
}
}()
var applicationSetInfo argov1alpha1.ApplicationSet
parametersGenerated := false
startTime := time.Now()
@@ -142,7 +155,6 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
// desiredApplications is the main list of all expected Applications from all generators in this appset.
desiredApplications, applicationSetReason, err := template.GenerateApplications(logCtx, applicationSetInfo, r.Generators, r.Renderer, r.Client)
if err != nil {
logCtx.Errorf("unable to generate applications: %v", err)
_ = r.setApplicationSetStatusCondition(ctx,
&applicationSetInfo,
argov1alpha1.ApplicationSetCondition{
@@ -152,8 +164,7 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
Status: argov1alpha1.ApplicationSetConditionStatusTrue,
}, parametersGenerated,
)
// In order for the controller SDK to respect RequeueAfter, the error must be nil
return ctrl.Result{RequeueAfter: ReconcileRequeueOnValidationError}, nil
return ctrl.Result{RequeueAfter: ReconcileRequeueOnValidationError}, err
}
parametersGenerated = true
@@ -336,7 +347,7 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
requeueAfter = ReconcileRequeueOnValidationError
}
logCtx.WithField("requeueAfter", requeueAfter).Info("end reconcile")
logCtx.WithField("requeueAfter", requeueAfter).Info("end reconcile in ", time.Since(startReconcile))
return ctrl.Result{
RequeueAfter: requeueAfter,
@@ -474,7 +485,9 @@ func (r *ApplicationSetReconciler) validateGeneratedApplications(ctx context.Con
errorsByIndex[i] = fmt.Errorf("ApplicationSet %s contains applications with duplicate name: %s", applicationSetInfo.Name, app.Name)
continue
}
_, err := r.ArgoAppClientset.ArgoprojV1alpha1().AppProjects(r.ArgoCDNamespace).Get(ctx, app.Spec.GetProject(), metav1.GetOptions{})
appProject := &argov1alpha1.AppProject{}
err := r.Client.Get(ctx, types.NamespacedName{Name: app.Spec.Project, Namespace: r.ArgoCDNamespace}, appProject)
if err != nil {
if apierr.IsNotFound(err) {
errorsByIndex[i] = fmt.Errorf("application references project %s which does not exist", app.Spec.Project)
@@ -512,9 +525,11 @@ func (r *ApplicationSetReconciler) getMinRequeueAfter(applicationSetInfo *argov1
}
func ignoreNotAllowedNamespaces(namespaces []string) predicate.Predicate {
return predicate.NewPredicateFuncs(func(object client.Object) bool {
return utils.IsNamespaceAllowed(namespaces, object.GetNamespace())
})
return predicate.Funcs{
CreateFunc: func(e event.CreateEvent) bool {
return utils.IsNamespaceAllowed(namespaces, e.Object.GetNamespace())
},
}
}
func appControllerIndexer(rawObj client.Object) []string {
@@ -1046,7 +1061,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
LastTransitionTime: &now,
Message: "No Application status found, defaulting status to Waiting.",
Status: "Waiting",
Step: fmt.Sprint(getAppStep(app.Name, appStepMap)),
Step: strconv.Itoa(getAppStep(app.Name, appStepMap)),
TargetRevisions: app.Status.GetRevisions(),
}
} else {
@@ -1071,7 +1086,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = "Waiting"
currentAppStatus.Message = "Application has pending changes, setting status to Waiting."
currentAppStatus.Step = fmt.Sprint(getAppStep(currentAppStatus.Application, appStepMap))
currentAppStatus.Step = strconv.Itoa(getAppStep(currentAppStatus.Application, appStepMap))
currentAppStatus.TargetRevisions = app.Status.GetRevisions()
}
@@ -1089,14 +1104,14 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = "Progressing"
currentAppStatus.Message = "Application resource completed a sync successfully, updating status from Pending to Progressing."
currentAppStatus.Step = fmt.Sprint(getAppStep(currentAppStatus.Application, appStepMap))
currentAppStatus.Step = strconv.Itoa(getAppStep(currentAppStatus.Application, appStepMap))
}
} else if operationPhaseString == "Running" || healthStatusString == "Progressing" {
logCtx.Infof("Application %v has entered Progressing status, updating its ApplicationSet status to Progressing", app.Name)
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = "Progressing"
currentAppStatus.Message = "Application resource became Progressing, updating status from Pending to Progressing."
currentAppStatus.Step = fmt.Sprint(getAppStep(currentAppStatus.Application, appStepMap))
currentAppStatus.Step = strconv.Itoa(getAppStep(currentAppStatus.Application, appStepMap))
}
}
@@ -1105,7 +1120,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = healthStatusString
currentAppStatus.Message = "Application resource is already Healthy, updating status from Waiting to Healthy."
currentAppStatus.Step = fmt.Sprint(getAppStep(currentAppStatus.Application, appStepMap))
currentAppStatus.Step = strconv.Itoa(getAppStep(currentAppStatus.Application, appStepMap))
}
if currentAppStatus.Status == "Progressing" && isApplicationHealthy(app) {
@@ -1113,7 +1128,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = healthStatusString
currentAppStatus.Message = "Application resource became Healthy, updating status from Progressing to Healthy."
currentAppStatus.Step = fmt.Sprint(getAppStep(currentAppStatus.Application, appStepMap))
currentAppStatus.Step = strconv.Itoa(getAppStep(currentAppStatus.Application, appStepMap))
}
appStatuses = append(appStatuses, currentAppStatus)
@@ -1184,7 +1199,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress
appStatus.LastTransitionTime = &now
appStatus.Status = "Pending"
appStatus.Message = "Application moved to Pending status, watching for the Application resource to start Progressing."
appStatus.Step = fmt.Sprint(getAppStep(appStatus.Application, appStepMap))
appStatus.Step = strconv.Itoa(getAppStep(appStatus.Application, appStepMap))
updateCountMap[appStepMap[appStatus.Application]] += 1
}
@@ -1490,7 +1505,7 @@ func getOwnsHandlerPredicates(enableProgressiveSyncs bool) predicate.Funcs {
return false
}
requeue := shouldRequeueApplicationSet(appOld, appNew, enableProgressiveSyncs)
logCtx.WithField("requeue", requeue).Debugf("requeue: %t caused by application %s\n", requeue, appNew.Name)
logCtx.WithField("requeue", requeue).Debugf("requeue: %t caused by application %s", requeue, appNew.Name)
return requeue
},
GenericFunc: func(e event.GenericEvent) bool {

View File

@@ -38,7 +38,6 @@ import (
appsetmetrics "github.com/argoproj/argo-cd/v2/applicationset/metrics"
argocommon "github.com/argoproj/argo-cd/v2/common"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
appclientset "github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned/fake"
dbmocks "github.com/argoproj/argo-cd/v2/util/db/mocks"
"github.com/argoproj/argo-cd/v2/pkg/apis/application"
@@ -1152,7 +1151,7 @@ func TestRemoveFinalizerOnInvalidDestination_FinalizerTypes(t *testing.T) {
Name: "my-secret",
Namespace: "namespace",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
Data: map[string][]byte{
@@ -1179,18 +1178,18 @@ func TestRemoveFinalizerOnInvalidDestination_FinalizerTypes(t *testing.T) {
// argoDB := db.NewDB("namespace", settingsMgr, r.KubeClientset)
// clusterList, err := argoDB.ListClusters(context.Background())
clusterList, err := utils.ListClusters(context.Background(), kubeclientset, "namespace")
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
appLog := log.WithFields(log.Fields{"app": app.Name, "appSet": ""})
appInputParam := app.DeepCopy()
err = r.removeFinalizerOnInvalidDestination(context.Background(), appSet, appInputParam, clusterList, appLog)
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
retrievedApp := v1alpha1.Application{}
err = client.Get(context.Background(), crtclient.ObjectKeyFromObject(&app), &retrievedApp)
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
// App on the cluster should have the expected finalizers
assert.ElementsMatch(t, c.expectedFinalizers, retrievedApp.Finalizers)
@@ -1308,7 +1307,7 @@ func TestRemoveFinalizerOnInvalidDestination_DestinationTypes(t *testing.T) {
Name: "my-secret",
Namespace: "namespace",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
Data: map[string][]byte{
@@ -1335,18 +1334,18 @@ func TestRemoveFinalizerOnInvalidDestination_DestinationTypes(t *testing.T) {
// argoDB := db.NewDB("argocd", settingsMgr, r.KubeClientset)
// clusterList, err := argoDB.ListClusters(context.Background())
clusterList, err := utils.ListClusters(context.Background(), kubeclientset, "namespace")
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
appLog := log.WithFields(log.Fields{"app": app.Name, "appSet": ""})
appInputParam := app.DeepCopy()
err = r.removeFinalizerOnInvalidDestination(context.Background(), appSet, appInputParam, clusterList, appLog)
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
retrievedApp := v1alpha1.Application{}
err = client.Get(context.Background(), crtclient.ObjectKeyFromObject(&app), &retrievedApp)
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
finalizerRemoved := len(retrievedApp.Finalizers) == 0
@@ -1403,7 +1402,7 @@ func TestRemoveOwnerReferencesOnDeleteAppSet(t *testing.T) {
}
err := controllerutil.SetControllerReference(&appSet, &app, scheme)
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
initObjs := []crtclient.Object{&app, &appSet}
@@ -1419,11 +1418,11 @@ func TestRemoveOwnerReferencesOnDeleteAppSet(t *testing.T) {
}
err = r.removeOwnerReferencesOnDeleteAppSet(context.Background(), appSet)
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
retrievedApp := v1alpha1.Application{}
err = client.Get(context.Background(), crtclient.ObjectKeyFromObject(&app), &retrievedApp)
require.NoError(t, err, "Unexpected error")
require.NoError(t, err)
ownerReferencesRemoved := len(retrievedApp.OwnerReferences) == 0
assert.True(t, ownerReferencesRemoved)
@@ -1784,7 +1783,7 @@ func TestDeleteInCluster(t *testing.T) {
Name: obj.Name,
}, got)
assert.EqualError(t, err, fmt.Sprintf("applications.argoproj.io \"%s\" not found", obj.Name))
assert.EqualError(t, err, fmt.Sprintf("applications.argoproj.io %q not found", obj.Name))
}
}
}
@@ -1840,6 +1839,8 @@ func TestRequeueGeneratorFails(t *testing.T) {
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
err = v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
appSet := v1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -1884,7 +1885,7 @@ func TestRequeueGeneratorFails(t *testing.T) {
}
res, err := r.Reconcile(context.Background(), req)
require.NoError(t, err)
require.Error(t, err)
assert.Equal(t, ReconcileRequeueOnValidationError, res.RequeueAfter)
}
@@ -2046,7 +2047,7 @@ func TestValidateGeneratedApplications(t *testing.T) {
Name: "my-secret",
Namespace: "namespace",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
Data: map[string][]byte{
@@ -2059,21 +2060,15 @@ func TestValidateGeneratedApplications(t *testing.T) {
objects := append([]runtime.Object{}, secret)
kubeclientset := kubefake.NewSimpleClientset(objects...)
argoObjs := []runtime.Object{myProject}
for _, app := range cc.apps {
argoObjs = append(argoObjs, &app)
}
r := ApplicationSetReconciler{
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
ArgoCDNamespace: "namespace",
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
ArgoCDNamespace: "namespace",
KubeClientset: kubeclientset,
Metrics: metrics,
}
appSetInfo := v1alpha1.ApplicationSet{}
@@ -2152,9 +2147,8 @@ func TestReconcilerValidationProjectErrorBehaviour(t *testing.T) {
}
kubeclientset := kubefake.NewSimpleClientset()
argoObjs := []runtime.Object{&project}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appSet).WithStatusSubresource(&appSet).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).Build()
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appSet, &project).WithStatusSubresource(&appSet).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).Build()
metrics := appsetmetrics.NewFakeAppsetMetrics(client)
r := ApplicationSetReconciler{
@@ -2165,12 +2159,11 @@ func TestReconcilerValidationProjectErrorBehaviour(t *testing.T) {
Generators: map[string]generators.Generator{
"List": generators.NewListGenerator(),
},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Policy: v1alpha1.ApplicationsSyncPolicySync,
ArgoCDNamespace: "argocd",
Metrics: metrics,
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Policy: v1alpha1.ApplicationsSyncPolicySync,
ArgoCDNamespace: "argocd",
Metrics: metrics,
}
req := ctrl.Request{
@@ -2233,6 +2226,7 @@ func TestSetApplicationSetStatusCondition(t *testing.T) {
},
},
testfunc: func(t *testing.T, appset v1alpha1.ApplicationSet) {
t.Helper()
assert.Len(t, appset.Status.Conditions, 3)
},
},
@@ -2268,6 +2262,7 @@ func TestSetApplicationSetStatusCondition(t *testing.T) {
},
},
testfunc: func(t *testing.T, appset v1alpha1.ApplicationSet) {
t.Helper()
assert.Len(t, appset.Status.Conditions, 3)
isProgressingCondition := false
@@ -2330,6 +2325,7 @@ func TestSetApplicationSetStatusCondition(t *testing.T) {
},
},
testfunc: func(t *testing.T, appset v1alpha1.ApplicationSet) {
t.Helper()
assert.Len(t, appset.Status.Conditions, 4)
isProgressingCondition := false
@@ -2347,7 +2343,6 @@ func TestSetApplicationSetStatusCondition(t *testing.T) {
}
kubeclientset := kubefake.NewSimpleClientset([]runtime.Object{}...)
argoObjs := []runtime.Object{}
for _, testCase := range testCases {
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&testCase.appset).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).WithStatusSubresource(&testCase.appset).Build()
@@ -2361,10 +2356,9 @@ func TestSetApplicationSetStatusCondition(t *testing.T) {
Generators: map[string]generators.Generator{
"List": generators.NewListGenerator(),
},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Metrics: metrics,
}
for _, condition := range testCase.conditions {
@@ -2377,6 +2371,7 @@ func TestSetApplicationSetStatusCondition(t *testing.T) {
}
func applicationsUpdateSyncPolicyTest(t *testing.T, applicationsSyncPolicy v1alpha1.ApplicationsSyncPolicy, recordBuffer int, allowPolicyOverride bool) v1alpha1.Application {
t.Helper()
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
@@ -2417,8 +2412,6 @@ func applicationsUpdateSyncPolicyTest(t *testing.T, applicationsSyncPolicy v1alp
},
}
argoObjs := []runtime.Object{&defaultProject}
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster",
@@ -2439,7 +2432,7 @@ func applicationsUpdateSyncPolicyTest(t *testing.T, applicationsSyncPolicy v1alp
objects := append([]runtime.Object{}, secret)
kubeclientset := kubefake.NewSimpleClientset(objects...)
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appSet).WithStatusSubresource(&appSet).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).Build()
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appSet, &defaultProject).WithStatusSubresource(&appSet).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).Build()
metrics := appsetmetrics.NewFakeAppsetMetrics(client)
r := ApplicationSetReconciler{
@@ -2452,7 +2445,6 @@ func applicationsUpdateSyncPolicyTest(t *testing.T, applicationsSyncPolicy v1alp
},
ArgoDB: &dbmocks.ArgoDB{},
ArgoCDNamespace: "argocd",
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Policy: v1alpha1.ApplicationsSyncPolicySync,
EnablePolicyOverride: allowPolicyOverride,
@@ -2553,6 +2545,7 @@ func TestUpdatePerformedWithSyncPolicyCreateOnlyAndAllowPolicyOverrideFalse(t *t
}
func applicationsDeleteSyncPolicyTest(t *testing.T, applicationsSyncPolicy v1alpha1.ApplicationsSyncPolicy, recordBuffer int, allowPolicyOverride bool) v1alpha1.ApplicationList {
t.Helper()
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
@@ -2593,8 +2586,6 @@ func applicationsDeleteSyncPolicyTest(t *testing.T, applicationsSyncPolicy v1alp
},
}
argoObjs := []runtime.Object{&defaultProject}
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster",
@@ -2615,7 +2606,7 @@ func applicationsDeleteSyncPolicyTest(t *testing.T, applicationsSyncPolicy v1alp
objects := append([]runtime.Object{}, secret)
kubeclientset := kubefake.NewSimpleClientset(objects...)
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appSet).WithStatusSubresource(&appSet).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).Build()
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appSet, &defaultProject).WithStatusSubresource(&appSet).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).Build()
metrics := appsetmetrics.NewFakeAppsetMetrics(client)
r := ApplicationSetReconciler{
@@ -2628,7 +2619,6 @@ func applicationsDeleteSyncPolicyTest(t *testing.T, applicationsSyncPolicy v1alp
},
ArgoDB: &dbmocks.ArgoDB{},
ArgoCDNamespace: "argocd",
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Policy: v1alpha1.ApplicationsSyncPolicySync,
EnablePolicyOverride: allowPolicyOverride,
@@ -2732,7 +2722,6 @@ func TestPolicies(t *testing.T) {
}
kubeclientset := kubefake.NewSimpleClientset()
argoObjs := []runtime.Object{&defaultProject}
for _, c := range []struct {
name string
@@ -2804,7 +2793,7 @@ func TestPolicies(t *testing.T) {
},
}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appSet).WithStatusSubresource(&appSet).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).Build()
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appSet, &defaultProject).WithStatusSubresource(&appSet).WithIndex(&v1alpha1.Application{}, ".metadata.controller", appControllerIndexer).Build()
metrics := appsetmetrics.NewFakeAppsetMetrics(client)
r := ApplicationSetReconciler{
@@ -2815,12 +2804,11 @@ func TestPolicies(t *testing.T) {
Generators: map[string]generators.Generator{
"List": generators.NewListGenerator(),
},
ArgoDB: &dbmocks.ArgoDB{},
ArgoCDNamespace: "argocd",
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Policy: policy,
Metrics: metrics,
ArgoDB: &dbmocks.ArgoDB{},
ArgoCDNamespace: "argocd",
KubeClientset: kubeclientset,
Policy: policy,
Metrics: metrics,
}
req := ctrl.Request{
@@ -2890,7 +2878,6 @@ func TestSetApplicationSetApplicationStatus(t *testing.T) {
require.NoError(t, err)
kubeclientset := kubefake.NewSimpleClientset([]runtime.Object{}...)
argoObjs := []runtime.Object{}
for _, cc := range []struct {
name string
@@ -2974,10 +2961,9 @@ func TestSetApplicationSetApplicationStatus(t *testing.T) {
Generators: map[string]generators.Generator{
"List": generators.NewListGenerator(),
},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Metrics: metrics,
}
err = r.setAppSetApplicationStatus(context.TODO(), log.NewEntry(log.StandardLogger()), &cc.appSet, cc.appStatuses)
@@ -3724,17 +3710,15 @@ func TestBuildAppDependencyList(t *testing.T) {
} {
t.Run(cc.name, func(t *testing.T) {
kubeclientset := kubefake.NewSimpleClientset([]runtime.Object{}...)
argoObjs := []runtime.Object{}
r := ApplicationSetReconciler{
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Metrics: metrics,
}
appDependencyList, appStepMap := r.buildAppDependencyList(log.NewEntry(log.StandardLogger()), cc.appSet, cc.apps)
@@ -4392,17 +4376,15 @@ func TestBuildAppSyncMap(t *testing.T) {
} {
t.Run(cc.name, func(t *testing.T) {
kubeclientset := kubefake.NewSimpleClientset([]runtime.Object{}...)
argoObjs := []runtime.Object{}
r := ApplicationSetReconciler{
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Metrics: metrics,
}
appSyncMap := r.buildAppSyncMap(cc.appSet, cc.appDependencyList, cc.appMap)
@@ -5338,20 +5320,18 @@ func TestUpdateApplicationSetApplicationStatus(t *testing.T) {
} {
t.Run(cc.name, func(t *testing.T) {
kubeclientset := kubefake.NewSimpleClientset([]runtime.Object{}...)
argoObjs := []runtime.Object{}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&cc.appSet).WithStatusSubresource(&cc.appSet).Build()
metrics := appsetmetrics.NewFakeAppsetMetrics(client)
r := ApplicationSetReconciler{
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Metrics: metrics,
}
appStatuses, err := r.updateApplicationSetApplicationStatus(context.TODO(), log.NewEntry(log.StandardLogger()), &cc.appSet, cc.apps, cc.appStepMap)
@@ -6088,20 +6068,18 @@ func TestUpdateApplicationSetApplicationStatusProgress(t *testing.T) {
} {
t.Run(cc.name, func(t *testing.T) {
kubeclientset := kubefake.NewSimpleClientset([]runtime.Object{}...)
argoObjs := []runtime.Object{}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&cc.appSet).WithStatusSubresource(&cc.appSet).Build()
metrics := appsetmetrics.NewFakeAppsetMetrics(client)
r := ApplicationSetReconciler{
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Metrics: metrics,
}
appStatuses, err := r.updateApplicationSetApplicationStatusProgress(context.TODO(), log.NewEntry(log.StandardLogger()), &cc.appSet, cc.appSyncMap, cc.appStepMap)
@@ -6300,20 +6278,18 @@ func TestUpdateResourceStatus(t *testing.T) {
} {
t.Run(cc.name, func(t *testing.T) {
kubeclientset := kubefake.NewSimpleClientset([]runtime.Object{}...)
argoObjs := []runtime.Object{}
client := fake.NewClientBuilder().WithScheme(scheme).WithStatusSubresource(&cc.appSet).WithObjects(&cc.appSet).Build()
metrics := appsetmetrics.NewFakeAppsetMetrics(client)
r := ApplicationSetReconciler{
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Metrics: metrics,
}
err := r.updateResourcesStatus(context.TODO(), log.NewEntry(log.StandardLogger()), &cc.appSet, cc.apps)
@@ -6366,6 +6342,8 @@ func TestResourceStatusAreOrdered(t *testing.T) {
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
err = v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
for _, cc := range []struct {
name string
appSet v1alpha1.ApplicationSet
@@ -6389,20 +6367,18 @@ func TestResourceStatusAreOrdered(t *testing.T) {
} {
t.Run(cc.name, func(t *testing.T) {
kubeclientset := kubefake.NewSimpleClientset([]runtime.Object{}...)
argoObjs := []runtime.Object{}
client := fake.NewClientBuilder().WithScheme(scheme).WithStatusSubresource(&cc.appSet).WithObjects(&cc.appSet).Build()
metrics := appsetmetrics.NewFakeAppsetMetrics(client)
r := ApplicationSetReconciler{
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
ArgoAppClientset: appclientset.NewSimpleClientset(argoObjs...),
KubeClientset: kubeclientset,
Metrics: metrics,
Client: client,
Scheme: scheme,
Recorder: record.NewFakeRecorder(1),
Generators: map[string]generators.Generator{},
ArgoDB: &dbmocks.ArgoDB{},
KubeClientset: kubeclientset,
Metrics: metrics,
}
err := r.updateResourcesStatus(context.TODO(), log.NewEntry(log.StandardLogger()), &cc.appSet, cc.apps)
@@ -6616,6 +6592,9 @@ func TestMigrateStatus(t *testing.T) {
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
err = v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
for _, tc := range []struct {
name string
appset v1alpha1.ApplicationSet
@@ -6678,86 +6657,3 @@ func TestMigrateStatus(t *testing.T) {
})
}
}
func TestIgnoreNotAllowedNamespaces(t *testing.T) {
tests := []struct {
name string
namespaces []string
objectNS string
expected bool
}{
{
name: "Namespace allowed",
namespaces: []string{"allowed-namespace"},
objectNS: "allowed-namespace",
expected: true,
},
{
name: "Namespace not allowed",
namespaces: []string{"allowed-namespace"},
objectNS: "not-allowed-namespace",
expected: false,
},
{
name: "Empty allowed namespaces",
namespaces: []string{},
objectNS: "any-namespace",
expected: false,
},
{
name: "Multiple allowed namespaces",
namespaces: []string{"allowed-namespace-1", "allowed-namespace-2"},
objectNS: "allowed-namespace-2",
expected: true,
},
{
name: "Namespace not in multiple allowed namespaces",
namespaces: []string{"allowed-namespace-1", "allowed-namespace-2"},
objectNS: "not-allowed-namespace",
expected: false,
},
{
name: "Namespace matched by glob pattern",
namespaces: []string{"allowed-namespace-*"},
objectNS: "allowed-namespace-1",
expected: true,
},
{
name: "Namespace matched by regex pattern",
namespaces: []string{"/^allowed-namespace-[^-]+$/"},
objectNS: "allowed-namespace-1",
expected: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
predicate := ignoreNotAllowedNamespaces(tt.namespaces)
object := &v1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Namespace: tt.objectNS,
},
}
t.Run(tt.name+":Create", func(t *testing.T) {
result := predicate.Create(event.CreateEvent{Object: object})
assert.Equal(t, tt.expected, result)
})
t.Run(tt.name+":Update", func(t *testing.T) {
result := predicate.Update(event.UpdateEvent{ObjectNew: object})
assert.Equal(t, tt.expected, result)
})
t.Run(tt.name+":Delete", func(t *testing.T) {
result := predicate.Delete(event.DeleteEvent{Object: object})
assert.Equal(t, tt.expected, result)
})
t.Run(tt.name+":Generic", func(t *testing.T) {
result := predicate.Generic(event.GenericEvent{Object: object})
assert.Equal(t, tt.expected, result)
})
})
}
}

View File

@@ -14,7 +14,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/event"
"github.com/argoproj/argo-cd/v2/applicationset/generators"
"github.com/argoproj/argo-cd/v2/common"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -50,7 +50,7 @@ type addRateLimitingInterface[T comparable] interface {
func (h *clusterSecretEventHandler) queueRelatedAppGenerators(ctx context.Context, q addRateLimitingInterface[reconcile.Request], object client.Object) {
// Check for label, lookup all ApplicationSets that might match the cluster, queue them all
if object.GetLabels()[generators.ArgoCDSecretTypeLabel] != generators.ArgoCDSecretTypeCluster {
if object.GetLabels()[common.LabelKeySecretType] != common.LabelValueSecretTypeCluster {
return
}

View File

@@ -4,6 +4,8 @@ import (
"context"
"testing"
argocommon "github.com/argoproj/argo-cd/v2/common"
log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -16,7 +18,6 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
"github.com/argoproj/argo-cd/v2/applicationset/generators"
argov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -42,7 +43,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -70,7 +71,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -113,7 +114,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -157,7 +158,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -218,7 +219,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -254,7 +255,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -304,7 +305,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -355,7 +356,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -389,7 +390,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -425,7 +426,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -475,7 +476,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},
@@ -526,7 +527,7 @@ func TestClusterEventHandler(t *testing.T) {
Namespace: "argocd",
Name: "my-secret",
Labels: map[string]string{
generators.ArgoCDSecretTypeLabel: generators.ArgoCDSecretTypeCluster,
argocommon.LabelKeySecretType: argocommon.LabelValueSecretTypeCluster,
},
},
},

View File

@@ -57,7 +57,7 @@ func TestRequeueAfter(t *testing.T) {
},
}
fakeDynClient := dynfake.NewSimpleDynamicClientWithCustomListKinds(runtime.NewScheme(), gvrToListKind, duckType)
scmConfig := generators.NewSCMConfig("", []string{""}, true, nil)
scmConfig := generators.NewSCMConfig("", []string{""}, true, nil, true)
terminalGenerators := map[string]generators.Generator{
"List": generators.NewListGenerator(),
"Clusters": generators.NewClusterGenerator(k8sClient, ctx, appClientset, "argocd"),
@@ -100,7 +100,8 @@ func TestRequeueAfter(t *testing.T) {
}
type args struct {
appset *argov1alpha1.ApplicationSet
appset *argov1alpha1.ApplicationSet
requeueAfterOverride string
}
tests := []struct {
name string
@@ -108,11 +109,13 @@ func TestRequeueAfter(t *testing.T) {
want time.Duration
wantErr assert.ErrorAssertionFunc
}{
{name: "Cluster", args: args{appset: &argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{{Clusters: &argov1alpha1.ClusterGenerator{}}},
},
}}, want: generators.NoRequeueAfter, wantErr: assert.NoError},
{name: "Cluster", args: args{
appset: &argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{{Clusters: &argov1alpha1.ClusterGenerator{}}},
},
}, requeueAfterOverride: "",
}, want: generators.NoRequeueAfter, wantErr: assert.NoError},
{name: "ClusterMergeNested", args: args{&argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{
@@ -127,7 +130,7 @@ func TestRequeueAfter(t *testing.T) {
}},
},
},
}}, want: generators.DefaultRequeueAfterSeconds, wantErr: assert.NoError},
}, ""}, want: generators.DefaultRequeueAfterSeconds, wantErr: assert.NoError},
{name: "ClusterMatrixNested", args: args{&argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{
@@ -142,15 +145,65 @@ func TestRequeueAfter(t *testing.T) {
}},
},
},
}}, want: generators.DefaultRequeueAfterSeconds, wantErr: assert.NoError},
}, ""}, want: generators.DefaultRequeueAfterSeconds, wantErr: assert.NoError},
{name: "ListGenerator", args: args{appset: &argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{{List: &argov1alpha1.ListGenerator{}}},
},
}}, want: generators.NoRequeueAfter, wantErr: assert.NoError},
{name: "DuckGenerator", args: args{appset: &argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{{ClusterDecisionResource: &argov1alpha1.DuckTypeGenerator{}}},
},
}}, want: generators.DefaultRequeueAfterSeconds, wantErr: assert.NoError},
{name: "OverrideRequeueDuck", args: args{
appset: &argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{{ClusterDecisionResource: &argov1alpha1.DuckTypeGenerator{}}},
},
}, requeueAfterOverride: "1h",
}, want: 1 * time.Hour, wantErr: assert.NoError},
{name: "OverrideRequeueGit", args: args{&argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{
{Git: &argov1alpha1.GitGenerator{}},
},
},
}, "1h"}, want: 1 * time.Hour, wantErr: assert.NoError},
{name: "OverrideRequeueMatrix", args: args{&argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{
{Clusters: &argov1alpha1.ClusterGenerator{}},
{Merge: &argov1alpha1.MergeGenerator{
Generators: []argov1alpha1.ApplicationSetNestedGenerator{
{
Clusters: &argov1alpha1.ClusterGenerator{},
Git: &argov1alpha1.GitGenerator{},
},
},
}},
},
},
}, "5m"}, want: 5 * time.Minute, wantErr: assert.NoError},
{name: "OverrideRequeueMerge", args: args{&argov1alpha1.ApplicationSet{
Spec: argov1alpha1.ApplicationSetSpec{
Generators: []argov1alpha1.ApplicationSetGenerator{
{Clusters: &argov1alpha1.ClusterGenerator{}},
{Merge: &argov1alpha1.MergeGenerator{
Generators: []argov1alpha1.ApplicationSetNestedGenerator{
{
Clusters: &argov1alpha1.ClusterGenerator{},
Git: &argov1alpha1.GitGenerator{},
},
},
}},
},
},
}, "12s"}, want: 12 * time.Second, wantErr: assert.NoError},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Setenv("ARGOCD_APPLICATIONSET_CONTROLLER_REQUEUE_AFTER", tt.args.requeueAfterOverride)
assert.Equalf(t, tt.want, r.getMinRequeueAfter(tt.args.appset), "getMinRequeueAfter(%v)", tt.args.appset)
})
}

View File

@@ -69,9 +69,11 @@ func GenerateApplications(logCtx *log.Entry, applicationSetInfo argov1alpha1.App
res = append(res, *app)
}
}
logCtx.WithField("generator", requestedGenerator).Infof("generated %d applications", len(res))
logCtx.WithField("generator", requestedGenerator).Debugf("apps from generator: %+v", res)
if log.IsLevelEnabled(log.DebugLevel) {
logCtx.WithField("generator", requestedGenerator).Debugf("apps from generator: %+v", res)
} else {
logCtx.Infof("generated %d applications", len(res))
}
}
return res, applicationSetReason, firstError

View File

@@ -2,6 +2,7 @@ package template
import (
"fmt"
"maps"
"testing"
"github.com/stretchr/testify/mock"
@@ -18,7 +19,6 @@ import (
rendmock "github.com/argoproj/argo-cd/v2/applicationset/utils/mocks"
"github.com/argoproj/argo-cd/v2/pkg/apis/application"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/util/collections"
)
func TestGenerateApplications(t *testing.T) {
@@ -344,7 +344,7 @@ func TestGenerateAppsUsingPullRequestGenerator(t *testing.T) {
assert.EqualValues(t, cases.expectedApp[0].ObjectMeta.Name, gotApp[0].ObjectMeta.Name)
assert.EqualValues(t, cases.expectedApp[0].Spec.Source.TargetRevision, gotApp[0].Spec.Source.TargetRevision)
assert.EqualValues(t, cases.expectedApp[0].Spec.Destination.Namespace, gotApp[0].Spec.Destination.Namespace)
assert.True(t, collections.StringMapsEqual(cases.expectedApp[0].ObjectMeta.Labels, gotApp[0].ObjectMeta.Labels))
assert.True(t, maps.Equal(cases.expectedApp[0].ObjectMeta.Labels, gotApp[0].ObjectMeta.Labels))
})
}
}

View File

@@ -15,14 +15,10 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
"github.com/argoproj/argo-cd/v2/common"
argoappsetv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
const (
ArgoCDSecretTypeLabel = "argocd.argoproj.io/secret-type"
ArgoCDSecretTypeCluster = "cluster"
)
var _ Generator = (*ClusterGenerator)(nil)
// ClusterGenerator generates Applications for some or all clusters registered with ArgoCD.
@@ -52,7 +48,7 @@ func NewClusterGenerator(c client.Client, ctx context.Context, clientset kuberne
// GetRequeueAfter never requeue the cluster generator because the `clusterSecretEventHandler` will requeue the appsets
// when the cluster secrets change
func (g *ClusterGenerator) GetRequeueAfter(appSetGenerator *argoappsetv1alpha1.ApplicationSetGenerator) time.Duration {
func (g *ClusterGenerator) GetRequeueAfter(_ *argoappsetv1alpha1.ApplicationSetGenerator) time.Duration {
return NoRequeueAfter
}
@@ -61,6 +57,7 @@ func (g *ClusterGenerator) GetTemplate(appSetGenerator *argoappsetv1alpha1.Appli
}
func (g *ClusterGenerator) GenerateParams(appSetGenerator *argoappsetv1alpha1.ApplicationSetGenerator, appSet *argoappsetv1alpha1.ApplicationSet, _ client.Client) ([]map[string]interface{}, error) {
logCtx := log.WithField("applicationset", appSet.GetName()).WithField("namespace", appSet.GetNamespace())
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -83,7 +80,7 @@ func (g *ClusterGenerator) GenerateParams(appSetGenerator *argoappsetv1alpha1.Ap
return nil, nil
}
clusterSecrets, err := g.getSecretsByClusterName(appSetGenerator)
clusterSecrets, err := g.getSecretsByClusterName(logCtx, appSetGenerator)
if err != nil {
return nil, fmt.Errorf("error getting cluster secrets: %w", err)
}
@@ -92,6 +89,10 @@ func (g *ClusterGenerator) GenerateParams(appSetGenerator *argoappsetv1alpha1.Ap
secretsFound := []corev1.Secret{}
isFlatMode := appSetGenerator.Clusters.FlatList
logCtx.Debugf("Using flat mode = %t for cluster generator", isFlatMode)
clustersParams := make([]map[string]interface{}, 0)
for _, cluster := range clustersFromArgoCD.Items {
// If there is a secret for this cluster, then it's a non-local cluster, so it will be
// handled by the next step.
@@ -103,15 +104,20 @@ func (g *ClusterGenerator) GenerateParams(appSetGenerator *argoappsetv1alpha1.Ap
params["name"] = cluster.Name
params["nameNormalized"] = cluster.Name
params["server"] = cluster.Server
params["project"] = ""
err = appendTemplatedValues(appSetGenerator.Clusters.Values, params, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
if err != nil {
return nil, fmt.Errorf("error appending templated values for local cluster: %w", err)
}
res = append(res, params)
if isFlatMode {
clustersParams = append(clustersParams, params)
} else {
res = append(res, params)
}
log.WithField("cluster", "local cluster").Info("matched local cluster")
logCtx.WithField("cluster", "local cluster").Info("matched local cluster")
}
}
@@ -123,6 +129,13 @@ func (g *ClusterGenerator) GenerateParams(appSetGenerator *argoappsetv1alpha1.Ap
params["nameNormalized"] = utils.SanitizeName(string(cluster.Data["name"]))
params["server"] = string(cluster.Data["server"])
project, ok := cluster.Data["project"]
if ok {
params["project"] = string(project)
} else {
params["project"] = ""
}
if appSet.Spec.GoTemplate {
meta := map[string]interface{}{}
@@ -149,19 +162,27 @@ func (g *ClusterGenerator) GenerateParams(appSetGenerator *argoappsetv1alpha1.Ap
return nil, fmt.Errorf("error appending templated values for cluster: %w", err)
}
res = append(res, params)
if isFlatMode {
clustersParams = append(clustersParams, params)
} else {
res = append(res, params)
}
log.WithField("cluster", cluster.Name).Info("matched cluster secret")
logCtx.WithField("cluster", cluster.Name).Debug("matched cluster secret")
}
if isFlatMode {
res = append(res, map[string]interface{}{
"clusters": clustersParams,
})
}
return res, nil
}
func (g *ClusterGenerator) getSecretsByClusterName(appSetGenerator *argoappsetv1alpha1.ApplicationSetGenerator) (map[string]corev1.Secret, error) {
// List all Clusters:
func (g *ClusterGenerator) getSecretsByClusterName(log *log.Entry, appSetGenerator *argoappsetv1alpha1.ApplicationSetGenerator) (map[string]corev1.Secret, error) {
clusterSecretList := &corev1.SecretList{}
selector := metav1.AddLabelToSelector(&appSetGenerator.Clusters.Selector, ArgoCDSecretTypeLabel, ArgoCDSecretTypeCluster)
selector := metav1.AddLabelToSelector(&appSetGenerator.Clusters.Selector, common.LabelKeySecretType, common.LabelValueSecretTypeCluster)
secretSelector, err := metav1.LabelSelectorAsSelector(selector)
if err != nil {
return nil, fmt.Errorf("error converting label selector: %w", err)
@@ -170,7 +191,7 @@ func (g *ClusterGenerator) getSecretsByClusterName(appSetGenerator *argoappsetv1
if err := g.Client.List(context.Background(), clusterSecretList, client.MatchingLabelsSelector{Selector: secretSelector}); err != nil {
return nil, err
}
log.Debug("clusters matching labels", "count", len(clusterSecretList.Items))
log.Debugf("clusters matching labels: %d", len(clusterSecretList.Items))
res := map[string]corev1.Secret{}

View File

@@ -76,18 +76,20 @@ func TestGenerateParams(t *testing.T) {
},
},
Data: map[string][]byte{
"config": []byte("{}"),
"name": []byte("production_01/west"),
"server": []byte("https://production-01.example.com"),
"config": []byte("{}"),
"name": []byte("production_01/west"),
"server": []byte("https://production-01.example.com"),
"project": []byte("prod-project"),
},
Type: corev1.SecretType("Opaque"),
},
}
testCases := []struct {
name string
selector metav1.LabelSelector
values map[string]string
expected []map[string]interface{}
name string
selector metav1.LabelSelector
isFlatMode bool
values map[string]string
expected []map[string]interface{}
// clientError is true if a k8s client error should be simulated
clientError bool
expectedError error
@@ -105,17 +107,16 @@ func TestGenerateParams(t *testing.T) {
"aaa": "{{ server }}",
"no-op": "{{ this-does-not-exist }}",
}, expected: []map[string]interface{}{
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "{{ metadata.annotations.foo.argoproj.io }}", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "{{ metadata.labels.environment }}", "values.aaa": "https://kubernetes.default.svc", "nameNormalized": "in-cluster", "name": "in-cluster", "server": "https://kubernetes.default.svc", "project": ""},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "production", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "production", "values.aaa": "https://production-01.example.com", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "staging", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "staging", "values.aaa": "https://staging-01.example.com", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
},
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "{{ metadata.annotations.foo.argoproj.io }}", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "{{ metadata.labels.environment }}", "values.aaa": "https://kubernetes.default.svc", "nameNormalized": "in-cluster", "name": "in-cluster", "server": "https://kubernetes.default.svc"},
},
clientError: false,
expectedError: nil,
@@ -131,12 +132,12 @@ func TestGenerateParams(t *testing.T) {
expected: []map[string]interface{}{
{
"name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
},
{
"name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
},
},
clientError: false,
@@ -155,7 +156,7 @@ func TestGenerateParams(t *testing.T) {
expected: []map[string]interface{}{
{
"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
},
},
clientError: false,
@@ -181,11 +182,11 @@ func TestGenerateParams(t *testing.T) {
expected: []map[string]interface{}{
{
"values.foo": "bar", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
},
{
"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
},
},
clientError: false,
@@ -214,7 +215,7 @@ func TestGenerateParams(t *testing.T) {
expected: []map[string]interface{}{
{
"values.name": "baz", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
},
},
clientError: false,
@@ -228,6 +229,74 @@ func TestGenerateParams(t *testing.T) {
clientError: true,
expectedError: fmt.Errorf("error getting cluster secrets: could not list Secrets"),
},
{
name: "flat mode without selectors",
selector: metav1.LabelSelector{},
values: map[string]string{
"lol1": "lol",
"lol2": "{{values.lol1}}{{values.lol1}}",
"lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}",
"foo": "bar",
"bar": "{{ metadata.annotations.foo.argoproj.io }}",
"bat": "{{ metadata.labels.environment }}",
"aaa": "{{ server }}",
"no-op": "{{ this-does-not-exist }}",
},
expected: []map[string]interface{}{
{
"clusters": []map[string]interface{}{
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "{{ metadata.annotations.foo.argoproj.io }}", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "{{ metadata.labels.environment }}", "values.aaa": "https://kubernetes.default.svc", "nameNormalized": "in-cluster", "name": "in-cluster", "server": "https://kubernetes.default.svc", "project": ""},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "production", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "production", "values.aaa": "https://production-01.example.com", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "staging", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "staging", "values.aaa": "https://staging-01.example.com", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
},
},
},
},
isFlatMode: true,
clientError: false,
expectedError: nil,
},
{
name: "production or staging with flat mode",
selector: metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
Key: "environment",
Operator: "In",
Values: []string{
"production",
"staging",
},
},
},
},
isFlatMode: true,
values: map[string]string{
"foo": "bar",
},
expected: []map[string]interface{}{
{
"clusters": []map[string]interface{}{
{
"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production", "project": "prod-project",
},
{
"values.foo": "bar", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging", "project": "",
},
},
},
},
clientError: false,
expectedError: nil,
},
}
// convert []client.Object to []runtime.Object, for use by kubefake package
@@ -259,6 +328,7 @@ func TestGenerateParams(t *testing.T) {
Clusters: &argoprojiov1alpha1.ClusterGenerator{
Selector: testCase.selector,
Values: testCase.values,
FlatList: testCase.isFlatMode,
},
}, &applicationSetInfo, nil)
@@ -324,10 +394,11 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
},
}
testCases := []struct {
name string
selector metav1.LabelSelector
values map[string]string
expected []map[string]interface{}
name string
selector metav1.LabelSelector
values map[string]string
isFlatMode bool
expected []map[string]interface{}
// clientError is true if a k8s client error should be simulated
clientError bool
expectedError error
@@ -349,6 +420,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"name": "production_01/west",
"nameNormalized": "production-01-west",
"server": "https://production-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
@@ -374,6 +446,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"name": "staging-01",
"nameNormalized": "staging-01",
"server": "https://staging-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
@@ -399,6 +472,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"nameNormalized": "in-cluster",
"name": "in-cluster",
"server": "https://kubernetes.default.svc",
"project": "",
"values": map[string]string{
"lol1": "lol",
"lol2": "<no value><no value>",
@@ -427,6 +501,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"name": "production_01/west",
"nameNormalized": "production-01-west",
"server": "https://production-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
@@ -442,6 +517,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"name": "staging-01",
"nameNormalized": "staging-01",
"server": "https://staging-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
@@ -472,6 +548,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"name": "production_01/west",
"nameNormalized": "production-01-west",
"server": "https://production-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
@@ -512,6 +589,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"name": "production_01/west",
"nameNormalized": "production-01-west",
"server": "https://production-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
@@ -530,6 +608,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"name": "staging-01",
"nameNormalized": "staging-01",
"server": "https://staging-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
@@ -573,6 +652,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
"name": "staging-01",
"nameNormalized": "staging-01",
"server": "https://staging-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
@@ -599,6 +679,162 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
clientError: true,
expectedError: fmt.Errorf("error getting cluster secrets: could not list Secrets"),
},
{
name: "Clusters with flat list mode and no selector",
selector: metav1.LabelSelector{},
isFlatMode: true,
values: map[string]string{
"lol1": "lol",
"lol2": "{{ .values.lol1 }}{{ .values.lol1 }}",
"lol3": "{{ .values.lol2 }}{{ .values.lol2 }}{{ .values.lol2 }}",
"foo": "bar",
"bar": "{{ if not (empty .metadata) }}{{index .metadata.annotations \"foo.argoproj.io\" }}{{ end }}",
"bat": "{{ if not (empty .metadata) }}{{.metadata.labels.environment}}{{ end }}",
"aaa": "{{ .server }}",
"no-op": "{{ .thisDoesNotExist }}",
},
expected: []map[string]interface{}{
{
"clusters": []map[string]interface{}{
{
"nameNormalized": "in-cluster",
"name": "in-cluster",
"server": "https://kubernetes.default.svc",
"project": "",
"values": map[string]string{
"lol1": "lol",
"lol2": "<no value><no value>",
"lol3": "<no value><no value><no value>",
"foo": "bar",
"bar": "",
"bat": "",
"aaa": "https://kubernetes.default.svc",
"no-op": "<no value>",
},
},
{
"name": "production_01/west",
"nameNormalized": "production-01-west",
"server": "https://production-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
},
},
"values": map[string]string{
"lol1": "lol",
"lol2": "<no value><no value>",
"lol3": "<no value><no value><no value>",
"foo": "bar",
"bar": "production",
"bat": "production",
"aaa": "https://production-01.example.com",
"no-op": "<no value>",
},
},
{
"name": "staging-01",
"nameNormalized": "staging-01",
"server": "https://staging-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
},
},
"values": map[string]string{
"lol1": "lol",
"lol2": "<no value><no value>",
"lol3": "<no value><no value><no value>",
"foo": "bar",
"bar": "staging",
"bat": "staging",
"aaa": "https://staging-01.example.com",
"no-op": "<no value>",
},
},
},
},
},
clientError: false,
expectedError: nil,
},
{
name: "production or staging with flat mode",
selector: metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
Key: "environment",
Operator: "In",
Values: []string{
"production",
"staging",
},
},
},
},
isFlatMode: true,
values: map[string]string{
"foo": "bar",
},
expected: []map[string]interface{}{
{
"clusters": []map[string]interface{}{
{
"name": "production_01/west",
"nameNormalized": "production-01-west",
"server": "https://production-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
"environment": "production",
"org": "bar",
},
"annotations": map[string]string{
"foo.argoproj.io": "production",
},
},
"values": map[string]string{
"foo": "bar",
},
},
{
"name": "staging-01",
"nameNormalized": "staging-01",
"server": "https://staging-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"argocd.argoproj.io/secret-type": "cluster",
"environment": "staging",
"org": "foo",
},
"annotations": map[string]string{
"foo.argoproj.io": "staging",
},
},
"values": map[string]string{
"foo": "bar",
},
},
},
},
},
clientError: false,
expectedError: nil,
},
}
// convert []client.Object to []runtime.Object, for use by kubefake package
@@ -632,6 +868,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
Clusters: &argoprojiov1alpha1.ClusterGenerator{
Selector: testCase.selector,
Values: testCase.values,
FlatList: testCase.isFlatMode,
},
}, &applicationSetInfo, nil)

View File

@@ -52,7 +52,7 @@ func (g *DuckTypeGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.
return time.Duration(*appSetGenerator.ClusterDecisionResource.RequeueAfterSeconds) * time.Second
}
return DefaultRequeueAfterSeconds
return getDefaultRequeueAfter()
}
func (g *DuckTypeGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) *argoprojiov1alpha1.ApplicationSetTemplate {

View File

@@ -199,6 +199,7 @@ func TestTransForm(t *testing.T) {
"name": "production_01/west",
"nameNormalized": "production-01-west",
"server": "https://production-01.example.com",
"project": "",
}},
},
{
@@ -214,6 +215,7 @@ func TestTransForm(t *testing.T) {
"name": "some-really-long-server-url",
"nameNormalized": "some-really-long-server-url",
"server": "https://some-really-long-url-that-will-exceed-63-characters.com",
"project": "",
}},
},
}

View File

@@ -48,7 +48,7 @@ func (g *GitGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.Appli
return time.Duration(*appSetGenerator.Git.RequeueAfterSeconds) * time.Second
}
return DefaultRequeueAfterSeconds
return getDefaultRequeueAfter()
}
func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet, client client.Client) ([]map[string]interface{}, error) {

View File

@@ -7,6 +7,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/util/env"
)
// Generator defines the interface implemented by all ApplicationSet generators.
@@ -30,7 +31,11 @@ var (
NoRequeueAfter time.Duration
)
// DefaultRequeueAfterSeconds is used when GetRequeueAfter is not specified, it is the default time to wait before the next reconcile loop
const (
DefaultRequeueAfterSeconds = 3 * time.Minute
)
func getDefaultRequeueAfter() time.Duration {
// Default is 3 minutes, min is 1 second, max is 1 year
return env.ParseDurationFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_REQUEUE_AFTER", DefaultRequeueAfterSeconds, 1*time.Second, 8760*time.Hour)
}

View File

@@ -0,0 +1,29 @@
package generators
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func Test_getDefaultRequeueAfter(t *testing.T) {
tests := []struct {
name string
requeueAfterEnv string
want time.Duration
}{
{name: "Default", requeueAfterEnv: "", want: DefaultRequeueAfterSeconds},
{name: "Min", requeueAfterEnv: "1s", want: 1 * time.Second},
{name: "Max", requeueAfterEnv: "8760h", want: 8760 * time.Hour},
{name: "Override", requeueAfterEnv: "10m", want: 10 * time.Minute},
{name: "LessThanMin", requeueAfterEnv: "1ms", want: DefaultRequeueAfterSeconds},
{name: "MoreThanMax", requeueAfterEnv: "8761h", want: DefaultRequeueAfterSeconds},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Setenv("ARGOCD_APPLICATIONSET_CONTROLLER_REQUEUE_AFTER", tt.requeueAfterEnv)
assert.Equalf(t, tt.want, getDefaultRequeueAfter(), "getDefaultRequeueAfter()")
})
}
}

View File

@@ -578,8 +578,8 @@ func TestInterpolatedMatrixGenerate(t *testing.T) {
},
},
expected: []map[string]interface{}{
{"path": "examples/git-generator-files-discovery/cluster-config/dev/config.json", "path.basename": "dev", "path.basenameNormalized": "dev", "name": "dev-01", "nameNormalized": "dev-01", "server": "https://dev-01.example.com", "metadata.labels.environment": "dev", "metadata.labels.argocd.argoproj.io/secret-type": "cluster"},
{"path": "examples/git-generator-files-discovery/cluster-config/prod/config.json", "path.basename": "prod", "path.basenameNormalized": "prod", "name": "prod-01", "nameNormalized": "prod-01", "server": "https://prod-01.example.com", "metadata.labels.environment": "prod", "metadata.labels.argocd.argoproj.io/secret-type": "cluster"},
{"path": "examples/git-generator-files-discovery/cluster-config/dev/config.json", "path.basename": "dev", "path.basenameNormalized": "dev", "name": "dev-01", "nameNormalized": "dev-01", "server": "https://dev-01.example.com", "metadata.labels.environment": "dev", "metadata.labels.argocd.argoproj.io/secret-type": "cluster", "project": ""},
{"path": "examples/git-generator-files-discovery/cluster-config/prod/config.json", "path.basename": "prod", "path.basenameNormalized": "prod", "name": "prod-01", "nameNormalized": "prod-01", "server": "https://prod-01.example.com", "metadata.labels.environment": "prod", "metadata.labels.argocd.argoproj.io/secret-type": "cluster", "project": ""},
},
clientError: false,
},
@@ -734,6 +734,7 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
"name": "dev-01",
"nameNormalized": "dev-01",
"server": "https://dev-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"environment": "dev",
@@ -750,6 +751,7 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
"name": "prod-01",
"nameNormalized": "prod-01",
"server": "https://prod-01.example.com",
"project": "",
"metadata": map[string]interface{}{
"labels": map[string]string{
"environment": "prod",

View File

@@ -197,6 +197,7 @@ func TestMergeGenerate(t *testing.T) {
}
func toAPIExtensionsJSON(t *testing.T, g interface{}) *apiextensionsv1.JSON {
t.Helper()
resVal, err := json.Marshal(g)
if err != nil {
t.Error("unable to unmarshal json", g)

View File

@@ -139,7 +139,7 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
return nil, fmt.Errorf("error fetching CA certificates from ConfigMap: %w", prErr)
}
}
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.TokenRef, applicationSetInfo.Namespace)
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
@@ -147,7 +147,7 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
}
if generatorConfig.Gitea != nil {
providerConfig := generatorConfig.Gitea
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.TokenRef, applicationSetInfo.Namespace)
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
@@ -164,13 +164,13 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
}
}
if providerConfig.BearerToken != nil {
appToken, err := utils.GetSecretRef(ctx, g.client, providerConfig.BearerToken.TokenRef, applicationSetInfo.Namespace)
appToken, err := utils.GetSecretRef(ctx, g.client, providerConfig.BearerToken.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret Bearer token: %w", err)
}
return pullrequest.NewBitbucketServiceBearerToken(ctx, appToken, providerConfig.API, providerConfig.Project, providerConfig.Repo, g.scmRootCAPath, providerConfig.Insecure, caCerts)
} else if providerConfig.BasicAuth != nil {
password, err := utils.GetSecretRef(ctx, g.client, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace)
password, err := utils.GetSecretRef(ctx, g.client, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
@@ -182,13 +182,13 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
if generatorConfig.Bitbucket != nil {
providerConfig := generatorConfig.Bitbucket
if providerConfig.BearerToken != nil {
appToken, err := utils.GetSecretRef(ctx, g.client, providerConfig.BearerToken.TokenRef, applicationSetInfo.Namespace)
appToken, err := utils.GetSecretRef(ctx, g.client, providerConfig.BearerToken.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret Bearer token: %w", err)
}
return pullrequest.NewBitbucketCloudServiceBearerToken(providerConfig.API, appToken, providerConfig.Owner, providerConfig.Repo)
} else if providerConfig.BasicAuth != nil {
password, err := utils.GetSecretRef(ctx, g.client, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace)
password, err := utils.GetSecretRef(ctx, g.client, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
@@ -199,7 +199,7 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
}
if generatorConfig.AzureDevOps != nil {
providerConfig := generatorConfig.AzureDevOps
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.TokenRef, applicationSetInfo.Namespace)
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
@@ -219,7 +219,7 @@ func (g *PullRequestGenerator) github(ctx context.Context, cfg *argoprojiov1alph
}
// always default to token, even if not set (public access)
token, err := utils.GetSecretRef(ctx, g.client, cfg.TokenRef, applicationSetInfo.Namespace)
token, err := utils.GetSecretRef(ctx, g.client, cfg.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}

View File

@@ -283,7 +283,7 @@ func TestAllowedSCMProviderPullRequest(t *testing.T) {
"gitea.myorg.com",
"bitbucket.myorg.com",
"azuredevops.myorg.com",
}, true, nil))
}, true, nil, true))
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -306,7 +306,7 @@ func TestAllowedSCMProviderPullRequest(t *testing.T) {
}
func TestSCMProviderDisabled_PRGenerator(t *testing.T) {
generator := NewPullRequestGenerator(nil, NewSCMConfig("", []string{}, false, nil))
generator := NewPullRequestGenerator(nil, NewSCMConfig("", []string{}, false, nil, true))
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{

View File

@@ -35,14 +35,16 @@ type SCMConfig struct {
allowedSCMProviders []string
enableSCMProviders bool
GitHubApps github_app_auth.Credentials
tokenRefStrictMode bool
}
func NewSCMConfig(scmRootCAPath string, allowedSCMProviders []string, enableSCMProviders bool, gitHubApps github_app_auth.Credentials) SCMConfig {
func NewSCMConfig(scmRootCAPath string, allowedSCMProviders []string, enableSCMProviders bool, gitHubApps github_app_auth.Credentials, tokenRefStrictMode bool) SCMConfig {
return SCMConfig{
scmRootCAPath: scmRootCAPath,
allowedSCMProviders: allowedSCMProviders,
enableSCMProviders: enableSCMProviders,
GitHubApps: gitHubApps,
tokenRefStrictMode: tokenRefStrictMode,
}
}
@@ -154,7 +156,7 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
return nil, fmt.Errorf("error fetching CA certificates from ConfigMap: %w", scmError)
}
}
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.TokenRef, applicationSetInfo.Namespace)
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Gitlab token: %w", err)
}
@@ -163,7 +165,7 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
return nil, fmt.Errorf("error initializing Gitlab service: %w", err)
}
} else if providerConfig.Gitea != nil {
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.Gitea.TokenRef, applicationSetInfo.Namespace)
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.Gitea.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Gitea token: %w", err)
}
@@ -182,13 +184,13 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
}
}
if providerConfig.BearerToken != nil {
appToken, err := utils.GetSecretRef(ctx, g.client, providerConfig.BearerToken.TokenRef, applicationSetInfo.Namespace)
appToken, err := utils.GetSecretRef(ctx, g.client, providerConfig.BearerToken.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret Bearer token: %w", err)
}
provider, scmError = scm_provider.NewBitbucketServerProviderBearerToken(ctx, appToken, providerConfig.API, providerConfig.Project, providerConfig.AllBranches, g.scmRootCAPath, providerConfig.Insecure, caCerts)
} else if providerConfig.BasicAuth != nil {
password, err := utils.GetSecretRef(ctx, g.client, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace)
password, err := utils.GetSecretRef(ctx, g.client, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
@@ -200,7 +202,7 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
return nil, fmt.Errorf("error initializing Bitbucket Server service: %w", scmError)
}
} else if providerConfig.AzureDevOps != nil {
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.AzureDevOps.AccessTokenRef, applicationSetInfo.Namespace)
token, err := utils.GetSecretRef(ctx, g.client, providerConfig.AzureDevOps.AccessTokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Azure Devops access token: %w", err)
}
@@ -209,7 +211,7 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
return nil, fmt.Errorf("error initializing Azure Devops service: %w", err)
}
} else if providerConfig.Bitbucket != nil {
appPassword, err := utils.GetSecretRef(ctx, g.client, providerConfig.Bitbucket.AppPasswordRef, applicationSetInfo.Namespace)
appPassword, err := utils.GetSecretRef(ctx, g.client, providerConfig.Bitbucket.AppPasswordRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Bitbucket cloud appPassword: %w", err)
}
@@ -283,7 +285,7 @@ func (g *SCMProviderGenerator) githubProvider(ctx context.Context, github *argop
)
}
token, err := utils.GetSecretRef(ctx, g.client, github.TokenRef, applicationSetInfo.Namespace)
token, err := utils.GetSecretRef(ctx, g.client, github.TokenRef, applicationSetInfo.Namespace, g.tokenRefStrictMode)
if err != nil {
return nil, fmt.Errorf("error fetching Github token: %w", err)
}

View File

@@ -178,7 +178,7 @@ func TestApplicationsetCollector(t *testing.T) {
appsetCollector := newAppsetCollector(utils.NewAppsetLister(client), collectedLabels, filter)
metrics.Registry.MustRegister(appsetCollector)
req, err := http.NewRequest("GET", "/metrics", nil)
req, err := http.NewRequest(http.MethodGet, "/metrics", nil)
require.NoError(t, err)
rr := httptest.NewRecorder()
handler := promhttp.HandlerFor(metrics.Registry, promhttp.HandlerOpts{})
@@ -220,7 +220,7 @@ func TestObserveReconcile(t *testing.T) {
appsetMetrics := NewApplicationsetMetrics(utils.NewAppsetLister(client), collectedLabels, filter)
req, err := http.NewRequest("GET", "/metrics", nil)
req, err := http.NewRequest(http.MethodGet, "/metrics", nil)
require.NoError(t, err)
rr := httptest.NewRecorder()
handler := promhttp.HandlerFor(metrics.Registry, promhttp.HandlerOpts{})

View File

@@ -5,7 +5,7 @@ import (
"net/http"
"github.com/bradleyfalzon/ghinstallation/v2"
"github.com/google/go-github/v63/github"
"github.com/google/go-github/v66/github"
"github.com/argoproj/argo-cd/v2/applicationset/services/github_app_auth"
)

View File

@@ -134,7 +134,7 @@ func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*htt
// CheckResponse checks the API response for errors, and returns them if present.
func CheckResponse(resp *http.Response) error {
if c := resp.StatusCode; 200 <= c && c <= 299 {
if c := resp.StatusCode; http.StatusOK <= c && c < http.StatusMultipleChoices {
return nil
}

View File

@@ -10,6 +10,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestClient(t *testing.T) {
@@ -24,9 +25,7 @@ func TestClient(t *testing.T) {
var clientOptionFns []ClientOptionFunc
_, err := NewClient(server.URL, clientOptionFns...)
if err != nil {
t.Fatalf("Failed to create client: %v", err)
}
require.NoError(t, err, "Failed to create client")
}
func TestClientDo(t *testing.T) {
@@ -77,7 +76,7 @@ func TestClientDo(t *testing.T) {
"key3": float64(123),
},
},
expectedCode: 200,
expectedCode: http.StatusOK,
expectedError: nil,
},
{
@@ -109,7 +108,7 @@ func TestClientDo(t *testing.T) {
})),
clientOptionFns: nil,
expected: []map[string]interface{}(nil),
expectedCode: 401,
expectedCode: http.StatusUnauthorized,
expectedError: fmt.Errorf("API error with status code 401: "),
},
} {
@@ -118,14 +117,10 @@ func TestClientDo(t *testing.T) {
defer cc.fakeServer.Close()
client, err := NewClient(cc.fakeServer.URL, cc.clientOptionFns...)
if err != nil {
t.Fatalf("NewClient returned unexpected error: %v", err)
}
require.NoError(t, err, "NewClient returned unexpected error")
req, err := client.NewRequest("POST", "", cc.params, nil)
if err != nil {
t.Fatalf("NewRequest returned unexpected error: %v", err)
}
require.NoError(t, err, "NewRequest returned unexpected error")
var data []map[string]interface{}
@@ -149,12 +144,5 @@ func TestCheckResponse(t *testing.T) {
}
err := CheckResponse(resp)
if err == nil {
t.Error("Expected an error, got nil")
}
expected := "API error with status code 400: invalid_request"
if err.Error() != expected {
t.Errorf("Expected error '%s', got '%s'", expected, err.Error())
}
require.EqualError(t, err, "API error with status code 400: invalid_request")
}

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPlugin(t *testing.T) {
@@ -31,19 +32,13 @@ func TestPlugin(t *testing.T) {
defer ts.Close()
client, err := NewPluginService(context.Background(), "plugin-test", ts.URL, token, 0)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
require.NoError(t, err)
data, err := client.List(context.Background(), nil)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
require.NoError(t, err)
var expectedData ServiceResponse
err = json.Unmarshal([]byte(expectedJSON), &expectedData)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
assert.Equal(t, &expectedData, data)
}

View File

@@ -82,6 +82,7 @@ func (a *AzureDevOpsService) List(ctx context.Context) ([]*PullRequest, error) {
pr.Repository.Name == nil ||
pr.PullRequestId == nil ||
pr.SourceRefName == nil ||
pr.TargetRefName == nil ||
pr.LastMergeSourceCommit == nil ||
pr.LastMergeSourceCommit.CommitId == nil {
continue
@@ -94,12 +95,13 @@ func (a *AzureDevOpsService) List(ctx context.Context) ([]*PullRequest, error) {
if *pr.Repository.Name == a.repo {
pullRequests = append(pullRequests, &PullRequest{
Number: *pr.PullRequestId,
Title: *pr.Title,
Branch: strings.Replace(*pr.SourceRefName, "refs/heads/", "", 1),
HeadSHA: *pr.LastMergeSourceCommit.CommitId,
Labels: azureDevOpsLabels,
Author: strings.Split(*pr.CreatedBy.UniqueName, "@")[0], // Get the part before the @ in the email-address
Number: *pr.PullRequestId,
Title: *pr.Title,
Branch: strings.Replace(*pr.SourceRefName, "refs/heads/", "", 1),
TargetBranch: strings.Replace(*pr.TargetRefName, "refs/heads/", "", 1),
HeadSHA: *pr.LastMergeSourceCommit.CommitId,
Labels: azureDevOpsLabels,
Author: strings.Split(*pr.CreatedBy.UniqueName, "@")[0], // Get the part before the @ in the email-address
})
}
}

View File

@@ -72,6 +72,7 @@ func TestListPullRequest(t *testing.T) {
PullRequestId: createIntPtr(pr_id),
Title: createStringPtr(pr_title),
SourceRefName: createStringPtr("refs/heads/feature-branch"),
TargetRefName: createStringPtr("refs/heads/main"),
LastMergeSourceCommit: &git.GitCommitRef{
CommitId: createStringPtr(pr_head_sha),
},
@@ -106,6 +107,7 @@ func TestListPullRequest(t *testing.T) {
require.NoError(t, err)
assert.Len(t, list, 1)
assert.Equal(t, "feature-branch", list[0].Branch)
assert.Equal(t, "main", list[0].TargetBranch)
assert.Equal(t, pr_head_sha, list[0].HeadSHA)
assert.Equal(t, "feat(123)", list[0].Title)
assert.Equal(t, pr_id, list[0].Number)

View File

@@ -15,6 +15,7 @@ import (
)
func defaultHandlerCloud(t *testing.T) func(http.ResponseWriter, *http.Request) {
t.Helper()
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var err error
@@ -241,7 +242,7 @@ func TestListPullRequestPaginationCloud(t *testing.T) {
func TestListResponseErrorCloud(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(500)
w.WriteHeader(http.StatusInternalServerError)
}))
defer ts.Close()
svc, _ := NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")

View File

@@ -16,6 +16,7 @@ import (
)
func defaultHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
t.Helper()
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var err error

View File

@@ -14,6 +14,7 @@ import (
)
func giteaMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
t.Helper()
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
fmt.Println(r.RequestURI)

View File

@@ -5,7 +5,7 @@ import (
"fmt"
"os"
"github.com/google/go-github/v63/github"
"github.com/google/go-github/v66/github"
"golang.org/x/oauth2"
)

View File

@@ -3,8 +3,8 @@ package pull_request
import (
"testing"
"github.com/google/go-github/v63/github"
"github.com/stretchr/testify/assert"
"github.com/google/go-github/v66/github"
"github.com/stretchr/testify/require"
)
func toPtr(s string) *string {
@@ -52,9 +52,8 @@ func TestContainLabels(t *testing.T) {
for _, c := range cases {
t.Run(c.Name, func(t *testing.T) {
if got := containLabels(c.Labels, c.PullLabels); got != c.Expect {
t.Errorf("expect: %v, got: %v", c.Expect, got)
}
got := containLabels(c.Labels, c.PullLabels)
require.Equal(t, got, c.Expect)
})
}
}
@@ -83,7 +82,7 @@ func TestGetGitHubPRLabelNames(t *testing.T) {
for _, test := range Tests {
t.Run(test.Name, func(t *testing.T) {
labels := getGithubPRLabelNames(test.PullLabels)
assert.Equal(t, test.ExpectedResult, labels)
require.Equal(t, test.ExpectedResult, labels)
})
}
}

View File

@@ -15,14 +15,12 @@ import (
)
func writeMRListResponse(t *testing.T, w io.Writer) {
t.Helper()
f, err := os.Open("fixtures/gitlab_mr_list_response.json")
if err != nil {
t.Fatalf("error opening fixture file: %v", err)
}
require.NoErrorf(t, err, "error opening fixture file: %v", err)
if _, err = io.Copy(w, f); err != nil {
t.Fatalf("error writing response: %v", err)
}
_, err = io.Copy(w, f)
require.NoErrorf(t, err, "error writing response: %v", err)
}
func TestGitLabServiceCustomBaseURL(t *testing.T) {

View File

@@ -129,7 +129,7 @@ func (b *BitbucketServerProvider) RepoHasPath(_ context.Context, repo *Repositor
}
// No need to query for all pages here
response, err := b.client.DefaultApi.GetContent_0(repo.Organization, repo.Repository, path, opts)
if response != nil && response.StatusCode == 404 {
if response != nil && response.StatusCode == http.StatusNotFound {
// File/directory not found
return false, nil
}
@@ -203,7 +203,7 @@ func (b *BitbucketServerProvider) getDefaultBranch(org string, repo string) (*bi
response, err := b.client.DefaultApi.GetDefaultBranch(org, repo)
// The API will return 404 if a default branch is set but doesn't exist. In case the repo is empty and default branch is unset,
// we will get an EOF and a nil response.
if (response != nil && response.StatusCode == 404) || (response == nil && err != nil && errors.Is(err, io.EOF)) {
if (response != nil && response.StatusCode == http.StatusNotFound) || (response == nil && err != nil && errors.Is(err, io.EOF)) {
return nil, nil
}
if err != nil {

View File

@@ -14,6 +14,7 @@ import (
)
func defaultHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
t.Helper()
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var err error
@@ -82,6 +83,7 @@ func defaultHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
}
func verifyDefaultRepo(t *testing.T, err error, repos []*Repository) {
t.Helper()
require.NoError(t, err)
assert.Len(t, repos, 1)
assert.Equal(t, Repository{

View File

@@ -128,7 +128,7 @@ func (g *GiteaProvider) ListRepos(ctx context.Context, cloneProtocol string) ([]
func (g *GiteaProvider) RepoHasPath(ctx context.Context, repo *Repository, path string) (bool, error) {
_, resp, err := g.client.GetContents(repo.Organization, repo.Repository, repo.Branch, path)
if resp != nil && resp.StatusCode == 404 {
if resp != nil && resp.StatusCode == http.StatusNotFound {
return false, nil
}
if fmt.Sprint(err) == "expect file, got directory" {

View File

@@ -15,6 +15,7 @@ import (
)
func giteaMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
t.Helper()
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
switch r.RequestURI {

View File

@@ -6,7 +6,7 @@ import (
"net/http"
"os"
"github.com/google/go-github/v63/github"
"github.com/google/go-github/v66/github"
"golang.org/x/oauth2"
)
@@ -107,7 +107,7 @@ func (g *GithubProvider) RepoHasPath(ctx context.Context, repo *Repository, path
Ref: repo.Branch,
})
// 404s are not an error here, just a normal false.
if resp != nil && resp.StatusCode == 404 {
if resp != nil && resp.StatusCode == http.StatusNotFound {
return false, nil
}
if err != nil {

View File

@@ -14,6 +14,7 @@ import (
)
func githubMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
t.Helper()
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
switch r.RequestURI {

View File

@@ -17,6 +17,7 @@ import (
)
func gitlabMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
t.Helper()
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
switch r.RequestURI {

View File

@@ -30,7 +30,7 @@ func Test_secretToCluster(t *testing.T) {
Data: map[string][]byte{
"name": []byte("test"),
"server": []byte("http://mycluster"),
"config": []byte("{\"username\":\"foo\"}"),
"config": []byte("{\"username\":\"foo\", \"disableCompression\":true}"),
},
}
cluster, err := secretToCluster(secret)
@@ -39,7 +39,8 @@ func Test_secretToCluster(t *testing.T) {
Name: "test",
Server: "http://mycluster",
Config: argoappv1.ClusterConfig{
Username: "foo",
Username: "foo",
DisableCompression: true,
},
}, *cluster)
}

View File

@@ -4,14 +4,18 @@ import (
"context"
"fmt"
"github.com/argoproj/argo-cd/v2/common"
corev1 "k8s.io/api/core/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
var ErrDisallowedSecretAccess = fmt.Errorf("secret must have label %q=%q", common.LabelKeySecretType, common.LabelValueSecretTypeSCMCreds)
// getSecretRef gets the value of the key for the specified Secret resource.
func GetSecretRef(ctx context.Context, k8sClient client.Client, ref *argoprojiov1alpha1.SecretRef, namespace string) (string, error) {
func GetSecretRef(ctx context.Context, k8sClient client.Client, ref *argoprojiov1alpha1.SecretRef, namespace string, tokenRefStrictMode bool) (string, error) {
if ref == nil {
return "", nil
}
@@ -27,6 +31,11 @@ func GetSecretRef(ctx context.Context, k8sClient client.Client, ref *argoprojiov
if err != nil {
return "", fmt.Errorf("error fetching secret %s/%s: %w", namespace, ref.SecretName, err)
}
if tokenRefStrictMode && secret.GetLabels()[common.LabelKeySecretType] != common.LabelValueSecretTypeSCMCreds {
return "", fmt.Errorf("secret %s/%s is not a valid SCM creds secret: %w", namespace, ref.SecretName, ErrDisallowedSecretAccess)
}
tokenBytes, ok := secret.Data[ref.Key]
if !ok {
return "", fmt.Errorf("key %q in secret %s/%s not found", ref.Key, namespace, ref.SecretName)

View File

@@ -67,7 +67,7 @@ func TestGetSecretRef(t *testing.T) {
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
token, err := GetSecretRef(ctx, client, c.ref, c.namespace)
token, err := GetSecretRef(ctx, client, c.ref, c.namespace, false)
if c.hasError {
require.Error(t, err)
} else {

View File

@@ -8,10 +8,7 @@ func ConvertToMapStringString(mapStringInterface map[string]interface{}) map[str
mapStringString := make(map[string]string, len(mapStringInterface))
for key, value := range mapStringInterface {
strKey := fmt.Sprintf("%v", key)
strValue := fmt.Sprintf("%v", value)
mapStringString[strKey] = strValue
mapStringString[key] = fmt.Sprintf("%v", value)
}
return mapStringString
}

View File

@@ -222,7 +222,7 @@ func getGitGeneratorInfo(payload interface{}) *gitGeneratorInfo {
log.Errorf("Failed to parse repoURL '%s'", webURL)
return nil
}
regexpStr := `(?i)(http://|https://|\w+@|ssh://(\w+@)?)` + urlObj.Hostname() + "(:[0-9]+|)[:/]" + urlObj.Path[1:] + "(\\.git)?"
regexpStr := `(?i)(http://|https://|\w+@|ssh://(\w+@)?)` + urlObj.Hostname() + "(:[0-9]+|)[:/]" + urlObj.Path[1:] + "(\\.git)?$"
repoRegexp, err := regexp.Compile(regexpStr)
if err != nil {
log.Errorf("Failed to compile regexp for repoURL '%s'", webURL)

View File

@@ -199,6 +199,7 @@ func TestWebhookHandler(t *testing.T) {
t.Run(test.desc, func(t *testing.T) {
fc := fake.NewClientBuilder().WithScheme(scheme).WithObjects(
fakeAppWithGitGenerator("git-github", namespace, "https://github.com/org/repo"),
fakeAppWithGitGenerator("git-github-copy", namespace, "https://github.com/org/repo-copy"),
fakeAppWithGitGenerator("git-gitlab", namespace, "https://gitlab/group/name"),
fakeAppWithGitGenerator("git-azure-devops", namespace, "https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git"),
fakeAppWithGitGeneratorWithRevision("github-shorthand", namespace, "https://github.com/org/repo", "env/dev"),
@@ -242,9 +243,8 @@ func TestWebhookHandler(t *testing.T) {
for i := range list.Items {
gotAppSet := &list.Items[i]
if _, isEffected := effectedAppSetsAsExpected[gotAppSet.Name]; isEffected {
if expected, got := test.expectedRefresh, gotAppSet.RefreshRequired(); expected != got {
t.Errorf("unexpected RefreshRequired() for appset '%s' expect: %v got: %v", gotAppSet.Name, expected, got)
}
expected, got := test.expectedRefresh, gotAppSet.RefreshRequired()
require.Equalf(t, expected, got, "unexpected RefreshRequired() for appset '%s' expect: %v got: %v", gotAppSet.Name, expected, got)
effectedAppSetsAsExpected[gotAppSet.Name] = true
} else {
assert.False(t, gotAppSet.RefreshRequired())

192
assets/swagger.json generated
View File

@@ -1990,39 +1990,6 @@
}
}
},
"/api/v1/applicationsets/generate": {
"post": {
"tags": [
"ApplicationSetService"
],
"summary": "Generate generates",
"operationId": "ApplicationSetService_Generate",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/applicationsetApplicationSetGenerateRequest"
}
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/applicationsetApplicationSetGenerateResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/runtimeError"
}
}
}
}
},
"/api/v1/applicationsets/{name}": {
"get": {
"tags": [
@@ -4590,6 +4557,9 @@
"namespace": {
"type": "string"
},
"requiresDeletionConfirmation": {
"type": "boolean"
},
"requiresPruning": {
"type": "boolean"
},
@@ -4721,6 +4691,12 @@
"clusterSettings": {
"type": "object",
"properties": {
"additionalUrls": {
"type": "array",
"items": {
"type": "string"
}
},
"appLabelKey": {
"type": "string"
},
@@ -6559,6 +6535,10 @@
"kustomize": {
"$ref": "#/definitions/v1alpha1ApplicationSourceKustomize"
},
"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.",
"type": "string"
@@ -6650,6 +6630,14 @@
"type": "boolean",
"title": "SkipCrds skips custom resource definition installation step (Helm's --skip-crds)"
},
"skipSchemaValidation": {
"type": "boolean",
"title": "SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)"
},
"skipTests": {
"description": "SkipTests skips test manifest installation step (Helm's --skip-tests).",
"type": "boolean"
},
"valueFiles": {
"type": "array",
"title": "ValuesFiles is a list of Helm value files to use when generating a template",
@@ -6869,6 +6857,9 @@
"source": {
"$ref": "#/definitions/v1alpha1ApplicationSource"
},
"sourceHydrator": {
"$ref": "#/definitions/v1alpha1SourceHydrator"
},
"sources": {
"type": "array",
"title": "Sources is a reference to the location of the application's manifests or chart",
@@ -6926,6 +6917,9 @@
"$ref": "#/definitions/applicationv1alpha1ResourceStatus"
}
},
"sourceHydrator": {
"$ref": "#/definitions/v1alpha1SourceHydratorStatus"
},
"sourceType": {
"type": "string",
"title": "SourceType specifies the type of this application"
@@ -7173,12 +7167,20 @@
"description": "Server requires Bearer authentication. This client will not attempt to use\nrefresh tokens for an OAuth2 flow.\nTODO: demonstrate an OAuth2 compatible client.",
"type": "string"
},
"disableCompression": {
"description": "DisableCompression bypasses automatic GZip compression requests to the server.",
"type": "boolean"
},
"execProviderConfig": {
"$ref": "#/definitions/v1alpha1ExecProviderConfig"
},
"password": {
"type": "string"
},
"proxyUrl": {
"type": "string",
"title": "ProxyURL is the URL to the proxy to be used for all requests send to the server"
},
"tlsClientConfig": {
"$ref": "#/definitions/v1alpha1TLSClientConfig"
},
@@ -7192,6 +7194,10 @@
"description": "ClusterGenerator defines a generator to match against clusters registered with ArgoCD.",
"type": "object",
"properties": {
"flatList": {
"type": "boolean",
"title": "returns the clusters a single 'clusters' value in the template"
},
"selector": {
"$ref": "#/definitions/v1LabelSelector"
},
@@ -7341,6 +7347,24 @@
}
}
},
"v1alpha1DrySource": {
"description": "DrySource specifies a location for dry \"don't repeat yourself\" manifest source information.",
"type": "object",
"properties": {
"path": {
"type": "string",
"title": "Path is a directory path within the Git repository where the manifests are located"
},
"repoURL": {
"type": "string",
"title": "RepoURL is the URL to the git repository that contains the application manifests"
},
"targetRevision": {
"type": "string",
"title": "TargetRevision defines the revision of the source to hydrate"
}
}
},
"v1alpha1DuckTypeGenerator": {
"description": "DuckType defines a generator to match against clusters registered with ArgoCD.",
"type": "object",
@@ -7511,6 +7535,9 @@
"type": "object",
"title": "HealthStatus contains information about the currently observed health state of an application or resource",
"properties": {
"lastTransitionTime": {
"$ref": "#/definitions/v1Time"
},
"message": {
"type": "string",
"title": "Message is a human-readable informational message describing the health status"
@@ -7592,6 +7619,47 @@
}
}
},
"v1alpha1HydrateOperation": {
"type": "object",
"title": "HydrateOperation contains information about the most recent hydrate operation",
"properties": {
"drySHA": {
"type": "string",
"title": "DrySHA holds the resolved revision (sha) of the dry source as of the most recent reconciliation"
},
"finishedAt": {
"$ref": "#/definitions/v1Time"
},
"hydratedSHA": {
"type": "string",
"title": "HydratedSHA holds the resolved revision (sha) of the hydrated source as of the most recent reconciliation"
},
"message": {
"type": "string",
"title": "Message contains a message describing the current status of the hydrate operation"
},
"phase": {
"type": "string",
"title": "Phase indicates the status of the hydrate operation"
},
"sourceHydrator": {
"$ref": "#/definitions/v1alpha1SourceHydrator"
},
"startedAt": {
"$ref": "#/definitions/v1Time"
}
}
},
"v1alpha1HydrateTo": {
"description": "HydrateTo specifies a location to which hydrated manifests should be pushed as a \"staging area\" before being moved to\nthe SyncSource. The RepoURL and Path are assumed based on the associated SyncSource config in the SourceHydrator.",
"type": "object",
"properties": {
"targetBranch": {
"type": "string",
"title": "TargetBranch is the branch to which hydrated manifests should be committed"
}
}
},
"v1alpha1Info": {
"type": "object",
"properties": {
@@ -9199,6 +9267,50 @@
}
}
},
"v1alpha1SourceHydrator": {
"description": "SourceHydrator specifies a dry \"don't repeat yourself\" source for manifests, a sync source from which to sync\nhydrated manifests, and an optional hydrateTo location to act as a \"staging\" aread for hydrated manifests.",
"type": "object",
"properties": {
"drySource": {
"$ref": "#/definitions/v1alpha1DrySource"
},
"hydrateTo": {
"$ref": "#/definitions/v1alpha1HydrateTo"
},
"syncSource": {
"$ref": "#/definitions/v1alpha1SyncSource"
}
}
},
"v1alpha1SourceHydratorStatus": {
"type": "object",
"title": "SourceHydratorStatus contains information about the current state of source hydration",
"properties": {
"currentOperation": {
"$ref": "#/definitions/v1alpha1HydrateOperation"
},
"lastSuccessfulOperation": {
"$ref": "#/definitions/v1alpha1SuccessfulHydrateOperation"
}
}
},
"v1alpha1SuccessfulHydrateOperation": {
"type": "object",
"title": "SuccessfulHydrateOperation contains information about the most recent successful hydrate operation",
"properties": {
"drySHA": {
"type": "string",
"title": "DrySHA holds the resolved revision (sha) of the dry source as of the most recent reconciliation"
},
"hydratedSHA": {
"type": "string",
"title": "HydratedSHA holds the resolved revision (sha) of the hydrated source as of the most recent reconciliation"
},
"sourceHydrator": {
"$ref": "#/definitions/v1alpha1SourceHydrator"
}
}
},
"v1alpha1SyncOperation": {
"description": "SyncOperation contains details about a sync operation.",
"type": "object",
@@ -9358,6 +9470,20 @@
}
}
},
"v1alpha1SyncSource": {
"description": "SyncSource specifies a location from which hydrated manifests may be synced. RepoURL is assumed based on the\nassociated DrySource config in the SourceHydrator.",
"type": "object",
"properties": {
"path": {
"description": "Path is a directory path within the git repository where hydrated manifests should be committed to and synced\nfrom. If hydrateTo is set, this is just the path from which hydrated manifests will be synced.",
"type": "string"
},
"targetBranch": {
"type": "string",
"title": "TargetBranch is the branch to which hydrated manifests should be committed"
}
}
},
"v1alpha1SyncStatus": {
"type": "object",
"title": "SyncStatus contains information about the currently observed live and desired states of an application",

View File

@@ -6,6 +6,7 @@ import (
"math"
"os"
"os/signal"
"runtime/debug"
"syscall"
"time"
@@ -61,6 +62,7 @@ func NewCommand() *cobra.Command {
selfHealBackoffTimeoutSeconds int
selfHealBackoffFactor int
selfHealBackoffCapSeconds int
syncTimeout int
statusProcessors int
operationProcessors int
glogLevel int
@@ -110,6 +112,13 @@ func NewCommand() *cobra.Command {
cli.SetLogLevel(cmdutil.LogLevel)
cli.SetGLogLevel(glogLevel)
// Recover from panic and log the error using the configured logger instead of the default.
defer func() {
if r := recover(); r != nil {
log.WithField("trace", string(debug.Stack())).Fatal("Recovered from panic: ", r)
}
}()
config, err := clientConfig.ClientConfig()
errors.CheckError(err)
errors.CheckError(v1alpha1.SetK8SConfigDefaults(config))
@@ -181,6 +190,7 @@ func NewCommand() *cobra.Command {
time.Duration(appResyncJitter)*time.Second,
time.Duration(selfHealTimeoutSeconds)*time.Second,
selfHealBackoff,
time.Duration(syncTimeout)*time.Second,
time.Duration(repoErrorGracePeriod)*time.Second,
metricsPort,
metricsCacheExpiration,
@@ -197,7 +207,7 @@ func NewCommand() *cobra.Command {
enableK8sEvent,
)
errors.CheckError(err)
cacheutil.CollectMetrics(redisClient, appController.GetMetricsServer())
cacheutil.CollectMetrics(redisClient, appController.GetMetricsServer(), nil)
stats.RegisterStackDumper()
stats.StartStatsTicker(10 * time.Minute)
@@ -248,6 +258,7 @@ func NewCommand() *cobra.Command {
command.Flags().IntVar(&selfHealBackoffTimeoutSeconds, "self-heal-backoff-timeout-seconds", env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_TIMEOUT_SECONDS", 2, 0, math.MaxInt32), "Specifies initial timeout of exponential backoff between self heal attempts")
command.Flags().IntVar(&selfHealBackoffFactor, "self-heal-backoff-factor", env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_FACTOR", 3, 0, math.MaxInt32), "Specifies factor of exponential timeout between application self heal attempts")
command.Flags().IntVar(&selfHealBackoffCapSeconds, "self-heal-backoff-cap-seconds", env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_CAP_SECONDS", 300, 0, math.MaxInt32), "Specifies max timeout of exponential backoff between application self heal attempts")
command.Flags().IntVar(&syncTimeout, "sync-timeout", env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_SYNC_TIMEOUT", 0, 0, math.MaxInt32), "Specifies the timeout after which a sync would be terminated. 0 means no timeout (default 0).")
command.Flags().Int64Var(&kubectlParallelismLimit, "kubectl-parallelism-limit", env.ParseInt64FromEnv("ARGOCD_APPLICATION_CONTROLLER_KUBECTL_PARALLELISM_LIMIT", 20, 0, math.MaxInt64), "Number of allowed concurrent kubectl fork/execs. Any value less than 1 means no limit.")
command.Flags().BoolVar(&repoServerPlaintext, "repo-server-plaintext", env.ParseBoolFromEnv("ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT", false), "Disable TLS on connections to repo server")
command.Flags().BoolVar(&repoServerStrictTLS, "repo-server-strict-tls", env.ParseBoolFromEnv("ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_STRICT_TLS", false), "Whether to use strict validation of the TLS cert presented by the repo server")

View File

@@ -5,6 +5,7 @@ import (
"math"
"net/http"
"os"
"runtime/debug"
"time"
"github.com/argoproj/pkg/stats"
@@ -38,7 +39,6 @@ import (
appsetmetrics "github.com/argoproj/argo-cd/v2/applicationset/metrics"
"github.com/argoproj/argo-cd/v2/applicationset/services"
appv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
appclientset "github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned"
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/argoproj/argo-cd/v2/util/db"
"github.com/argoproj/argo-cd/v2/util/errors"
@@ -73,6 +73,7 @@ func NewCommand() *cobra.Command {
metricsAplicationsetLabels []string
enableScmProviders bool
webhookParallelism int
tokenRefStrictMode bool
)
scheme := runtime.NewScheme()
_ = clientgoscheme.AddToScheme(scheme)
@@ -100,6 +101,13 @@ func NewCommand() *cobra.Command {
ctrl.SetLogger(logutils.NewLogrusLogger(logutils.NewWithCurrentConfig()))
// Recover from panic and log the error using the configured logger instead of the default.
defer func() {
if r := recover(); r != nil {
log.WithField("trace", string(debug.Stack())).Fatal("Recovered from panic: ", r)
}
}()
restConfig, err := clientConfig.ClientConfig()
errors.CheckError(err)
@@ -162,10 +170,9 @@ func NewCommand() *cobra.Command {
errors.CheckError(err)
argoSettingsMgr := argosettings.NewSettingsManager(ctx, k8sClient, namespace)
appSetConfig := appclientset.NewForConfigOrDie(mgr.GetConfig())
argoCDDB := db.NewDB(namespace, argoSettingsMgr, k8sClient)
scmConfig := generators.NewSCMConfig(scmRootCAPath, allowedScmProviders, enableScmProviders, github_app.NewAuthCredentials(argoCDDB.(db.RepoCredsDB)))
scmConfig := generators.NewSCMConfig(scmRootCAPath, allowedScmProviders, enableScmProviders, github_app.NewAuthCredentials(argoCDDB.(db.RepoCredsDB)), tokenRefStrictMode)
tlsConfig := apiclient.TLSConfiguration{
DisableTLS: repoServerPlaintext,
@@ -211,7 +218,6 @@ func NewCommand() *cobra.Command {
Renderer: &utils.Render{},
Policy: policyObj,
EnablePolicyOverride: enablePolicyOverride,
ArgoAppClientset: appSetConfig,
KubeClientset: k8sClient,
ArgoDB: argoCDDB,
ArgoCDNamespace: namespace,
@@ -252,6 +258,7 @@ func NewCommand() *cobra.Command {
command.Flags().StringSliceVar(&allowedScmProviders, "allowed-scm-providers", env.StringsFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_ALLOWED_SCM_PROVIDERS", []string{}, ","), "The list of allowed custom SCM provider API URLs. This restriction does not apply to SCM or PR generators which do not accept a custom API URL. (Default: Empty = all)")
command.Flags().BoolVar(&enableScmProviders, "enable-scm-providers", env.ParseBoolFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_SCM_PROVIDERS", true), "Enable retrieving information from SCM providers, used by the SCM and PR generators (Default: true)")
command.Flags().BoolVar(&dryRun, "dry-run", env.ParseBoolFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_DRY_RUN", false), "Enable dry run mode")
command.Flags().BoolVar(&tokenRefStrictMode, "token-ref-strict-mode", env.ParseBoolFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_TOKENREF_STRICT_MODE", false), fmt.Sprintf("Set to true to require secrets referenced by SCM providers to have the %s=%s label set (Default: false)", common.LabelKeySecretType, common.LabelValueSecretTypeSCMCreds))
command.Flags().BoolVar(&enableProgressiveSyncs, "enable-progressive-syncs", env.ParseBoolFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_PROGRESSIVE_SYNCS", false), "Enable use of the experimental progressive syncs feature.")
command.Flags().BoolVar(&enableNewGitFileGlobbing, "enable-new-git-file-globbing", env.ParseBoolFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_NEW_GIT_FILE_GLOBBING", false), "Enable new globbing in Git files generator.")
command.Flags().BoolVar(&repoServerPlaintext, "repo-server-plaintext", env.ParseBoolFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_PLAINTEXT", false), "Disable TLS on connections to repo server")

View File

@@ -1,6 +1,7 @@
package commands
import (
"runtime/debug"
"time"
"github.com/argoproj/pkg/stats"
@@ -44,6 +45,13 @@ func NewCommand() *cobra.Command {
cli.SetLogFormat(cmdutil.LogFormat)
cli.SetLogLevel(cmdutil.LogLevel)
// Recover from panic and log the error using the configured logger instead of the default.
defer func() {
if r := recover(); r != nil {
log.WithField("trace", string(debug.Stack())).Fatal("Recovered from panic: ", r)
}
}()
config, err := plugin.ReadPluginConfig(configFilePath)
errors.CheckError(err)

View File

@@ -0,0 +1,117 @@
package commands
import (
"fmt"
"net"
"net/http"
"os"
"os/signal"
"sync"
"syscall"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"google.golang.org/grpc/health/grpc_health_v1"
cmdutil "github.com/argoproj/argo-cd/v2/cmd/util"
"github.com/argoproj/argo-cd/v2/commitserver"
"github.com/argoproj/argo-cd/v2/commitserver/apiclient"
"github.com/argoproj/argo-cd/v2/commitserver/metrics"
"github.com/argoproj/argo-cd/v2/common"
"github.com/argoproj/argo-cd/v2/util/askpass"
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/argoproj/argo-cd/v2/util/env"
"github.com/argoproj/argo-cd/v2/util/errors"
"github.com/argoproj/argo-cd/v2/util/healthz"
ioutil "github.com/argoproj/argo-cd/v2/util/io"
)
// NewCommand returns a new instance of an argocd-commit-server command
func NewCommand() *cobra.Command {
var (
listenHost string
listenPort int
metricsPort int
metricsHost string
)
command := &cobra.Command{
Use: "argocd-commit-server",
Short: "Run Argo CD Commit Server",
Long: "Argo CD Commit Server is an internal service which commits and pushes hydrated manifests to git. This command runs Commit Server in the foreground.",
RunE: func(cmd *cobra.Command, args []string) error {
vers := common.GetVersion()
vers.LogStartupInfo(
"Argo CD Commit Server",
map[string]any{
"port": listenPort,
},
)
cli.SetLogFormat(cmdutil.LogFormat)
cli.SetLogLevel(cmdutil.LogLevel)
metricsServer := metrics.NewMetricsServer()
http.Handle("/metrics", metricsServer.GetHandler())
go func() { errors.CheckError(http.ListenAndServe(fmt.Sprintf("%s:%d", metricsHost, metricsPort), nil)) }()
askPassServer := askpass.NewServer(askpass.CommitServerSocketPath)
go func() { errors.CheckError(askPassServer.Run()) }()
server := commitserver.NewServer(askPassServer, metricsServer)
grpc := server.CreateGRPC()
listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", listenHost, listenPort))
errors.CheckError(err)
healthz.ServeHealthCheck(http.DefaultServeMux, func(r *http.Request) error {
if val, ok := r.URL.Query()["full"]; ok && len(val) > 0 && val[0] == "true" {
// connect to itself to make sure commit server is able to serve connection
// used by liveness probe to auto restart commit server
conn, err := apiclient.NewConnection(fmt.Sprintf("localhost:%d", listenPort))
if err != nil {
return err
}
defer ioutil.Close(conn)
client := grpc_health_v1.NewHealthClient(conn)
res, err := client.Check(r.Context(), &grpc_health_v1.HealthCheckRequest{})
if err != nil {
return err
}
if res.Status != grpc_health_v1.HealthCheckResponse_SERVING {
return fmt.Errorf("grpc health check status is '%v'", res.Status)
}
return nil
}
return nil
})
// Graceful shutdown code adapted from here: https://gist.github.com/embano1/e0bf49d24f1cdd07cffad93097c04f0a
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
s := <-sigCh
log.Printf("got signal %v, attempting graceful shutdown", s)
grpc.GracefulStop()
wg.Done()
}()
log.Println("starting grpc server")
err = grpc.Serve(listener)
errors.CheckError(err)
wg.Wait()
log.Println("clean shutdown")
return nil
},
}
command.Flags().StringVar(&cmdutil.LogFormat, "logformat", env.StringFromEnv("ARGOCD_COMMIT_SERVER_LOGFORMAT", "text"), "Set the logging format. One of: text|json")
command.Flags().StringVar(&cmdutil.LogLevel, "loglevel", env.StringFromEnv("ARGOCD_COMMIT_SERVER_LOGLEVEL", "info"), "Set the logging level. One of: debug|info|warn|error")
command.Flags().StringVar(&listenHost, "address", env.StringFromEnv("ARGOCD_COMMIT_SERVER_LISTEN_ADDRESS", common.DefaultAddressCommitServer), "Listen on given address for incoming connections")
command.Flags().IntVar(&listenPort, "port", common.DefaultPortCommitServer, "Listen on given port for incoming connections")
command.Flags().StringVar(&metricsHost, "metrics-address", env.StringFromEnv("ARGOCD_COMMIT_SERVER_METRICS_LISTEN_ADDRESS", common.DefaultAddressCommitServerMetrics), "Listen on given address for metrics")
command.Flags().IntVar(&metricsPort, "metrics-port", common.DefaultPortCommitServerMetrics, "Start metrics server on given port")
return command
}

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"os"
"os/exec"
"runtime/debug"
"syscall"
"github.com/argoproj/argo-cd/v2/common"
@@ -66,6 +67,14 @@ func NewRunDexCommand() *cobra.Command {
cli.SetLogFormat(cmdutil.LogFormat)
cli.SetLogLevel(cmdutil.LogLevel)
// Recover from panic and log the error using the configured logger instead of the default.
defer func() {
if r := recover(); r != nil {
log.WithField("trace", string(debug.Stack())).Fatal("Recovered from panic: ", r)
}
}()
_, err = exec.LookPath("dex")
errors.CheckError(err)
config, err := clientConfig.ClientConfig()

View File

@@ -9,7 +9,7 @@ import (
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"github.com/argoproj/argo-cd/v2/reposerver/askpass"
"github.com/argoproj/argo-cd/v2/util/askpass"
"github.com/argoproj/argo-cd/v2/util/errors"
grpc_util "github.com/argoproj/argo-cd/v2/util/grpc"
"github.com/argoproj/argo-cd/v2/util/io"

View File

@@ -1,6 +1,7 @@
package commands
import (
"fmt"
"os"
"github.com/Azure/kubelogin/pkg/token"
@@ -19,24 +20,26 @@ const (
)
func newAzureCommand() *cobra.Command {
o := token.NewOptions()
// we'll use default of WorkloadIdentityLogin for the login flow
o.LoginMethod = token.WorkloadIdentityLogin
o.ServerID = DEFAULT_AAD_SERVER_APPLICATION_ID
command := &cobra.Command{
Use: "azure",
Run: func(c *cobra.Command, args []string) {
o.UpdateFromEnv()
o := token.OptionsWithEnv()
if o.LoginMethod == "" { // no environment variable overrides
// we'll use default of WorkloadIdentityLogin for the login flow
o.LoginMethod = token.WorkloadIdentityLogin
}
o.ServerID = DEFAULT_AAD_SERVER_APPLICATION_ID
if v, ok := os.LookupEnv(envServerApplicationID); ok {
o.ServerID = v
}
if v, ok := os.LookupEnv(envEnvironmentName); ok {
o.Environment = v
}
plugin, err := token.New(&o)
tp, err := token.GetTokenProvider(o)
errors.CheckError(err)
err = plugin.Do()
tok, err := tp.GetAccessToken(c.Context())
errors.CheckError(err)
_, _ = fmt.Fprint(os.Stdout, formatJSON(tok.Token, tok.ExpiresOn))
},
}
return command

View File

@@ -6,6 +6,7 @@ import (
"net/http"
"os"
"os/signal"
"runtime/debug"
"strings"
"sync"
"syscall"
@@ -115,6 +116,13 @@ func NewCommand() *cobra.Command {
return fmt.Errorf("unknown log format '%s'", logFormat)
}
// Recover from panic and log the error using the configured logger instead of the default.
defer func() {
if r := recover(); r != nil {
log.WithField("trace", string(debug.Stack())).Fatal("Recovered from panic: ", r)
}
}()
tlsConfig := apiclient.TLSConfiguration{
DisableTLS: argocdRepoServerPlaintext,
StrictValidation: argocdRepoServerStrictTLS,

View File

@@ -7,6 +7,7 @@ import (
"net/http"
"os"
"os/signal"
"runtime/debug"
"sync"
"syscall"
"time"
@@ -22,10 +23,10 @@ import (
"github.com/argoproj/argo-cd/v2/common"
"github.com/argoproj/argo-cd/v2/reposerver"
"github.com/argoproj/argo-cd/v2/reposerver/apiclient"
"github.com/argoproj/argo-cd/v2/reposerver/askpass"
reposervercache "github.com/argoproj/argo-cd/v2/reposerver/cache"
"github.com/argoproj/argo-cd/v2/reposerver/metrics"
"github.com/argoproj/argo-cd/v2/reposerver/repository"
"github.com/argoproj/argo-cd/v2/util/askpass"
cacheutil "github.com/argoproj/argo-cd/v2/util/cache"
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/argoproj/argo-cd/v2/util/env"
@@ -75,6 +76,7 @@ func NewCommand() *cobra.Command {
helmRegistryMaxIndexSize string
disableManifestMaxExtractedSize bool
includeHiddenDirectories bool
cmpUseManifestGeneratePaths bool
)
command := cobra.Command{
Use: cliName,
@@ -95,6 +97,13 @@ func NewCommand() *cobra.Command {
cli.SetLogFormat(cmdutil.LogFormat)
cli.SetLogLevel(cmdutil.LogLevel)
// Recover from panic and log the error using the configured logger instead of the default.
defer func() {
if r := recover(); r != nil {
log.WithField("trace", string(debug.Stack())).Fatal("Recovered from panic: ", r)
}
}()
if !disableTLS {
var err error
tlsConfigCustomizer, err = tlsConfigCustomizerSrc()
@@ -121,7 +130,7 @@ func NewCommand() *cobra.Command {
askPassServer := askpass.NewServer(askpass.SocketPath)
metricsServer := metrics.NewMetricsServer()
cacheutil.CollectMetrics(redisClient, metricsServer)
cacheutil.CollectMetrics(redisClient, metricsServer, nil)
server, err := reposerver.NewServer(metricsServer, cache, tlsConfigCustomizer, repository.RepoServerInitConstants{
ParallelismLimit: parallelismLimit,
PauseGenerationAfterFailedGenerationAttempts: pauseGenerationAfterFailedGenerationAttempts,
@@ -136,6 +145,7 @@ func NewCommand() *cobra.Command {
HelmManifestMaxExtractedSize: helmManifestMaxExtractedSizeQuantity.ToDec().Value(),
HelmRegistryMaxIndexSize: helmRegistryMaxIndexSizeQuantity.ToDec().Value(),
IncludeHiddenDirectories: includeHiddenDirectories,
CMPUseManifestGeneratePaths: cmpUseManifestGeneratePaths,
}, askPassServer)
errors.CheckError(err)
@@ -241,6 +251,7 @@ func NewCommand() *cobra.Command {
command.Flags().StringVar(&helmRegistryMaxIndexSize, "helm-registry-max-index-size", env.StringFromEnv("ARGOCD_REPO_SERVER_HELM_MANIFEST_MAX_INDEX_SIZE", "1G"), "Maximum size of registry index file")
command.Flags().BoolVar(&disableManifestMaxExtractedSize, "disable-helm-manifest-max-extracted-size", env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_DISABLE_HELM_MANIFEST_MAX_EXTRACTED_SIZE", false), "Disable maximum size of helm manifest archives when extracted")
command.Flags().BoolVar(&includeHiddenDirectories, "include-hidden-directories", env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_INCLUDE_HIDDEN_DIRECTORIES", false), "Include hidden directories from Git")
command.Flags().BoolVar(&cmpUseManifestGeneratePaths, "plugin-use-manifest-generate-paths", env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_PLUGIN_USE_MANIFEST_GENERATE_PATHS", false), "Pass the resources described in argocd.argoproj.io/manifest-generate-paths value to the cmpserver to generate the application manifests.")
tlsConfigCustomizerSrc = tls.AddTLSFlagsToCmd(&command)
cacheSrc = reposervercache.AddCacheFlagsToCmd(&command, cacheutil.Options{
OnClientCreated: func(client *redis.Client) {

View File

@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"math"
"runtime/debug"
"strings"
"time"
@@ -119,6 +120,13 @@ func NewCommand() *cobra.Command {
cli.SetLogLevel(cmdutil.LogLevel)
cli.SetGLogLevel(glogLevel)
// Recover from panic and log the error using the configured logger instead of the default.
defer func() {
if r := recover(); r != nil {
log.WithField("trace", string(debug.Stack())).Fatal("Recovered from panic: ", r)
}
}()
config, err := clientConfig.ClientConfig()
errors.CheckError(err)
errors.CheckError(v1alpha1.SetK8SConfigDefaults(config))
@@ -250,22 +258,25 @@ func NewCommand() *cobra.Command {
stats.RegisterHeapDumper("memprofile")
argocd := server.NewServer(ctx, argoCDOpts, appsetOpts)
argocd.Init(ctx)
lns, err := argocd.Listen()
errors.CheckError(err)
for {
var closer func()
ctx, cancel := context.WithCancel(ctx)
serverCtx, cancel := context.WithCancel(ctx)
lns, err := argocd.Listen()
errors.CheckError(err)
if otlpAddress != "" {
closer, err = traceutil.InitTracer(ctx, "argocd-server", otlpAddress, otlpInsecure, otlpHeaders, otlpAttrs)
closer, err = traceutil.InitTracer(serverCtx, "argocd-server", otlpAddress, otlpInsecure, otlpHeaders, otlpAttrs)
if err != nil {
log.Fatalf("failed to initialize tracing: %v", err)
}
}
argocd.Run(ctx, lns)
cancel()
argocd.Run(serverCtx, lns)
if closer != nil {
closer()
}
cancel()
if argocd.TerminateRequested() {
break
}
}
},
Example: templates.Examples(`

View File

@@ -17,6 +17,7 @@ import (
"sigs.k8s.io/yaml"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/headless"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
accountpkg "github.com/argoproj/argo-cd/v2/pkg/apiclient/account"
"github.com/argoproj/argo-cd/v2/pkg/apiclient/session"
@@ -432,8 +433,14 @@ argocd account delete-token --account <account-name> ID`,
if account == "" {
account = getCurrentAccount(ctx, clientset).Username
}
_, err := client.DeleteToken(ctx, &accountpkg.DeleteTokenRequest{Name: account, Id: id})
errors.CheckError(err)
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
canDelete := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to delete '%s' token? [y/n]", id))
if canDelete {
_, err := client.DeleteToken(ctx, &accountpkg.DeleteTokenRequest{Name: account, Id: id})
errors.CheckError(err)
} else {
fmt.Printf("The command to delete '%s' was cancelled.\n", id)
}
},
}
cmd.Flags().StringVarP(&account, "account", "a", "", "Account name. Defaults to the current account.")

View File

@@ -188,12 +188,12 @@ func NewDiffReconcileResults() *cobra.Command {
func toUnstructured(val interface{}) (*unstructured.Unstructured, error) {
data, err := json.Marshal(val)
if err != nil {
return nil, err
return nil, fmt.Errorf("error while marhsalling value: %w", err)
}
res := make(map[string]interface{})
err = json.Unmarshal(data, &res)
if err != nil {
return nil, err
return nil, fmt.Errorf("error while unmarhsalling data: %w", err)
}
return &unstructured.Unstructured{Object: res}, nil
}
@@ -227,7 +227,7 @@ func diffReconcileResults(res1 reconcileResults, res2 reconcileResults) error {
for k, v := range resMap2 {
secondUn, err := toUnstructured(v)
if err != nil {
return err
return fmt.Errorf("error converting second resource of second map to unstructure: %w", err)
}
pairs = append(pairs, diffPair{name: k, first: nil, second: secondUn})
}
@@ -338,7 +338,7 @@ func saveToFile(err error, outputFormat string, result reconcileResults, outputP
func getReconcileResults(ctx context.Context, appClientset appclientset.Interface, namespace string, selector string) ([]appReconcileResult, error) {
appsList, err := appClientset.ArgoprojV1alpha1().Applications(namespace).List(ctx, v1.ListOptions{LabelSelector: selector})
if err != nil {
return nil, err
return nil, fmt.Errorf("error listing namespaced apps: %w", err)
}
var items []appReconcileResult
@@ -389,11 +389,11 @@ func reconcileApplications(
return nil
}, []string{}, []string{})
if err != nil {
return nil, err
return nil, fmt.Errorf("error starting new metrics server: %w", err)
}
stateCache := createLiveStateCache(argoDB, appInformer, settingsMgr, server)
if err := stateCache.Init(); err != nil {
return nil, err
return nil, fmt.Errorf("error initializing state cache: %w", err)
}
cache := appstatecache.NewCache(
@@ -406,7 +406,7 @@ func reconcileApplications(
appsList, err := appClientset.ArgoprojV1alpha1().Applications(namespace).List(ctx, v1.ListOptions{LabelSelector: selector})
if err != nil {
return nil, err
return nil, fmt.Errorf("error listing namespaced apps: %w", err)
}
sort.Slice(appsList.Items, func(i, j int) bool {
@@ -429,7 +429,7 @@ func reconcileApplications(
proj, err := projLister.AppProjects(namespace).Get(app.Spec.Project)
if err != nil {
return nil, err
return nil, fmt.Errorf("error getting namespaced project: %w", err)
}
sources := make([]v1alpha1.ApplicationSource, 0)
@@ -439,7 +439,7 @@ func reconcileApplications(
res, err := appStateManager.CompareAppState(&app, proj, revisions, sources, false, false, nil, false, false)
if err != nil {
return nil, err
return nil, fmt.Errorf("error comparing app states: %w", err)
}
items = append(items, appReconcileResult{
Name: app.Name,

View File

@@ -16,10 +16,12 @@ import (
"k8s.io/client-go/tools/clientcmd"
"sigs.k8s.io/yaml"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
"github.com/argoproj/argo-cd/v2/common"
"github.com/argoproj/argo-cd/v2/pkg/apis/application"
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/argoproj/argo-cd/v2/util/errors"
"github.com/argoproj/argo-cd/v2/util/localconfig"
secutil "github.com/argoproj/argo-cd/v2/util/security"
)
@@ -137,6 +139,7 @@ func NewImportCommand() *cobra.Command {
verbose bool
stopOperation bool
ignoreTracking bool
promptsEnabled bool
applicationNamespaces []string
applicationsetNamespaces []string
)
@@ -308,6 +311,8 @@ func NewImportCommand() *cobra.Command {
}
}
promptUtil := utils.NewPrompt(promptsEnabled)
// Delete objects not in backup
for key, liveObj := range pruneObjects {
if prune {
@@ -335,13 +340,19 @@ func NewImportCommand() *cobra.Command {
log.Fatalf("Unexpected kind '%s' in prune list", key.Kind)
}
isForbidden := false
if !dryRun {
err = dynClient.Delete(ctx, key.Name, v1.DeleteOptions{})
if apierr.IsForbidden(err) || apierr.IsNotFound(err) {
isForbidden = true
log.Warnf("%s/%s %s: %v\n", key.Group, key.Kind, key.Name, err)
canPrune := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to prune %s/%s %s ? [y/n]", key.Group, key.Kind, key.Name))
if canPrune {
err = dynClient.Delete(ctx, key.Name, v1.DeleteOptions{})
if apierr.IsForbidden(err) || apierr.IsNotFound(err) {
isForbidden = true
log.Warnf("%s/%s %s: %v\n", key.Group, key.Kind, key.Name, err)
} else {
errors.CheckError(err)
}
} else {
errors.CheckError(err)
fmt.Printf("The command to prune %s/%s %s was cancelled.\n", key.Group, key.Kind, key.Name)
}
}
if !isForbidden {
@@ -362,6 +373,7 @@ func NewImportCommand() *cobra.Command {
command.Flags().BoolVar(&stopOperation, "stop-operation", false, "Stop any existing operations")
command.Flags().StringSliceVarP(&applicationNamespaces, "application-namespaces", "", []string{}, fmt.Sprintf("Comma separated list of namespace globs to which import of applications is allowed. If not provided value from '%s' in %s will be used,if it's not defined only applications without an explicit namespace will be imported to the Argo CD namespace", applicationNamespacesCmdParamsKey, common.ArgoCDCmdParamsConfigMapName))
command.Flags().StringSliceVarP(&applicationsetNamespaces, "applicationset-namespaces", "", []string{}, fmt.Sprintf("Comma separated list of namespace globs which import of applicationsets is allowed. If not provided value from '%s' in %s will be used,if it's not defined only applicationsets without an explicit namespace will be imported to the Argo CD namespace", applicationsetNamespacesCmdParamsKey, common.ArgoCDCmdParamsConfigMapName))
command.PersistentFlags().BoolVar(&promptsEnabled, "prompts-enabled", localconfig.GetPromptsEnabled(true), "Force optional interactive prompts to be enabled or disabled, overriding local configuration. If not specified, the local configuration value will be used, which is false by default.")
return &command
}

View File

@@ -183,12 +183,13 @@ func getControllerReplicas(ctx context.Context, kubeClient *kubernetes.Clientset
func NewClusterShardsCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
shard int
replicas int
shardingAlgorithm string
clientConfig clientcmd.ClientConfig
cacheSrc func() (*appstatecache.Cache, error)
portForwardRedis bool
shard int
replicas int
shardingAlgorithm string
clientConfig clientcmd.ClientConfig
cacheSrc func() (*appstatecache.Cache, error)
portForwardRedis bool
redisCompressionStr string
)
command := cobra.Command{
Use: "shards",
@@ -212,7 +213,7 @@ func NewClusterShardsCommand(clientOpts *argocdclient.ClientOptions) *cobra.Comm
if replicas == 0 {
return
}
clusters, err := loadClusters(ctx, kubeClient, appClient, replicas, shardingAlgorithm, namespace, portForwardRedis, cacheSrc, shard, clientOpts.RedisName, clientOpts.RedisHaProxyName, clientOpts.RedisCompression)
clusters, err := loadClusters(ctx, kubeClient, appClient, replicas, shardingAlgorithm, namespace, portForwardRedis, cacheSrc, shard, clientOpts.RedisName, clientOpts.RedisHaProxyName, redisCompressionStr)
errors.CheckError(err)
if len(clusters) == 0 {
return
@@ -233,6 +234,7 @@ func NewClusterShardsCommand(clientOpts *argocdclient.ClientOptions) *cobra.Comm
// we can ignore unchecked error here as the command will be parsed again and checked when command.Execute() is run later
// nolint:errcheck
command.ParseFlags(os.Args[1:])
redisCompressionStr, _ = command.Flags().GetString(cacheutil.CLIFlagRedisCompress)
return &command
}
@@ -464,12 +466,13 @@ func NewClusterDisableNamespacedMode() *cobra.Command {
func NewClusterStatsCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
shard int
replicas int
shardingAlgorithm string
clientConfig clientcmd.ClientConfig
cacheSrc func() (*appstatecache.Cache, error)
portForwardRedis bool
shard int
replicas int
shardingAlgorithm string
clientConfig clientcmd.ClientConfig
cacheSrc func() (*appstatecache.Cache, error)
portForwardRedis bool
redisCompressionStr string
)
command := cobra.Command{
Use: "stats",
@@ -499,7 +502,7 @@ argocd admin cluster stats target-cluster`,
replicas, err = getControllerReplicas(ctx, kubeClient, namespace, clientOpts.AppControllerName)
errors.CheckError(err)
}
clusters, err := loadClusters(ctx, kubeClient, appClient, replicas, shardingAlgorithm, namespace, portForwardRedis, cacheSrc, shard, clientOpts.RedisName, clientOpts.RedisHaProxyName, clientOpts.RedisCompression)
clusters, err := loadClusters(ctx, kubeClient, appClient, replicas, shardingAlgorithm, namespace, portForwardRedis, cacheSrc, shard, clientOpts.RedisName, clientOpts.RedisHaProxyName, redisCompressionStr)
errors.CheckError(err)
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
@@ -521,6 +524,7 @@ argocd admin cluster stats target-cluster`,
// we can ignore unchecked error here as the command will be parsed again and checked when command.Execute() is run later
// nolint:errcheck
command.ParseFlags(os.Args[1:])
redisCompressionStr, _ = command.Flags().GetString(cacheutil.CLIFlagRedisCompress)
return &command
}
@@ -561,7 +565,9 @@ argocd admin cluster kubeconfig https://cluster-api-url:6443 /path/to/output/kub
cluster, err := db.NewDB(namespace, settings.NewSettingsManager(ctx, kubeclientset, namespace), kubeclientset).GetCluster(ctx, serverUrl)
errors.CheckError(err)
err = kube.WriteKubeConfig(cluster.RawRestConfig(), namespace, output)
rawConfig, err := cluster.RawRestConfig()
errors.CheckError(err)
err = kube.WriteKubeConfig(rawConfig, namespace, output)
errors.CheckError(err)
},
}
@@ -674,7 +680,7 @@ func NewGenClusterConfigCommand(pathOpts *clientcmd.PathOptions) *cobra.Command
command.PersistentFlags().StringVar(&pathOpts.LoadingRules.ExplicitPath, pathOpts.ExplicitFileFlag, pathOpts.LoadingRules.ExplicitPath, "use a particular kubeconfig file")
command.Flags().StringVar(&bearerToken, "bearer-token", "", "Authentication token that should be used to access K8S API server")
command.Flags().BoolVar(&generateToken, "generate-bearer-token", false, "Generate authentication token that should be used to access K8S API server")
command.Flags().StringVar(&clusterOpts.ServiceAccount, "service-account", "argocd-manager", fmt.Sprintf("System namespace service account to use for kubernetes resource management. If not set then default \"%s\" SA will be used", clusterauth.ArgoCDManagerServiceAccount))
command.Flags().StringVar(&clusterOpts.ServiceAccount, "service-account", "argocd-manager", fmt.Sprintf("System namespace service account to use for kubernetes resource management. If not set then default %q SA will be used", clusterauth.ArgoCDManagerServiceAccount))
command.Flags().StringVar(&clusterOpts.SystemNamespace, "system-namespace", common.DefaultSystemNamespace, "Use different system namespace")
command.Flags().StringVarP(&outputFormat, "output", "o", "yaml", "Output format. One of: json|yaml")
command.Flags().StringArrayVar(&labels, "label", nil, "Set metadata labels (e.g. --label key=value)")

View File

@@ -12,14 +12,17 @@ import (
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/initialize"
"github.com/argoproj/argo-cd/v2/common"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
"github.com/argoproj/argo-cd/v2/util/cache"
"github.com/argoproj/argo-cd/v2/util/env"
"github.com/argoproj/argo-cd/v2/util/errors"
)
func NewDashboardCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
port int
address string
clientConfig clientcmd.ClientConfig
port int
address string
compressionStr string
clientConfig clientcmd.ClientConfig
)
cmd := &cobra.Command{
Use: "dashboard",
@@ -27,8 +30,10 @@ func NewDashboardCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command
Run: func(cmd *cobra.Command, args []string) {
ctx := cmd.Context()
compression, err := cache.CompressionTypeFromString(compressionStr)
errors.CheckError(err)
clientOpts.Core = true
errors.CheckError(headless.MaybeStartLocalServer(ctx, clientOpts, initialize.RetrieveContextIfChanged(cmd.Flag("context")), &port, &address, clientConfig))
errors.CheckError(headless.MaybeStartLocalServer(ctx, clientOpts, initialize.RetrieveContextIfChanged(cmd.Flag("context")), &port, &address, compression, clientConfig))
println(fmt.Sprintf("Argo CD UI is available at http://%s:%d", address, port))
<-ctx.Done()
},
@@ -45,5 +50,6 @@ $ argocd admin dashboard --redis-compress gzip
clientConfig = cli.AddKubectlFlagsToSet(cmd.Flags())
cmd.Flags().IntVar(&port, "port", common.DefaultPortAPIServer, "Listen on given port")
cmd.Flags().StringVar(&address, "address", common.DefaultAddressAdminDashboard, "Listen on given address")
cmd.Flags().StringVar(&compressionStr, "redis-compress", env.StringFromEnv("REDIS_COMPRESSION", string(cache.RedisCompressionGZip)), "Enable this if the application controller is configured with redis compression enabled. (possible values: gzip, none)")
return cmd
}

View File

@@ -50,13 +50,13 @@ func NewGenProjectSpecCommand() *cobra.Command {
Short: "Generate declarative config for a project",
Example: templates.Examples(`
# Generate a YAML configuration for a project named "myproject"
argocd admin projects generate-spec myproject
argocd admin proj generate-spec myproject
# Generate a JSON configuration for a project named "anotherproject" and specify an output file
argocd admin projects generate-spec anotherproject --output json --file config.json
argocd admin proj generate-spec anotherproject --output json --file config.json
# Generate a YAML configuration for a project named "someproject" and write it back to the input file
argocd admin projects generate-spec someproject --inline
argocd admin proj generate-spec someproject --inline
`),
Run: func(c *cobra.Command, args []string) {
@@ -155,10 +155,10 @@ func NewUpdatePolicyRuleCommand() *cobra.Command {
Use: "update-role-policy PROJECT_GLOB MODIFICATION ACTION",
Short: "Implement bulk project role update. Useful to back-fill existing project policies or remove obsolete actions.",
Example: ` # Add policy that allows executing any action (action/*) to roles which name matches to *deployer* in all projects
argocd admin projects update-role-policy '*' set 'action/*' --role '*deployer*' --resource applications --scope '*' --permission allow
argocd admin proj update-role-policy '*' set 'action/*' --role '*deployer*' --resource applications --scope '*' --permission allow
# Remove policy that which manages running (action/*) from all roles which name matches *deployer* in all projects
argocd admin projects update-role-policy '*' remove override --role '*deployer*'
argocd admin proj update-role-policy '*' remove override --role '*deployer*'
`,
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()

View File

@@ -45,9 +45,14 @@ func NewRedisInitialPasswordCommand() *cobra.Command {
namespace, _, err := clientConfig.Namespace()
errors.CheckError(err)
redisInitialPasswordSecretName := common.DefaultRedisInitialPasswordSecretName
redisInitialPasswordKey := common.DefaultRedisInitialPasswordKey
fmt.Printf("Checking for initial Redis password in secret %s/%s at key %s. \n", namespace, redisInitialPasswordSecretName, redisInitialPasswordKey)
// redisInitialCredentials is the kubernetes secret containing
// the redis password
redisInitialCredentials := common.RedisInitialCredentials
// redisInitialCredentialsKey is the key in the redisInitialCredentials
// secret which maps to the redis password
redisInitialCredentialsKey := common.RedisInitialCredentialsKey
fmt.Printf("Checking for initial Redis password in secret %s/%s at key %s. \n", namespace, redisInitialCredentials, redisInitialCredentialsKey)
config, err := clientConfig.ClientConfig()
errors.CheckError(err)
@@ -59,11 +64,11 @@ func NewRedisInitialPasswordCommand() *cobra.Command {
errors.CheckError(err)
data := map[string][]byte{
redisInitialPasswordKey: []byte(randomPassword),
redisInitialCredentialsKey: []byte(randomPassword),
}
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: redisInitialPasswordSecretName,
Name: redisInitialCredentials,
Namespace: namespace,
},
Data: data,
@@ -74,14 +79,14 @@ func NewRedisInitialPasswordCommand() *cobra.Command {
errors.CheckError(err)
}
fmt.Println("Argo CD Redis secret state confirmed: secret name argocd-redis.")
secret, err = kubeClientset.CoreV1().Secrets(namespace).Get(context.Background(), redisInitialPasswordSecretName, v1.GetOptions{})
fmt.Printf("Argo CD Redis secret state confirmed: secret name %s.\n", redisInitialCredentials)
secret, err = kubeClientset.CoreV1().Secrets(namespace).Get(context.Background(), redisInitialCredentials, v1.GetOptions{})
errors.CheckError(err)
if _, ok := secret.Data[redisInitialPasswordKey]; ok {
if _, ok := secret.Data[redisInitialCredentialsKey]; ok {
fmt.Println("Password secret is configured properly.")
} else {
err := fmt.Errorf("key %s doesn't exist in secret %s. \n", redisInitialPasswordKey, redisInitialPasswordSecretName)
err := fmt.Errorf("key %s doesn't exist in secret %s. \n", redisInitialCredentialsKey, redisInitialCredentials)
errors.CheckError(err)
}
},

View File

@@ -579,7 +579,7 @@ func NewResourceActionRunCommand(cmdCtx commandContext) *cobra.Command {
Short: "Executes resource action",
Long: "Executes resource action using the lua script configured in the 'resource.customizations' field of 'argocd-cm' ConfigMap and outputs updated fields",
Example: `
argocd admin settings resource-overrides action run /tmp/deploy.yaml restart --argocd-cm-path ./argocd-cm.yaml`,
argocd admin settings resource-overrides action /tmp/deploy.yaml restart --argocd-cm-path ./argocd-cm.yaml`,
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()

View File

@@ -200,8 +200,7 @@ admissionregistration.k8s.io/MutatingWebhookConfiguration:
require.NoError(t, err)
assert.Contains(t, summary, tc.containsSummary)
} else if tc.containsError != "" {
require.Error(t, err)
assert.Contains(t, err.Error(), tc.containsError)
assert.ErrorContains(t, err, tc.containsError)
}
})
}

View File

@@ -8,6 +8,7 @@ import (
"io"
"os"
"reflect"
"slices"
"sort"
"strconv"
"strings"
@@ -27,6 +28,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema"
k8swatch "k8s.io/apimachinery/pkg/watch"
@@ -34,6 +36,7 @@ import (
"sigs.k8s.io/yaml"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/headless"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
cmdutil "github.com/argoproj/argo-cd/v2/cmd/util"
"github.com/argoproj/argo-cd/v2/controller"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
@@ -98,6 +101,7 @@ func NewApplicationCommand(clientOpts *argocdclient.ClientOptions) *cobra.Comman
command.AddCommand(NewApplicationLogsCommand(clientOpts))
command.AddCommand(NewApplicationAddSourceCommand(clientOpts))
command.AddCommand(NewApplicationRemoveSourceCommand(clientOpts))
command.AddCommand(NewApplicationConfirmDeletionCommand(clientOpts))
return command
}
@@ -314,6 +318,17 @@ func printHeader(acdClient argocdclient.Client, app *argoappv1.Application, ctx
}
}
// getSourceNameToPositionMap returns a map of source name to position
func getSourceNameToPositionMap(app *argoappv1.Application) map[string]int64 {
sourceNameToPosition := make(map[string]int64)
for i, s := range app.Spec.Sources {
if s.Name != "" {
sourceNameToPosition[s.Name] = int64(i + 1)
}
}
return sourceNameToPosition
}
// NewApplicationGetCommand returns a new instance of an `argocd app get` command
func NewApplicationGetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
@@ -324,6 +339,7 @@ func NewApplicationGetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Com
showOperation bool
appNamespace string
sourcePosition int
sourceName string
)
command := &cobra.Command{
Use: "get APPNAME",
@@ -347,6 +363,9 @@ func NewApplicationGetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Com
# Show application parameters and overrides for a source at position 1 under spec.sources of app my-app
argocd app get my-app --show-params --source-position 1
# Show application parameters and overrides for a source named "test"
argocd app get my-app --show-params --source-name test
# Refresh application data when retrieving
argocd app get my-app --refresh
@@ -379,6 +398,19 @@ func NewApplicationGetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Com
})
errors.CheckError(err)
if sourceName != "" && sourcePosition != -1 {
errors.CheckError(fmt.Errorf("Only one of source-position and source-name can be specified."))
}
if sourceName != "" {
sourceNameToPosition := getSourceNameToPositionMap(app)
if pos, ok := sourceNameToPosition[sourceName]; !ok {
log.Fatalf("Unknown source name '%s'", sourceName)
} else {
sourcePosition = int(pos)
}
}
// check for source position if --show-params is set
if app.Spec.HasMultipleSources() && showParams {
if sourcePosition <= 0 {
@@ -434,6 +466,7 @@ func NewApplicationGetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Com
command.Flags().BoolVar(&hardRefresh, "hard-refresh", false, "Refresh application data as well as target manifests cache")
command.Flags().StringVarP(&appNamespace, "app-namespace", "N", "", "Only get application from namespace")
command.Flags().IntVar(&sourcePosition, "source-position", -1, "Position of the source from the list of sources of the app. Counting starts at 1.")
command.Flags().StringVar(&sourceName, "source-name", "", "Name of the source from the list of sources of the app.")
return command
}
@@ -763,6 +796,7 @@ func NewApplicationSetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Com
appOpts cmdutil.AppOptions
appNamespace string
sourcePosition int
sourceName string
)
command := &cobra.Command{
Use: "set APPNAME",
@@ -777,6 +811,9 @@ func NewApplicationSetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Com
# Set and override application parameters for a source at position 1 under spec.sources of app my-app. source-position starts at 1.
argocd app set my-app --source-position 1 --repo https://github.com/argoproj/argocd-example-apps.git
# Set and override application parameters for a source named "test" under spec.sources of app my-app.
argocd app set my-app --source-name test --repo https://github.com/argoproj/argocd-example-apps.git
# Set application parameters and specify the namespace
argocd app set my-app --parameter key1=value1 --parameter key2=value2 --namespace my-namespace
`),
@@ -795,6 +832,20 @@ func NewApplicationSetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Com
app, err := appIf.Get(ctx, &application.ApplicationQuery{Name: &appName, AppNamespace: &appNs})
errors.CheckError(err)
sourceName = appOpts.SourceName
if sourceName != "" && sourcePosition != -1 {
errors.CheckError(fmt.Errorf("Only one of source-position and source-name can be specified."))
}
if sourceName != "" {
sourceNameToPosition := getSourceNameToPositionMap(app)
if pos, ok := sourceNameToPosition[sourceName]; !ok {
log.Fatalf("Unknown source name '%s'", sourceName)
} else {
sourcePosition = int(pos)
}
}
if app.Spec.HasMultipleSources() {
if sourcePosition <= 0 {
errors.CheckError(fmt.Errorf("Source position should be specified and must be greater than 0 for applications with multiple sources"))
@@ -858,6 +909,7 @@ func (o *unsetOpts) KustomizeIsZero() bool {
// NewApplicationUnsetCommand returns a new instance of an `argocd app unset` command
func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var sourcePosition int
var sourceName string
appOpts := cmdutil.AppOptions{}
opts := unsetOpts{}
var appNamespace string
@@ -873,6 +925,9 @@ func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.C
# Unset kustomize override suffix for source at position 1 under spec.sources of app my-app. source-position starts at 1.
argocd app unset my-app --source-position 1 --namesuffix
# Unset kustomize override suffix for source named "test" under spec.sources of app my-app.
argocd app unset my-app --source-name test --namesuffix
# Unset parameter override
argocd app unset my-app -p COMPONENT=PARAM`,
@@ -890,6 +945,20 @@ func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.C
app, err := appIf.Get(ctx, &application.ApplicationQuery{Name: &appName, AppNamespace: &appNs})
errors.CheckError(err)
sourceName = appOpts.SourceName
if sourceName != "" && sourcePosition != -1 {
errors.CheckError(fmt.Errorf("Only one of source-position and source-name can be specified."))
}
if sourceName != "" {
sourceNameToPosition := getSourceNameToPositionMap(app)
if pos, ok := sourceNameToPosition[sourceName]; !ok {
log.Fatalf("Unknown source name '%s'", sourceName)
} else {
sourcePosition = int(pos)
}
}
if app.Spec.HasMultipleSources() {
if sourcePosition <= 0 {
errors.CheckError(fmt.Errorf("Source position should be specified and must be greater than 0 for applications with multiple sources"))
@@ -911,13 +980,20 @@ func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.C
}
cmdutil.SetAppSpecOptions(c.Flags(), &app.Spec, &appOpts, sourcePosition)
_, err = appIf.UpdateSpec(ctx, &application.ApplicationUpdateSpecRequest{
Name: &app.Name,
Spec: &app.Spec,
Validate: &appOpts.Validate,
AppNamespace: &appNs,
})
errors.CheckError(err)
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
canUnset := promptUtil.Confirm("Are you sure you want to unset the parameters? [y/n]")
if canUnset {
_, err = appIf.UpdateSpec(ctx, &application.ApplicationUpdateSpecRequest{
Name: &app.Name,
Spec: &app.Spec,
Validate: &appOpts.Validate,
AppNamespace: &appNs,
})
errors.CheckError(err)
} else {
fmt.Println("The command to unset the parameters has been cancelled.")
}
},
}
command.Flags().StringVarP(&appNamespace, "app-namespace", "N", "", "Unset application parameters in namespace")
@@ -1082,17 +1158,18 @@ func getLocalObjectsString(ctx context.Context, app *argoappv1.Application, proj
) []string {
source := app.Spec.GetSource()
res, err := repository.GenerateManifests(ctx, local, localRepoRoot, source.TargetRevision, &repoapiclient.ManifestRequest{
Repo: &argoappv1.Repository{Repo: source.RepoURL},
AppLabelKey: appLabelKey,
AppName: app.Name,
Namespace: app.Spec.Destination.Namespace,
ApplicationSource: &source,
KustomizeOptions: kustomizeOptions,
KubeVersion: kubeVersion,
ApiVersions: apiVersions,
TrackingMethod: trackingMethod,
ProjectName: proj.Name,
ProjectSourceRepos: proj.Spec.SourceRepos,
Repo: &argoappv1.Repository{Repo: source.RepoURL},
AppLabelKey: appLabelKey,
AppName: app.Name,
Namespace: app.Spec.Destination.Namespace,
ApplicationSource: &source,
KustomizeOptions: kustomizeOptions,
KubeVersion: kubeVersion,
ApiVersions: apiVersions,
TrackingMethod: trackingMethod,
ProjectName: proj.Name,
ProjectSourceRepos: proj.Spec.SourceRepos,
AnnotationManifestGeneratePaths: app.GetAnnotation(argoappv1.AnnotationKeyManifestGeneratePaths),
}, true, &git.NoopCredsStore{}, resource.MustParse("0"), nil)
errors.CheckError(err)
@@ -1141,6 +1218,7 @@ func NewApplicationDiffCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
refresh bool
hardRefresh bool
exitCode bool
diffExitCode int
local string
revision string
localRepoRoot string
@@ -1149,6 +1227,7 @@ func NewApplicationDiffCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
appNamespace string
revisions []string
sourcePositions []int64
sourceNames []string
ignoreNormalizerOpts normalizers.IgnoreNormalizerOpts
)
shortDesc := "Perform a diff against the target and live state."
@@ -1164,8 +1243,16 @@ func NewApplicationDiffCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
os.Exit(2)
}
if len(revisions) != len(sourcePositions) {
errors.CheckError(fmt.Errorf("While using revisions and source-positions, length of values for both flags should be same."))
if len(sourceNames) > 0 && len(sourcePositions) > 0 {
errors.CheckError(fmt.Errorf("Only one of source-positions and source-names can be specified."))
}
if len(sourcePositions) > 0 && len(revisions) != len(sourcePositions) {
errors.CheckError(fmt.Errorf("While using --revisions and --source-positions, length of values for both flags should be same."))
}
if len(sourceNames) > 0 && len(revisions) != len(sourceNames) {
errors.CheckError(fmt.Errorf("While using --revisions and --source-names, length of values for both flags should be same."))
}
clientset := headless.NewClientOrDie(clientOpts, c)
@@ -1179,6 +1266,18 @@ func NewApplicationDiffCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
})
errors.CheckError(err)
if len(sourceNames) > 0 {
sourceNameToPosition := getSourceNameToPositionMap(app)
for _, name := range sourceNames {
if pos, ok := sourceNameToPosition[name]; !ok {
log.Fatalf("Unknown source name '%s'", name)
} else {
sourcePositions = append(sourcePositions, pos)
}
}
}
resources, err := appIf.ManagedResources(ctx, &application.ResourcesQuery{ApplicationName: &appName, AppNamespace: &appNs})
errors.CheckError(err)
conn, settingsIf := clientset.NewSettingsClientOrDie()
@@ -1243,13 +1342,14 @@ func NewApplicationDiffCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
proj := getProject(c, clientOpts, ctx, app.Spec.Project)
foundDiffs := findandPrintDiff(ctx, app, proj.Project, resources, argoSettings, diffOption, ignoreNormalizerOpts)
if foundDiffs && exitCode {
os.Exit(1)
os.Exit(diffExitCode)
}
},
}
command.Flags().BoolVar(&refresh, "refresh", false, "Refresh application data when retrieving")
command.Flags().BoolVar(&hardRefresh, "hard-refresh", false, "Refresh application data as well as target manifests cache")
command.Flags().BoolVar(&exitCode, "exit-code", true, "Return non-zero exit code when there is a diff")
command.Flags().BoolVar(&exitCode, "exit-code", true, "Return non-zero exit code when there is a diff. May also return non-zero exit code if there is an error.")
command.Flags().IntVar(&diffExitCode, "diff-exit-code", 1, "Return specified exit code when there is a diff. Typical error code is 20.")
command.Flags().StringVar(&local, "local", "", "Compare live app to a local manifests")
command.Flags().StringVar(&revision, "revision", "", "Compare live app to a particular revision")
command.Flags().StringVar(&localRepoRoot, "local-repo-root", "/", "Path to the repository root. Used together with --local allows setting the repository root")
@@ -1258,6 +1358,7 @@ func NewApplicationDiffCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
command.Flags().StringVarP(&appNamespace, "app-namespace", "N", "", "Only render the difference in namespace")
command.Flags().StringArrayVar(&revisions, "revisions", []string{}, "Show manifests at specific revisions for source position in source-positions")
command.Flags().Int64SliceVar(&sourcePositions, "source-positions", []int64{}, "List of source positions. Default is empty array. Counting start at 1.")
command.Flags().StringArrayVar(&sourceNames, "source-names", []string{}, "List of source names. Default is an empty array.")
command.Flags().DurationVar(&ignoreNormalizerOpts.JQExecutionTimeout, "ignore-normalizer-jq-execution-timeout", normalizers.DefaultJQExecutionTimeout, "Set ignore normalizer JQ execution timeout")
return command
}
@@ -1431,8 +1532,6 @@ func NewApplicationDeleteCommand(clientOpts *argocdclient.ClientOptions) *cobra.
conn, appIf := acdClient.NewApplicationClientOrDie()
defer argoio.Close(conn)
var isTerminal bool = isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd())
var isConfirmAll bool = false
numOfApps := len(args)
promptFlag := c.Flag("yes")
if promptFlag.Changed && promptFlag.Value.String() == "true" {
noPrompt = true
@@ -1445,6 +1544,16 @@ func NewApplicationDeleteCommand(clientOpts *argocdclient.ClientOptions) *cobra.
appNames = args
}
numOfApps := len(appNames)
// This is for backward compatibility,
// before we showed the prompts only when condition cascade && isTerminal && !noPrompt is true
promptUtil := utils.NewPrompt(cascade && isTerminal && !noPrompt)
var (
confirmAll = false
confirm = false
)
for _, appFullName := range appNames {
appName, appNs := argo.ParseFromQualifiedName(appFullName, appNamespace)
appDeleteReq := application.ApplicationDeleteRequest{
@@ -1457,38 +1566,21 @@ func NewApplicationDeleteCommand(clientOpts *argocdclient.ClientOptions) *cobra.
if c.Flag("propagation-policy").Changed {
appDeleteReq.PropagationPolicy = &propagationPolicy
}
if cascade && isTerminal && !noPrompt {
var lowercaseAnswer string
if numOfApps == 1 {
lowercaseAnswer = cli.AskToProceedS("Are you sure you want to delete '" + appFullName + "' and all its resources? [y/n] ")
} else {
if !isConfirmAll {
lowercaseAnswer = cli.AskToProceedS("Are you sure you want to delete '" + appFullName + "' and all its resources? [y/n/A] where 'A' is to delete all specified apps and their resources without prompting ")
if lowercaseAnswer == "a" {
lowercaseAnswer = "y"
isConfirmAll = true
}
} else {
lowercaseAnswer = "y"
}
}
if lowercaseAnswer == "y" {
_, err := appIf.Delete(ctx, &appDeleteReq)
errors.CheckError(err)
if wait {
checkForDeleteEvent(ctx, acdClient, appFullName)
}
fmt.Printf("application '%s' deleted\n", appFullName)
} else {
fmt.Println("The command to delete '" + appFullName + "' was cancelled.")
}
} else {
messageForSingle := "Are you sure you want to delete '" + appFullName + "' and all its resources? [y/n] "
messageForAll := "Are you sure you want to delete '" + appFullName + "' and all its resources? [y/n/a] where 'a' is to delete all specified apps and their resources without prompting "
if !confirmAll {
confirm, confirmAll = promptUtil.ConfirmBaseOnCount(messageForSingle, messageForAll, numOfApps)
}
if confirm || confirmAll {
_, err := appIf.Delete(ctx, &appDeleteReq)
errors.CheckError(err)
if wait {
checkForDeleteEvent(ctx, acdClient, appFullName)
}
fmt.Printf("application '%s' deleted\n", appFullName)
} else {
fmt.Println("The command to delete '" + appFullName + "' was cancelled.")
}
}
},
@@ -1647,6 +1739,7 @@ func formatConditionsSummary(app argoappv1.Application) string {
}
summary := "<none>"
if len(items) > 0 {
slices.Sort(items)
summary = strings.Join(items, ",")
}
return summary
@@ -1831,6 +1924,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
revision string
revisions []string
sourcePositions []int64
sourceNames []string
resources []string
labels []string
selector string
@@ -1874,7 +1968,8 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
argocd app sync -l 'app.kubernetes.io/instance notin (my-app,other-app)'
# Sync a multi-source application for specific revision of specific sources
argocd app manifests my-app --revisions 0.0.1 --source-positions 1 --revisions 0.0.2 --source-positions 2
argocd app sync my-app --revisions 0.0.1 --source-positions 1 --revisions 0.0.2 --source-positions 2
argocd app sync my-app --revisions 0.0.1 --source-names my-chart --revisions 0.0.2 --source-names my-values
# Sync a specific resource
# Resource should be formatted as GROUP:KIND:NAME. If no GROUP is specified then :KIND:NAME
@@ -1899,10 +1994,22 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
log.Fatal("Cannot use --revisions and --source-positions options when 0 or more than 1 application names are passed as argument(s)")
}
if len(revisions) != len(sourcePositions) {
if len(args) != 1 && (len(revisions) > 0 || len(sourceNames) > 0) {
log.Fatal("Cannot use --revisions and --source-names options when 0 or more than 1 application names are passed as argument(s)")
}
if len(sourceNames) > 0 && len(sourcePositions) > 0 {
log.Fatal("Only one of source-positions and source-names can be specified.")
}
if len(sourcePositions) > 0 && len(revisions) != len(sourcePositions) {
log.Fatal("While using --revisions and --source-positions, length of values for both flags should be same.")
}
if len(sourceNames) > 0 && len(revisions) != len(sourceNames) {
log.Fatal("While using --revisions and --source-names, length of values for both flags should be same.")
}
for _, pos := range sourcePositions {
if pos <= 0 {
log.Fatal("source-position cannot be less than or equal to 0, Counting starts at 1")
@@ -1916,6 +2023,22 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
selectedLabels, err := label.Parse(labels)
errors.CheckError(err)
if len(args) == 1 && len(sourceNames) > 0 {
appName, _ := argo.ParseFromQualifiedName(args[0], appNamespace)
app, err := appIf.Get(context.Background(), &application.ApplicationQuery{Name: &appName})
errors.CheckError(err)
sourceNameToPosition := getSourceNameToPositionMap(app)
for _, name := range sourceNames {
if pos, ok := sourceNameToPosition[name]; !ok {
log.Fatalf("Unknown source name '%s'", name)
} else {
sourcePositions = append(sourcePositions, pos)
}
}
}
appNames := args
if selector != "" || len(projects) > 0 {
list, err := appIf.List(ctx, &application.ApplicationQuery{
@@ -2174,6 +2297,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co
command.Flags().DurationVar(&ignoreNormalizerOpts.JQExecutionTimeout, "ignore-normalizer-jq-execution-timeout", normalizers.DefaultJQExecutionTimeout, "Set ignore normalizer JQ execution timeout")
command.Flags().StringArrayVar(&revisions, "revisions", []string{}, "Show manifests at specific revisions for source position in source-positions")
command.Flags().Int64SliceVar(&sourcePositions, "source-positions", []int64{}, "List of source positions. Default is empty array. Counting start at 1.")
command.Flags().StringArrayVar(&sourceNames, "source-names", []string{}, "List of source names. Default is an empty array.")
return command
}
@@ -2814,6 +2938,7 @@ func NewApplicationManifestsCommand(clientOpts *argocdclient.ClientOptions) *cob
revision string
revisions []string
sourcePositions []int64
sourceNames []string
local string
localRepoRoot string
)
@@ -2827,6 +2952,9 @@ func NewApplicationManifestsCommand(clientOpts *argocdclient.ClientOptions) *cob
# Get manifests for an application at a specific revision
argocd app manifests my-app --revision 0.0.1
# Get manifests for a multi-source application at specific revisions for specific sources
argocd app manifests my-app --revisions 0.0.1 --source-names src-base --revisions 0.0.2 --source-names src-values
# Get manifests for a multi-source application at specific revisions for specific sources
argocd app manifests my-app --revisions 0.0.1 --source-positions 1 --revisions 0.0.2 --source-positions 2
`),
@@ -2838,8 +2966,16 @@ func NewApplicationManifestsCommand(clientOpts *argocdclient.ClientOptions) *cob
os.Exit(1)
}
if len(revisions) != len(sourcePositions) {
errors.CheckError(fmt.Errorf("While using revisions and source-positions, length of values for both flags should be same."))
if len(sourceNames) > 0 && len(sourcePositions) > 0 {
errors.CheckError(fmt.Errorf("Only one of source-positions and source-names can be specified."))
}
if len(sourcePositions) > 0 && len(revisions) != len(sourcePositions) {
errors.CheckError(fmt.Errorf("While using --revisions and --source-positions, length of values for both flags should be same."))
}
if len(sourceNames) > 0 && len(revisions) != len(sourceNames) {
errors.CheckError(fmt.Errorf("While using --revisions and --source-names, length of values for both flags should be same."))
}
for _, pos := range sourcePositions {
@@ -2853,6 +2989,24 @@ func NewApplicationManifestsCommand(clientOpts *argocdclient.ClientOptions) *cob
conn, appIf := clientset.NewApplicationClientOrDie()
defer argoio.Close(conn)
app, err := appIf.Get(context.Background(), &application.ApplicationQuery{
Name: &appName,
AppNamespace: &appNs,
})
errors.CheckError(err)
if len(sourceNames) > 0 {
sourceNameToPosition := getSourceNameToPositionMap(app)
for _, name := range sourceNames {
if pos, ok := sourceNameToPosition[name]; !ok {
log.Fatalf("Unknown source name '%s'", name)
} else {
sourcePositions = append(sourcePositions, pos)
}
}
}
resources, err := appIf.ManagedResources(ctx, &application.ResourcesQuery{
ApplicationName: &appName,
AppNamespace: &appNs,
@@ -2863,9 +3017,6 @@ func NewApplicationManifestsCommand(clientOpts *argocdclient.ClientOptions) *cob
switch source {
case "git":
if local != "" {
app, err := appIf.Get(context.Background(), &application.ApplicationQuery{Name: &appName})
errors.CheckError(err)
settingsConn, settingsIf := clientset.NewSettingsClientOrDie()
defer argoio.Close(settingsConn)
argoSettings, err := settingsIf.Get(context.Background(), &settings.SettingsQuery{})
@@ -2934,6 +3085,7 @@ func NewApplicationManifestsCommand(clientOpts *argocdclient.ClientOptions) *cob
command.Flags().StringVar(&revision, "revision", "", "Show manifests at a specific revision")
command.Flags().StringArrayVar(&revisions, "revisions", []string{}, "Show manifests at specific revisions for the source at position in source-positions")
command.Flags().Int64SliceVar(&sourcePositions, "source-positions", []int64{}, "List of source positions. Default is empty array. Counting start at 1.")
command.Flags().StringArrayVar(&sourceNames, "source-names", []string{}, "List of source names. Default is an empty array.")
command.Flags().StringVar(&local, "local", "", "If set, show locally-generated manifests. Value is the absolute path to app manifests within the manifest repo. Example: '/home/username/apps/env/app-1'.")
command.Flags().StringVar(&localRepoRoot, "local-repo-root", ".", "Path to the local repository root. Used together with --local allows setting the repository root. Example: '/home/username/apps'.")
return command
@@ -3082,7 +3234,7 @@ func NewApplicationAddSourceCommand(clientOpts *argocdclient.ClientOptions) *cob
Use: "add-source APPNAME",
Short: "Adds a source to the list of sources in the application",
Example: ` # Append a source to the list of sources in the application
argocd app add-source guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook`,
argocd app add-source guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --source-name guestbook`,
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()
if len(args) != 1 {
@@ -3140,13 +3292,17 @@ func NewApplicationAddSourceCommand(clientOpts *argocdclient.ClientOptions) *cob
func NewApplicationRemoveSourceCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
sourcePosition int
sourceName string
appNamespace string
)
command := &cobra.Command{
Use: "remove-source APPNAME",
Short: "Remove a source from multiple sources application. Counting starts with 1. Default value is -1.",
Short: "Remove a source from multiple sources application.",
Example: ` # Remove the source at position 1 from application's sources. Counting starts at 1.
argocd app remove-source myapplication --source-position 1`,
argocd app remove-source myapplication --source-position 1
# Remove the source named "test" from application's sources.
argocd app remove-source myapplication --source-name test`,
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()
@@ -3155,7 +3311,7 @@ func NewApplicationRemoveSourceCommand(clientOpts *argocdclient.ClientOptions) *
os.Exit(1)
}
if sourcePosition <= 0 {
if sourceName == "" && sourcePosition <= 0 {
errors.CheckError(fmt.Errorf("Value of source-position must be greater than 0"))
}
@@ -3172,6 +3328,19 @@ func NewApplicationRemoveSourceCommand(clientOpts *argocdclient.ClientOptions) *
})
errors.CheckError(err)
if sourceName != "" && sourcePosition != -1 {
errors.CheckError(fmt.Errorf("Only one of source-position and source-name can be specified."))
}
if sourceName != "" {
sourceNameToPosition := getSourceNameToPositionMap(app)
if pos, ok := sourceNameToPosition[sourceName]; !ok {
log.Fatalf("Unknown source name '%s'", sourceName)
} else {
sourcePosition = int(pos)
}
}
if !app.Spec.HasMultipleSources() {
errors.CheckError(fmt.Errorf("Application does not have multiple sources configured"))
}
@@ -3186,17 +3355,71 @@ func NewApplicationRemoveSourceCommand(clientOpts *argocdclient.ClientOptions) *
app.Spec.Sources = append(app.Spec.Sources[:sourcePosition-1], app.Spec.Sources[sourcePosition:]...)
_, err = appIf.UpdateSpec(ctx, &application.ApplicationUpdateSpecRequest{
Name: &app.Name,
Spec: &app.Spec,
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
canDelete := promptUtil.Confirm("Are you sure you want to delete the source? [y/n]")
if canDelete {
_, err = appIf.UpdateSpec(ctx, &application.ApplicationUpdateSpecRequest{
Name: &app.Name,
Spec: &app.Spec,
AppNamespace: &appNs,
})
errors.CheckError(err)
fmt.Printf("Application '%s' updated successfully\n", app.ObjectMeta.Name)
} else {
fmt.Println("The command to delete the source was cancelled")
}
},
}
command.Flags().StringVarP(&appNamespace, "app-namespace", "N", "", "Namespace of the target application where the source will be appended")
command.Flags().IntVar(&sourcePosition, "source-position", -1, "Position of the source from the list of sources of the app. Counting starts at 1.")
command.Flags().StringVar(&sourceName, "source-name", "", "Name of the source from the list of sources of the app.")
return command
}
func NewApplicationConfirmDeletionCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var appNamespace string
command := &cobra.Command{
Use: "confirm-deletion APPNAME",
Short: "Confirms deletion/pruning of an application resources",
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()
if len(args) != 1 {
c.HelpFunc()(c, args)
os.Exit(1)
}
argocdClient := headless.NewClientOrDie(clientOpts, c)
conn, appIf := argocdClient.NewApplicationClientOrDie()
defer argoio.Close(conn)
appName, appNs := argo.ParseFromQualifiedName(args[0], appNamespace)
app, err := appIf.Get(ctx, &application.ApplicationQuery{
Name: &appName,
Refresh: getRefreshType(false, false),
AppNamespace: &appNs,
})
errors.CheckError(err)
annotations := app.Annotations
if annotations == nil {
annotations = map[string]string{}
app.Annotations = annotations
}
annotations[common.AnnotationDeletionApproved] = metav1.Now().Format(time.RFC3339)
_, err = appIf.Update(ctx, &application.ApplicationUpdateRequest{
Application: app,
Validate: ptr.To(false),
Project: &app.Spec.Project,
})
errors.CheckError(err)
fmt.Printf("Application '%s' updated successfully\n", app.ObjectMeta.Name)
},
}
command.Flags().StringVarP(&appNamespace, "app-namespace", "N", "", "Namespace of the target application where the source will be appended")
command.Flags().IntVar(&sourcePosition, "source-position", -1, "Position of the source from the list of sources of the app. Counting starts at 1.")
return command
}

View File

@@ -6,6 +6,7 @@ import (
"text/tabwriter"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -37,9 +38,7 @@ func TestPrintTreeViewAppResources(t *testing.T) {
w := tabwriter.NewWriter(buf, 0, 0, 2, ' ', 0)
printTreeViewAppResourcesNotOrphaned(nodeMapping, mapParentToChild, parentNode, w)
if err := w.Flush(); err != nil {
t.Fatal(err)
}
require.NoError(t, w.Flush())
output := buf.String()
assert.Contains(t, output, "Rollout")
@@ -78,9 +77,7 @@ func TestPrintTreeViewDetailedAppResources(t *testing.T) {
w := tabwriter.NewWriter(buf, 0, 0, 2, ' ', 0)
printDetailedTreeViewAppResourcesNotOrphaned(nodeMapping, mapParentToChild, parentNode, w)
if err := w.Flush(); err != nil {
t.Fatal(err)
}
require.NoError(t, w.Flush())
output := buf.String()
assert.Contains(t, output, "Rollout")

View File

@@ -5,6 +5,7 @@ import (
"os"
"text/tabwriter"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
"github.com/argoproj/argo-cd/v2/cmd/util"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -130,23 +131,32 @@ func NewApplicationDeleteResourceCommand(clientOpts *argocdclient.ClientOptions)
errors.CheckError(err)
objectsToDelete, err := util.FilterResources(command.Flags().Changed("group"), resources.Items, group, kind, namespace, resourceName, all)
errors.CheckError(err)
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
for i := range objectsToDelete {
obj := objectsToDelete[i]
gvk := obj.GroupVersionKind()
_, err = appIf.DeleteResource(ctx, &applicationpkg.ApplicationResourceDeleteRequest{
Name: &appName,
AppNamespace: &appNs,
Namespace: ptr.To(obj.GetNamespace()),
ResourceName: ptr.To(obj.GetName()),
Version: ptr.To(gvk.Version),
Group: ptr.To(gvk.Group),
Kind: ptr.To(gvk.Kind),
Force: &force,
Orphan: &orphan,
Project: ptr.To(project),
})
errors.CheckError(err)
log.Infof("Resource '%s' deleted", obj.GetName())
canDelete := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to delete %s/%s %s/%s ? [y/n]", gvk.Group, gvk.Kind, obj.GetNamespace(), obj.GetName()))
if canDelete {
_, err = appIf.DeleteResource(ctx, &applicationpkg.ApplicationResourceDeleteRequest{
Name: &appName,
AppNamespace: &appNs,
Namespace: ptr.To(obj.GetNamespace()),
ResourceName: ptr.To(obj.GetName()),
Version: ptr.To(gvk.Version),
Group: ptr.To(gvk.Group),
Kind: ptr.To(gvk.Kind),
Force: &force,
Orphan: &orphan,
Project: ptr.To(project),
})
errors.CheckError(err)
log.Infof("Resource '%s' deleted", obj.GetName())
} else {
fmt.Printf("The command to delete %s/%s %s/%s was cancelled.\n", gvk.Group, gvk.Kind, obj.GetNamespace(), obj.GetName())
}
}
}

View File

@@ -136,13 +136,8 @@ func TestFindRevisionHistoryWithoutPassedId(t *testing.T) {
}
history, err := findRevisionHistory(&application, -1)
if err != nil {
t.Fatal("Find revision history should fail without errors")
}
if history == nil {
t.Fatal("History should be found")
}
require.NoError(t, err, "Find revision history should fail without errors")
require.NotNil(t, history, "History should be found")
}
func TestPrintTreeViewAppGet(t *testing.T) {
@@ -249,13 +244,8 @@ func TestFindRevisionHistoryWithoutPassedIdWithMultipleSources(t *testing.T) {
}
history, err := findRevisionHistory(&application, -1)
if err != nil {
t.Fatal("Find revision history should fail without errors")
}
if history == nil {
t.Fatal("History should be found")
}
require.NoError(t, err, "Find revision history should fail without errors")
require.NotNil(t, history, "History should be found")
}
func TestDefaultWaitOptions(t *testing.T) {
@@ -308,17 +298,9 @@ func TestFindRevisionHistoryWithoutPassedIdAndEmptyHistoryList(t *testing.T) {
history, err := findRevisionHistory(&application, -1)
if err == nil {
t.Fatal("Find revision history should fail with errors")
}
if history != nil {
t.Fatal("History should be empty")
}
if err.Error() != "Application '' should have at least two successful deployments" {
t.Fatal("Find revision history should fail with correct error message")
}
require.Error(t, err, "Find revision history should fail with errors")
require.Nil(t, history, "History should be empty")
require.EqualError(t, err, "Application '' should have at least two successful deployments", "Find revision history should fail with correct error message")
}
func TestFindRevisionHistoryWithPassedId(t *testing.T) {
@@ -346,17 +328,9 @@ func TestFindRevisionHistoryWithPassedId(t *testing.T) {
}
history, err := findRevisionHistory(&application, 3)
if err != nil {
t.Fatal("Find revision history should fail without errors")
}
if history == nil {
t.Fatal("History should be found")
}
if history.Revision != "123" {
t.Fatal("Failed to find correct history with correct revision")
}
require.NoError(t, err, "Find revision history should fail without errors")
require.NotNil(t, history, "History should be found")
require.Equal(t, "123", history.Revision, "Failed to find correct history with correct revision")
}
func TestFindRevisionHistoryWithPassedIdThatNotExist(t *testing.T) {
@@ -385,17 +359,9 @@ func TestFindRevisionHistoryWithPassedIdThatNotExist(t *testing.T) {
history, err := findRevisionHistory(&application, 4)
if err == nil {
t.Fatal("Find revision history should fail with errors")
}
if history != nil {
t.Fatal("History should be not found")
}
if err.Error() != "Application '' does not have deployment id '4' in history\n" {
t.Fatal("Find revision history should fail with correct error message")
}
require.Error(t, err, "Find revision history should fail with errors")
require.Nil(t, history, "History should be not found")
require.EqualError(t, err, "Application '' does not have deployment id '4' in history\n", "Find revision history should fail with correct error message")
}
func Test_groupObjsByKey(t *testing.T) {
@@ -457,9 +423,7 @@ func TestFormatSyncPolicy(t *testing.T) {
policy := formatSyncPolicy(app)
if policy != "Manual" {
t.Fatalf("Incorrect policy %q, should be Manual", policy)
}
require.Equalf(t, "Manual", policy, "Incorrect policy %q, should be Manual", policy)
})
t.Run("Auto policy", func(t *testing.T) {
@@ -473,9 +437,7 @@ func TestFormatSyncPolicy(t *testing.T) {
policy := formatSyncPolicy(app)
if policy != "Auto" {
t.Fatalf("Incorrect policy %q, should be Auto", policy)
}
require.Equalf(t, "Auto", policy, "Incorrect policy %q, should be Auto", policy)
})
t.Run("Auto policy with prune", func(t *testing.T) {
@@ -491,9 +453,7 @@ func TestFormatSyncPolicy(t *testing.T) {
policy := formatSyncPolicy(app)
if policy != "Auto-Prune" {
t.Fatalf("Incorrect policy %q, should be Auto-Prune", policy)
}
require.Equalf(t, "Auto-Prune", policy, "Incorrect policy %q, should be Auto-Prune", policy)
})
}
@@ -510,9 +470,7 @@ func TestFormatConditionSummary(t *testing.T) {
}
summary := formatConditionsSummary(app)
if summary != "<none>" {
t.Fatalf("Incorrect summary %q, should be <none>", summary)
}
require.Equalf(t, "<none>", summary, "Incorrect summary %q, should be <none>", summary)
})
t.Run("Few conditions are defined", func(t *testing.T) {
@@ -533,9 +491,28 @@ func TestFormatConditionSummary(t *testing.T) {
}
summary := formatConditionsSummary(app)
if summary != "type1(2),type2" && summary != "type2,type1(2)" {
t.Fatalf("Incorrect summary %q, should be type1(2),type2", summary)
require.Equalf(t, "type1(2),type2", summary, "Incorrect summary %q, should be type1(2),type2", summary)
})
t.Run("Conditions are sorted for idempotent summary", func(t *testing.T) {
app := v1alpha1.Application{
Status: v1alpha1.ApplicationStatus{
Conditions: []v1alpha1.ApplicationCondition{
{
Type: "type2",
},
{
Type: "type1",
},
{
Type: "type1",
},
},
},
}
summary := formatConditionsSummary(app)
require.Equalf(t, "type1(2),type2", summary, "Incorrect summary %q, should be type1(2),type2", summary)
})
}
@@ -546,9 +523,7 @@ func TestPrintOperationResult(t *testing.T) {
return nil
})
if output != "" {
t.Fatalf("Incorrect print operation output %q, should be ''", output)
}
require.Emptyf(t, output, "Incorrect print operation output %q, should be ''", output)
})
t.Run("Operation state sync result is not empty", func(t *testing.T) {
@@ -562,9 +537,7 @@ func TestPrintOperationResult(t *testing.T) {
})
expectation := "Operation: Sync\nSync Revision: revision\nPhase: \nStart: 0001-01-01 00:00:00 +0000 UTC\nFinished: 2020-11-10 23:00:00 +0000 UTC\nDuration: 2333448h16m18.871345152s\n"
if output != expectation {
t.Fatalf("Incorrect print operation output %q, should be %q", output, expectation)
}
require.Equalf(t, output, expectation, "Incorrect print operation output %q, should be %q", output, expectation)
})
t.Run("Operation state sync result with message is not empty", func(t *testing.T) {
@@ -579,9 +552,7 @@ func TestPrintOperationResult(t *testing.T) {
})
expectation := "Operation: Sync\nSync Revision: revision\nPhase: \nStart: 0001-01-01 00:00:00 +0000 UTC\nFinished: 2020-11-10 23:00:00 +0000 UTC\nDuration: 2333448h16m18.871345152s\nMessage: test\n"
if output != expectation {
t.Fatalf("Incorrect print operation output %q, should be %q", output, expectation)
}
require.Equalf(t, output, expectation, "Incorrect print operation output %q, should be %q", output, expectation)
})
}
@@ -617,9 +588,7 @@ func TestPrintApplicationHistoryTable(t *testing.T) {
expectation := "SOURCE test\nID DATE REVISION\n1 0001-01-01 00:00:00 +0000 UTC 1\n2 0001-01-01 00:00:00 +0000 UTC 2\n3 0001-01-01 00:00:00 +0000 UTC 3\n"
if output != expectation {
t.Fatalf("Incorrect print operation output %q, should be %q", output, expectation)
}
require.Equalf(t, output, expectation, "Incorrect print operation output %q, should be %q", output, expectation)
}
func TestPrintApplicationHistoryTableWithMultipleSources(t *testing.T) {
@@ -696,9 +665,7 @@ func TestPrintApplicationHistoryTableWithMultipleSources(t *testing.T) {
expectation := "SOURCE test\nID DATE REVISION\n0 0001-01-01 00:00:00 +0000 UTC 0\n\nSOURCE test-1\nID DATE REVISION\n1 0001-01-01 00:00:00 +0000 UTC 1a\n2 0001-01-01 00:00:00 +0000 UTC 2a\n3 0001-01-01 00:00:00 +0000 UTC 3a\n\nSOURCE test-2\nID DATE REVISION\n1 0001-01-01 00:00:00 +0000 UTC 1b\n2 0001-01-01 00:00:00 +0000 UTC 2b\n3 0001-01-01 00:00:00 +0000 UTC 3b\n"
if output != expectation {
t.Fatalf("Incorrect print operation output %q, should be %q", output, expectation)
}
require.Equalf(t, output, expectation, "Incorrect print operation output %q, should be %q", output, expectation)
}
func TestPrintAppSummaryTable(t *testing.T) {
@@ -912,9 +879,7 @@ func TestPrintAppConditions(t *testing.T) {
return nil
})
expectation := "CONDITION\tMESSAGE\tLAST TRANSITION\nDeletionError\ttest\t<nil>\nExcludedResourceWarning\ttest2\t<nil>\nRepeatedResourceWarning\ttest3\t<nil>\n"
if output != expectation {
t.Fatalf("Incorrect print app conditions output %q, should be %q", output, expectation)
}
require.Equalf(t, output, expectation, "Incorrect print app conditions output %q, should be %q", output, expectation)
}
func TestPrintParams(t *testing.T) {
@@ -991,9 +956,7 @@ func TestPrintParams(t *testing.T) {
return nil
})
if output != tc.expectedOutput {
t.Fatalf("Incorrect print params output %q, should be %q\n", output, tc.expectedOutput)
}
require.Equalf(t, tc.expectedOutput, output, "Incorrect print params output %q, should be %q\n", output, tc.expectedOutput)
})
}
}
@@ -1005,9 +968,7 @@ func TestAppUrlDefault(t *testing.T) {
PlainText: true,
}), "test")
expectation := "http://localhost:80/applications/test"
if result != expectation {
t.Fatalf("Incorrect url %q, should be %q", result, expectation)
}
require.Equalf(t, result, expectation, "Incorrect url %q, should be %q", result, expectation)
})
t.Run("https", func(t *testing.T) {
result := appURLDefault(argocdclient.NewClientOrDie(&argocdclient.ClientOptions{
@@ -1015,18 +976,14 @@ func TestAppUrlDefault(t *testing.T) {
PlainText: false,
}), "test")
expectation := "https://localhost/applications/test"
if result != expectation {
t.Fatalf("Incorrect url %q, should be %q", result, expectation)
}
require.Equalf(t, result, expectation, "Incorrect url %q, should be %q", result, expectation)
})
}
func TestTruncateString(t *testing.T) {
result := truncateString("argocdtool", 2)
expectation := "ar..."
if result != expectation {
t.Fatalf("Incorrect truncate string %q, should be %q", result, expectation)
}
require.Equalf(t, result, expectation, "Incorrect truncate string %q, should be %q", result, expectation)
}
func TestGetService(t *testing.T) {
@@ -1040,9 +997,7 @@ func TestGetService(t *testing.T) {
}
result := getServer(app)
expectation := "test-server"
if result != expectation {
t.Fatalf("Incorrect server %q, should be %q", result, expectation)
}
require.Equal(t, result, expectation, "Incorrect server %q, should be %q", result, expectation)
})
t.Run("Name", func(t *testing.T) {
app := &v1alpha1.Application{
@@ -1054,9 +1009,7 @@ func TestGetService(t *testing.T) {
}
result := getServer(app)
expectation := "test-name"
if result != expectation {
t.Fatalf("Incorrect server name %q, should be %q", result, expectation)
}
require.Equal(t, result, expectation, "Incorrect server name %q, should be %q", result, expectation)
})
}
@@ -1070,17 +1023,9 @@ func TestTargetObjects(t *testing.T) {
},
}
objects, err := targetObjects(resources)
if err != nil {
t.Fatal("operation should finish without error")
}
if len(objects) != 2 {
t.Fatalf("incorrect number of objects %v, should be 2", len(objects))
}
if objects[0].GetName() != "test-helm-guestbook" {
t.Fatalf("incorrect name %q, should be %q", objects[0].GetName(), "test-helm-guestbook")
}
require.NoError(t, err, "operation should finish without error")
require.Lenf(t, objects, 2, "incorrect number of objects %v, should be 2", len(objects))
require.Equalf(t, "test-helm-guestbook", objects[0].GetName(), "incorrect name %q, should be %q", objects[0].GetName(), "test-helm-guestbook")
}
func TestTargetObjects_invalid(t *testing.T) {
@@ -1107,9 +1052,7 @@ func TestPrintApplicationNames(t *testing.T) {
return nil
})
expectation := "test\ntest\n"
if output != expectation {
t.Fatalf("Incorrect print params output %q, should be %q", output, expectation)
}
require.Equalf(t, output, expectation, "Incorrect print params output %q, should be %q", output, expectation)
}
func Test_unset(t *testing.T) {
@@ -1899,9 +1842,8 @@ func Test_hasAppChanged(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := hasAppChanged(tt.args.appReq, tt.args.appRes, tt.args.upsert); got != tt.want {
t.Errorf("hasAppChanged() = %v, want %v", got, tt.want)
}
got := hasAppChanged(tt.args.appReq, tt.args.appRes, tt.args.upsert)
assert.Equalf(t, tt.want, got, "hasAppChanged() = %v, want %v", got, tt.want)
})
}
}

View File

@@ -13,12 +13,12 @@ import (
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/admin"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/headless"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
cmdutil "github.com/argoproj/argo-cd/v2/cmd/util"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
"github.com/argoproj/argo-cd/v2/pkg/apiclient/applicationset"
arogappsetv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/util/argo"
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/argoproj/argo-cd/v2/util/errors"
"github.com/argoproj/argo-cd/v2/util/grpc"
argoio "github.com/argoproj/argo-cd/v2/util/io"
@@ -93,7 +93,6 @@ func NewApplicationSetGetCommand(clientOpts *argocdclient.ClientOptions) *cobra.
errors.CheckError(err)
case "wide", "":
printAppSetSummaryTable(appSet)
if len(appSet.Status.Conditions) > 0 {
fmt.Println()
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
@@ -345,12 +344,21 @@ func NewApplicationSetDeleteCommand(clientOpts *argocdclient.ClientOptions) *cob
conn, appIf := headless.NewClientOrDie(clientOpts, c).NewApplicationSetClientOrDie()
defer argoio.Close(conn)
var isTerminal bool = isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd())
var isConfirmAll bool = false
numOfApps := len(args)
promptFlag := c.Flag("yes")
if promptFlag.Changed && promptFlag.Value.String() == "true" {
noPrompt = true
}
var (
confirmAll = false
confirm = false
)
// This is for backward compatibility,
// before we showed the prompts only when condition isTerminal && !noPrompt is true
promptUtil := utils.NewPrompt(isTerminal && !noPrompt)
for _, appSetQualifiedName := range args {
appSetName, appSetNs := argo.ParseFromQualifiedName(appSetQualifiedName, "")
@@ -358,32 +366,17 @@ func NewApplicationSetDeleteCommand(clientOpts *argocdclient.ClientOptions) *cob
Name: appSetName,
AppsetNamespace: appSetNs,
}
if isTerminal && !noPrompt {
var lowercaseAnswer string
if numOfApps == 1 {
lowercaseAnswer = cli.AskToProceedS("Are you sure you want to delete '" + appSetQualifiedName + "' and all its Applications? [y/n] ")
} else {
if !isConfirmAll {
lowercaseAnswer = cli.AskToProceedS("Are you sure you want to delete '" + appSetQualifiedName + "' and all its Applications? [y/n/A] where 'A' is to delete all specified ApplicationSets and their Applications without prompting")
if lowercaseAnswer == "a" || lowercaseAnswer == "all" {
lowercaseAnswer = "y"
isConfirmAll = true
}
} else {
lowercaseAnswer = "y"
}
}
if lowercaseAnswer == "y" || lowercaseAnswer == "yes" {
_, err := appIf.Delete(ctx, &appsetDeleteReq)
errors.CheckError(err)
fmt.Printf("applicationset '%s' deleted\n", appSetQualifiedName)
} else {
fmt.Println("The command to delete '" + appSetQualifiedName + "' was cancelled.")
}
} else {
messageForSingle := "Are you sure you want to delete '" + appSetQualifiedName + "' and all its Applications? [y/n] "
messageForAll := "Are you sure you want to delete '" + appSetQualifiedName + "' and all its Applications? [y/n/a] where 'a' is to delete all specified ApplicationSets and their Applications without prompting"
if !confirmAll {
confirm, confirmAll = promptUtil.ConfirmBaseOnCount(messageForSingle, messageForAll, numOfApps)
}
if confirm || confirmAll {
_, err := appIf.Delete(ctx, &appsetDeleteReq)
errors.CheckError(err)
fmt.Printf("applicationset '%s' deleted\n", appSetQualifiedName)
} else {
fmt.Println("The command to delete '" + appSetQualifiedName + "' was cancelled.")
}
}
},
@@ -441,7 +434,6 @@ func getServerForAppSet(appSet *arogappsetv1.ApplicationSet) string {
}
func printAppSetSummaryTable(appSet *arogappsetv1.ApplicationSet) {
source := appSet.Spec.Template.Spec.GetSource()
fmt.Printf(printOpFmtStr, "Name:", appSet.QualifiedName())
fmt.Printf(printOpFmtStr, "Project:", appSet.Spec.Template.Spec.GetProject())
fmt.Printf(printOpFmtStr, "Server:", getServerForAppSet(appSet))
@@ -451,7 +443,17 @@ func printAppSetSummaryTable(appSet *arogappsetv1.ApplicationSet) {
} else {
fmt.Println("Sources:")
}
printAppSourceDetails(&source)
// if no source has been defined, print the default value for a source
if len(appSet.Spec.Template.Spec.GetSources()) == 0 {
src := appSet.Spec.Template.Spec.GetSource()
printAppSourceDetails(&src)
} else {
// otherwise range over the sources and print each source details
for _, source := range appSet.Spec.Template.Spec.GetSources() {
printAppSourceDetails(&source)
}
}
var (
syncPolicyStr string

View File

@@ -29,9 +29,7 @@ func TestPrintApplicationSetNames(t *testing.T) {
return nil
})
expectation := "test\nteam-one/test\n"
if output != expectation {
t.Fatalf("Incorrect print params output %q, should be %q", output, expectation)
}
require.Equalf(t, output, expectation, "Incorrect print params output %q, should be %q", output, expectation)
}
func TestPrintApplicationSetTable(t *testing.T) {
@@ -147,6 +145,26 @@ func TestPrintAppSetSummaryTable(t *testing.T) {
},
},
}
appsetSpecSource := baseAppSet.DeepCopy()
appsetSpecSource.Spec.Template.Spec.Source = &v1alpha1.ApplicationSource{
RepoURL: "test1",
TargetRevision: "master1",
Path: "/test1",
}
appsetSpecSources := baseAppSet.DeepCopy()
appsetSpecSources.Spec.Template.Spec.Sources = v1alpha1.ApplicationSources{
{
RepoURL: "test1",
TargetRevision: "master1",
Path: "/test1",
},
{
RepoURL: "test2",
TargetRevision: "master2",
Path: "/test2",
},
}
appsetSpecSyncPolicy := baseAppSet.DeepCopy()
appsetSpecSyncPolicy.Spec.SyncPolicy = &v1alpha1.ApplicationSetSyncPolicy{
@@ -212,6 +230,37 @@ Source:
- Repo:
Target:
SyncPolicy: Automated
`,
},
{
name: "appset with a single source",
appSet: appsetSpecSource,
expectedOutput: `Name: app-name
Project: default
Server:
Namespace:
Source:
- Repo: test1
Target: master1
Path: /test1
SyncPolicy: <none>
`,
},
{
name: "appset with a multiple sources",
appSet: appsetSpecSources,
expectedOutput: `Name: app-name
Project: default
Server:
Namespace:
Sources:
- Repo: test1
Target: master1
Path: /test1
- Repo: test2
Target: master2
Path: /test2
SyncPolicy: <none>
`,
},
} {

View File

@@ -11,6 +11,7 @@ import (
"github.com/spf13/cobra"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/headless"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
certificatepkg "github.com/argoproj/argo-cd/v2/pkg/apiclient/certificate"
appsv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -236,19 +237,26 @@ func NewCertRemoveCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command
err := fmt.Errorf("A single wildcard is not allowed as REPOSERVER name.")
errors.CheckError(err)
}
certQuery = certificatepkg.RepositoryCertificateQuery{
HostNamePattern: hostNamePattern,
CertType: certType,
CertSubType: certSubType,
}
removed, err := certIf.DeleteCertificate(ctx, &certQuery)
errors.CheckError(err)
if len(removed.Items) > 0 {
for _, cert := range removed.Items {
fmt.Printf("Removed cert for '%s' of type '%s' (subtype '%s')\n", cert.ServerName, cert.CertType, cert.CertSubType)
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
canDelete := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to remove all certificates for '%s'? [y/n]", hostNamePattern))
if canDelete {
certQuery = certificatepkg.RepositoryCertificateQuery{
HostNamePattern: hostNamePattern,
CertType: certType,
CertSubType: certSubType,
}
removed, err := certIf.DeleteCertificate(ctx, &certQuery)
errors.CheckError(err)
if len(removed.Items) > 0 {
for _, cert := range removed.Items {
fmt.Printf("Removed cert for '%s' of type '%s' (subtype '%s')\n", cert.ServerName, cert.CertType, cert.CertSubType)
}
} else {
fmt.Println("No certificates were removed (none matched the given pattern)")
}
} else {
fmt.Println("No certificates were removed (none matched the given patterns)")
fmt.Printf("The command to remove all certificates for '%s' was cancelled.\n", hostNamePattern)
}
},
}

View File

@@ -2,6 +2,7 @@ package commands
import (
"fmt"
"net/http"
"os"
"regexp"
"strings"
@@ -106,6 +107,11 @@ func NewClusterAddCommand(clientOpts *argocdclient.ClientOptions, pathOpts *clie
contextName := args[0]
conf, err := getRestConfig(pathOpts, contextName)
errors.CheckError(err)
if clusterOpts.ProxyUrl != "" {
u, err := argoappv1.ParseProxyUrl(clusterOpts.ProxyUrl)
errors.CheckError(err)
conf.Proxy = http.ProxyURL(u)
}
clientset, err := kubernetes.NewForConfig(conf)
errors.CheckError(err)
managerBearerToken := ""
@@ -186,11 +192,12 @@ func NewClusterAddCommand(clientOpts *argocdclient.ClientOptions, pathOpts *clie
}
command.PersistentFlags().StringVar(&pathOpts.LoadingRules.ExplicitPath, pathOpts.ExplicitFileFlag, pathOpts.LoadingRules.ExplicitPath, "use a particular kubeconfig file")
command.Flags().BoolVar(&clusterOpts.Upsert, "upsert", false, "Override an existing cluster with the same name even if the spec differs")
command.Flags().StringVar(&clusterOpts.ServiceAccount, "service-account", "", fmt.Sprintf("System namespace service account to use for kubernetes resource management. If not set then default \"%s\" SA will be created", clusterauth.ArgoCDManagerServiceAccount))
command.Flags().StringVar(&clusterOpts.ServiceAccount, "service-account", "", fmt.Sprintf("System namespace service account to use for kubernetes resource management. If not set then default %q SA will be created", clusterauth.ArgoCDManagerServiceAccount))
command.Flags().StringVar(&clusterOpts.SystemNamespace, "system-namespace", common.DefaultSystemNamespace, "Use different system namespace")
command.Flags().BoolVarP(&skipConfirmation, "yes", "y", false, "Skip explicit confirmation")
command.Flags().StringArrayVar(&labels, "label", nil, "Set metadata labels (e.g. --label key=value)")
command.Flags().StringArrayVar(&annotations, "annotation", nil, "Set metadata annotations (e.g. --annotation key=value)")
command.Flags().StringVar(&clusterOpts.ProxyUrl, "proxy-url", "", "use proxy to connect cluster")
cmdutil.AddClusterFlags(command, &clusterOpts)
return command
}
@@ -373,6 +380,8 @@ func printClusterDetails(clusters []argoappv1.Cluster) {
fmt.Printf(" Basic authentication: %v\n", cluster.Config.Username != "")
fmt.Printf(" oAuth authentication: %v\n", cluster.Config.BearerToken != "")
fmt.Printf(" AWS authentication: %v\n", cluster.Config.AWSAuthConfig != nil)
fmt.Printf("\nDisable compression: %v\n", cluster.Config.DisableCompression)
fmt.Printf("\nUse proxy: %v\n", cluster.Config.ProxyUrl != "")
fmt.Println()
}
}

View File

@@ -32,11 +32,12 @@ func Test_printClusterTable(t *testing.T) {
Server: "my-server",
Name: "my-name",
Config: v1alpha1.ClusterConfig{
Username: "my-username",
Password: "my-password",
BearerToken: "my-bearer-token",
TLSClientConfig: v1alpha1.TLSClientConfig{},
AWSAuthConfig: nil,
Username: "my-username",
Password: "my-password",
BearerToken: "my-bearer-token",
TLSClientConfig: v1alpha1.TLSClientConfig{},
AWSAuthConfig: nil,
DisableCompression: false,
},
ConnectionState: v1alpha1.ConnectionState{
Status: "my-status",
@@ -97,12 +98,12 @@ func Test_getRestConfig(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got, err := getRestConfig(tt.args.pathOpts, tt.args.ctxName); err == nil {
require.Equal(t, tt.expected, got)
} else if tt.wantErr {
require.Equal(t, tt.expectedErr, err.Error())
got, err := getRestConfig(tt.args.pathOpts, tt.args.ctxName)
if tt.wantErr {
require.EqualError(t, err, tt.expectedErr)
} else {
t.Errorf("An unexpected error occurred during test %s:\n%s", tt.name, err.Error())
require.NoErrorf(t, err, "An unexpected error occurred during test %s", tt.name)
require.Equal(t, tt.expected, got)
}
})
}

View File

@@ -0,0 +1,44 @@
package commands
import (
"fmt"
"strconv"
"github.com/spf13/cobra"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
"github.com/argoproj/argo-cd/v2/util/errors"
"github.com/argoproj/argo-cd/v2/util/localconfig"
)
// NewConfigureCommand returns a new instance of an `argocd configure` command
func NewConfigureCommand(globalClientOpts *argocdclient.ClientOptions) *cobra.Command {
var promptsEnabled bool
command := &cobra.Command{
Use: "configure",
Short: "Manage local configuration",
Example: `# Enable optional interactive prompts
argocd configure --prompts-enabled
argocd configure --prompts-enabled=true
# Disable optional interactive prompts
argocd configure --prompts-enabled=false`,
Run: func(c *cobra.Command, args []string) {
localCfg, err := localconfig.ReadLocalConfig(globalClientOpts.ConfigPath)
errors.CheckError(err)
localCfg.PromptsEnabled = promptsEnabled
err = localconfig.WriteLocalConfig(*localCfg, globalClientOpts.ConfigPath)
errors.CheckError(err)
fmt.Println("Successfully updated the following configuration settings:")
fmt.Printf("prompts-enabled: %v\n", strconv.FormatBool(localCfg.PromptsEnabled))
},
}
command.Flags().BoolVar(&promptsEnabled, "prompts-enabled", localconfig.GetPromptsEnabled(false), "Enable (or disable) optional interactive prompts")
return command
}

View File

@@ -0,0 +1,97 @@
package commands
import (
"os"
"testing"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/util/localconfig"
)
func TestNewConfigureCommand_PromptsEnabled_DefaultTrue(t *testing.T) {
// Write the test config file
err := os.WriteFile(testConfigFilePath, []byte(testConfig), os.ModePerm)
require.NoError(t, err)
defer os.Remove(testConfigFilePath)
err = os.Chmod(testConfigFilePath, 0o600)
require.NoError(t, err, "Could not change the file permission to 0600 %v", err)
localConfig, err := localconfig.ReadLocalConfig(testConfigFilePath)
require.NoError(t, err)
assert.False(t, localConfig.PromptsEnabled)
// Set `PromptsEnabled` to `true` using `argocd configure --prompts-enabled`
cmd := NewConfigureCommand(&argocdclient.ClientOptions{ConfigPath: testConfigFilePath})
cmd.SetArgs([]string{"--prompts-enabled"})
err = cmd.Execute()
require.NoError(t, err)
// Read the test config file
localConfig, err = localconfig.ReadLocalConfig(testConfigFilePath)
require.NoError(t, err)
assert.True(t, localConfig.PromptsEnabled)
}
func TestNewConfigureCommand_PromptsEnabled_True(t *testing.T) {
// Write the test config file
err := os.WriteFile(testConfigFilePath, []byte(testConfig), os.ModePerm)
require.NoError(t, err)
defer os.Remove(testConfigFilePath)
err = os.Chmod(testConfigFilePath, 0o600)
require.NoError(t, err, "Could not change the file permission to 0600 %v", err)
localConfig, err := localconfig.ReadLocalConfig(testConfigFilePath)
require.NoError(t, err)
assert.False(t, localConfig.PromptsEnabled)
// Set `PromptsEnabled` to `true` using `argocd configure --prompts-enabled=true`
cmd := NewConfigureCommand(&argocdclient.ClientOptions{ConfigPath: testConfigFilePath})
cmd.SetArgs([]string{"--prompts-enabled=true"})
err = cmd.Execute()
require.NoError(t, err)
// Read the test config file
localConfig, err = localconfig.ReadLocalConfig(testConfigFilePath)
require.NoError(t, err)
assert.True(t, localConfig.PromptsEnabled)
}
func TestNewConfigureCommand_PromptsEnabled_False(t *testing.T) {
// Write the test config file
err := os.WriteFile(testConfigFilePath, []byte(testConfig), os.ModePerm)
require.NoError(t, err)
defer os.Remove(testConfigFilePath)
err = os.Chmod(testConfigFilePath, 0o600)
require.NoError(t, err, "Could not change the file permission to 0600 %v", err)
localConfig, err := localconfig.ReadLocalConfig(testConfigFilePath)
require.NoError(t, err)
assert.False(t, localConfig.PromptsEnabled)
// Set `PromptsEnabled` to `false` using `argocd configure --prompts-enabled=false`
cmd := NewConfigureCommand(&argocdclient.ClientOptions{ConfigPath: testConfigFilePath})
cmd.SetArgs([]string{"--prompts-enabled=false"})
err = cmd.Execute()
require.NoError(t, err)
// Read the test config file
localConfig, err = localconfig.ReadLocalConfig(testConfigFilePath)
require.NoError(t, err)
assert.False(t, localConfig.PromptsEnabled)
}

View File

@@ -9,6 +9,7 @@ import (
"github.com/spf13/cobra"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/headless"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
gpgkeypkg "github.com/argoproj/argo-cd/v2/pkg/apiclient/gpgkey"
appsv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -167,11 +168,21 @@ func NewGPGDeleteCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command
if len(args) != 1 {
errors.CheckError(fmt.Errorf("Missing KEYID argument"))
}
keyId := args[0]
conn, gpgIf := headless.NewClientOrDie(clientOpts, c).NewGPGKeyClientOrDie()
defer argoio.Close(conn)
_, err := gpgIf.Delete(ctx, &gpgkeypkg.GnuPGPublicKeyQuery{KeyID: args[0]})
errors.CheckError(err)
fmt.Printf("Deleted key with key ID %s\n", args[0])
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
canDelete := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to remove '%s'? [y/n] ", keyId))
if canDelete {
_, err := gpgIf.Delete(ctx, &gpgkeypkg.GnuPGPublicKeyQuery{KeyID: keyId})
errors.CheckError(err)
fmt.Printf("Deleted key with key ID %s\n", keyId)
} else {
fmt.Printf("The command to delete key with key ID '%s' was cancelled.\n", keyId)
}
},
}
return command

View File

@@ -14,8 +14,7 @@ import (
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
corev1 "k8s.io/api/core/v1"
metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
runtimeUtil "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/dynamic"
@@ -129,7 +128,7 @@ func (c *forwardRepoClientset) NewRepoServerClient() (io.Closer, repoapiclient.R
}
repoServerName := c.repoServerName
repoServererviceLabelSelector := common.LabelKeyComponentRepoServer + "=" + common.LabelValueComponentRepoServer
repoServerServices, err := c.kubeClientset.CoreV1().Services(c.namespace).List(context.Background(), metaV1.ListOptions{LabelSelector: repoServererviceLabelSelector})
repoServerServices, err := c.kubeClientset.CoreV1().Services(c.namespace).List(context.Background(), v1.ListOptions{LabelSelector: repoServererviceLabelSelector})
if err != nil {
c.err = err
return
@@ -177,7 +176,7 @@ func testAPI(ctx context.Context, clientOpts *apiclient.ClientOptions) error {
//
// If the clientOpts enables core mode, but the local config does not have core mode enabled, this function will
// not start the local server.
func MaybeStartLocalServer(ctx context.Context, clientOpts *apiclient.ClientOptions, ctxStr string, port *int, address *string, clientConfig clientcmd.ClientConfig) error {
func MaybeStartLocalServer(ctx context.Context, clientOpts *apiclient.ClientOptions, ctxStr string, port *int, address *string, compression cache.RedisCompressionType, clientConfig clientcmd.ClientConfig) error {
if clientConfig == nil {
flags := pflag.NewFlagSet("tmp", pflag.ContinueOnError)
clientConfig = cli.AddKubectlFlagsToSet(flags)
@@ -244,10 +243,6 @@ func MaybeStartLocalServer(ctx context.Context, clientOpts *apiclient.ClientOpti
if err != nil {
return fmt.Errorf("error adding argo resources to scheme: %w", err)
}
err = corev1.AddToScheme(scheme)
if err != nil {
return fmt.Errorf("error adding corev1 resources to scheme: %w", err)
}
controllerClientset, err := client.New(restConfig, client.Options{
Scheme: scheme,
})
@@ -270,7 +265,7 @@ func MaybeStartLocalServer(ctx context.Context, clientOpts *apiclient.ClientOpti
log.Warnf("Failed to fetch & set redis password for namespace %s: %v", namespace, err)
}
appstateCache := appstatecache.NewCache(cache.NewCache(&forwardCacheClient{namespace: namespace, context: ctxStr, compression: cache.RedisCompressionType(clientOpts.RedisCompression), redisHaProxyName: clientOpts.RedisHaProxyName, redisName: clientOpts.RedisName, redisPassword: redisOptions.Password}), time.Hour)
appstateCache := appstatecache.NewCache(cache.NewCache(&forwardCacheClient{namespace: namespace, context: ctxStr, compression: compression, redisHaProxyName: clientOpts.RedisHaProxyName, redisName: clientOpts.RedisName, redisPassword: redisOptions.Password}), time.Hour)
srv := server.NewServer(ctx, server.ArgoCDServerOpts{
EnableGZip: false,
Namespace: namespace,
@@ -321,7 +316,7 @@ func NewClientOrDie(opts *apiclient.ClientOptions, c *cobra.Command) apiclient.C
ctxStr := initialize.RetrieveContextIfChanged(c.Flag("context"))
// If we're in core mode, start the API server on the fly and configure the client `opts` to use it.
// If we're not in core mode, this function call will do nothing.
err := MaybeStartLocalServer(ctx, opts, ctxStr, nil, nil, nil)
err := MaybeStartLocalServer(ctx, opts, ctxStr, nil, nil, cache.RedisCompressionNone, nil)
if err != nil {
log.Fatal(err)
}

View File

@@ -7,6 +7,7 @@ import (
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
"github.com/argoproj/argo-cd/v2/util/errors"
"github.com/argoproj/argo-cd/v2/util/localconfig"
@@ -35,19 +36,26 @@ $ argocd logout
log.Fatalf("Nothing to logout from")
}
ok := localCfg.RemoveToken(context)
if !ok {
log.Fatalf("Context %s does not exist", context)
}
promptUtil := utils.NewPrompt(globalClientOpts.PromptsEnabled)
err = localconfig.ValidateLocalConfig(*localCfg)
if err != nil {
log.Fatalf("Error in logging out: %s", err)
}
err = localconfig.WriteLocalConfig(*localCfg, globalClientOpts.ConfigPath)
errors.CheckError(err)
canLogout := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to log out from '%s'?", context))
if canLogout {
ok := localCfg.RemoveToken(context)
if !ok {
log.Fatalf("Context %s does not exist", context)
}
fmt.Printf("Logged out from '%s'\n", context)
err = localconfig.ValidateLocalConfig(*localCfg)
if err != nil {
log.Fatalf("Error in logging out: %s", err)
}
err = localconfig.WriteLocalConfig(*localCfg, globalClientOpts.ConfigPath)
errors.CheckError(err)
fmt.Printf("Logged out from '%s'\n", context)
} else {
log.Infof("Logout from '%s' cancelled", context)
}
},
}
return command

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