Compare commits

...

900 Commits

Author SHA1 Message Date
gcp-cherry-pick-bot[bot]
e1284e19e0 remove unwanted updating of source-position in app set command (#18887) (#18896)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-07-02 13:14:11 -04:00
github-actions[bot]
9e313e539b Bump version to 2.11.4 (#18894)
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: crenshaw-dev <crenshaw-dev@users.noreply.github.com>
2024-07-02 13:04:34 -04:00
Michael Crenshaw
0d1709f73b fix: update static schemas (#18889)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-07-02 13:00:41 -04:00
Michael Crenshaw
bfbceff5da fix(controller): bad server-side diffs (#18213) (2.11) (#18868)
* fix(controller): bad server-side diffs (#18213) (2.11)

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

* hopefully the right hash now

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-07-01 21:27:36 -04:00
gcp-cherry-pick-bot[bot]
0e71f09990 docs: Fix .path to .path.segments go template (#18872) (#18874)
Signed-off-by: Jaeseok Lee <devsunb@gmail.com>
Co-authored-by: Jaeseok Lee <devsunb@gmail.com>
2024-07-01 10:53:31 -04:00
gcp-cherry-pick-bot[bot]
07880f3c1d fix(webhook): bitbucket and azure not triggering refresh (#18289) (#18765) (#18819)
* fix(webhook): bitbucket and azure webhook not triggering refresh



* update unit test



* fix merge



* adjust logic for reposerver using ls-remote



---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-06-26 08:48:45 -04:00
Michael Crenshaw
24b198bf51 fix(appset): revert "keep reconciling even when params error occurred" (#17062) (#18781)
This reverts commit 86369ca71d.

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-25 15:34:37 -04:00
gcp-cherry-pick-bot[bot]
5fd645feac fix: docs site version selector broken (#18378) (#18724)
Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>
Signed-off-by: root <root@daocloud.io>
Co-authored-by: yyzxw <34639446+yyzxw@users.noreply.github.com>
2024-06-18 15:45:06 -04:00
gcp-cherry-pick-bot[bot]
b5c13b6139 fix: Update braces package to 3.0.3 (#18459) (#18663)
Signed-off-by: Keith Chong <kykchong@redhat.com>
Co-authored-by: Keith Chong <kykchong@redhat.com>
2024-06-14 09:18:42 -04:00
gcp-cherry-pick-bot[bot]
d75b23bf92 Revert "feat(server): log app Spec along with event (#16416)" (#18458) (#18639)
This reverts commit 820f4d861a.

Signed-off-by: jannfis <jann@mistrust.net>
Co-authored-by: Jann Fischer <jann@mistrust.net>
2024-06-13 14:49:34 -04:00
gcp-cherry-pick-bot[bot]
ac80860eda test: fix e2e tests after GHSA-3cqf-953p-h5cp (#18543) (#18641)
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-13 14:09:28 -04:00
Justin Marquis
c2bd38a11a chore(deps): upgrade redis to 7.2.15-alpine (cherry-pick release-2.11) (#18640)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-06-13 13:45:24 -04:00
Justin Marquis
13844b90ad chore: bump go version to 1.21.10 (#18540)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-06-07 08:49:08 -07:00
github-actions[bot]
3f344d54a4 Bump version to 2.11.3 (#18520)
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-06-06 11:36:25 +03:00
pasha-codefresh
e01bb5303a Merge pull request from GHSA-3cqf-953p-h5cp
* fix: prevent enumerating by cluster name, return exact error for case when cluster exists and not

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

* fix: prevent cluster enumeration by name

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

* fix: prevent cluster enumeration by name

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

* fix linter and add unit test

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

* fix linter and add unit test

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-06-06 11:30:10 +03:00
Blake Pettersson
320abb8d64 Merge pull request from GHSA-87p9-x75h-p4j2
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-06-06 11:25:55 +03:00
gcp-cherry-pick-bot[bot]
46342a9e82 fix: app names with non-alphanumeric characters in position 63 break syncs (issue #18237) (#18256) (#18439)
* Ensure truncated app label does not end in a special character



* Move regex to global variable and add out of bounds check



* Add test for out-of-bounds check



---------

Signed-off-by: Zack Robinson <robinsoz@arcesium.com>
Co-authored-by: Zack Robinson <zkislakrobinson@gmail.com>
2024-05-28 21:08:52 +03:00
gcp-cherry-pick-bot[bot]
cf17283ebe fix source ordering issue in manifest generation for multi-source app while using manifests and diff commands (#18395) (#18408) 2024-05-24 16:52:42 -04:00
github-actions[bot]
25f7504ecc Bump version to 2.11.2 (#18384)
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-05-23 16:29:33 +03:00
gcp-cherry-pick-bot[bot]
2b463d4103 fix: remove Egress NetworkPolicy for argocd-redis and argocd-redis-ha-haproxy (#18367) (#18372)
* fix: runing local failed



* fix: Redis egress removal



---------

Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>
Signed-off-by: May Zhang <may_zhang@intuit.com>
Co-authored-by: May Zhang <may_zhang@intuit.com>
Co-authored-by: yyzxw <1020938856@qq.com>
2024-05-22 19:48:08 -04:00
Michael Crenshaw
9d58e7e330 fix: revert registry change (#18328)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-21 13:52:51 -04:00
gcp-cherry-pick-bot[bot]
212a6ed05a fix(deps): upgrade otel dependency (#18285) (#18324)
Signed-off-by: Justin Marquis <justin@akuity.io>
Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2024-05-21 10:48:11 -07:00
Michael Crenshaw
140ffdda4d docs: add v2.11 notes to upgrading page (#18333)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-21 07:27:01 -10:00
gcp-cherry-pick-bot[bot]
47e7470726 chore(ci): fix release notes (#18132) (#18330)
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-05-21 12:53:13 -04:00
github-actions[bot]
9f40df0c29 Bump version to 2.11.1 (#18319)
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-05-21 16:44:13 +03:00
Leonardo Luz Almeida
6ef7b62a0f Merge pull request from GHSA-9766-5277-j5hr
* fix: Enable Redis authentication in the default installation

Signed-off-by: May Zhang <may_zhang@intuit.com>

* chore: fix git_test unit test

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

---------

Signed-off-by: May Zhang <may_zhang@intuit.com>
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Co-authored-by: May Zhang <may_zhang@intuit.com>
2024-05-21 16:23:09 +03:00
Leonardo Luz Almeida
f1a449e83e Merge pull request from GHSA-9766-5277-j5hr
* fix: Enable Redis authentication in the default installation

Signed-off-by: May Zhang <may_zhang@intuit.com>

* chore: fix git_test unit test

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

---------

Signed-off-by: May Zhang <may_zhang@intuit.com>
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Co-authored-by: May Zhang <may_zhang@intuit.com>
2024-05-21 16:22:43 +03:00
Keith Chong
6530c6fede fix: UI MultiSource - Helm Chart with values.yaml (#18188) (#18200)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-05-20 08:26:42 -04:00
gcp-cherry-pick-bot[bot]
786e141047 fix: copy visited map #11699 (#12667) (#18219)
This commit fixed an issue #11699 that caused a warning even if the cycle didn't exist.
Fix false cycle discovery by copying the visited resource map before recursively calling of getAppRecursive.

Fixes #11699

Signed-off-by: Arata Furukawa <old.river.new@gmail.com>
Co-authored-by: Arata Furukawa <old.river.new@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-05-20 13:28:17 +03:00
gcp-cherry-pick-bot[bot]
37dd289240 update resolveRevision to use the correct source for multi-source app (#18194) (#18202)
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-05-20 11:15:55 +03:00
gcp-cherry-pick-bot[bot]
eee5c06eff Fix logging hash with multiple sources (#18189) (#18193)
Signed-off-by: onee-only <kimww0306@gmail.com>
Co-authored-by: onee-only <kimww0306@gmail.com>
2024-05-20 11:14:34 +03:00
gcp-cherry-pick-bot[bot]
4621b3b528 chore(deps): upgrade helm to 3.14.4 (#18255) (#18286)
* chore(deps): upgrade helm to 3.14.4



* place checksums where they belong



---------

Signed-off-by: Justin Marquis <justin@akuity.io>
Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-05-20 11:13:29 +03:00
Ishita Sequeira
faeede3dc3 chore(deps): cherry-pick bump protobuf #17788 (#18284)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-05-20 10:14:30 +03:00
pasha-codefresh
dd4ee83442 chore: update gitops engine for force sync option (#5882) - 2.11 (#18125)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Co-authored-by: Kota Kimura <86363983+kkk777-7@users.noreply.github.com>
2024-05-08 18:08:25 +03:00
github-actions[bot]
d3f33c0019 Bump version to 2.11.0 (#18112)
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-05-07 18:57:05 +03:00
gcp-cherry-pick-bot[bot]
8cd8305212 docs: fix 404 styling (#18094) (#18104)
* docs: fix 404 styling



* hack around custom tag destruction



---------

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-05-07 09:07:38 -04:00
gcp-cherry-pick-bot[bot]
da6c2e9c08 fix: status.sync.comparedTo should use replace patch strategy (#18061) (#18071)
* fix: status.sync.comparedTo should use replace patch strategy



* add e2e tests



---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-05-04 13:57:47 -07:00
gcp-cherry-pick-bot[bot]
66f4934ecb fix: enable sha256 and sha512 for git ssh (#18028) (#18034)
* fix: bumping the knownhosts to v1.2.2 since this contains a fix that allows for sha256 and sha512 algorithms when using git ssh




* chore: remove older version of module from go sum



---------

Signed-off-by: Marc Arndt <marc@marcarndt.com>
Signed-off-by: Marc Arndt <m.arndt@evana.de>
Co-authored-by: Marc Arndt <marc@marcarndt.com>
Co-authored-by: Marc Arndt <m.arndt@evana.de>
2024-04-30 12:47:06 -04:00
github-actions[bot]
20fd621aa2 Bump version to 2.11.0-rc3 (#18019)
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-04-29 22:56:02 +03:00
Ishita Sequeira
f875931992 feat(cli): add support for multiple sources to sync command (#18016)
* update sync command

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

use arrays instead of map to display ApplicationManifetQuery fields in swagger

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

rebase and update logic for sync command

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

update conditions

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

update displayRevisions on OperationState

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

remove rerunreport file

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

fix index 0 out of bounds error

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

Address comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

fix codegen

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

rename GetSourcePtrBySourceIndex to GetSourcePtrByIndex

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

rename GetSourcePtrBySourcePosition to GetSourcePtrByPosition

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

rebase with master and resolve conflicts

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

fix codegen

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

Address feedback and add tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

fix unit test

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* codegen post cherry-pick

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-04-29 22:34:01 +03:00
pasha-codefresh
e1f890d176 feat: update notifications (#18017)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Co-authored-by: Lukas Aldershaab <lpjoergensen@gmail.com>
2024-04-29 11:42:19 -04:00
gcp-cherry-pick-bot[bot]
602f5445b1 Fix post-delete finalizer in appset (#18003) (#18005)
Signed-off-by: Joe Bowbeer <joe.bowbeer@gmail.com>
Co-authored-by: Joe Bowbeer <joe.bowbeer@gmail.com>
2024-04-26 16:47:48 -07:00
pasha-codefresh
617f8a414f fix: codegen after security fix (#17987)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-04-26 16:24:54 +03:00
pasha-codefresh
0460b9873e Merge pull request from GHSA-9m6p-x4h2-6frq
* feat: limit jq.Run with timeout

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

* feat: ignore normalizer jq execution timeout as env variable

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

* feat: customize error message and add doc section

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

* feat: improve log and change a way how to get variable

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

* chore: fix import`s order

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

* chore: rename variable inside sts

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

* chore: fix import order

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-04-26 12:24:32 +03:00
pasha-codefresh
25c6653d8a Merge pull request from GHSA-9m6p-x4h2-6frq
* feat: limit jq.Run with timeout

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

* feat: ignore normalizer jq execution timeout as env variable

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

* feat: customize error message and add doc section

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

* feat: improve log and change a way how to get variable

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

* chore: fix import`s order

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

* chore: rename variable inside sts

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

* chore: fix import order

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-04-26 12:24:02 +03:00
gcp-cherry-pick-bot[bot]
9f186dab30 fix: use cmp vs reflect.DeepEqual for comparing Applications (#17861) (#17940) (#17958)
* fix(compare): appset compare the child apps with cmp vs reflect



* remove debug lines



* remove debug lines



---------

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
Co-authored-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-04-24 16:21:05 -04:00
gcp-cherry-pick-bot[bot]
fb573e0008 docs: Mention configmap to enable new git file globbing by name (#17936) (#17938)
Signed-off-by: Christian Ciach <christian.ciach@gmail.com>
Co-authored-by: ChristianCiach <christian.ciach@gmail.com>
2024-04-23 09:41:05 -04:00
gcp-cherry-pick-bot[bot]
35a2ebe428 docs(cli): remove docs for non-existing argocd admin commands (#17924) (#17925)
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-22 12:32:13 -04:00
gcp-cherry-pick-bot[bot]
3bb7ac92e8 remove mention of beta state from apps-in-any-namespace doc (#17896) (#17899)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-04-19 14:04:34 +03:00
Amit Lin
2ef8fe2246 fix: debian source typo in Dockerfile (#17886)
Signed-off-by: Amit Lin <amitlin.dev@gmail.com>
2024-04-18 10:19:28 -04:00
gcp-cherry-pick-bot[bot]
ce0e3bc7f0 fix: invalid revision in re-used manifest cache (#17874) (#17877)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-04-18 10:50:19 +03:00
gcp-cherry-pick-bot[bot]
29cdd31572 fix(api): respect all allowed audiences, regardless of check order (#17876) (#17878)
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-04-17 21:12:13 -04:00
github-actions[bot]
24ef7775e7 Bump version to 2.11.0-rc2 (#17852)
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: pasha-codefresh <pasha-codefresh@users.noreply.github.com>
2024-04-15 22:40:31 +03:00
pasha-codefresh
b71f0c8b54 fix: codegen and e2e tests (#17851)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-04-15 22:35:51 +03:00
pasha-codefresh
edcf167be8 Merge pull request from GHSA-2gvw-w6fj-7m3c
* sec: validate a project before execute an action

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

* sec: validate a project before execute an action

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-04-15 10:20:07 +03:00
gcp-cherry-pick-bot[bot]
be48990126 fix(api): use arrays instead of map to display ApplicationManifetQuery fields in swagger (#17804) (#17820)
* use arrays instead of map to display ApplicationManifetQuery fields in swagger



* fix equality conditions for souce-position check



---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-04-12 16:07:55 -04:00
gcp-cherry-pick-bot[bot]
9d5b17403f chore: rename source-indexes to source-positions (#17746) (#17753)
* chore: rename source-indexes to source-positions



* update documentation



---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-04-05 09:39:13 -04:00
github-actions[bot]
f491935eb9 Bump version to 2.11.0-rc1 (#17751)
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: pasha-codefresh <pasha-codefresh@users.noreply.github.com>
2024-04-05 15:08:37 +03:00
Michael Crenshaw
040eb36740 fix(security): use Chainguard fork of git-urls (#17732)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-04 16:44:43 -04:00
AS
6523f251b8 chore(ui): improve the msg to user when deleteing the resource (#17734)
Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
2024-04-04 16:06:50 -04:00
Alexy Mantha
4e46a5e8fa feat(controller): use manifest generate path during comparison (#14242) (#15636)
* squash commits

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* Update util/git/client.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fix error message

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* add git client options

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* Update generated code

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* run fmt

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fix tests

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* failed gen

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* tweak logs and rename cache

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* validate revisions

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fix tests

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fix tests

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fmt

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fix linting

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fixes from review

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* generate

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fix

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* use log context

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

---------

Signed-off-by: Alexy Mantha <alexy@mantha.dev>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-04 16:01:11 -04:00
dependabot[bot]
618a4e914b chore(deps): bump library/busybox in /test/e2e/multiarch-container (#17664)
Bumps library/busybox from `650fd57` to `c3839dd`.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-04 09:27:15 -04:00
dependabot[bot]
3654d7f941 chore(deps): bump library/golang from 1.21.3 to 1.21.9 (#17722)
Bumps library/golang from 1.21.3 to 1.21.9.

---
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-04-04 09:26:23 -04:00
pasha-codefresh
c09e5b0003 chore: add v2.11 release cadence (#17727) 2024-04-04 12:24:42 +00:00
dependabot[bot]
a4b8c6645b chore(deps): bump library/golang in /test/container (#17721)
Bumps library/golang from 1.21.8 to 1.21.9.

---
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-04-04 15:08:50 +03:00
Alexander Matyushentsev
44da2063c7 fix: fix calculating patch for respect ignore diff feature (#17693)
* test: unit test for respectIgnoreDifferences bug

Signed-off-by: Jesse Suen <jesse@akuity.io>

* test: simplify unit test

Signed-off-by: Jesse Suen <jesse@akuity.io>

* fix: fix calculating patch for respect ignore diff feature

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

---------

Signed-off-by: Jesse Suen <jesse@akuity.io>
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Jesse Suen <jesse@akuity.io>
2024-04-03 22:56:59 +00:00
Ishita Sequeira
4b11524242 feat(cli): add support for multiple sources to app diff|manifests command with revisions flag (#17650)
* Add support for multiple source to manifests --revision command

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Update GetManifests to support multiple sources

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* remove testing logs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update cli docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* add extra validation for diff command

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix lint

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Empty-Commit

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert apimachinery version

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Update docs based on comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-04-03 18:26:56 +00:00
Petr Šťastný
c8d912f104 docs/user-guide/helm.md: fix typo valuesFile (#17716)
Signed-off-by: Petr Šťastný <petr@stastny.eu>
2024-04-03 14:08:25 -04:00
Lukasz
614f44c26c feat(server): Add maxPodLogsToRender setting (#14617)
Signed-off-by: lukasz <lukasz.luszczynski@getyourguide.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-04-03 13:06:12 -04:00
Philipp Trulson
affd1cb251 fix(ui): Fix color generation for pod name in logs viewer. Fixes #17704 (#17706)
* Fix color generation for pod name in logs viewer

Signed-off-by: Philipp Trulson <der-eismann@users.noreply.github.com>

* Add rebuy to users.md

Signed-off-by: Philipp Trulson <der-eismann@users.noreply.github.com>

---------

Signed-off-by: Philipp Trulson <der-eismann@users.noreply.github.com>
2024-04-02 16:12:06 -04:00
Kostis (Codefresh)
405949b127 docs: clarify multiple sources example (#17698)
Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>
2024-04-02 13:07:58 -04:00
suhas-chikkanna
f287daba0d chore: Update USERS.md (#17683)
Add Shield.com as one of the users in the USER.md file

Signed-off-by: suhas-chikkanna <162577490+suhas-chikkanna@users.noreply.github.com>
2024-04-01 11:08:38 -04:00
Suraj yadav
7deafc4014 feat(ui): metadata.annotations: too long message Improved (#17452)
* metadata.annotations: too long

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

* added as a default case

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

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-03-31 22:16:36 -04:00
Mangaal
766a6da2cd feat: Enhance ArgoCD CLI: Dynamic Repo Server Retrieval with --core and --refresh Flags (#17613)
* add const key value for ComponentRepoServer

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* update NewRepoServerClient() to look for service with  ComponentRepoServer labels , if the label exist construct label selector PortForward

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* add comment for the new constants

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* instead of passing nil which leads to  nil ptr referance error, pass empty ClusterSharding{}

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* check for operator install repo server name

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* handle empty nil ptr dereference error

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* handle  nil prt dereference

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* typo correction

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* run clidocsgen

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

---------

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>
2024-03-29 14:49:16 -04:00
Kostis (Codefresh)
b711c5b7d7 docs: added warning for multiple sources (#17670)
* docs: added warning for multiple sources

Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>

* docs: minor spelling

Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>

---------

Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>
2024-03-29 10:00:50 -04:00
Deniz Erdogan
e26f4fbdc1 docs: 2 link fixes + hint (#17657)
* Update security.md

fix RBAC link

Signed-off-by: Deniz Erdogan <91744937+deer-wmde@users.noreply.github.com>

* Update security.md

Signed-off-by: Deniz Erdogan <91744937+deer-wmde@users.noreply.github.com>

* Update security.md

fix link to application-controller role

Signed-off-by: Deniz Erdogan <91744937+deer-wmde@users.noreply.github.com>

* Update security.md

Signed-off-by: Deniz Erdogan <91744937+deer-wmde@users.noreply.github.com>

---------

Signed-off-by: Deniz Erdogan <91744937+deer-wmde@users.noreply.github.com>
2024-03-28 04:36:35 -10:00
Leonardo Luz Almeida
8631e7ef9b docs: fix contrib meeting time description (#17655)
Signed-off-by: Leonardo Luz Almeida <leoluz@users.noreply.github.com>
2024-03-28 09:57:32 -04:00
pasha-codefresh
ae29279cbe Merge pull request from GHSA-jhwx-mhww-rgc3
* sec: limit helm index max size

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

* sec: limit helm index max size

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

* feat: fix tests and linter

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-03-28 14:38:03 +02:00
dependabot[bot]
53b08426bc chore(deps): bump express from 4.17.3 to 4.19.2 in /ui (#17648)
Bumps [express](https://github.com/expressjs/express) from 4.17.3 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.3...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-28 13:13:55 +02:00
olivier beyler
4b80393108 Update USERS.md (#17651)
Add arturia as users

Signed-off-by: olivier beyler <beyler_olivier@yahoo.fr>
2024-03-28 00:41:21 -04:00
dependabot[bot]
31aa4d9af9 chore(deps): bump follow-redirects from 1.15.5 to 1.15.6 in /ui-test (#17541)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-27 15:56:27 -04:00
github-actions[bot]
e9547bce42 [Bot] docs: Update Snyk reports (#17601)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-03-27 18:16:25 +00:00
treble-snake
442dac12a7 docs(user-guide): fix a typo (#17642)
Signed-off-by: treble-snake <treble.snake@gmail.com>
2024-03-27 16:39:58 +02:00
danqixu
ad372cf716 wrap error for SyncKeyRingFromDirectory (#17633)
Signed-off-by: danqixu <yzxudanqi@gmail.com>
2024-03-27 09:22:21 -04:00
Michael Crenshaw
1bddee2e5d fix(cmp): pass env to plugin discovery (#13947)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Jann Fischer <jann@mistrust.net>
2024-03-26 12:44:00 -04:00
Wout Scheepers
12ccb52498 docs(goTemplate): Fix bullet list (#17611)
Signed-off-by: Wout Scheepers <wscheep@users.noreply.github.com>
2024-03-26 09:38:26 -04:00
Charles Coupal-Jetté
295dff6a38 fix: Appcontroller respects sync windows (#16492)
* fix: Appcontroller keeps op running when denied by sync window

Signed-off-by: Charles Coupal-Jetté <charles.coupaljette@goto.com>

* fix: Update test name

Signed-off-by: Charles Coupal-Jetté <charles.coupaljette@goto.com>

---------

Signed-off-by: Charles Coupal-Jetté <charles.coupaljette@goto.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-03-26 08:45:35 -04:00
Justin Marquis
a5a499a2c6 chore: update and fix scorecard (#17617)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-03-25 19:18:09 +00:00
Jann Fischer
f87897c53c chore: Bump Golang to 1.21.8 (#17616)
Signed-off-by: jannfis <jann@mistrust.net>
2024-03-25 13:20:13 -04:00
Mangaal
8cf03812a1 fix: flaky test - app history command not printing source in consistent order (#17615)
* instead if ranging over the map varHistory to print the history, inroduced a string array varHistoryKeys

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* update unit test expectation, remove new line in the beginning

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

---------

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>
2024-03-25 16:58:56 +00:00
Mangaal
38d86a911e feat: Update command argocd app history to support multiple sources (#17530)
* update argocd app history command to print app history group by thier sources along with all the REVISIONS

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* upadte unit test to ahve both Source and Sources and update function to overlooked source if sources is persent

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* remove magic no 7 and introduc a variable MAX_ALLOWED_REVISIONS

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* remove extra unit test

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* remove extra unit test TestPrintApplicationHistoryTableForWhenBothSourcesAndSourceFiledsExist()

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

---------

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-03-25 11:29:03 -04:00
Nathan Romriell
c4fdc54195 fix(repo-server): excess git requests, add shared cache lock on revisions (Issue #14725) (#17109)
* fix(repo-server): excess git requests, cache lock on revisions

Signed-off-by: nromriell <nateromriell@gmail.com>

* fix: pr feedback, simplify, add configurable variable

Signed-off-by: nromriell <nateromriell@gmail.com>

* fix: codegen, lint

Signed-off-by: nromriell <nateromriell@gmail.com>

* fix: test print, no opts set, var type nit

Signed-off-by: nromriell <nateromriell@gmail.com>

* chore: add additional logging for unexpected cache error

Signed-off-by: nromriell <nateromriell@gmail.com>

---------

Signed-off-by: nromriell <nateromriell@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-03-25 11:26:14 -04:00
Vipin M S
37c5f4d8ee Adds count of resource on resource tile (#14904)
Signed-off-by: Vipin M S <vipinachar2016@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-03-24 01:56:54 +00:00
Alexandre Gaudreault
a49880e0a5 fix: invalid badge validation (#15507) (#17580)
* fix: invalid badge validation

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

* use util methods

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

* rfc accept both lower and upper

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

* fix unit test affecting each other with var modification

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

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Co-authored-by: Jann Fischer <jann@mistrust.net>
2024-03-23 16:35:38 -04:00
dependabot[bot]
2b28683419 chore(deps): bump ip from 1.1.5 to 1.1.9 in /ui (#17256)
Bumps [ip](https://github.com/indutny/node-ip) from 1.1.5 to 1.1.9.
- [Commits](https://github.com/indutny/node-ip/compare/v1.1.5...v1.1.9)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

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-03-22 15:45:11 -04:00
dependabot[bot]
ec7b49d82d chore(deps): bump docker/login-action from 2.2.0 to 3.1.0 (#17524)
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.2.0 to 3.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](465a07811f...e92390c5fb)

---
updated-dependencies:
- dependency-name: docker/login-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-03-22 19:08:38 +00:00
dependabot[bot]
f0490090cd chore(deps): bump follow-redirects from 1.15.5 to 1.15.6 in /ui (#17542)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-22 14:22:20 -04:00
dependabot[bot]
427965c497 chore(deps-dev): bump postcss from 8.4.37 to 8.4.38 in /ui (#17582)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.37 to 8.4.38.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.37...8.4.38)

---
updated-dependencies:
- dependency-name: postcss
  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-03-22 14:21:51 -04:00
dependabot[bot]
7350a55e57 chore(deps): bump webpack-dev-middleware from 5.3.1 to 5.3.4 in /ui (#17598)
Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.1 to 5.3.4.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.1...v5.3.4)

---
updated-dependencies:
- dependency-name: webpack-dev-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-22 14:21:14 -04:00
dependabot[bot]
3ec63b222c chore(deps): bump slsa-framework/slsa-github-generator (#17593)
Bumps [slsa-framework/slsa-github-generator](https://github.com/slsa-framework/slsa-github-generator) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/slsa-framework/slsa-github-generator/releases)
- [Changelog](https://github.com/slsa-framework/slsa-github-generator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/slsa-framework/slsa-github-generator/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: slsa-framework/slsa-github-generator
  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-03-22 13:11:54 -04:00
Jann Fischer
d11e146ab5 chore: Fix linter issue with session manager (#17597)
Signed-off-by: jannfis <jann@mistrust.net>
2024-03-22 15:05:18 +00:00
dependabot[bot]
1c938e2aea chore(deps-dev): bump postcss from 8.4.36 to 8.4.37 in /ui (#17573)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.36 to 8.4.37.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.36...8.4.37)

---
updated-dependencies:
- dependency-name: postcss
  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-03-20 07:29:58 -04:00
Suraj yadav
5ada5c2810 feat(UI): Added link for docs to add clusters (#17395)
* cluster-add-link

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

* docs

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

* docs-panel

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

* added

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

* fixed

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

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-03-19 23:06:34 -04:00
Ishita Sequeira
ed0218f98e feat: add cli commands to create/set/unset/edit sources for multi-source application (#17425)
* "feat:add cli commands to create/set/unset/edit sources for multi-source app"

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fixed the ci failure

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update commands

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* error out if source-index not specified for multi-source applications

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fixed the ci failure

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* set 0 as default source index for app create

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* add index to ParameterOverrides function

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* do not allow overrides for applications with multiple sources

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* remove create with override example

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* address comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update examples in docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update logs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add test and update docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-03-18 11:15:08 -07:00
ario0
997688e94b docs: mention that the argocd diff command does not include secrets (#15950)
* doc(cli): update argocd_app_diff

Adding the fact that secrets are ignored by the diff (not really stated in the doc so far)

Signed-off-by: ario0 <118843430+ario0@users.noreply.github.com>

* doc: remove whitespace

Signed-off-by: ario0 <118843430+ario0@users.noreply.github.com>

---------

Signed-off-by: ario0 <118843430+ario0@users.noreply.github.com>
Signed-off-by: Alexis Renard <renard.alexis@hotmail.fr>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-03-18 10:47:47 -07:00
dependabot[bot]
09407a21be chore(deps): bump library/registry in /test/container (#17554)
Bumps library/registry from `f4e1b87` to `fb9c9ae`.

---
updated-dependencies:
- dependency-name: library/registry
  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-03-18 19:04:55 +02:00
dependabot[bot]
16fc00841e chore(deps-dev): bump postcss from 8.4.35 to 8.4.36 in /ui (#17555)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.35 to 8.4.36.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.35...8.4.36)

---
updated-dependencies:
- dependency-name: postcss
  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-03-18 19:03:38 +02:00
jannfis
d69c61ae1a Merge pull request from GHSA-6v85-wr92-q4p7
* fix: Fix concurrency issue in session manager

Signed-off-by: jannfis <jann@mistrust.net>

* Add note that modification to the map must be done in a thread safe manner

* chore: fix linter issues

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

---------

Signed-off-by: jannfis <jann@mistrust.net>
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: pashakostohrys <pavel@codefresh.io>
2024-03-18 03:59:06 -04:00
pasha-codefresh
6596e088ac Merge pull request from GHSA-2vgg-9h6w-m454
* feat: pick random user and exclude admin user and current user from deletion candidates

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

* feat: increase default max cache size

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

* add nil protection

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

* Update util/session/sessionmanager.go

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

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

* chore: fix linter issues

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-03-18 03:58:18 -04:00
Mangaal
63a72ee1e7 docs: Update the status of the feature, app in any namespace, from beta to stable (#17529)
* Update the status of the feature, app in any namespace, from beta to stable

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* adding warning and removing **Current feature state**

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

---------

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>
2024-03-15 17:26:32 -04:00
AS
2f58d73612 fix(ui): add confirmation box in resource summary delete action (#17485)
Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
2024-03-15 12:06:25 -04:00
dependabot[bot]
2b75efd24a chore(deps): bump docker/build-push-action from 5.2.0 to 5.3.0 (#17537)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](af5a7ed5ba...2cdde995de)

---
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-03-15 11:03:28 -04:00
David Bunn
aaabb050b2 chore(deps): upgrade helm to 3.14.3 (#17531)
* chore(deps): upgrade helm to 3.14.3

Signed-off-by: David Bunn <david.bunn@prodigygame.com>

* chore(deps): upgrade helm to 3.14.3

Signed-off-by: David Bunn <david.bunn@prodigygame.com>

---------

Signed-off-by: David Bunn <david.bunn@prodigygame.com>
2024-03-14 17:33:20 +00:00
danqixu
4a92ab782f chore: Add error messages to return statements in BlockingDial function (#17521)
* Add error messages to return statements in BlockingDial function

Signed-off-by: danqixu <yzxudanqi@gmail.com>

* amend error wrapping from %s to %w

Signed-off-by: danqixu <yzxudanqi@gmail.com>

---------

Signed-off-by: danqixu <yzxudanqi@gmail.com>
2024-03-14 03:33:40 +00:00
dependabot[bot]
739fa0c26e chore(deps): bump actions/checkout (#17493)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3df4ab11eba7bda6032a0b82a6bb43b11571feac to 8410ad0602e1e429cee44a835ae9f77f654a6694.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](3df4ab11eb...8410ad0602)

---
updated-dependencies:
- dependency-name: actions/checkout
  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-03-13 23:27:04 -04:00
Alexander Matyushentsev
138b37bd6c fix: Argo CD unnecessary enforce sequential helm manifest generation for one chart (#17518)
* fix: Argo CD unnecessary enforce sequential helm manifest generation for one chart

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

* Update docs/operator-manual/high_availability.md

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

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-03-13 23:39:39 +00:00
Andreas Hunkeler
77899cb285 docs: add attestation of SBOM to release assets in signed-release-assets.md (#17520)
Closes https://github.com/argoproj/argo-cd/issues/17200.

Signed-off-by: Andreas Hunkeler <karneades@protonmail.com>
2024-03-13 15:06:30 -06:00
Savely Kalinov
f0b03071fc feat: Add support to enable FullTimeStamp in logging (#15127)
* Add support to enable FullTimeStamp in logging
Signed-off-by: skalinov <skalinov@tradingview.com>

* fix: Fix go linter file exist issue
Signed-off-by: skalinov <skalinov@tradingview.com>

* fix: Remove --skip-pkg-cache
Signed-off-by: skalinov <skalinov@tradingview.com>

* Update util/log/logrus_test.go

Use custom set env for prevent linter to be failed

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

* Update common/common.go

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

* Update util/log/logrus_test.go

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

* Update util/log/logrus_test.go

remove os import

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

* Update util/log/logrus_test.go

sort dependencies

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

* fix formatting

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

---------

Signed-off-by: pasha-codefresh <pavel@codefresh.io>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Co-authored-by: skalinov <skalinov@tradingview.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-03-13 20:19:26 +00:00
Michael Crenshaw
3b8f673f06 Merge pull request from GHSA-g623-jcgg-mhmm
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-03-13 14:28:43 -04:00
RyotaK
479b5544b5 Merge pull request from GHSA-jwv5-8mqv-g387
* fix: Validate external URLs for applicatins

Signed-off-by: Ry0taK <49341894+Ry0taK@users.noreply.github.com>

* fix(ui): remove invalid external-link

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

* linting

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

---------

Signed-off-by: Ry0taK <49341894+Ry0taK@users.noreply.github.com>
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-03-13 14:26:47 -04:00
Blake Pettersson
51cfd50dd9 fix: elements should be optional (#17424)
A bug was reported, where an applicationset with an empty elements
array, when created with `argocd appset create <filename>.yaml` gets a
`...list.elements: Required value` error.

My hypothesis is that when calling the K8s API, golang JSON marshalling
mangles the empty `elements` array to `nil`, rather than creating an
empty array when submitting the `POST`.

Still need to figure out why the same setup seemingly works fine when
the same appset is in an app-of-apps.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-03-13 09:52:19 -07:00
Hoang Quoc Trung
85a2145401 Add documentation for google transitive groups (#9487)
Signed-off-by: Trung <trung.hoang@pricehubble.com>
Co-authored-by: Michael Crenshaw <michael@crenshaw.dev>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-03-13 17:39:26 +02:00
Mario Adrián Domínguez González de Eiris
27c174384b docs: Add note in installation step 1 with argocd cli (#8030)
* Add note in installation stesps

Added notes in installation step 1: 
kubectl config set-context --current --namespace=argocd

* Updated doc

* Update docs/getting_started.md

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

---------

Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-03-13 17:26:50 +02:00
Harshvir Potpose
be69bcc010 docs: added all available fields for applicationset.yaml #16095 (#16104)
* adding all available filds for generators

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

* add remaining fields in applicationset.yml

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

* Update docs/operator-manual/applicationset.yaml

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

* Update docs/operator-manual/applicationset.yaml

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

* Update docs/operator-manual/applicationset.yaml

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

* Update docs/operator-manual/applicationset.yaml

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

* fix

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

---------

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-03-13 15:24:52 +00:00
Dan Garfield
f4bb860fb8 Make evergreen (#17507)
This example uses an old revision `v1.0.1` instead it should just use stable.

Signed-off-by: Dan Garfield <dan@codefresh.io>
2024-03-13 17:23:57 +02:00
dependabot[bot]
565aa8e1f5 chore(deps): bump library/node in /test/container (#17494)
Bumps library/node from `f358dfc` to `b9ccc4a`.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-03-13 12:12:57 +02:00
dependabot[bot]
e4885db6ad chore(deps): bump library/redis in /test/container (#17496)
Bumps library/redis from `e647cfe` to `7dd7070`.

---
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-03-13 10:49:02 +02:00
dependabot[bot]
0b5d9afd40 chore(deps): bump library/golang in /test/container (#17495)
Bumps library/golang from `34ce21a` to `0b55ab8`.

---
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-03-13 09:51:49 +02:00
dependabot[bot]
2a747c65ed chore(deps): bump library/node from 21.7.0 to 21.7.1 in /ui-test (#17498)
Bumps library/node from 21.7.0 to 21.7.1.

---
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-03-13 09:49:43 +02:00
Xavier Krantz
5b77e8d448 docs(EKS): Fix ArgoCD management role AssumeRole policy for IRSA (#17455)
Signed-off-by: Xavier Krantz <xakraz@gmail.com>
2024-03-12 21:46:00 -04:00
similark
86369ca71d fix(appset): keep reconciling even when params error occurred (#17062)
* fix(appset): keep reconcile even when params error occurred

Signed-off-by: Or Koren <or.koren@similarweb.com>

* requeue on generator rendering error

Signed-off-by: Or Koren <or.koren@similarweb.com>

* test ignoring partial rendering errors

Signed-off-by: Or Koren <or.koren@similarweb.com>

* e2e test create app with param error

Signed-off-by: Or Koren <or.koren@similarweb.com>

---------

Signed-off-by: Or Koren <or.koren@similarweb.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-03-12 21:20:28 -04:00
jannfis
7cfb9d6e13 chore: Support running and testing locally using podman instead of docker (#17481)
* chore: Support rootless podman for run/test

Signed-off-by: jannfis <jann@mistrust.net>

* Note DOCKER env in docs

Signed-off-by: jannfis <jann@mistrust.net>

---------

Signed-off-by: jannfis <jann@mistrust.net>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-03-13 00:02:20 +00:00
Michael Crenshaw
ff055300a2 docs: remove configManagementPlugins from argocd-cm.yaml (#17486)
That field is no longer supported.

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-03-12 16:13:19 -04:00
dependabot[bot]
de44e14d90 chore(deps): bump docker/build-push-action from 5.1.0 to 5.2.0 (#17463)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](4a13e500e5...af5a7ed5ba)

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-03-12 13:33:37 -04:00
jannfis
e60996814e chore: Fix containerized toolchain (#17480)
Signed-off-by: jannfis <jann@mistrust.net>
2024-03-12 19:09:39 +02:00
Pablo Aguilar
57d6e6557b fix: registry argument to be only the host instead full URL (#17381)
Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>
2024-03-12 10:21:53 -04:00
pasha-codefresh
dd29300fc1 fix(notifications): Helm.GetParameterValueByName should take helm.parametes first (#17472)
* fix: Helm.GetParameterValueByName should take helm.parametes first

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

* fix linters

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-03-12 10:06:24 -04:00
dependabot[bot]
dc242da748 chore(deps): bump library/golang in /test/container (#17415)
Bumps library/golang from 1.21.3 to 1.22.1.

---
updated-dependencies:
- dependency-name: library/golang
  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-03-12 10:40:54 +02:00
dependabot[bot]
76c64796cc chore(deps): bump library/node from 21.6.2 to 21.7.1 in /test/container (#17475)
Bumps library/node from 21.6.2 to 21.7.1.

---
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-03-12 10:39:43 +02:00
Jonas Bakken
6ca29a3c0b docs: fix kustomize example resources url (#17468)
Signed-off-by: Jonas Bakken <jonasbakken@protonmail.com>
2024-03-11 19:18:18 +02:00
github-actions[bot]
cc235e4a06 [Bot] docs: Update Snyk reports (#17458)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-03-11 15:57:49 +00:00
Anirudh Sudhir
05eea87162 feat: add option manual to the --sync-policy flag of the app create command (#17459)
* feat: add sync policy option 'manual' for app create command

Signed-off-by: Anirudh Sudhir <anirudh.sudhir1@gmail.com>

* chore: Update tests to reflect sync policy option changes

Signed-off-by: Anirudh Sudhir <anirudh.sudhir1@gmail.com>

---------

Signed-off-by: Anirudh Sudhir <anirudh.sudhir1@gmail.com>
2024-03-11 16:36:15 +02:00
avoidalone
085ed0f65a chore: remove repetitive words (#17464)
Signed-off-by: avoidalone <wuguangdong@outlook.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-03-11 14:27:46 +00:00
dependabot[bot]
9b965700b3 chore(deps): bump library/ubuntu in /test/container (#17414)
Bumps library/ubuntu from `f9d633f` to `77906da`.

---
updated-dependencies:
- dependency-name: library/ubuntu
  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-03-11 16:24:24 +02:00
mamccorm
31776d49f4 make CGO_ENABLED configurable (#17462)
Signed-off-by: Mark McCormick <mark.mccormick@chainguard.dev>
2024-03-11 13:51:53 +02:00
dependabot[bot]
de4cac4165 chore(deps): bump library/node from 21.6.2 to 21.7.0 in /ui-test (#17444)
Bumps library/node from 21.6.2 to 21.7.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-03-11 13:19:18 +02:00
dependabot[bot]
0fe1acb357 chore(deps): bump library/busybox in /test/e2e/multiarch-container (#17445)
Bumps library/busybox from `3fbc632` to `650fd57`.

---
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-03-11 13:17:13 +02:00
Joe Wingard
da49d3eed9 add Oncourse Home (#17457) 2024-03-11 10:50:40 +00:00
Ikko Eltociear Ashimine
542890f739 docs: Update site.md (#17454)
erros -> errors

Signed-off-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
2024-03-09 08:12:48 -05:00
Aiman Ismail
fd3462e9c0 docs: dex google oidc: add note on dex connector type (#17453)
Signed-off-by: Aiman Ismail <m.aimanismail@gmail.com>
2024-03-08 18:58:03 -05:00
Justin Marquis
1901cb56bc chore: update slsa3 generate (#17451)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-03-08 18:44:19 +00:00
Justin Marquis
3fee8cbf81 chore: update cosign and version (#17441)
* chore: update cosign and version

Signed-off-by: Justin Marquis <justin@akuity.io>

* fix typo

Signed-off-by: Justin Marquis <justin@akuity.io>

---------

Signed-off-by: Justin Marquis <justin@akuity.io>
2024-03-08 07:09:02 -05:00
Nguyen Thai
98a888ed52 Fixed project parameter docs for Gitlab pull request generator (#17429)
Signed-off-by: Nguyen Thai <tknguyen@linagora.com>
2024-03-07 22:32:34 -05:00
Albin Björk
7bb92d7d61 docs: re-worded updated a link in release-process-and-cadance.md (#17438)
Signed-off-by: AlbinB97 <devalbinbjork@gmail.com>
2024-03-07 22:19:01 -05:00
Collin Walker
2b6b9bf93e chore: Fix Helm Installation Breaking on Mac (#17426)
* fix helm installation to work with mac

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* fix checksums

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* change install filename and makefile

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* change name to just helm - fix dockerfile

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

---------

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>
2024-03-07 20:35:37 -05:00
dependabot[bot]
2ad06a6308 chore(deps): bump github.com/go-jose/go-jose/v3 from 3.0.1 to 3.0.3 (#17442)
Bumps [github.com/go-jose/go-jose/v3](https://github.com/go-jose/go-jose) from 3.0.1 to 3.0.3.
- [Release notes](https://github.com/go-jose/go-jose/releases)
- [Changelog](https://github.com/go-jose/go-jose/blob/v3.0.3/CHANGELOG.md)
- [Commits](https://github.com/go-jose/go-jose/compare/v3.0.1...v3.0.3)

---
updated-dependencies:
- dependency-name: github.com/go-jose/go-jose/v3
  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-03-07 19:36:25 -05:00
Carlos Santana
edc6f5f39e feat: Allow mkdocs to livereload when using docker (#17383)
* feat: Allow mkdocs to livereload when using docker

Signed-off-by: Carlos Santana <csantana23@gmail.com>

* update the docs

Signed-off-by: Carlos Santana <csantana23@gmail.com>

---------

Signed-off-by: Carlos Santana <csantana23@gmail.com>
2024-03-07 15:03:26 -05:00
Alexander Matyushentsev
138a112172 docs: proposal to implement sync timeout and termination settings (#16630)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-03-07 16:46:02 +00:00
Caio Paiva
fda25d0b93 fix(ui): align resource nodegroup (#17427)
Signed-off-by: Caio Paiva <cclp94@gmail.com>
2024-03-07 09:52:54 -05:00
Pelen
d76976ff12 fix: add retry condition with kube-apiserver sent GOAWAY (#17422)
Signed-off-by: penglongli <pelenli@tencent.com>
2024-03-07 09:50:34 -05:00
Nate Douglas
8aa9625870 docs: Small edits to docs/user-guide/application-set.md (#17434)
* Update application-set.md

Signed-off-by: Nate Douglas <ndouglas@users.noreply.github.com>

* Make example code consistent with examples elsewhere.

Signed-off-by: Nathan Douglas <github@darkdell.net>

---------

Signed-off-by: Nate Douglas <ndouglas@users.noreply.github.com>
Signed-off-by: Nathan Douglas <github@darkdell.net>
2024-03-07 09:34:53 -05:00
Takahiro Suzuki
0c2934a339 docs: Clarify for valueFiles behaviour with path field (#17431)
This commit adds clarification by explaining that `valueFiles` must be a relative path to the root of sources, even if the `path` field is set.

Signed-off-by: Takahiro Suzuki <tkasuz.dev@gmail.com>
Signed-off-by: tkasuz <takahiro.suzuki@hennge.com>
2024-03-07 08:53:48 -05:00
Mangaal
0d020f0079 feat(cli): enable --app-namespace flag for argocd app subcommand (#17437)
* add --app-namespace flag for set/unset command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* add --app-namespace flag for add-source/remove-source command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* fix bug, handle array out of-bound when --source-index=len(source)

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* add documentation

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

---------

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>
2024-03-07 13:38:43 +00:00
John
d0331eefe4 docs: remove repetitive words (#17430)
Signed-off-by: hishope <csqiye@126.com>
2024-03-07 10:49:22 +01:00
Duncan
1b919879ab docs (aks cluster): update workloadidentity documentation (#17401)
Signed-off-by: duncan485 <bakkerduncan@gmail.com>
2024-03-06 13:18:59 -07:00
Nate Douglas
58993b1a01 docs: Fix some awkward phrasing in core.md (#17412)
Signed-off-by: Nate Douglas <ndouglas@users.noreply.github.com>
2024-03-06 21:06:16 +01:00
Bogay
4db89427a8 fix(grpcproxy): parse headers contain colon (#13274) (#14294)
* fix(grpcproxy): parse headers contain colon

Signed-off-by: bogay <pojay11523@gmail.com>

* test(apiclient): headers in wrong format

Signed-off-by: bogay <pojay11523@gmail.com>

---------

Signed-off-by: bogay <pojay11523@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-03-06 14:23:50 -05:00
Leonardo Luz Almeida
8786ec243a chore: add more unit tests around useDiffCache function (#17404)
* chore: add more unit tests around useDiffCache function

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

* fix doc

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

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-03-05 19:19:09 -05:00
Suraj yadav
ee78d02a42 fix(ui): application-summary-help-icon fix (#17385)
* Update application-summary.tsx

revision-history icon fix

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

* icons

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

---------

Signed-off-by: Suraj yadav <harrypotter1108@gmail.com>
Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-03-05 16:56:01 -05:00
Suraj yadav
24ac326384 fix(ui): Highlight failing containers in the UI (#17143)
* failing container icon added

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

* lint-fix

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

* ..

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

* tried yarn lint-fix

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

* margin

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

* running

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

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-03-04 18:15:30 -05:00
Collin Walker
839526e976 feat: Allow Kustomize common labels to not apply to selectors (#17329)
* modify crds

Signed-off-by: Collin <cwalker@ancestry.com>
Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* cmd opts and test

Signed-off-by: Collin <cwalker@ancestry.com>
Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* kustomize build and test

Signed-off-by: Collin <cwalker@ancestry.com>
Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* fix option order and add ancestry to users

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* fix users format

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* generated files

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* set flag value

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* modify crds

Signed-off-by: Collin <cwalker@ancestry.com>
Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* chore(deps): bump library/registry in /test/container (#17317)

Bumps library/registry from `b209a41` to `f4e1b87`.

---
updated-dependencies:
- dependency-name: library/registry
  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: Collin <cwalker@ancestry.com>
Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* generated files

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* add docs

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* fix doc

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* remove debug prints

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

* fix autogen docs

Signed-off-by: lets-call-n-walk <cw404@hotmail.com>

---------

Signed-off-by: Collin <cwalker@ancestry.com>
Signed-off-by: lets-call-n-walk <cw404@hotmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Collin Walker <10523817+lets-call-n-walk@users.noreply.github.com>
Co-authored-by: Collin <cwalker@ancestry.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 18:13:34 -05:00
DongHo Jung
7eda6e01f4 docs: use service-name instead of service-id (#17389)
* use service-name instead of service-id

Signed-off-by: DongHo Jung <dongho971220@gmail.com>

* trigger CICD

Signed-off-by: DongHo Jung <dongho971220@gmail.com>

---------

Signed-off-by: DongHo Jung <dongho971220@gmail.com>
2024-03-04 10:48:28 -07:00
Soumya Ghosh Dastidar
88e4da625e fix: disable rate limiting sompletely by default (#17355)
Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2024-03-04 10:46:55 -05:00
Eric Bissonnette
e2f87940e4 fix: preserve escape codes in repo url of git webhook payload (#17376)
Signed-off-by: Eric Bissonnette <ebisso.dev@gmail.com>
2024-03-04 11:03:19 +02:00
Mangaal
82e20a4fc9 feat: enable users to run commands related to Argo Applications in any namespace (#17360)
* enable --app-namespace falg for application get command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* enable --app-namespace falg for application diff command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* enable --app-namespace falg for application wait command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* enable --app-namespace falg for application rollback command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* enable --app-namespace falg for application patch command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* enable --app-namespace falg for application edit command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* enable --app-namespace falg for application history command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* enable --app-namespace falg for application sync  command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* enable --app-namespace falg for application delete  command

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

* cli doc generated

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>

---------

Signed-off-by: Mangaal <angommeeteimangaal@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-03-01 17:35:31 -05:00
Ishita Sequeira
3cf54af2be feat: add cli commands to add/remove sources for multi-source applications (#17310)
* Initial commit

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* add cli commands to add/remove sources for multi-source app

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* add checks

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* add docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* refactor code and update tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* add removed additional switch case

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix suggested nits

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-03-01 22:13:14 +00:00
Suraj yadav
e3ee9ee831 fix(ui): Dark-mode-enhancements (#17241)
* dark-mode-enhancements

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

* monaco

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

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
Signed-off-by: Suraj yadav <harrypotter1108@gmail.com>
2024-03-01 15:56:09 -05:00
Michael Crenshaw
28112c65a4 chore(ci): free up disk space for goreleaser (#17373)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-03-01 20:39:31 +00:00
Blake Pettersson
99128c27f5 feat: add ability to auto label clusters from k8s clusterinfo (#17289)
* feat: add ability to auto label clusters

This gives the ability to automatically label cluster secrets on a cluster-by-cluster basis. If `enableClusterInfoLabels` is set on a cluster secret, the controller will (eventually) label the cluster secret with the current k8s version detected by the cluster info.

This needs documentation, e2e tests, as well as CLI/UI additions.

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

* refactor: use labels instead of secret data

This is easier to work with, especially in the context where we need
this feature.

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

* docs: add description on how to use dynamic labeling

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

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-03-01 15:18:19 -05:00
Raghavi
e9b1af5885 feat: add cli commands to add/delete sourceNamespaces from AppProject (#17337)
* Add cli to add/delete sourceNamespaces

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

* update command/comments

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

* update command/comments(1)

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

* update user-guide docs

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

* Retrigger CI pipeline

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

* add check for '*' & rename command to remove-source-namespace

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

* update command/comments(2)

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

* update command/comments(3)

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

* Retrigger CI pipeline

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>

---------

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>
2024-03-01 14:07:27 -05:00
Andrea Sannuto
f132628866 docs: Update USERS.md (#17371)
Hi, I added IABAI as using officially ArgoCD

Signed-off-by: Andrea Sannuto <andrea@iab.ai>
2024-03-01 13:58:02 -05:00
Enclavet
d73304ea1c feat: Add app data to sharding cache to allow sharding by apps (#17014)
* Adding app list to sharding cache

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Add shard by apps test

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Fix lint

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Add coverage to test

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Fix lint

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Converted cluster/app accesors to private, add apps-in-any-namespace suport in shardingcache init, added read lock to GetAppDistribution

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Fix tests

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

---------

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>
2024-03-01 13:56:48 -05:00
Arthur Outhenin-Chalandre
62003f0152 feat: allow webhook settings to be referenced by external secret (#16262)
Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@ledger.fr>
2024-02-29 13:58:38 +02:00
Michael Firestone
d4251ef7cf chore(notifications): remove unneeded operations from templates (#17307)
* chore(deps): bump library/ubuntu in /test/container (#13409)

Bumps library/ubuntu from `9a0bdde` to `67211c1`.

---
updated-dependencies:
- dependency-name: library/ubuntu
  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: Michael Firestone <mike.firestone@electriphi.ai>

* rm unneeded operations from templates

Signed-off-by: Michael Firestone <firestonem@gmail.com>
Signed-off-by: Michael Firestone <mike.firestone@electriphi.ai>

* rm more unneeded ops

Signed-off-by: Michael Firestone <mike.firestone@electriphi.ai>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Michael Firestone <mike.firestone@electriphi.ai>
Signed-off-by: Michael Firestone <firestonem@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael Firestone <mike.firestone@electriphi.ai>
2024-02-29 13:54:15 +02:00
Rafal
a4b5051538 fix(ui): The tiles in Applications List are too wide #17220 (#17340)
* fix(ui): The tiles in Applications List are too wide

Signed-off-by: Rafal Pelczar <rafal@akuity.io>

* change min width of app tiles

Signed-off-by: Rafal Pelczar <rafal@akuity.io>

---------

Signed-off-by: Rafal Pelczar <rafal@akuity.io>
2024-02-28 19:42:20 +00:00
Alexander Matyushentsev
bb4e47a12d fix: The argocd server api-content-type flag does not allow empty content-type header (#17331)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-02-28 09:45:44 -08:00
dependabot[bot]
c973f7013b chore(deps): bump library/node from 21.6.1 to 21.6.2 in /test/container (#17316)
Bumps library/node from 21.6.1 to 21.6.2.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-28 11:47:58 +02:00
David Bunn
e492e1469c chore(deps): upgrade helm to 3.14.2 (#17330)
* chore(deps): upgrade helm to 3.14.2

Signed-off-by: David Bunn <david.bunn@prodigygame.com>

* Signing commit

Signed-off-by: David Bunn <david.bunn@prodigygame.com>

---------

Signed-off-by: David Bunn <david.bunn@prodigygame.com>
2024-02-27 20:48:41 -05:00
Keith Chong
48f4392b26 fix: multi-source app breaks application parameters UI (#16910) (#17033)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-02-27 20:15:50 -05:00
Suraj yadav
8b89722eee fix(ui): Added dashed line between collapsed sections in Compact-diff (#17173)
* dashed-line-breaker

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

* dark-mode

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

* dark-mode-text-fix

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

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-02-27 16:39:47 -05:00
Juliusz Jaksa
5ffbca4cce docs: fixed name of environment variable and config map property enabling scm providers for applicationsets (#17326)
Signed-off-by: Juliusz <juliusz.jaksa@xylem.com>
Co-authored-by: Juliusz <juliusz.jaksa@xylem.com>
2024-02-27 16:36:07 -05:00
dependabot[bot]
d42004fa86 chore(deps): bump library/registry in /test/container (#17317)
Bumps library/registry from `b209a41` to `f4e1b87`.

---
updated-dependencies:
- dependency-name: library/registry
  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-02-27 19:48:59 +02:00
Carlos Santana
891d089304 fix: use simple python image to build mkdocs (#17313)
* fix: use simple python image to build mkdocs

Signed-off-by: Carlos Santana <csantana23@gmail.com>

* use python 3.7

Signed-off-by: Carlos Santana <csantana23@gmail.com>

---------

Signed-off-by: Carlos Santana <csantana23@gmail.com>
2024-02-26 14:12:21 -05:00
dependabot[bot]
2ac96a55ba chore(deps): bump library/busybox in /test/e2e/multiarch-container (#14592)
Bumps library/busybox from `2376a0c` to `3fbc632`.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-26 14:45:03 +02:00
dependabot[bot]
09798b5713 chore(deps): bump library/registry in /test/container (#13050)
Bumps library/registry from `41f413c` to `b209a41`.

---
updated-dependencies:
- dependency-name: library/registry
  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-02-26 12:48:21 +02:00
dependabot[bot]
4d1eb5515f chore(deps): bump library/redis in /test/container (#17309)
Bumps library/redis from `11c3e41` to `e647cfe`.

---
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-02-26 11:09:22 +02:00
dependabot[bot]
37eacec208 chore(deps): bump library/ubuntu in /test/container (#13409)
Bumps library/ubuntu from `9a0bdde` to `67211c1`.

---
updated-dependencies:
- dependency-name: library/ubuntu
  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-02-25 19:07:58 +02:00
Debdut Chakraborty
8712d03e9e chore: add Rocket.Chat to users (#17306)
Signed-off-by: Debdut Chakraborty <debdutdeb@outlook.com>
2024-02-25 11:52:47 +01:00
dependabot[bot]
99723143b9 chore(deps): bump bitnami/kubectl in /test/container (#14220)
Bumps bitnami/kubectl from `670fe3f` to `14ab746`.

---
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: pasha-codefresh <pavel@codefresh.io>
2024-02-24 23:36:59 +02:00
dependabot[bot]
6de1037eb3 chore(deps): bump react-helmet and @types/react-helmet in /ui (#11556)
Bumps [react-helmet](https://github.com/nfl/react-helmet) and [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet). These dependencies needed to be updated together.

Updates `react-helmet` from 5.2.1 to 6.1.0
- [Release notes](https://github.com/nfl/react-helmet/releases)
- [Changelog](https://github.com/nfl/react-helmet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nfl/react-helmet/commits/6.1.0)

Updates `@types/react-helmet` from 5.0.19 to 6.1.6
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet)

---
updated-dependencies:
- dependency-name: react-helmet
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: "@types/react-helmet"
  dependency-type: direct:development
  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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-24 22:44:42 +02:00
dependabot[bot]
e4c8568393 chore(deps): bump library/redis in /test/container (#17137)
Bumps library/redis from `cc8b0b8` to `11c3e41`.

---
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-02-24 22:03:47 +02:00
dependabot[bot]
c435260f13 chore(deps-dev): bump postcss from 8.2.13 to 8.4.35 in /ui (#17140)
Bumps [postcss](https://github.com/postcss/postcss) from 8.2.13 to 8.4.35.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.2.13...8.4.35)

---
updated-dependencies:
- dependency-name: postcss
  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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-24 15:44:12 +02:00
Carlos Santana
8bb41eda04 fix: Update test image ssl/crypto libs (#17303)
Signed-off-by: Carlos Santana <csantana23@gmail.com>
2024-02-24 14:52:09 +02:00
Sonam
7fe1263300 fix(ui): Include application name in status badge (#17126)
* Added application name to badge

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* Rever svg change

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* Doc for disabling application name

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* Flag to not display application name

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* Added tests

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* Make no app name the default

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* Have enable app name as a query parameter

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* Have enable app name as a query parameter

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* argocd to original

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>

* Update docs/user-guide/status-badge.md

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

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

---------

Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: sshenoy6 <sonamkaup_shenoy@intuit.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-02-24 14:04:30 +02:00
Blake Pettersson
5bc1850aa1 chore(ci): use changed files action (#17180)
`dorny/paths-filter` doesn't seem to handle (multiple) negations well.
Therefore, this PR switches to `tj-actions/changed-files`, since it is
already successfully used in argo-workflows.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-02-23 10:51:09 -05:00
Muhammad Zain ul abidin
4dc91dcb9d docs for PR #9791 (#16021)
Signed-off-by: mzain <zainawan89@gmail.com>
2024-02-22 10:01:44 -07:00
Damon Edstrom
262d287645 docs: Added examples for alternate EKS cluster authentication methods (#17270)
* Added examples for alternate EKS cluster authentication methods
Signed-off-by: Damon Edstrom <dedstrom@venerated.io>

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

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

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

---------

Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-02-22 16:10:11 +00:00
Oscar Wieman
df2b0e2711 fix typo (#17272)
Signed-off-by: Oscar Wieman <oscar@oscarr.nl>
2024-02-22 02:07:44 +00:00
Wilson Wang
5d4c0ecdee reduce unnecessary unmarshal (#17187)
Signed-off-by: Wilson Wang <wilson.wang@bytedance.com>
2024-02-21 20:56:06 -05:00
Dan Garfield
6aa79f283c Update contributors-quickstart.md (#17266)
Signed-off-by: Dan Garfield <dan@codefresh.io>
2024-02-21 09:14:02 -08:00
Adrian Moisey
17ef8b9579 docs: Fix typo in notifications example (#17250)
* Fix typo in notifications example

I'm not too sure what the example should look like, so I'm taking a guess here.

Signed-off-by: Adrian Moisey <adrian@changeover.za.net>

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

Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
Signed-off-by: Adrian Moisey <adrian@changeover.za.net>

---------

Signed-off-by: Adrian Moisey <adrian@changeover.za.net>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2024-02-21 20:21:01 +05:30
Gaston Festari
4761255608 docs(metrics): add release label to haproxy (#17264)
Add missing `release` label to `argocd-redis-haproxy-metrics`
ServiceMonitor example.

Signed-off-by: Gaston Festari <cilindrox@gmail.com>
2024-02-21 16:36:14 +02:00
itayvolo
d55e926a63 docs: Update USERS.md (#17248)
* Update USERS.md

Signed-off-by: itayvolo <72027444+itayvolo@users.noreply.github.com>

* Update USERS.md

Signed-off-by: itayvolo <72027444+itayvolo@users.noreply.github.com>

* Update USERS.md

Signed-off-by: itayvolo <72027444+itayvolo@users.noreply.github.com>

---------

Signed-off-by: itayvolo <72027444+itayvolo@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-21 14:34:43 +00:00
dependabot[bot]
3cc02779ca chore(deps): bump library/node from 50703e6 to 65998e3 (#17243)
Bumps library/node from `50703e6` to `65998e3`.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-20 13:23:01 +02:00
Dong Wang
fa1ad0c375 Add AppName to the RepoServerAppDetailsQuery for notification-controller (#17233)
Signed-off-by: Dong Wang <wd@wdicc.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-20 12:24:32 +02:00
dependabot[bot]
b80015e27e chore(deps): bump library/golang in /test/remote (#17244)
Bumps library/golang from `ef61a20` to `7b297d9`.

---
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-02-20 10:33:55 +02:00
dependabot[bot]
8a866492db chore(deps): bump library/node from 6fb1883 to 65998e3 in /ui-test (#17245)
Bumps library/node from `6fb1883` to `65998e3`.

---
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-02-20 10:33:31 +02:00
Luke
078eb6c56d feat(grafana-dashboard): Update example dashboard, add AppSet Telemetry (#17232)
Signed-off-by: lukepatrick <lukephilips@gmail.com>
2024-02-19 19:29:27 +02:00
dependabot[bot]
d9e0666795 chore(deps): bump library/golang in /test/remote (#17138)
Bumps library/golang from `094e47e` to `ef61a20`.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-19 18:42:02 +02:00
dependabot[bot]
47eddf169e chore(deps): bump library/node from 21.6.1 to 21.6.2 (#17223)
Bumps library/node from 21.6.1 to 21.6.2.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-19 14:58:46 +02:00
dependabot[bot]
4e224ee878 chore(deps): bump library/node from 21.6.1 to 21.6.2 in /ui-test (#17226)
Bumps library/node from 21.6.1 to 21.6.2.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-19 13:56:27 +02:00
Mikołaj Przybysz
50284f7c5c Count git checkout failures (#15657)
Signed-off-by: Mikołaj Przybysz <1093404+mikolajprzybysz@users.noreply.github.com>
Co-authored-by: Mikołaj Przybysz <1093404+mikolajprzybysz@users.noreply.github.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-02-19 12:44:44 +02:00
Keith Chong
c0e679a66c fix: Permission Denied error when calling GetAppDetails API (#17221) (#17229)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-02-16 12:20:08 -08:00
NextBasket-Petyo
d5a4f81b8e docs: Add Nextbasket to USERS.md (#17228)
Signed-off-by: NextBasket-Petyo <100193556+NextBasket-Petyo@users.noreply.github.com>
2024-02-16 17:55:40 +01:00
Matt Menzenski
d5b0a4f029 docs: Add PayIt to USERS.md (#17215)
* docs: Add PayIt to USERS.md

Signed-off-by: Matt Menzenski <matt@payitgov.com>

* docs: Add PayIt to USERS.md

Signed-off-by: Matt Menzenski <matt@payitgov.com>

---------

Signed-off-by: Matt Menzenski <matt@payitgov.com>
2024-02-15 17:56:40 -05:00
Alexandre Gaudreault
79e94b8fe0 chore(deps): upgrade helm to 3.14.1 (#17213)
* chore(deps): upgrade helm to 3.14.1

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

* move files to folder......

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

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-02-15 08:26:32 -07:00
Alexandre Gaudreault
ff7192bfc5 fix(controller): add missing workqueue metrics (#16315) (#17013)
* fix(controller): add missing kubernetes metrics

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* validate workqueue metrics are present

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* use newer metrics registry

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix duplicated

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* init runtime controller in test to have correct metrics

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix lint error

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

* update controller-runtime to remove metrics with high cardinality

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

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-02-14 11:48:39 -05:00
Michael Morris
6d0ba1fad7 feat: wait until resources are deleted #6085 (#16733)
* feat: wait until resources are deleted

Signed-off-by: MichaelMorris <michael.morris@est.tech>

* Added unit and e2e test

Signed-off-by: MichaelMorris <michael.morris@est.tech>

---------

Signed-off-by: MichaelMorris <michael.morris@est.tech>
2024-02-14 15:01:34 +02:00
Lukas Wöhrl
5d6111b745 fix: infer correct shard in statefulset setup (#17124, #17016) (#17167)
* fix: infer correct shard in statefulset setup

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix the case if only a single replica

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: resolving pointer on shard compare

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: add readlock for cluster accessor

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: use defer to protect access of 'shard'

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: revert locking in getclusteraccessor

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: handle nil shard case

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: handle any nil shard value as false

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: handle nil case and fix another missing pointer dereference 

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* revert

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: added tests and fixed some behaviour bugs

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* test: add test to validate that Shard value is not overriden

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: added tests and fixe the case when server is changed inside a secret

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* tests: add test cases for infering the shard logic

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

---------

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>
2024-02-13 11:51:41 -05:00
Suraj yadav
db34f98451 docs: Private-helm-repo section target added to helm.md (#16697)
* helm-repo

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

* Update docs/user-guide/helm.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Suraj yadav <harrypotter1108@gmail.com>

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
Signed-off-by: Suraj yadav <harrypotter1108@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-02-13 14:16:09 +01:00
Ajay Chidambaram
5406a1a5e8 docs: fixes Template.md targetRevision typo (#17190)
* Template.md targetRevision typo fixed

Signed-off-by: Ajay Chidambaram <105060495+chidambaram27@users.noreply.github.com>

* retrigger checks

Signed-off-by: Ajay Chidambaram <105060495+chidambaram27@users.noreply.github.com>

* sign off

Signed-off-by: chidambaram27 <chidambaramk.27@gmail.com>
Signed-off-by: Ajay Chidambaram <105060495+chidambaram27@users.noreply.github.com>

* sign off

Signed-off-by: Ajay Chidambaram <105060495+chidambaram27@users.noreply.github.com>

---------

Signed-off-by: Ajay Chidambaram <105060495+chidambaram27@users.noreply.github.com>
Signed-off-by: chidambaram27 <chidambaramk.27@gmail.com>
2024-02-13 13:03:16 +01:00
David Grizzanti
c082a0cca5 Update triggers doc to fix typo (#17185)
Signed-off-by: David Grizzanti <dgrizzanti@users.noreply.github.com>
2024-02-12 22:35:22 -05:00
Jan Schumann
82433ff1a8 feat: query escape function for notifications (#16343)
Signed-off-by: Jan Schumann <js@schumann-it.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-12 12:34:16 +02:00
Soumya Ghosh Dastidar
4458d5fa80 fix: stop initializing deployment informer if dynamic sharding is disabled (#17097)
* fix: stop initializing deployment informer if dynamic sharding is disabled

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: updated sharding cache getter func

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

---------

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2024-02-11 13:32:17 -05:00
shlomi tubul
adceae9ec8 feat: Add support for passing Redis Sentinel username(ACL) and password (#17168)
* Add support for passing Sentinel username and password

Signed-off-by: ShlomiTubul <shlomi.tubul@placer.ai>

* fix align with var naming

Signed-off-by: ShlomiTubul <shlomi.tubul@placer.ai>

* fix align with var naming

Signed-off-by: ShlomiTubul <shlomi.tubul@placer.ai>

---------

Signed-off-by: ShlomiTubul <shlomi.tubul@placer.ai>
Co-authored-by: ShlomiTubul <shlomi.tubul@placer.ai>
2024-02-11 00:48:15 -05:00
AS
bb1c1ed44d chore(dex): 2.37.0 to 2.38.0 (#17157)
Signed-off-by: asingh51 <ashutosh_singh@intuit.com>
Co-authored-by: asingh51 <ashutosh_singh@intuit.com>
2024-02-09 09:37:04 -05:00
Alexandre Gaudreault
d7da05f3aa docs: fix error in toolchain setup (#17154)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-02-08 18:09:17 -08:00
Blake Pettersson
7e80f1e8e5 chore(ci): tweak backend filters (#17134)
The existing backend filters get triggered even on frontend-only or
docs-only changes, which should not be the case. The reason for this
seems to be the fact that each filter line is ORed rather than ANDed.
To remedy this, we put all the filters on the same line.

I tried the filter out in a REPL
(https://runkit.com/blakepettersson/65c3daba99653f0008c74eda). This is
a filter using picomatch (the same library `dorny/paths-filter` uses).

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-02-07 18:43:50 -05:00
Prune Sebastien THOMAS
f77cf94908 fix(kustomize): set build dir (#15057) #16229 #16652 (#16653)
* use repo root, not app path

Signed-off-by: Prune <prune@lecentre.net>

correct patch

Signed-off-by: Prune <prune@lecentre.net>

* use Getwd to find the root path for diff commands

Signed-off-by: Prune <prune@lecentre.net>

* set dot a default for argo app commands

Signed-off-by: Prune <prune@lecentre.net>

* revert default values

Signed-off-by: Prune <prune@lecentre.net>

* patch diff in TestNamespacedResourceDiffing

Signed-off-by: Prune <prune@lecentre.net>

* patching some diff and sync

Signed-off-by: Prune <prune@lecentre.net>

* patch remaining diff in error

Signed-off-by: Prune <prune@lecentre.net>

---------

Signed-off-by: Prune <prune@lecentre.net>
2024-02-07 14:00:00 -05:00
fsl
52ffd7df4d chore(deps): bump library/node from 20.7.0 to 21.6.1 (#17065)
Signed-off-by: fengshunli <1171313930@qq.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-07 16:21:00 +02:00
dependabot[bot]
3c9a2fbc59 chore(deps): bump library/node from 20.6.1 to 21.6.1 (#17053)
Bumps library/node from 20.6.1 to 21.6.1.

---
updated-dependencies:
- dependency-name: library/node
  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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-07 15:06:57 +02:00
Sorav Kumar Sharma
93a668ac09 fix the typo (#17116) 2024-02-07 18:32:07 +05:30
dependabot[bot]
98d5a2bf86 chore(deps-dev): bump yarn from 1.22.10 to 1.22.21 in /ui (#17096)
Bumps [yarn](https://github.com/yarnpkg/yarn) from 1.22.10 to 1.22.21.
- [Release notes](https://github.com/yarnpkg/yarn/releases)
- [Changelog](https://github.com/yarnpkg/yarn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yarnpkg/yarn/compare/1.22.10...v1.22.21)

---
updated-dependencies:
- dependency-name: yarn
  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>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-07 14:11:05 +02:00
dependabot[bot]
7ce342fb88 chore(deps): bump library/redis from 7.0.11 to 7.2.4 in /test/container (#16806)
Bumps library/redis from 7.0.11 to 7.2.4.

---
updated-dependencies:
- dependency-name: library/redis
  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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-07 12:55:20 +02:00
dependabot[bot]
b23e71f578 chore(deps-dev): bump yarn from 1.22.10 to 1.22.13 in /ui-test (#17092)
Bumps [yarn](https://github.com/yarnpkg/yarn) from 1.22.10 to 1.22.13.
- [Release notes](https://github.com/yarnpkg/yarn/releases)
- [Changelog](https://github.com/yarnpkg/yarn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yarnpkg/yarn/compare/1.22.10...v1.22.13)

---
updated-dependencies:
- dependency-name: yarn
  dependency-type: direct:development
...

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-02-07 11:54:46 +02:00
dependabot[bot]
8ac7b6da38 chore(deps): bump library/golang from 1.21.3 to 1.22.0 in /test/remote (#17111)
Bumps library/golang from 1.21.3 to 1.22.0.

---
updated-dependencies:
- dependency-name: library/golang
  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-02-07 10:53:43 +02:00
Soumya Ghosh Dastidar
d494d3a331 fix: ci failures (#17107)
Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2024-02-07 00:56:14 +01:00
borisssmidtCET
b93874e741 Add a description for using contour httpproxy CRD (#14614)
Which allows you to reuse the same hostname.

Co-authored-by: Boris Smidt <boris.smidt@restore.eu>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-02-06 23:56:30 +02:00
jcourteau
af20dae498 docs: Update Okta OIDC SSO docs (#13811)
* Update the Okta SSO docs

* fill out the OIDC section with step-by-step instructions on using Okta
  with custom authorization servers
* adjust outdated docs about updating the docs

Signed-off-by: Jonas Courteau <jonas.courteau@abcellera.com>

* Add the Okta version that these docs are written against

Signed-off-by: Jonas Courteau <jonas.courteau@abcellera.com>

---------

Signed-off-by: Jonas Courteau <jonas.courteau@abcellera.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-02-06 13:33:12 -07:00
Petr Studeny
4bf4629231 docs(webhook): use real cm name instead of placeholder (#17002)
The document says I should registed configMap named argocd-notifications-cm but then uses placeholder in examples.

Signed-off-by: Petr Studeny <studenyp@gmail.com>
2024-02-07 01:31:13 +05:30
Tal Yitzhak
c4a9df6570 Updated otelgrpc to remediate CVE found by JFrog Xray (#17084)
Signed-off-by: Tal Yitzhak <taly@lightrun.com>
Co-authored-by: Tal Yitzhak <taly@lightrun.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-02-07 00:04:54 +05:30
Adam Huganir
ca27c41bc2 typo registires -> registries (#17099)
Signed-off-by: Adam Huganir <adam@huganir.com>
2024-02-06 09:54:11 -07:00
Eshwar Hebbur Shivakumar
0b22a1198a fix(ui): Change path to "root" when path is root directory (#14949)
* change path to display root

Signed-off-by: Eshwar Hebbur Shivakumar <eshwar1011235@gmail.com>

* Fix inequality typo

Signed-off-by: Eshwar Hebbur Shivakumar <eshwar1011235@gmail.com>

* Fix lint issues

Signed-off-by: Eshwar Hebbur Shivakumar <eshwar1011235@gmail.com>

---------

Signed-off-by: Eshwar Hebbur Shivakumar <eshwar1011235@gmail.com>
2024-02-06 10:27:05 -05:00
Blake Pettersson
228eda5e1e chore(ci): run ci checks conditionally (#16982)
* chore(ci): run ci checks conditionally

This should prevent docs changes from having the need to run e2e tests
etc, and prevent backend changes from needing to run ui tests, and vice
versa.

This is similar to previous attempts (see #16706 and #13507), with the
difference here that we add the if checks on each _step_ rather than
each _job_ - the reason being that most of these jobs are required, and
if we skip whole jobs any PR which does this will be left hanging
indefinitely, so Github forces us to do this on a step level instead.

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

* chore(ci): run ci checks conditionally

Try conditional jobs, according to https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks#handling-skipped-but-required-checks

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

* chore(ci): add composite test-e2e action

This is a workaround for the e2e tests which do not run yet report `pending` when they are actually skipped.

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

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Remington Breeze <remington@breeze.software>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-02-06 10:26:38 -05:00
Anand Francis Joseph
555f6f42d2 docs(proposal): decoupling app sync from control plane user w/ impersonation (#14255)
* Proposal for decoupling application sync from control plane user using impersonation

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Moved the proposal document to the right directory

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Update docs/decouple-application-sync-user-using-impersonation

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Anand Francis Joseph <anandfrancis.joseph@gmail.com>

* Update docs/decouple-application-sync-user-using-impersonation

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Anand Francis Joseph <anandfrancis.joseph@gmail.com>

* Update docs/decouple-application-sync-user-using-impersonation

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Anand Francis Joseph <anandfrancis.joseph@gmail.com>

* Modified the proposal to have control in AppProjects alone instead of Application and AppProject

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Removed proposal placed in wrong directory and corrected examples

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Update docs/proposals/decouple-application-sync-user-using-impersonation

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Anand Francis Joseph <anandfrancis.joseph@gmail.com>

* Update docs/proposals/decouple-application-sync-user-using-impersonation

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Anand Francis Joseph <anandfrancis.joseph@gmail.com>

* Addressed review comments

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Additional corrections

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed alternative proposals section to include only AppProject based approach

Signed-off-by: anandf <anjoseph@redhat.com>

* Added information on impersonation and added related links

Signed-off-by: anandf <anjoseph@redhat.com>

* Added examples for remote cluster destination with the required RBAC access

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed clusterrole and clusterrolebinding creation commands

Signed-off-by: anandf <anjoseph@redhat.com>

* Addressed review comments from Akram

Signed-off-by: anandf <anjoseph@redhat.com>

* Corrected RBAC to include serviceaccounts that can be impersonated as swell

Signed-off-by: anandf <anjoseph@redhat.com>

* Address few more review comments from Ishita, Akram

Signed-off-by: anandf <anjoseph@redhat.com>

* Fixed a typo and updated the last updated date field

Signed-off-by: anandf <anjoseph@redhat.com>

* Added information of the sync hook behaviour and also corrected the namespace to match that of destination

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Changed proposal to meet the latest api design using destinationServiceAccounts

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Fixed proposal document to use destinationServiceAccounts struct

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Renamed proposal file to have .md extension

Signed-off-by: anandf <anjoseph@redhat.com>

* Using glob pattern instead of regex, and corrected the order of precedence when multiple matches are available

Signed-off-by: anandf <anjoseph@redhat.com>

---------

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>
Signed-off-by: Anand Francis Joseph <anandfrancis.joseph@gmail.com>
Signed-off-by: anandf <anjoseph@redhat.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-02-06 10:18:00 -05:00
Thomas Decaux
5100726fd6 feat: add health-checks for eck elastic beat (#16563)
* feat: add health-checks for eck elastic beat

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

* fix tests

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

---------

Signed-off-by: ebuildy <ebuildy@gmail.com>
2024-02-06 03:01:04 +00:00
Michael Crenshaw
769836e6ea fix: log all token verification failures (#16625)
* fix: log all token verification failures

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

* better

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-02-06 02:56:39 +00:00
Linghao Su
2082a21121 fix(ui): prevent app name too long hide open icon (#16983)
* fix(ui): prevent app name too long hide open icon

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

* fix(ui): fix app resource list lint

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

---------

Signed-off-by: linghaoSu <linghao.su@daocloud.io>
2024-02-05 20:56:58 -05:00
Gustavo Esser
b1c6dc5742 DOC: add Fly Security and Telavita in USERS.md (#17076)
Signed-off-by: Gustavo Esser <esser1997@hotmail.com>
2024-02-06 02:26:17 +01:00
Bardia Heydari
5246429cad chore: improve error logs (#10592) (#17089)
Signed-off-by: Bardia Heydari <az.bardia13@gmail.com>
2024-02-05 16:42:20 -05:00
Ishita Sequeira
3fda27e8d9 fix(controller): fix application controller deployment crashing (#16984)
* fix application controller deployment crashing and update manifests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* remove environment variable ARGOCD_ENABLE_DYNAMIC_CLUSTER_DISTRIBUTION

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix auto-generated docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-02-05 21:09:35 +00:00
Michael Crenshaw
55713b3474 fix(ci): correct helm checksum path (#17081)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-02-02 20:03:12 +00:00
Leonardo Luz Almeida
dc1ccea568 feat: add prometheus metrics around proxy extension requests (#17012)
* feat: add prometheus metrics around proxy extension requests

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

* update go.mod

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

* fix metrics bugs

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

* fix unit-test

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

* Add unit suffix in the duration metric

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

* update doc

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

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-02-02 16:56:48 +00:00
Michael Crenshaw
fa31c2323a chore(ci): bump k3s versions to latest patches (#17060)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-02-01 13:39:20 -05:00
Kerwood
b8aeb781a6 fix: removed pkce code challange check for WebUI (#16730)
Signed-off-by: Patrick Kerwood <patrick@kerwood.dk>
2024-02-01 08:27:30 -08:00
Carlos Santana
0c8bc1d61e chore(deps): Upgrade aws-sdk-go to support eks pod identity (#17063)
* chore: Upgrade aws-sdk-go to support eks pod identity

---------

Signed-off-by: Carlos Santana <carrlos@amazon.com>
Co-authored-by: Mathieu Bruneau <brunemat@amazon.com>

* add cogen for notifications

Signed-off-by: Carlos Santana <carrlos@amazon.com>

---------

Signed-off-by: Carlos Santana <carrlos@amazon.com>
Co-authored-by: Mathieu Bruneau <brunemat@amazon.com>
2024-01-31 21:30:32 -05:00
dependabot[bot]
28f362b886 chore(deps): bump github.com/evanphx/json-patch (#17021)
Bumps [github.com/evanphx/json-patch](https://github.com/evanphx/json-patch) from 5.6.0+incompatible to 5.9.0+incompatible.
- [Release notes](https://github.com/evanphx/json-patch/releases)
- [Commits](https://github.com/evanphx/json-patch/compare/v5.6.0...v5.9.0)

---
updated-dependencies:
- dependency-name: github.com/evanphx/json-patch
  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-01-31 15:29:36 -05:00
Simon HEGE
f4019b7657 chore(deps): bump Helm to 3.14.0 (#17031) (#17032)
* bump helm to 3.14.0

Signed-off-by: Simon HEGE <simonhege@gmail.com>

* Add a note about helm bump in upgrade instructions

Signed-off-by: Simon HEGE <simonhege@gmail.com>

---------

Signed-off-by: Simon HEGE <simonhege@gmail.com>
2024-01-31 15:26:28 -05:00
Shyukri Shyukriev
291445f132 chore: use kubernetes 1.29.0 in CI (#17050)
Keeping 1.25 for now.

Signed-off-by: Shyukri Shyukriev <shukera@gmail.com>
2024-01-31 15:23:45 -05:00
Andrew Block
c691d366a5 Corrected certificate managment for OCI helm charts (#16656)
Signed-off-by: Andrew Block <andy.block@gmail.com>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2024-01-30 21:45:11 -05:00
Nicholas Morey
7f749c62b8 docs(hooks): add postdelete to table (#17048)
Add `PostDelete` to the hooks table, and clean up wording and old availability statement (all the way back to v1, probably irrelevant).

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-01-30 20:51:25 -05:00
Nicholas Morey
55918abd77 docs(argocd-cm): add timeout.reconciliation.jitter example (#17044)
Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-01-30 10:21:49 -08:00
Nicholas Morey
4d53d36268 docs(kustomize): add components yaml example (#17043)
Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-01-30 10:21:29 -08:00
Nicholas Morey
981bceecb0 docs(applicationset): explain impact of empty spec in templatePatch (#17042)
* docs: explain impact of empty spec in templatePatch

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

* fix: not conditional helm values

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

---------

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-01-30 09:55:50 -08:00
Siddhesh Ghadi
e5c88c914b feat: Prune resources in reverse order of syncwave during sync (#15074) (#16748)
* Add e2e & doc for prune order during sync

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

* Point gitops-engine to fork with reverse prune changes

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

* Fix ci linting failures

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

* Update gitops-engine commit ref

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

---------

Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>
2024-01-30 10:08:59 -05:00
saeedhosseini
3c21242356 Fix typo in documentation (#17022)
Signed-off-by: saeedhosseini <saeedhosseini21@gmail.com>
2024-01-29 21:04:01 +05:30
Yudi A Phanama
be1f0eafb8 fix(redis): go-redis v9 regression missing metrics and reconnect hook (#13415) (#15275)
* fix(redis): go-redis v9 regression missing metrics and reconnect hook

Signed-off-by: phanama <yudiandreanp@gmail.com>

* fix: golangci lint return values not checked in tests

Signed-off-by: phanama <yudiandreanp@gmail.com>

* chore: move dnsError var locally into func

Signed-off-by: phanama <yudiandreanp@gmail.com>

---------

Signed-off-by: phanama <yudiandreanp@gmail.com>
2024-01-29 10:31:15 -05:00
Nicholas Morey
4e084ace8c docs(helm): fix yaml formatting on code block (#17001)
Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-01-26 15:38:49 -05:00
Sonam
8c9abb27ef Badge for apps in any namespace (#16739)
Signed-off-by: sshenoy6 <sonamkaup_shenoy@intuit.com>
Co-authored-by: sshenoy6 <sonamkaup_shenoy@intuit.com>
2024-01-26 15:01:30 -05:00
Nicholas Morey
344f23b5e8 docs(helm): add example of public oci chart (#17000)
There doesn't appear to be an example of using an OCI helm chart repository, so this adds a simple declarative example. This is a common question from the community.

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-01-26 15:42:52 +00:00
Fish-pro
85009d941c Clean up repeated package import (#16987)
Signed-off-by: Zechun Chen <zechun.chen@daocloud.io>
2024-01-25 09:51:43 -05:00
Michael Crenshaw
8932036d53 fix(server): allow disabling content-type check (#16959)
* fix(server): allow disabling content-type check

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

* fix spacing

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-01-24 14:45:09 -05:00
fsl
6d0850749b chore(deps): rm go-jose Cxb6dee8d5-b814 high vuln (#16947)
Signed-off-by: fengshunli <1171313930@qq.com>
2024-01-24 09:42:42 -05:00
1102
666499f610 feat(health): support for resourcerecordsets aws.crossplane.io resource (#16823)
Signed-off-by: nueavv <nuguni@kakao.com>
2024-01-24 00:23:58 -05:00
Christian Hernandez
0012e787f3 docs: Added an example of downloading the latest stable version (#16968)
* added an example of downloading the latest stable version

Signed-off-by: Christian Hernandez <christian@chernand.io>

* Update docs/cli_installation.md

Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Signed-off-by: Christian Hernandez <christianh814@users.noreply.github.com>

---------

Signed-off-by: Christian Hernandez <christian@chernand.io>
Signed-off-by: Christian Hernandez <christianh814@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-01-24 03:32:29 +00:00
Keith Chong
fec5708ea5 docs: Update argocd-cm.yaml bannerposition description (#16961) (#16962)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-01-23 18:32:52 -05:00
Anand Francis Joseph
97727cbb59 fix(appcontroller): Uptake fix in gitops engine which fixes application sync with auto create ns and server side apply (#16942)
* Uptake fix in gitops engine to fix auto create ns with server side apply

Signed-off-by: anandf <anjoseph@redhat.com>

* Moved the new e2e test to different location

Signed-off-by: anandf <anjoseph@redhat.com>

* Fix test name to be less than 63 char for creating ns

Signed-off-by: anandf <anjoseph@redhat.com>

* update gitops-engine with latest master

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

---------

Signed-off-by: anandf <anjoseph@redhat.com>
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Co-authored-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-01-23 12:55:30 -05:00
Linghao Su
b234264d79 fix(ui): fix display banner when not explicit set position (#16741)
Signed-off-by: linghaoSu <linghao.su@daocloud.io>
2024-01-23 12:09:00 -05:00
Ishita Sequeira
c29f6da00c separate application controller roles into a separate manifests directory (#16884)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-01-22 15:39:56 -05:00
Arnold
f7236d794b feat: Add PITS Globale Datenrettungsdienste to user list (#16765)
* Add PITS Globale Datenrettungsdienste to user list

Signed-off-by: Arnold <87698848+arnoldberlin@users.noreply.github.com>

* Update USERS.md

Signed-off-by: Arnold <87698848+arnoldberlin@users.noreply.github.com>

---------

Signed-off-by: Arnold <87698848+arnoldberlin@users.noreply.github.com>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2024-01-22 15:26:26 +00:00
Blake Pettersson
9042f415b7 Revert "chore: Preventing runnings jobs when updating documentation (#16706)" (#16943)
This reverts commit 65869a3860.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-01-22 08:49:50 -05:00
Sergey Lanzman
397063fea4 fix(action): Add validation for Kustomize Build Options white space (#16704)
Signed-off-by: Sergey Lanzman <sergeylanz@gmail.com>
2024-01-21 12:18:36 +05:30
Alexandre Gaudreault
7302a52ea1 feat(controller): add sync jitter(#14241) (#16820)
* feat(controller): add sync jitter

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* convert to duration for simplicity

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* docs

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* add config to manifests

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix tests

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2024-01-21 11:52:32 +05:30
Michael Crenshaw
9ecc5aec2a fix(ui): set content-type for certain UI requests (#16923) (#16930)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-01-19 16:47:14 +00:00
1102
21c384f423 feat(health): support for distribution aws.crossplane.io resource (#16827)
Signed-off-by: nueavv <nuguni@kakao.com>
2024-01-19 11:20:10 -05:00
Siddhesh Ghadi
32e373829b Initialize & send forceHttpBasicAuth & enableOCI params correctly during repo update from UI (#16794) 2024-01-19 10:14:38 -05:00
Aymen Ben Tanfous
80683acb71 docs: Fixed Slugify doc in GoTemplate.md (#16685)
* docs: Fixed Slugify doc in  GoTemplate.md

Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@gmail.com>

* Update docs/operator-manual/applicationset/GoTemplate.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@gmail.com>

* Update docs/operator-manual/applicationset/GoTemplate.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@gmail.com>

---------

Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-01-19 15:12:22 +00:00
Sergiy Kulanov
8a0bf41863 fix(cli): add support for Application in any namespace for app delete cmd (#16898)
Use fully qualified application names when operate with Applications

Closes: #16896

Signed-off-by: Sergiy Kulanov <sergiy_kulanov@epam.com>
2024-01-18 10:57:16 -05:00
dependabot[bot]
f0cbf516fc chore(deps): bump github.com/go-git/go-git/v5 from 5.8.1 to 5.11.0 (#16711)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.8.1 to 5.11.0.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.8.1...v5.11.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  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-01-18 10:25:06 -05:00
Aymen Ben Tanfous
65869a3860 chore: Preventing runnings jobs when updating documentation (#16706)
* Preventing runnings jobs when updating documentation

Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@cimpress.com>

* Empty line added to .md file

Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@cimpress.com>

---------

Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@cimpress.com>
Co-authored-by: Aymen Ben Tanfous <aymen.bentanfous@cimpress.com>
2024-01-18 10:27:14 +01:00
Ryan Flynn
2b95bc0d3e docs: Update Azure AD to Entra ID (#16869)
* Update Azure AD to Entra ID

https://learn.microsoft.com/en-us/entra/fundamentals/new-name

Signed-off-by: Ryan Flynn <mr.ryanflynn@gmail.com>

* Add formerly known as azuread

Signed-off-by: Ryan Flynn <mr.ryanflynn@gmail.com>

---------

Signed-off-by: Ryan Flynn <mr.ryanflynn@gmail.com>
2024-01-17 22:55:27 +00:00
Chetan Deshmukh
d5e119c251 Adding CNCF blog to readme file (#16893)
Signed-off-by: Chetan Deshmukh <cdeshmukh@infracloud.io>
2024-01-17 14:12:34 +00:00
Blake Pettersson
d367b727c8 chore: allow @approvers-docs to approve readme.md (#16897)
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-01-17 09:09:43 -05:00
Regina Scott
3997dbef8e update follow-redirects to 1.15.5 (#16899)
Signed-off-by: Regina Scott <rescott@redhat.com>
2024-01-17 09:08:41 -05:00
Yuan Tang
c7bf0648e5 docs: Add LinkedIn badge to README.md (#16889)
Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>
2024-01-17 11:15:17 +05:30
Sergiy Kulanov
256c2ae5dc fix(cli): add support for Application in any namespace for app wait (argoproj#16812) (#16816)
Use fully qualified application names in ApplicationWaitCommand

Closes: #16812

Signed-off-by: Sergiy Kulanov <sergiy_kulanov@epam.com>
2024-01-16 22:51:54 -05:00
doxsch
180b99010e fix: added logging if repo credentials collide (#16833)
Signed-off-by: doxsch <28098153+doxsch@users.noreply.github.com>
2024-01-16 22:51:03 -05:00
Zubair Haque
15060e1d73 adding tests for githandlers (#16678)
Signed-off-by: zhaque44 <haque.zubair@gmail.com>
2024-01-16 22:27:20 -05:00
Alexander Matyushentsev
7ec9999b01 fix: enforce content type header for API requests (#16860)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-01-16 18:54:13 +00:00
Isaac Gaskin
d9df2525c5 feat: adding option to specify an aws profile to use by the argocd-server when adding a EKS cluster (#16767)
useful for argocd-servers which are not running in AWS and want to add multiple EKS clusters using
separate keys instead of assuming roles

#16766

Signed-off-by: Isaac Gaskin <isaac.gaskin@circle.com>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2024-01-12 18:39:41 -05:00
eddimull
b12630c4be typo in comment (#16834)
Signed-off-by: eddimull <eddimull@gmail.com>
2024-01-11 18:08:42 +01:00
mugi
54de532940 fix(manifests): applicationset-controller dir is not added to cluster-rbac/kustomization.yaml. (#16810)
* fix(manifests): applicationset-controller dir is not added to cluster-rbac/kustomization.yaml.

Related PR: https://github.com/argoproj/argo-cd/pull/16699.

I missed adding a new folder(applicationset-controller) to kustomization.yaml.

So, i addressed it.

Signed-off-by: mugioka <okamugi0722@gmail.com>

* chore: exec `make manifests`.

Signed-off-by: mugioka <okamugi0722@gmail.com>

* chore: exec `make manifests`.

Signed-off-by: mugioka <okamugi0722@gmail.com>

---------

Signed-off-by: mugioka <okamugi0722@gmail.com>
2024-01-11 07:52:18 -05:00
Akram Ben Aissi
cd4fc97c9d fix: Use the cache for sharding (#15237)
* feat(sharding): use a cache

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* cluster cmd

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* - Assign shard 0 to in-cluster cluster and nil check updates
- Caching clusters while sharding: Fixing unit tests
- Update generated docs
- Debug e2e tests
- Default the shardNumber to the number of replicas if it is calculated to a higher value
- defered Unlock only when a lock is set
- Disabling temporarly other versions of k3s to check if e2e passes
- Do not fail if hostname format is not abc-n
- Fix unit test and skip some e2e
- Skip TestGitSubmoduleHTTPSSupport test
- Remove breaking defer c.lock.Unlock()
- Reverting testing all k3s version
- Default sharding fix
Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* fixes related to code review: renaming structure param, moving db initialisation

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Code review

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Set default shard to 0

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Set different default value for Sts and Deployment mode

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Expose ClusterShardingCache

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Removing use of argoDB.db for DistributionFunction

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Update generated documentation

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Fix comment about NoShardingDistributionFunction and NoShardingAlgorithm

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>
Co-authored-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2024-01-11 01:32:11 -05:00
Alexandre Gaudreault
54f1572d46 fix: allow to run codegen outside GOPATH (#16511)
* fix: allow to run codegen outside GOPATH

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* clientgen

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* openapigen

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* remove ensure-gopath

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2024-01-09 21:09:34 -05:00
Mahesh Kasbe
d6da9f2a15 Added Openkruise workload integration health check scripts (#16238)
Signed-off-by: Mahesh <maheshkasbe010@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-01-09 21:05:07 -05:00
Anand Francis Joseph
9b27aeb1a4 Added socks5 proxy support for ssh based git URL, upgraded go-git to 5.10.1 (#15864)
Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>
2024-01-09 09:41:12 -05:00
mugi
2024659696 chore(manifests): add ClsuterRole/ClusterRoleBinding for applicationset controller. (#16699)
Closes https://github.com/argoproj/argo-cd/issues/16698.

Signed-off-by: mugioka <okamugi0722@gmail.com>
2024-01-08 22:57:27 -05:00
Ishita Sequeira
8ebe1cd3c4 fix: add list permission deployments (#16785)
* add list permissions for deployments to application controller

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert redis-ha chart changes

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert redis-ha chart changes

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-01-08 21:58:34 -05:00
Alexander Matyushentsev
c5b9c67073 fix: support specifying username/password for redis holding manifests in argocd-server (#16786)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-01-09 00:04:46 +00:00
Lie Ryan
40760eb852 Document restarting argocd after modifying argocd-cm (#12405)
Signed-off-by: Lie Ryan <lie.1296@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-01-07 17:48:54 +01:00
mfreeman451
ecbd24da10 docs: Update signed-release-assets.md (#16755)
Missing \ in example

Signed-off-by: mfreeman451 <mfreeman451@gmail.com>
2024-01-05 19:04:54 -05:00
Michael Crenshaw
c4ac5aaa97 docs: add context to configmap example (#16763)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-01-05 20:13:35 +00:00
Alexander Matyushentsev
4afddf71cc feat: webhook should use 'rename' to copy app manifests of previous commit (#16754)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-01-05 08:53:52 -08:00
Yi Cai
1372529d56 fix(ui):Fixed log horizontal scroll for issue #16411 (#16727)
* Fixed log horizontal scroll

Signed-off-by: Yi Cai <yicai@redhat.com>

* Updated log line-height

Signed-off-by: Yi Cai <yicai@redhat.com>

---------

Signed-off-by: Yi Cai <yicai@redhat.com>
2024-01-05 08:53:08 -08:00
Greg Werner
d5955508da Update USERS.md with IllumiDesk (#16742)
Signed-off-by: Greg Werner <werner.greg@gmail.com>
2024-01-04 11:05:33 +05:30
Nicholas Morey
1975074de5 docs: remove core install commands from getting started (#16735)
* docs: remove core install commands from getting started

I often accidentally run the core install commands when quickly copying and pasting commands from the getting started guide, which leads to confusion. I've also spent plenty of time helping newcomers to Argo CD who have done the same and are confused when they can't reach the UI.

Given that this is a "getting started" guide, it's ideal to provide only the commands required. I've removed the commands and left the link out to the core install page for those who are interested in going down that path.

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

* fix: use link to install commands in core docs

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

* fix: use tip and improve wording

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

---------

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-01-03 17:58:26 +00:00
Michael Crenshaw
a40330f5c8 docs: configmap items are strings (#16737)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-01-03 17:08:24 +00:00
Noam Gal
80ca563909 fix broken link (#16722)
Signed-off-by: Noam Gal <noam.gal@codefresh.io>
2023-12-31 17:46:58 +01:00
Nenad Strainovic
f0f4a4e438 Multiple hook delete policies can be specified as a comma separated list (#16659)
Based on https://github.com/argoproj/gitops-engine/blob/master/pkg/sync/hook/delete_policy.go#L13 multiple hook delete policies are also allowed.

Signed-off-by: Nenad Strainovic <nenad.strainovic@asseco-see.rs>
2023-12-28 12:32:15 +01:00
Mark Estiller
20f7182489 Update contributors-quickstart.md to include a link to Go's installation guide (#16691)
Signed-off-by: Mark Estiller <markalestiller@gmail.com>
2023-12-28 11:17:00 +01:00
Sanchaai Mathiyarasan
7d1f6a1e94 Update contributors-quickstart.md to include minikube as local cluster alternative. (#16690)
Signed-off-by: Sanchaai Mathiyarasan <sanchaai.mathi@gmail.com>
2023-12-28 11:15:36 +01:00
Robin Lieb
0e67ed89ac feat: add initiated by in history and rollback view (#16654)
Signed-off-by: Robin Lieb <robin.j.lieb@gmail.com>
2023-12-22 16:50:33 +00:00
Abhishek Veeramalla
7847e7f393 chore: fix typo in application controller description (#16671)
Signed-off-by: iam-veeramalla <abhishek.veeramalla@gmail.com>
2023-12-21 08:34:06 +00:00
dependabot[bot]
3224102664 chore(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 (#16645)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.14.0 to 0.17.0.
- [Commits](https://github.com/golang/crypto/compare/v0.14.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-19 00:25:22 +00:00
Alexy Mantha
87e95b7485 feat(ui): add status panel extensions (#15780)
* add extension

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* rename to status panel

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* wip

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* cleanup

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* add docs

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* add key

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* fix copy/paste

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* wip

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* flyout

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* cleanup

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* lint

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* document flyout

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* rename

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

* linting

Signed-off-by: Alexy Mantha <alexy@mantha.dev>

---------

Signed-off-by: Alexy Mantha <alexy@mantha.dev>
2023-12-18 15:38:53 -05:00
Leonardo Luz Almeida
82ca7a7f9c feat: Implement Server-Side Diff (#13663)
* feat: Implement Server-Side Diff

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

* propagate the refreshtype to the diff config

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

* Create the serverSideDiff config

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

* chore: add featureflag utility package

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

* remove featureflag package

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

* add param

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

* make ssd configurable with app annotation

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

* add server-side-diff flags

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

* apply the same logic regardless of the refresh type

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

* fix gitops-engine reference

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

* address review comments

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

* Address review comments

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

* docs: add docs related to server-side-diff

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

* docs: update doc

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

* Add config to include mutation webhooks

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

* Address review comments

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

* go mod update

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

* Add sdd cache test case

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

* fix ssd cache unit test

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

* Update clidocs

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

* update manifests

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

* Fix procfile

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

* additional doc changes

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

* update gitops-engine version

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

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2023-12-18 20:37:13 +00:00
AS
9abc1cc837 feat(ui): Show prompt when every resource requires pruning (#16603)
* fix(ui): show prompt when using prune option

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix(ui): show prompt when using prune option

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix(ui): show prompt when using prune option

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

fix(ui): show prompt when using prune option

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* chore: update message and simplify code

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

* don't warn on partial sync

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

* fix(ui): lint

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

---------

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.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>
2023-12-18 20:15:42 +00:00
Alexander Matyushentsev
dcc17f70bf feat: PostDelete hook support (#16595)
* feat: PostDelete hooks support

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


---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-12-18 08:40:23 -08:00
Michael Crenshaw
23e0d527e1 feat(security): log user when access is blocked (#16558)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-12-18 09:41:32 -05:00
Sam Greening
c5d5cdb31a fix(appset): Use case insensitive comparison of repo details in appset webhook handler (#16503) (#16504)
* fix: case insensitive comparison of repo details in appset webhook handler

Signed-off-by: Sam Greening <2552620+SG60@users.noreply.github.com>

* chore(appset test): test case-insensitivity of appset github webhooks

Signed-off-by: Sam Greening <2552620+SG60@users.noreply.github.com>

* chore(appset test): test case for PR labeled event

And fix a couple of spelling errors

Signed-off-by: Sam Greening <2552620+SG60@users.noreply.github.com>

---------

Signed-off-by: Sam Greening <2552620+SG60@users.noreply.github.com>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2023-12-17 18:07:25 +00:00
morre
0b35e2f1fe docs: add documentation for the argocd cluster commands (#16555)
* docs: add documentation for the argocd cluster commands

This adds initial non-reference documentation for the `argocd cluster` commands as part of #14531.

The main goal here is to bootstrap that page and point users wanting to remove the `in-cluster` cluster to
the right setting.

Signed-off-by: Maurice Meyer <mmeyer@anaconda.com>

* fixup! docs: add documentation for the argocd cluster commands

Signed-off-by: Morre <morre@mor.re>

* fixup! docs: add documentation for the argocd cluster commands

Signed-off-by: Maurice Meyer <mmeyer@anaconda.com>

---------

Signed-off-by: Maurice Meyer <mmeyer@anaconda.com>
Signed-off-by: Morre <morre@mor.re>
2023-12-15 10:51:42 -07:00
Robin Lieb
bdf2c6a18c docs: update telepresence quickstart link (#16616)
Signed-off-by: Robin Lieb <robin.j.lieb@gmail.com>
2023-12-15 10:44:14 -07:00
Dennis Pan
2f22a690e7 docs: callout the need to restart pods to pickup service accounts (#16610)
Signed-off-by: Dennis Pan <dennis.pan@outlook.com>
2023-12-15 08:48:26 +01:00
afrancis101
a6d8a01c07 fix(action): Add missing owner refs and annotation to create-job action (#16607)
Signed-off-by: Arron Francis <arron.francis@mettle.co.uk>
2023-12-14 11:49:18 -05:00
Matthew Hughes
a7d0da941c Add meta.Duration as known type for diffing (#16587)
So that this can be used for custom resources. The motivation for this
is issue #6008: with this change one should be able to use the known
type to ensure equal durations don't present a diff, e,g. via adding to
`argocd-cm`:

    data:
      resource.customizations.knownTypeFields.cert-manager.io_Certificate: |
        - field: spec.duration
          type: meta/v1/Duration

This change is based on 5b464c996b, though
I've included the API version in the type path to be consistent with the
generated type (i.e. `meta/v1/Duration` and not `meta/Duration`).

For documentation I've just manually listed the extra types that aren't
auto-generated, though this requires having to keep this list and the
code in-sync but this is probably not a big issue since the number of
extra types is not frequently changed.

In the tests I've used `require.*` methods since I find this simpler
than `if !assert.Blah(...) { return }` which the other tests in this
file are using.

Signed-off-by: Matthew Hughes <matthewhughes934@gmail.com>
2023-12-14 17:33:33 +05:30
flux-ricky
23959ca1f7 fix(cli): argocd admin settings resource-overrides health to not ignore wildard customizations (#16461)
Signed-off-by: Ricky McMillen <ricky.mcmillen@fluxfederation.com>
2023-12-14 17:27:21 +05:30
Nathan Romriell
2ad419bf63 fix(repo-server): excess git requests, short-circuit GenerateManifests ref only (#16501)
* fix(repo-server): excess git requests part 2, short-circuit GenerateManifests ref only

Signed-off-by: nromriell <nateromriell@gmail.com>

* chore(logging): pr feedback, add debug log to short circuit

Signed-off-by: nromriell <nateromriell@gmail.com>

* chore: pr feedback, add ref to debug statement

Signed-off-by: nromriell <nateromriell@gmail.com>

---------

Signed-off-by: nromriell <nateromriell@gmail.com>
2023-12-14 17:05:55 +05:30
yedayak
ecef174301 docs: fix indentation for preserve file mode (#16598)
The preserveFileMode isn't under parameters, it should be right under spec. It's correct in the other example here.

Signed-off-by: yedayak <yedaya.ka@gmail.com>
2023-12-14 16:48:30 +05:30
Jason Wang
cde68e0691 Add Statsig as a user (#16604)
Signed-off-by: Jason Wang <7304774+jasonwzm@users.noreply.github.com>
2023-12-14 09:36:12 +01:00
John
d70f9a49b1 docs(monitoring): add new ServiceMonitors for redis, dex, notifications (#16534)
Signed-off-by: dmpe <cincenko@outlook.com>
2023-12-13 08:48:20 +01:00
Elouan Keryell-Even
10bb8b0f68 docs: fix broken link in secret-management.md (#16588)
Signed-off-by: Elouan Keryell-Even <elouan.keryell@gmail.com>
2023-12-11 12:03:13 +00:00
Zoltán Reegn
a761a495f1 chore: upgrade kubernetes dependencies from 0.26.4 to 0.26.11 (#16581)
* chore: upgrade kubernetes dependencies from 0.26.4 to 0.26.11

Fixes some vulnerabilities trivy is reporting on (not necessarily
vulnerabe, trivy tends to have a lot of false positives when it comes to
golang projects):

* CVE-2023-3676
* CVE-2023-3955
* CVE-2023-5528
* CVE-2023-2431
* CVE-2023-2727
* CVE-2023-2728

Signed-off-by: Zoltán Reegn <zoltan.reegn@gmail.com>

* go mod tidy

Signed-off-by: Zoltán Reegn <zoltan.reegn@gmail.com>

* Add go mod tidy to kubernetes updater script

Signed-off-by: Zoltán Reegn <zoltan.reegn@gmail.com>

---------

Signed-off-by: Zoltán Reegn <zoltan.reegn@gmail.com>
2023-12-08 15:01:05 -05:00
Jay Shah
f67dcac945 docs: Add Kong Inc. as a user (#16582)
Signed-off-by: Jay Shah <jay.shah@konghq.com>
2023-12-08 18:40:34 +01:00
Takumi Sue
9179835ec1 fix(appset): Always remove ownerReferences when appset policy doesn't allow app's deletion (#12172) (#16506)
* fix(appset): remove unnecessary condition

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>

* docs: update explanation about policy

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>

---------

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>
2023-12-08 09:20:01 -05:00
Rotem Tamir
35f1ee7844 resource_customizations/db.atlasgo.io: atlas operator resources (#16364)
Signed-off-by: Rotem Tamir <rotemtamir@gmail.com>
2023-12-07 13:11:07 +02:00
Jesse Suen
710777e261 chore: update PR template to suggest cherry-pick releases (#16560)
Signed-off-by: Jesse Suen <jesse@akuity.io>
2023-12-06 19:49:40 +00:00
Phil Nichol
86f79ecd74 docs: Fix minor typo in Declarative Setup (#16550)
Signed-off-by: Phil Nichol <35630607+philnichol@users.noreply.github.com>
2023-12-06 09:37:14 +01:00
Elouan Keryell-Even
07a2e64323 docs: Fix format issue in rbac.md (#16521)
Wrongly placed horizontal line (`----`) was formatting code-block as a header. Fixed it with a necessary line break

Signed-off-by: Elouan Keryell-Even <elouan.keryell@gmail.com>
2023-12-05 16:04:55 -05:00
Josh Soref
5c51dcb6a1 fix(ui): use background delete to match k8s terminology (#15579)
Signed-off-by: Josh Soref <jsoref@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-12-05 19:00:39 +00:00
ffppmm
7484f1df65 Added missing 'alias:' prefix for repository name as described here: (#15902) 2023-12-05 09:56:58 +05:30
Ondrej Sika
99c2859560 fix: Use math.MaxInt (instead of math.MaxInt64) to fix builds on 32bit platforms (#16065)
Signed-off-by: Ondrej Sika <ondrej@ondrejsika.com>
2023-12-04 23:14:32 +01:00
Chris Murray
888687452f fix: cert-manager.io/certificate health.lua for consistent issuing (Issue #16523) (#16520)
* Update cert-manager.opcertificate health.lua

Signed-off-by: Chris Murray <chris@distrail.io>

* adding test case for cert issuing

Signed-off-by: Chris Murray <chris@distrail.io>

* fixing typo

Signed-off-by: Chris Murray <chris@distrail.io>

---------

Signed-off-by: Chris Murray <chris@distrail.io>
2023-12-05 01:12:33 +05:30
Geoffrey MUSELLI
30b92b246d fix(doc): Fix documentation templatePatch (#16522)
Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
2023-12-04 15:59:18 +00:00
Dhruvang Makadia
7408292bb0 fix(appset): Don't use revision cache when reconciling after webhook (#16062) (#16241)
* fix(appset): store sha from webhook to get latest change during reconcile (#16062)

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

* fix(appset): Don't use revision cache when reconciling after webhook(#16062)

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

---------

Signed-off-by: dhruvang1 <dhruvang1@users.noreply.github.com>
2023-12-03 17:54:55 -08:00
Jonas Eilers
017b08a61c feat(ui): Add sourceNamespaces in Projects UI and only show it if AppsInAnyNamespaceEnabled flag is set (#16249)
Signed-off-by: Eilers, Jonas <133217951+jdvgh@users.noreply.github.com>
2023-12-01 15:15:42 -05:00
Geoffrey MUSELLI
a08c573d32 feat(appset): Advanced Templating using templatePatch (#14893)
* fix(11164): Advanced templating using patchTemplate

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* small changes

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

---------

Signed-off-by: gmuselli <geoffrey.muselli@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>
2023-12-01 11:13:33 -05:00
Jessie Teng
86565852a4 fix: Tooltips point in wrong direction#11935 (#12578)
* fix: Tooltips point in wrong direction#11935

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

* fix: Tooltips point in wrong direction#11935

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

---------

Signed-off-by: Teng, Jessie <yilin.teng@fmr.com>
Signed-off-by: Teng <yilin.teng@fmr.com>
Co-authored-by: Teng, Jessie <a715260@fmr.com>
2023-12-01 10:07:34 -05:00
May Zhang
19fa5b9418 feat: Argocd notification self service (#16488)
* self service notification

Signed-off-by: May Zhang <may_zhang@intuit.com>

* revert back the changes for redis-ha

Signed-off-by: May Zhang <may_zhang@intuit.com>

* revert back the changes for redis-ha

Signed-off-by: May Zhang <may_zhang@intuit.com>

* update notification engine

Signed-off-by: May Zhang <may_zhang@intuit.com>

* re-trigger build

Signed-off-by: May Zhang <may_zhang@intuit.com>

* self service notification

Signed-off-by: May Zhang <may_zhang@intuit.com>

* revert back the changes for redis-ha

Signed-off-by: May Zhang <may_zhang@intuit.com>

* revert back the changes for redis-ha

Signed-off-by: May Zhang <may_zhang@intuit.com>

* update notification engine

Signed-off-by: May Zhang <may_zhang@intuit.com>

* re-trigger build

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* update notification enginer version

Signed-off-by: May Zhang <may_zhang@intuit.com>

* update notification enginer version

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* add back checkAppNotInAdditionalNamespaces

Signed-off-by: May Zhang <may_zhang@intuit.com>

* add cm and secret to clusterRole

Signed-off-by: May Zhang <may_zhang@intuit.com>

* if applicationNamespaces is not used, then use namespaced appClient

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix merge conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix doc and test based on review

Signed-off-by: May Zhang <may_zhang@intuit.com>

* self service notification

Signed-off-by: May Zhang <may_zhang@intuit.com>

* revert back the changes for redis-ha

Signed-off-by: May Zhang <may_zhang@intuit.com>

* revert back the changes for redis-ha

Signed-off-by: May Zhang <may_zhang@intuit.com>

* update notification engine

Signed-off-by: May Zhang <may_zhang@intuit.com>

* re-trigger build

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* self service notification

Signed-off-by: May Zhang <may_zhang@intuit.com>

* revert back the changes for redis-ha

Signed-off-by: May Zhang <may_zhang@intuit.com>

* revert back the changes for redis-ha

Signed-off-by: May Zhang <may_zhang@intuit.com>

* update notification engine

Signed-off-by: May Zhang <may_zhang@intuit.com>

* re-trigger build

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix conflict

Signed-off-by: May Zhang <may_zhang@intuit.com>

* update notification enginer version

Signed-off-by: May Zhang <may_zhang@intuit.com>

* update notification enginer version

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fixing go tidy

Signed-off-by: May Zhang <may_zhang@intuit.com>

* add back checkAppNotInAdditionalNamespaces

Signed-off-by: May Zhang <may_zhang@intuit.com>

* add cm and secret to clusterRole

Signed-off-by: May Zhang <may_zhang@intuit.com>

* if applicationNamespaces is not used, then use namespaced appClient

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix doc and test based on review

Signed-off-by: May Zhang <may_zhang@intuit.com>

* disable defining and using secrets within notification templates for self-service

Signed-off-by: May Zhang <may_zhang@intuit.com>

* tweaks

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

* fix docs formatting

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

* more docs and Procfile update for local run convenience

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

---------

Signed-off-by: May Zhang <may_zhang@intuit.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>
2023-11-30 21:40:33 +00:00
Michael Crenshaw
27e927be82 chore(deps): bump cosign-installer from 3.1.2 to 3.2.0 (#16495)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-11-30 12:02:08 -05:00
Nathan Romriell
5c187a1955 fix(repo-server): excess git requests, resolveReferencedSources and runManifestGenAsync not using cache (Issue #14725) (#16410)
* fix(repo-server): excess git requests part 1, resolveReferencedSources and runManifestGenAsync

Signed-off-by: nromriell <nateromriell@gmail.com>

* fix: remove unnecessary settings instantiation

Signed-off-by: nromriell <nateromriell@gmail.com>

---------

Signed-off-by: nromriell <nateromriell@gmail.com>
2023-11-30 10:03:34 -05:00
Ashin Sabu
673d661821 Fix extra space in application tree pod group (#16358)
Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>
2023-11-30 09:55:15 +05:30
AS
9e92f55541 fix(ui): add exec check to avoid API calls (#16168)
* bug: add parent ref node info on resource list

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* bug: add parent ref node info on resource list

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* bug: add parent ref node info on resource list

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* bug: add parent ref node info on resource list

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* bug: add parent ref node info on resource list

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* bug: add parent ref node info on resource list

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

---------

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
2023-11-30 09:23:46 +05:30
Suraj yadav
8070725eec feat(cli): Added example to admin-cluster.go and projectwindow.go files (#16128)
* cluster.go, projectwindow.go

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

* updated-examples

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

* format-corrected

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

* spell-mistake

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

* format-correction

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

* retrigger

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

* retrigger-2

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

* retirgger-3

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

* update

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

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-11-30 09:22:07 +05:30
filiprafaj
c602302d62 fix PerconaXtraDBCluster health (#16434)
Signed-off-by: Filip Rafaj <filip.rafaj@prusa3d.cz>
Co-authored-by: Filip Rafaj <filip.rafaj@prusa3d.cz>
2023-11-30 09:02:42 +05:30
Leonardo Luz Almeida
4875b02b88 fix(controller): Address diff cache miss issues (#16458)
* fix: Address diff cache miss issues

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

* validate mergo.Merge errors

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

* Address review comments

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

* Allow setting log level at the controller

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

* remove unnecessary log setup

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

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2023-11-29 11:08:29 -05:00
Yudi A Phanama
23f2767250 fix(cli): pass redis compression to cluster stats and shards commands (#16060) (#16421) 2023-11-29 17:56:40 +05:30
Gilad Salmon
0c21ef9598 fix: upgrade notifications-engine (#16354)
* fix: upgrade notifications-engine

Signed-off-by: Gilad Salmon <gilad.salmon@gmail.com>

* update notification-engine version

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

* go mod tidy

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

* use correct go version in codeql

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

* silly

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

* make notifications-docs

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

---------

Signed-off-by: Gilad Salmon <gilad.salmon@gmail.com>
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-11-29 10:17:49 +02:00
nandinisingh759
820f4d861a feat(server): log app Spec along with event (#16416)
* adding in spec to logappevent params ARGO-1017:

Signed-off-by: Nandini <nandinisingh759@gmail.com>

* updating logappevent to include spec

Signed-off-by: Nandini <nandinisingh759@gmail.com>

* updated logevent to take marshal logfields into json

Signed-off-by: Nandini <nandinisingh759@gmail.com>

* removing spec from parameters just grabbing from app.spec

Signed-off-by: Nandini <nandinisingh759@gmail.com>

* removing app.spec from test

Signed-off-by: Nandini <nandinisingh759@gmail.com>

---------

Signed-off-by: Nandini <nandinisingh759@gmail.com>
Co-authored-by: Nandini Singh <nandini_singh@intuit.com>
2023-11-28 16:36:52 -05:00
shijiadong2022
b34e587163 fix(ui): User Info blob is too far to the right relative to Applications/Settings/Documentation (#12016)
Signed-off-by: Shi, Stone <jiadong.shi@fmr.com>
2023-11-28 08:30:52 +00:00
Andrew Block
0cb9980824 Renamed/corrected OCI proposal filename (#16452)
Signed-off-by: Andrew Block <andy.block@gmail.com>
2023-11-27 09:22:30 +01:00
Prashant Shahi
11df9900ff feat(opentelemetry): support for secured OTLP endpoint and headers (#15573)
* feat(opentelemetry):  support for secured OTLP endpoint and headers

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>

* docs(opentelemetry): 📝 include new otlp headers in docs

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>

* docs(opentelemetry): 📝 update readme docs as per integration tests

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>

* docs(opentelemetry): 📝 update readme docs as per integration tests

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>

* chore: resolve indentation issues

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>

* chore: fix indentation issues

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>

* chore: include OTLP options in deployment manifests

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>

* fix: update manifests to resolve failing CI

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>

---------

Signed-off-by: Prashant Shahi <me@prashantshahi.dev>
2023-11-27 10:45:00 +05:30
Soumya Ghosh Dastidar
2f2958a0f4 fix: fixed cli admin dashboard cmd (#16430)
* fix: fixed cli admin dashboard cmd

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: update docs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

---------

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2023-11-27 09:56:35 +05:30
Kyle Dodson
1600c03aba chore: Update USERS.md (#16425)
Add Salad Technologies

Signed-off-by: Kyle Dodson <kyle@salad.com>
2023-11-22 13:26:16 -05:00
dlorenc
78460c4b36 chore: Bump otel to 1.21.0 (#16420)
This actually wasn't that bad. It was just a few bumps in the right order.

I ran tests and built everything and it appears to work.

Signed-off-by: Dan Lorenc <dlorenc@chainguard.dev>
2023-11-22 09:44:07 -05:00
dependabot[bot]
cbe6e2b9fd chore(deps): bump github.com/go-jose/go-jose/v3 from 3.0.0 to 3.0.1 (#16418)
Bumps [github.com/go-jose/go-jose/v3](https://github.com/go-jose/go-jose) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/go-jose/go-jose/releases)
- [Changelog](https://github.com/go-jose/go-jose/blob/v3/CHANGELOG.md)
- [Commits](https://github.com/go-jose/go-jose/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: github.com/go-jose/go-jose/v3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21 19:34:10 -05:00
Nathanael Liechti
819f0b3e87 feat(oidc): optionally query OIDC UserInfo to gather group claims (#12062)
Signed-off-by: Nathanael Liechti <technat@technat.ch>
2023-11-21 10:16:50 -05:00
dependabot[bot]
ccdc453aeb chore(deps): bump docker/build-push-action from 4.1.1 to 5.1.0 (#16392)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.1.1 to 5.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](2eb1c1961a...4a13e500e5)

---
updated-dependencies:
- dependency-name: docker/build-push-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>
2023-11-20 10:48:51 -05:00
Ferenc Kovacs
a6b80df6ee feat(app): Support app sync --dry-run --revision some-revision with arbitrary revisions(#12592) (#16387)
Signed-off-by: Ferenc Kovacs <info@tyrael.hu>
2023-11-20 10:47:42 -05:00
yushiwho
8d8009d676 feat: add support for ALL_PROXY (#10451)
Signed-off-by: xniu <cnxuniu@gmail.com>
Co-authored-by: xniu <xniu@nvidia.com>
2023-11-20 20:29:32 +05:30
Brian Fox
61abc80573 fix: set max for max cookie number to math.MaxInt (#16388)
* fix: set max for max cookie number to `math.MaxInt32`

Signed-off-by: OneMatchFox <878612+onematchfox@users.noreply.github.com>

* refactor: set max for max cookie number to `math.MaxInt`

Co-authored-by: gdsoumya <44349253+gdsoumya@users.noreply.github.com>
Signed-off-by: Brian Fox <878612+onematchfox@users.noreply.github.com>

---------

Signed-off-by: OneMatchFox <878612+onematchfox@users.noreply.github.com>
Signed-off-by: Brian Fox <878612+onematchfox@users.noreply.github.com>
Co-authored-by: gdsoumya <44349253+gdsoumya@users.noreply.github.com>
2023-11-20 11:58:28 +00:00
Marco Maurer (-Kilchhofer)
841339d2ff chore: Use safe example domains defined in RFC 2606 (#16389) 2023-11-20 04:34:04 -05:00
Ivan Smirnov
9fa5e25fda Add traefik pending ingress solution (#16391) 2023-11-20 04:33:11 -05:00
Tim Schrumpf
b2a52de806 fix(appset): use topics for Gitlab SCM Provider (#13169) (#13170)
* fix(scm gitlab): use project topics instead of tags

Signed-off-by: tillepille <github@tillepille.io>

* feat(scm gitlab): add testcase for labels

Signed-off-by: tillepille <github@tillepille.io>

fix test

Signed-off-by: tillepille <github@tillepille.io>

* feat(scm gitlab): update docs for gitlab filtering

Signed-off-by: tillepille <github@tillepille.io>

* feat(scm gitlab): add fallback for old gitlab versions

Signed-off-by: tillepille <github@tillepille.io>

---------

Signed-off-by: tillepille <github@tillepille.io>
2023-11-20 03:01:11 -05:00
Talia Stocks
6fa9b17eb7 docs: fix documentation of ignoreApplicationDifferences (#16365)
Signed-off-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>
2023-11-17 15:24:41 -05:00
Nicholas Morey
6ede1a8c0a docs: fix kustomize patches example (#16353)
* docs: fix kustomize patches example

Related to: https://github.com/argoproj/argo-cd/issues/16352 Also, add an ApplicationSet example. 

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

* fix: spelling

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

---------

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2023-11-15 13:51:03 -08:00
dependabot[bot]
ae07eb667e chore(deps): bump @types/superagent from 4.1.15 to 4.1.21 in /ui (#16342)
Bumps [@types/superagent](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/superagent) from 4.1.15 to 4.1.21.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/superagent)

---
updated-dependencies:
- dependency-name: "@types/superagent"
  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>
2023-11-15 12:02:35 -05:00
Katie Lamkin
8df4bba96b docs: Katie as Release Champion for 2.10 and Added a column for Release Approver (#16341)
Signed-off-by: Katie Lamkin <katie_lamkin@intuit.com>
2023-11-15 12:01:41 -05:00
Aymen Ben Tanfous
ebb8649c4e feat(appset): Added 'slugify' sprig function (#15188)
* Added 'slugify' sprig function

Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@gmail.com>

* Retrigger CI

Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@gmail.com>

---------

Signed-off-by: Aymen Ben Tanfous <aymen.bentanfous@gmail.com>
2023-11-15 09:44:19 -05:00
Michael Crenshaw
3dffaa4c94 docs: update release doc and issue template (#16329)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-11-14 15:25:13 -05:00
Zubair Haque
841d989963 chore(deps): fix superagent vulnerability (#16305)
Signed-off-by: zhaque44 <haque.zubair@gmail.com>
2023-11-14 13:50:08 -05:00
Michael Crenshaw
43cc65bef7 docs: fix upgrade instructions (#16326)
* docs: fix upgrade instructions

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

* more things

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-11-14 13:38:12 -05:00
Yuan (Terry) Tang
33f075e286 docs: Add @gdsoumya to approvers in OWNERS (#16331)
Signed-off-by: Yuan (Terry) Tang <terrytangyuan@gmail.com>
2023-11-14 13:18:03 -05:00
Michael Over
f2c51de26c chore(deps): bump Helm to 3.13.2 (#16320) (#16321)
* bump helm 3.13.2

Signed-off-by: Michael Over <michael.over@mimacom.com>

* bump helm 3.13.2

Signed-off-by: Michael Over <michael.over@mimacom.com>

* Retrigger CI pipeline

Signed-off-by: Michael Over <michael.over@mimacom.com>

* remove checksums from root

Signed-off-by: Michael Over <michael.over@mimacom.com>

---------

Signed-off-by: Michael Over <michael.over@mimacom.com>
Co-authored-by: Michael Over <michael.over@mimacom.com>
2023-11-14 10:12:49 -05:00
Rafal
edc213d229 fix(ui): Issues with overlapping content in the app details view on smaller screens (#16268)
Signed-off-by: Rafal Pelczar <rafal@akuity.io>
2023-11-11 10:47:25 -08:00
Rafal
c18dec1276 chore(deps): bump argo-ui (#16264)
Signed-off-by: Rafal Pelczar <rafal@akuity.io>
2023-11-10 07:21:10 -06:00
Noam Gal
4fe2dd8328 copy ServerName into clientOpts (#16267)
Signed-off-by: Noam Gal <noam.gal@codefresh.io>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-11-10 09:57:54 +00:00
Takumi Sue
30ff2e59e0 fix(appset): prevent app deletion according to appset policy (#12172) (#15903)
* fix(applicationset): prevent app deletion according to appset policy

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>

* test: add unit test

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>

* fix: unit test

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>

* fix: remove TODO

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>

---------

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>
2023-11-09 23:06:54 -05:00
Matt Hughes
3d6568d404 docs: Document ApplyOutOfSyncOnly in application spec (#16282)
I found this being used in an application I was working on but had a
hard time discovering its meaning since it wasn't in the
specification[1] though it was in the `sync-options` docs[2] (see also
baa0f2e39c)

[1] https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/
[2] https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/#selective-sync

Signed-off-by: Matt Hughes <mhughes@uw.co.uk>
2023-11-09 11:18:00 -05:00
Rafal
b33b7fad6a chore(ui): Change testEnvironment from node to jsdom (#16287)
Signed-off-by: Rafal Pelczar <rafal@akuity.io>
2023-11-09 08:49:34 -06:00
Takumi Sue
72245e8557 fix: failing lint and unit test (#16275)
Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>
2023-11-08 13:28:21 +01:00
Blake Pettersson
d4dc155a89 fix: check for double definition (#15670)
* fix: check for double definition

As found in #13965 (and as a follow-up to #13999), we also need to
define what happens if _both_ managedNamespaceMetadata _and_ an
Application manifest are both defined for the same namespace.

The idea here is that if that happens, we emit an
`ApplicationConditionRepeatedResourceWarning`, and set the sync status
to `Unknown`, since it's unclear what is supposed to happen.

The user will then have the option of removing one of the two
definitions.

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

* fix: check for double definition

A simpler fix - don't add a managed namespace to the targetObjs list if
a namespace already exists in the application source.

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

* test: add test cases

This adds a test case showing that an ns manifest will override
`managedNamespaceMetadata` without failing horribly (as it currently
does on `HEAD`), as well as a "standard" mNMd diff vs live.

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

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-11-07 22:04:07 -05:00
Alex Jones
4254889a0c Update USERS.md (#16251)
Add Fortra to Official USers

Signed-off-by: Alex Jones <39532774+AlexMichaelJonesNC@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-11-07 03:37:27 +00:00
pasha-codefresh
58da6a33ab feat: Support for Kustomize Components (#16230)
* feat: support components in kustomize

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

* feat: support components in kustomize

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

* feat: support components in kustomize

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

* feat: support components in kustomize

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

* fix: typo in kustomization word

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

* fix: typo in kustomization word

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

* fix: typo in kustomization word

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

* fix: typo in kustomization word

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2023-11-06 09:57:32 -06:00
Geoffrey MUSELLI
3c9a1ec9dd fix(appset): Fix name conflict in appset controller (#16207) (#16222)
* fix(16207): Fix name conflict in appset controller

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* fix(16207): e2e

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* Update test/e2e/fixture/applicationsets/utils/fixture.go

Signed-off-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>

---------

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
Signed-off-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-11-06 00:57:28 +00:00
Alexey Vazhnov
0b59bf800c Documentation "Annotations and Labels used by Argo CD": fix internal link to ../faq.md#why-is-my-app-out-of-sync-even-after-syncing (#16236)
The broken link is visible in https://argo-cd.readthedocs.io/en/stable/user-guide/annotations-and-labels/#labels

Signed-off-by: Alexey Vazhnov <vazhnov@boot-keys.org>
2023-11-05 14:01:36 -05:00
Kazakov Stepan
740df9a13e fix(ui): summary: fix sync options block layout (#16152)
Signed-off-by: Kazakov Stepan <ksrt12group@gmail.com>
2023-11-03 18:11:32 -04:00
pasha-codefresh
a01a4b910f chore: update gitops engine version (#16232)
* chore: update gitops engine version

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

* chore: update gitops engine version

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2023-11-03 19:04:29 +02:00
Jeremy Chabernaud
4ce5bb8546 docs: add Axians ACSP to users (#16226)
Signed-off-by: djerfy <djerfy@gmail.com>
2023-11-03 15:21:50 +00:00
Pavel
aced025e60 feat: add retry logic for k8s client #7692 (#16154)
* add retry logic for k8s client

Signed-off-by: Pavel Aborilov <aborilov@gmail.com>

* add docs for retry logic and envs to manifests

Signed-off-by: Pavel Aborilov <aborilov@gmail.com>

---------

Signed-off-by: Pavel Aborilov <aborilov@gmail.com>
Signed-off-by: Pavel <aborilov@gmail.com>
2023-11-02 17:07:50 +00:00
gdsoumya
be2a01c231 feat: grace period for repo errors to prevent aggressive unknown sync state (#16085)
* feat: added grace period for repo errors to prevent aggressive sync state unknowns

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: updated docs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* fix: e2e test

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: resolved review comments

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: update unit test

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* fix: codegen

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

---------

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
Signed-off-by: gdsoumya <44349253+gdsoumya@users.noreply.github.com>
2023-11-02 11:51:16 -04:00
Michael Crenshaw
162c2d3001 chore: add SECURITY-INSIGHTS.yml (#16135)
automation



Update SECURITY-INSIGHTS.yml




Update SECURITY-INSIGHTS.yml

Update SECURITY-INSIGHTS.yml




Update SECURITY-INSIGHTS.yml




add snyk as security tester



reorganize

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-11-02 11:49:10 -04:00
Shyukri Shyukriev
570c24e38e chore: Upgrade Redis to redis:7.0.14 (#16164)
Fixes https://github.com/argoproj/argo-cd/issues/15448

Signed-off-by: Shyukri Shyukriev <shukera@gmail.com>
Co-authored-by: Shyukri Shyukriev <shyukri.shyukriev@mariadb.com>
2023-11-02 11:21:56 -04:00
Harshvir Potpose
481cf81279 feat: add examples to --help output for admin.go file (#16030)
* add examples to admin.go

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

* Update argocd_admin.md

Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

---------

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>
2023-11-02 02:03:21 +00:00
Gestalt LUR
8796307344 fix(docs): repo field name in GCP Cloud Source Repositories should be url (#16107)
Signed-off-by: Gestalt LUR <1104224+nyanshell@users.noreply.github.com>
2023-11-01 20:59:32 -04:00
Harshvir Potpose
7525b603f7 feat: add examples to --help ouput for argocd_server.go file (#16032)
* add examples to argocd_server.go

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

* Update argocd-server.md

Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

* fix

Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

* fix

Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

* fix

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

* fix

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

* Update argocd_server.go

Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>

---------

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>
2023-11-01 20:58:59 -04:00
Christian Hernandez
f8416996bd Added an example of project scoped cluster (#16210)
Signed-off-by: Christian Hernandez <christian@chernand.io>
2023-11-02 00:46:02 +00:00
Adam Harvey
8d6c0927e3 docs: Ensure consistent proper case of Kubernetes (#16205)
* docs: Consistent proper case of Kubernetes

Signed-off-by: Adam Harvey <33203301+adamdmharvey@users.noreply.github.com>

* docs: Fix minor typo

Signed-off-by: Adam Harvey <33203301+adamdmharvey@users.noreply.github.com>

* fix: Proper case Kubernetes

Signed-off-by: Adam Harvey <33203301+adamdmharvey@users.noreply.github.com>

---------

Signed-off-by: Adam Harvey <33203301+adamdmharvey@users.noreply.github.com>
2023-11-01 19:05:01 -04:00
Jimmy Neville
51b4b20211 feat: Allow 'both' option for uibannerposition (#14623)
* fix(ui): Drop ready from Completed container status (#14434) (#14629)

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/go-git/go-git/v5 from 5.7.0 to 5.8.0 (#14641)

Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.7.0 to 5.8.0.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.7.0...v5.8.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  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: Jimmy Neville <jimmyeneville@gmail.com>

* fix: webhook handler fails to refresh when alternate application namespaces are configured (#13976)

* fix: Add failing test for webhooks in all namespaces

This adds a failing test that properly exercises this functionality over
all namespaces. The issue with the code that is under test is that it
does not pass the namespace correctly to the patch of the application,
resulting in the patch not taking place in the correct namespace

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

* fix: queue webhook refresh for apps in all namespaces

This passes the test in the previous commit, to ensure that webhooks
correctly refresh applications across all namespaces.

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

* fix: Use existing NamespacedName type

Use the existing type instead of a custom type

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

---------

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: ApplicationSet Controller crashes when tag is not closed; panic: Cannot find end tag="}}"(#14227) (#14651)

* ApplicationSet bug fix

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* Update applicationset/utils/utils_test.go

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>

---------

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.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: Jimmy Neville <jimmyeneville@gmail.com>

* fix(ui): The default pod group filter should be removed if fewer than 15 pods (#14590)

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(deep-links): sprig support (#14660)

Signed-off-by: daftping <21245083+daftping@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: Print in-cluster svr addr disabled warning when server starts (#14553)

* chore: Print in-cluster svr addr disabled warning when server starts

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>

* fix: mock

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>

* no interface change

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

---------

Signed-off-by: Yuan Tang <terrytangyuan@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: Jimmy Neville <jimmyeneville@gmail.com>

* chore: Upgrade semver to avoid cve (#14710)

Signed-off-by: Yi Cai <yicai@redhat.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: adding a autosync_enabled field  to the argocd_app_info gauge (#14424)

Signed-off-by: Gerardo Corea <gerardocorea92@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(controller): log failed attempts to update operation state (#14273)

* fix(controller): log failed attempts to update operation state

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

* new package name

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

* Update controller/appcontroller_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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(server): handle PATCH in http/s server (#2677) (#14530)

Signed-off-by: mmerrill3 <jjpaacks@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: manifest generation error with null annotations (#14336) (#14680)

* fix: manifest generation error with null annotations

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix test

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix unit tests

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Clean up repeated package import (#13889)

Signed-off-by: Zechun Chen <zechun.chen@daocloud.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(sso): Set redirectURI for gitea, google, oauth Dex connectors (#11237)

Signed-off-by: ylxianzhe <ylxianzhe@outlook.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(appset): Restrict scm provider urls (#14286)

* 9353: Restrict scm provider urls

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Enforce restriction

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix after review

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Remove comment

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix units tests

Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>

* 9353: Code review, update comment

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Code review, update comment 2

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Remove doc issues

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix e2e

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix e2e goTemplate

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix e2e pullRequestGenerator

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

---------

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/go-git/go-git/v5 from 5.8.0 to 5.8.1 (#14744)

Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.8.0 to 5.8.1.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.8.0...v5.8.1)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/aws/aws-sdk-go from 1.44.305 to 1.44.309 (#14746)

Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.305 to 1.44.309.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.305...v1.44.309)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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: Jimmy Neville <jimmyeneville@gmail.com>

* fix(ui): display valuesobject if set (#14257)

* fix: display valuesobject if set

With #11538 we now have the ability to set helm values as an object
instead of a string, but we also need to be able to correctly display
it in the UI if it is set.

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

* fix: set valuesobject on save

If `valuesObject` is present, set it to the value of
`input.spec.source.helm.values` on save, as an unmarshaled json string.

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

* fix: set `helm.values` to empty string on save

If `valuesObject` exists, set `input.spec.source.helm.values` to an
empty string once `valuesObject` has been unmarshalled from the
values input. This is to prevent unnecessary duplication of the values.

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

* chore: eslint

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

* chore: eslint

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

* fix: deep clone app

This is so that we can conditionally set `source.helm.values` without
inadvertently affecting other parts of the app. Only when the edit
button is pressed do we toggle `source.helm.values`.

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

* chore: eslint

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

---------

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

* fix: OCI dependency url can't contain part of repository (#14699)

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

* docs: Add missing value (#14538)

Signed-off-by: felix <felix@psy-coding.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

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

Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/aws/aws-sdk-go from 1.44.309 to 1.44.312 (#14782)

Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.309 to 1.44.312.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.309...v1.44.312)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/xanzy/go-gitlab from 0.88.0 to 0.89.0 (#14784)

Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.88.0 to 0.89.0.
- [Changelog](https://github.com/xanzy/go-gitlab/blob/master/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.88.0...v0.89.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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/casbin/casbin/v2 from 2.72.1 to 2.73.0 (#14783)

Bumps [github.com/casbin/casbin/v2](https://github.com/casbin/casbin) from 2.72.1 to 2.73.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.72.1...v2.73.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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add Autodesk to USERS.md (#14778)

Signed-off-by: Dylan Page <dylan.page@autodesk.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: Add query-scoped cluster URL in Cluster Secret E2E tests (#14446)

* Add query-scoped cluster URL in Cluster Secret E2E tests

Signed-off-by: Jonathan West <jonwest@redhat.com>

* Respond to review comments

Signed-off-by: Jonathan West <jonwest@redhat.com>

---------

Signed-off-by: Jonathan West <jonwest@redhat.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Clarify that security policy covers last 3 versions (#14786)

* docs: Clarify that security policy covers last 3 versions

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>

* Update SECURITY.md

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

---------

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
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: Jimmy Neville <jimmyeneville@gmail.com>

* fix(controller): cache deadlock on delete and re-add cluster (#14780)

Signed-off-by: Nathan Romriell <nateromriell@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: make `helm template` errors less verbose (#14772)

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

* feat(deep-links): alias `application` as `apps` for consistency with notifications engine (#14761)

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

* fix(ui): no hyphen for "create job" action + nice icon (#14776) (#14777)

* chore(actions): space instead of hyphen in action name (#14776)

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

* new field for backwards-compatibility

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

* align icons for maximum synergy

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

* delete unused function

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

* revert unnecessary changes

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

* Update docs/operator-manual/upgrading/2.7-2.8.md

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: Jimmy Neville <jimmyeneville@gmail.com>

* fix: Correct broken `forever` option in pod logs viewer. Fixes #14762 (#14763)

Signed-off-by: Alex Collins <alex_collins@intuit.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Update application.yaml (#14742)

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

* docs: add ignoreDifferences name and namespace fields (#14741)

* Update application.yaml

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

* Update docs/operator-manual/application.yaml

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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/node from 20.4.0 to 20.5.0 (#14664)

Bumps library/node from 20.4.0 to 20.5.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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/node from 20.4.0 to 20.5.0 in /ui-test (#14662)

Bumps library/node from 20.4.0 to 20.5.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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Update Controlling-Resource-Modification.md (#14751)

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

* fix(notifications-catalog): Add nil check for notifications_catalog triggers (#14795)

* Add nil check for notifications_catalog triggers

Signed-off-by: Trung <trung.hoang@pricehubble.com>

* Use correct nil check

Signed-off-by: Trung <trung.hoang@pricehubble.com>

* Add missing catalog generation to makefile

Signed-off-by: Trung <trung.hoang@pricehubble.com>

* Revert changes to update-manifests.sh

Signed-off-by: Trung <trung.hoang@pricehubble.com>

---------

Signed-off-by: Trung <trung.hoang@pricehubble.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: ManagedResources API should not return diff for hooks (#14816)

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

* docs: Change Generator docs for List Generator to note any key/value pairs can be used (#14825)

This is no longer limited to cluster/url value pairs.

Signed-off-by: JesseBot <jessebot@linux.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: improve app destination docstrings (#14836)

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

* feat: Adding kubelogin capability to argocd-k8s-auth (#9460) (#10700)

Signed-off-by: mmerrill3 <jjpaacks@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: Jimmy Neville <jimmyeneville@gmail.com>

* chore: Add header support for proxy extension requests  (#14800)

* chore: add server URL in the header of proxy extensions

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

* feat: add header support for proxy extension requests

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

* Address review comments

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

* address review comments

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

* Address review comments

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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: use consistent password in plugin generator examples (#14837)

* docs: use consistent password in plugin generator examples

The example secret with the token is using `strong-password`, but the later examples use `string-password`.

This updates all of the examples to use `strong-password`.

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

* docs: update another-secret example to include `strong-password`

Consistent with above example of client token in argocd-secret

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

---------

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: give context to error logs #10592 (#14851)

* chore: give context to error logs

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>

* Update reposerver/repository/repository.go

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

---------

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>
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: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add more tests in proxy extension headers (#14842)

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: revert #12255 (#14858)

This reverts commit c651bd8de5.

Due to the imminent release of 2.8, this needs to be rolled back since
the proposed fix in #14210 cannot make it in time.

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

* fix: Repo URL link for unsupported sources links to https://<argocd>/null/path/to/chart (#14861)

* Fix #14860

Fix #14860

Signed-off-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>

* Update USERS.md

Signed-off-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>

---------

Signed-off-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: correct discrepancies in generated swagger file (#14813)

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

* chore: wrap ComparisonError messages (#14886)

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

* fix(ui): Fixes health icon positioning (#14708) (#14852)

* fix: Fixes health icon positioning #14708

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>

* fix: Fixes alignment of app health application status panel #14708

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>

* fix: Added line height to App Status to fix its  positioning #14708

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>

---------

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: fix non-deterministic test (#14905)

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

* fix: Change underscore (_) back to plus (+) to get valid SemVer when when reading tags from OCI registry (#14537)

* fix: Change underscore (_) back to plus (+) to get valid SemVer when reading tags from OCI registry

Signed-off-by: xashr <saschasynaos@gmail.com>

* Add test coverage for SemVer tags in TestGetTagsFromUrl

Signed-off-by: xashr <saschasynaos@gmail.com>

---------

Signed-off-by: xashr <saschasynaos@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(appset): typo in ARGOCD_APPLICATIONSET_CONTROLLER_ALLOWED_SCM_PROVIDERS (#14902) (#14913)

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: provide short revision in ARGOCD_APP_REVISION_SHORT env variable (#14926)

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

* chore(deps): bump github.com/aws/aws-sdk-go from 1.44.312 to 1.44.317 (#14925)

Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.312 to 1.44.317.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.312...v1.44.317)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump golang.org/x/oauth2 from 0.10.0 to 0.11.0 (#14922)

Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.10.0 to 0.11.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.10.0...v0.11.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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Update Generators-Git.md (#14921)

Remove a misleading symbol from the pattern for the path.Match function. The pipe symbol doesn't have any special meaning.

Signed-off-by: German Lashevich <german.lashevich@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Update helm.md - add missing syntax highlighting for YAML and Dockerfile blocks (#14911)

Signed-off-by: JesseBot <jessebot@linux.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(ui): COPY JSON for ArgoCD version should include trailing newline (#5117) (#14917)

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

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

Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: give context to error logs (#10592) (#14915)

* chore: wrap error objects to include context

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* chore: wrap error objects to include context

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* chore: wrap error objects to include context

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* chore: wrap error objects to include context

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* Update applicationset/controllers/applicationset_controller.go

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

---------

Signed-off-by: Vipin M S <vipinachar2016@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: Jimmy Neville <jimmyeneville@gmail.com>

* feat(appset): Add SCM Provider option for Gitlab generator to filter shared projects from subgroups projects (#14831)

* added option to disable gitlab to fetch shared project from a subgroup

Signed-off-by: Prune <prune@lecentre.net>

* Correct gitlab SCM provider mock test

Signed-off-by: Prune <prune@lecentre.net>

* updated test to validate shared-groups

Signed-off-by: Prune <prune@lecentre.net>

* reworked shared project tests

Signed-off-by: Prune <prune@lecentre.net>

* added subgroups only test

Signed-off-by: Prune <prune@lecentre.net>

---------

Signed-off-by: Prune <prune@lecentre.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(cmp): send sigterm to cmp commands before sigkill to allow for potential cleanup (#9180) (#14955)

* fix: send sigterm to cmp commands before sigkill to allow for potential cleanup

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* fix: unit test for runCommand in cmpserver to test cleanup modified

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* fix: change unit test for plugin/runCommand to avoid bad trap along with lint fix

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

---------

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Feature bounty proposal (Experimental) (#14234)

* Create bounty proposal

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

* Update docs/proposals/feature-bounties.md

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

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>

* Update docs/proposals/feature-bounties.md

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

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>

* Update docs/proposals/feature-bounties.md

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

* Update docs/proposals/feature-bounties.md

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

* Update docs/proposals/feature-bounties.md

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

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>

* Update docs/proposals/feature-bounties.md

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

* Update docs/proposals/feature-bounties.md

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

---------

Signed-off-by: Dan Garfield <dan@codefresh.io>
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: Jimmy Neville <jimmyeneville@gmail.com>

* fix(actions): check if CronWorkflow has labels in create-workflow action (#14962) (#14974)

Signed-off-by: Mickaël Canévet <mickael.canevet@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add Jellysmack in USERS.md (#14975)

Signed-off-by: Mickaël Canévet <mickael.canevet@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump actions/setup-go from 4.0.1 to 4.1.0 (#14970)

Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](fac708d667...93397bea11)

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Adding native OCI support proposal (#13516)

Signed-off-by: Andrew Block <andy.block@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: space in 'Argo CD' (#14987)

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

* feat: Add Support for AzureDevops Webhooks (#14969)

* feat: Add Support for AzureDevops Webhooks

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

* document azure devops webhook configuration

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

---------

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

* fix: api server fails to call dex with istio (#14995)

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

* fix(ui): Update default and max count for maxCookieNumber (#14979)

* Update default and max count for maxCookieNumber

Signed-off-by: zvlb <vl.zemtsov@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: correct the swagger ui link to support --rootpath (#14845)

Signed-off-by: Kevin Yue <yuezk001@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): upgrade nhooyr.io/websocket dependency (#15000)

Upgrade from 1.8.6 to 1.8.7 due to high security issue

Was solved in dependency with https://github.com/nhooyr/websocket/pull/291

Signed-off-by: jmeridth <jmeridth@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: upgrade to go 1.21 (#14992)

Signed-off-by: Robin Lieb <robin.j.lieb@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump goreleaser/goreleaser-action from 4.3.0 to 4.4.0 (#14996)

Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)
- [Commits](336e29918d...3fa32b8bb5)

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: bump ubuntu base image (#15020) (#15021)

Latest version of the ubuntu image addresses CVE-2023-38408.

https://ubuntu.com/security/notices/USN-6242-1
https://github.com/docker-library/repo-info/blob/master/repos/ubuntu/remote/22.04.md

resolves #15020

Signed-off-by: Mason Cole <macole@beyondtrust.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: give context to errors (#10592) (#15022)

* chore: give context to errors

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/tls/tls.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/tls/tls.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/tls/tls.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Apply suggestions from code review

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

---------

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.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: Jimmy Neville <jimmyeneville@gmail.com>

* chore: give context to errors (#15019)

* chore: give context to error logs in reposerver

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* chore: give context to errors in applicationset

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* chore: give context to errors(tweaks in error messages)

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* chore: give context to errors(fix unit test)

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

---------

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add Carrefour Group to USERS.md (#15039)

Signed-off-by: Zadkiel Aharonian <zadkiel_aharonian@carrefour.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(health): spec.executor.instances is Optional, Support a flexible number of executors (#11877)

Support a flexible number of executors. For example with a mounted ConfigMap inside the Spark-Operator.

Signed-off-by: Philipp Dallig <philipp.dallig@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

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

Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(reposerver): loosen source not permitted helm errors (#14210)

* fix: loosen source not permitted helm errors

With #12255, we check if a source is first permitted before running
`helm template`. This works a bit too well, since this may break
previously working manifests. If an `AppProject` has a set of
`sourceRepos` which are more restrictive than `*`, and it also has Helm
public dependencies (repos with credentials would not work with 2.7x
due to the fact they get filtered out before ending up on the repo
server). Whereas before this would work, this currently fails on
`HEAD` but not in `2.7x`.

What we instead do here is that we only run this check if the chart
failed to download - if it does then we run a check to see if the repo
is in the allowed repos list. If the repo is not in the allowed repos
list, we return the same error as in #12555, otherwise we bubble up the
error.

Should fix #13833.

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

* fix: check for 401 unauthorized in error

The regex check works fine for OCI artifacts, but the flow is slightly
different for standard Helm charts (specifically when running
`helm repo add`). To get around that, we also check the error for
`401 Unauthorized`.

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

* fix: loosen string check

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

* Revert "chore: revert #12255 (#14858)"

This reverts commit c8ae5bc3e7.

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

* wip

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

* wip

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

* chore: reword test to reduce confusion

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

---------

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

* fix(appset): Fix helm valuesObject with ApplicationSet (#14912) (#14920)

Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(cli): support apply out of sync flag only (#14624)

* feat: support apply out of sync flag only

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

* update engine version

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

* update gitops engine version

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

* add cli option

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

* feat: verify apply out of sync flag

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

* redundant comment

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

* improve test logic

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

* change command description and do codegen

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs(github): comment out notational pieces of PR template (#14888)

- the DCO and FAQ sentences are not filled out during PRs and are purely notational
  - comment them out with HTML comments, as is common practice
    - example from argo-helm: 962342fe2a/.github/pull_request_template.md (L1)
      - copied this practice from other repos I maintain and from other repos before that
- these comments are still visible to the PR author, just not visible when rendered, keeping the PR more concise

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

* chore(deps): bump golangci/golangci-lint-action from 3.6.0 to 3.7.0 (#15053)

Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](639cd343e1...3a91952989)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump actions/setup-node from 3.7.0 to 3.8.0 (#15054)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](e33196f742...bea5baf987)

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Update bank vaults link to point to the new org (#15069)

Bank-Vaults recently migrated to a new organization. The old repository is archived.

Signed-off-by: Anton Lindholm <LinAnt@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: improve error logs (#10592) (#15059)

* chore: improve error logs

Signed-off-by: AvhiMaz <avhimazumder5@outlook.com>

* chore: Changes made according to the reviewer

Signed-off-by: AvhiMaz <avhimazumder5@outlook.com>

* chore: Chnages according to the reviewerI"

Signed-off-by: AvhiMaz <avhimazumder5@outlook.com>

* Update cmpserver/apiclient/plugin.pb.go

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

---------

Signed-off-by: AvhiMaz <avhimazumder5@outlook.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: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Update link to KubeCon China 2021 talk in README.md (#14887)

Signed-off-by: Yuan (Terry) Tang <terrytangyuan@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: document permitOnlyProjectScopedClusters field (#15076)

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

* docs: kubectl to synchronize argocd apps (#14881)

We can use kubectl to synchronize argocd applications the same way we can use
the argocd cli or ui, however there's no documentation.

This PR adds documentation for kubectl.

Signed-off-by: Jordi Grant Esteve <jgrant.esteve@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: fix typo (#15083)

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

* feat: add timeout for update cluster info (#14511)

* chore: simplified parsing of startup parameters

Signed-off-by: yyzxw <1020938856@qq.com>

* feat: add timeout for update cluster info

Signed-off-by: yyzxw <1020938856@qq.com>

---------

Signed-off-by: yyzxw <1020938856@qq.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: requeue ApplicationSet if there are validation errors (#14429)

Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: fix link for `argocd-repo-creds.yaml` sample (#15091)

Signed-off-by: SHIMADA Kento <shimada.kento8974@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: wrap error objects to include context (#10592) (#15055)

* chore: wrap error objects to include context (#10592)

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>

* chore: resolved common_test.go file as per reviewer's feedback

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>

* chore:changes in ulits.go

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>

* chore: resolving utils_test.go file

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>

---------

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>
Signed-off-by: B Pawan Kumar <pawan06kumar2003@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(#12862): Update FlinkDeployment health check to support Flink v1.x (#15065)

Signed-off-by: Dylan Slavin <dylan@sla.vin>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: add docs for various annotations and labels (#14020)

* docs: add docs for various annotations

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

* more info

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>

---------

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

* fix(appset): bitbucket server scm provider EOF on empty repo (#14411)

* fix bitbucket server scm provider EOF on empty repo default branch check

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>

* add unit test for bitbucketServer empty repo

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>

* check for EOF explicitly

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>

---------

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: update confusing variable name (#15106)

Signed-off-by: jmcshane <james.mcshane@superorbital.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs(progressive syncs): specify which ConfigMap to use (#15119)

Signed-off-by: Gaël Jourdan-Weil <gjourdanweil@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(appset): added topic filter for Gitlab SCM (#14965)

* added topic (tag) filter for Gitlab SCM

Signed-off-by: Prune <prune@lecentre.net>

* corrected few comments

Signed-off-by: Prune <prune@lecentre.net>

* removed latest tag references

Signed-off-by: Prune <prune@lecentre.net>

---------

Signed-off-by: Prune <prune@lecentre.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: Add kustomization.yaml for server app RBAC (#15124)

This change adds a `kustomization.yaml` file for the example RBAC
role/rolebinding for argocd server applications.
This makes it easier to include them as resources in another `kustomization.yaml`.

Instead of including

```yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.8.0/examples/k8s-rbac/argocd-server-applications/argocd-server-rbac-clusterrole.yaml
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.8.0/examples/k8s-rbac/argocd-server-applications/argocd-server-rbac-clusterrolebinding.yaml
```

the user can now instead include

```yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- github.com/argoproj/argo-cd/examples/k8s-rbac/argocd-server-applications?ref=v2.8.0
```

This change was performed by running:

```console
kustomize create
kustomize edit add resource argocd-server-rbac-clusterrole.yaml
kustomize edit add resource argocd-server-rbac-clusterrolebinding.yaml
```

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: ✏️ fix typo on configmap name for private certs (#9596)

Signed-off-by: Gaël Jourdan-Weil <gael.jourdan-weil@kelkoogroup.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Merge pull request from GHSA-c8xw-vjgf-94hr

Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(ui): code lint (#15150)

Signed-off-by: ebuildy <ebuildy@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: windows build (#15154)

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

* feat: run refresh from UI in parallel (#15138)

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(cli): add support for components with non-default names (#10200) (#14605)

* fix(cli): add support for components with non-default names (#10200)

Co-Authored-By: maheshbaliga <mahesh.baliga@infracloud.io>
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: maheshbaliga <mahesh.baliga@infracloud.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: Updated docs about using a slash in ignoreDifferences (#15144)

Signed-off-by: Christian Hernandez <christian@chernand.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: stop creating new otel interceptor to avoid memory leak (#15174)

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

* chore: add example jq path expression (#15130)

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

* docs: document sourceNamespaces field (#15195)

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

* fix(appset): Matrix Generator Override not Working for Booleans (#14498) (#14573)

* Fix AppSet matrix generator parameter override

Signed-off-by: Alexander Bellhäuser <alexbde@users.noreply.github.com>

* Add test case for parameter override fix

Signed-off-by: Alexander Bellhäuser <alexbde@users.noreply.github.com>

---------

Signed-off-by: Alexander Bellhäuser <alexbde@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: remove unnecessary version number (#15198)

We have versioned docs now, no need for this.

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

* fix(ui): switch podgroup notification to tooltip message (#14821)

* improve pod grouping ux

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

fix: update log view on container select

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix(ui): improve pod grouping ux

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix(ui):update the pod grouping messages to tooltip

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix(ui):update the pod grouping messages to tooltip

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix: GroupNodes notification

Signed-off-by: AS <11219262+ashutosh16@users.noreply.github.com>

* fix: GroupNodes notification

Signed-off-by: AS <11219262+ashutosh16@users.noreply.github.com>

---------

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
Signed-off-by: AS <11219262+ashutosh16@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add upsider to USERS.md (#15228)

Signed-off-by: Vlad Fratila <vlad.fratila@up-sider.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: clarify argocd-repo-server repo-cache-expiration HA use case (#15239)

Signed-off-by: phanama <yudiandreanp@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: better logs for jq expression errors (#15226)

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

* fix(ui): Helm chart empty maintainers blow up Argo UI (#15225)

Signed-off-by: Carlos Castro carlos.castro@jumo.world

Signed-off-by: Carlos Castro carlos.castro@jumo.world
Signed-off-by: Carlos Castro <carlos.castro@jumo.world>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add Kvist to USERS.md (#15240)

Signed-off-by: Fredrik A. Madsen-Malmo <fredrik.malmo@icloud.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: improve doc on labels parameter on scmProvider generator (#15255)

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Update ApplicationSet docs (#15269)

Signed-off-by: David Muckle <dvdmuckle@dvdmuckle.xyz>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: support extra attributes for opentelemetry (#15071)

Signed-off-by: penglongli <pelenli@tencent.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Add Twilio Segment to USERS.md (#15267)

Thank you to the Argo community!

Signed-off-by: Prasad Katti <prasad.katti@segment.com>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: make WatchResourceTree use namespaced cache key (#15258)

* fix: make WatchResourceTree use namespaced application cache key

Signed-off-by: Torbjørn Fjørtoft <torbjorn.fjortoft@pgs.com>

* chore: add PGS to USERS.md

Signed-off-by: Torbjørn Fjørtoft <torbjorn.fjortoft@pgs.com>

---------

Signed-off-by: Torbjørn Fjørtoft <torbjorn.fjortoft@pgs.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: remove duplicate function (#15123)

Signed-off-by: yyzxw <1020938856@qq.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: Cache control 404 asset requests (#15327)

* backfill cache control header tests for ui assets

Signed-off-by: Scott Windsor <scott.windsor@flexe.com>

* Set cache-control header non-cache for assets not found

Signed-off-by: Scott Windsor <scott.windsor@flexe.com>

* fix golang-cilint warning

Signed-off-by: Scott Windsor <scott.windsor@flexe.com>

---------

Signed-off-by: Scott Windsor <scott.windsor@flexe.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Fixes a markdown typo in USERS.md (#15362)

This removes the whitespace between the link text and the link URL.

Signed-off-by: Prasad Katti <prasad.katti@segment.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: upgrade notification engine (#15359)

* Update notifications-engine dependencies

Signed-off-by: Mike Splain <mike.splain@gmail.com>

* Update docs

Signed-off-by: Mike Splain <mike.splain@gmail.com>

---------

Signed-off-by: Mike Splain <mike.splain@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: add Dott to users (#15370)

Signed-off-by: Jake Burn <jake@ridedott.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(notifications-catalog): Add nil check for on-deployed trigger (#15363)

Signed-off-by: Fs02 <surya.asriadie@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: auto respect rbac for discovery/sync (#14381)

feat: auto respect rbac for discovery/sync (#14381)

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: Add ARGOCD_CLUSTER_CACHE_LIST_PAGE_BUFFER_SIZE environment variable (#15159)

Signed-off-by: Brad West <brad.g.west@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(appset): Revert applicationset-name labels (#15324)

* fix(15282) Revert applicationset-name labels

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* fix(15282) fix unit test

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

---------

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/golang from 1.21.0 to 1.21.1 (#15391)

Bumps library/golang from 1.21.0 to 1.21.1.

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/golang from 1.21.0 to 1.21.1 in /test/remote (#15387)

Bumps library/golang from 1.21.0 to 1.21.1.

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/node from 20.4.0 to 20.6.0 in /test/container (#15366)

Bumps library/node from 20.4.0 to 20.6.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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Merge pull request from GHSA-g687-f2gx-6wm8

* feat: use untar with limiter

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

* feat: use untar with limiter

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Merge pull request from GHSA-fwr2-64vr-xv9m

* fix: prevent seeing/editing 'kubectl.kubernetes.io/last-applied-configuration' cluster annotation

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

* fix: failing unit test

Signed-off-by: iam-veeramalla <abhishek.veeramalla@gmail.com>

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: iam-veeramalla <abhishek.veeramalla@gmail.com>
Co-authored-by: iam-veeramalla <abhishek.veeramalla@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/node from 20.5.0 to 20.6.0 in /ui-test (#15364)

Bumps library/node from 20.5.0 to 20.6.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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: handle annotations for resources with ':' in the name (#15101) (#15380)

* fix: handle annotations for resources with ':' in the name

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>

* fix: switch to using splitN for handling annotation splitting

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>

* fix: check len(parts) !=3

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>

* Retrigger CI pipeline

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>

---------

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Improve RBAC documentation (#15430)

* Improve staging-db project name

This change renames the project to distinguish it from the role.

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Rename db-staging role to singular form

Role names should be singular ("User x has the role admin" as opposed to
"User x has the role admins").

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Remove trailing newlines

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Consistently mark `AppProject` as code

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Replace ```shell with ```console in suitable places

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Use consistent style for unordered list

https://github.com/DavidAnson/markdownlint/blob/main/doc/md004.md

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Use consistent emphasis style

https://github.com/DavidAnson/markdownlint/blob/main/doc/md049.md

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Fix incorrect description of the staging-db example

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

---------

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(appsets): gotemplate can cause panic from nil dereference (#15377) (#15378)

* fix(appsets): gotemplate can cause panic from nil deference

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

* fix(appsets): gotemplate can cause panic from nil dereference

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

---------

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

* chore: Fix flaky cluster test (#15433)

Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Fix requeue after for Matrix/Merge with SCM or ClusterDecision generators (#15407)

Signed-off-by: Cezar Sa Espinola <cezarsa@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: added shorthand flags for follow and conatainre in app logs (#15400)

* feat: added shorthand flags for follow and conatainre in app logs

Signed-off-by: ashu <ashupednekar49@gmail.com>

* doc: re-generated cli docs

Signed-off-by: ashu <ashupednekar49@gmail.com>

---------

Signed-off-by: ashu <ashupednekar49@gmail.com>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

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

Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: Better enforcement of application namespace restrictions (#15431)

* fix: Better enforce application namespace restrictions

Signed-off-by: jannfis <jann@mistrust.net>

* Only call ValidateDestination when allowed

Signed-off-by: jannfis <jann@mistrust.net>

---------

Signed-off-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: fix bullets (#15446)

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: failed to add cluster when the cluster server address is ipv6 (#8204) (#15350)

* fix: failed to add cluster when the cluster server address is ipv6 (#8204)

Signed-off-by: huyinhou <huyinhou@bytedance.com>

* fix: failed to add cluster when the cluster server address is ipv6 (#8204)

Signed-off-by: huyinhou <huyinhou@bytedance.com>

* remove unused import

Signed-off-by: huyinhou <huyinhou@bytedance.com>

* fix: lowercase URI secret name; abbreviated IPv6 address

Signed-off-by: huyinhou <huyinhou@bytedance.com>

---------

Signed-off-by: huyinhou <huyinhou@bytedance.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: Enable haproxy metrics through helm Chart (#15459)

Signed-off-by: Mathias Petermann <mathias.petermann@swisscom.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Stop appending :443 to the server address when using grpc-web (#15435)

Signed-off-by: David Marby <david@dmarby.se>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: appset preserve labels and global preserve fields (#15445)

* feat: appset preserve labels and global preserve fields

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: appset preserve labels and global preserve fields

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* docs: updated docs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* docs: updated docs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

---------

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: Gitlab scm_provider - don't create transport from scratch (#15424) (#15425)

* fix : don't create transport from scratch, clone it instead

Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>

* feat: clone http.transport for gitea and gitlab providers

Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>

* chore: properly format gitea providers with gofmt

Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>

---------

Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add Factorial to USERS.md (#15473)

Signed-off-by: Alejandro López Sánchez <alejandro.lopez@factorial.co>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Fix incorrect wording in ApplicationSet git generator docs (#15374)

Signed-off-by: Liam Wyllie <risset@mailbox.org>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: Allow retrieving badges in other namespaces (#15468)

Signed-off-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump docker/setup-buildx-action from 2.9.1 to 3.0.0 (#15476)

Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.9.1 to 3.0.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](4c0219f9ac...f95db51fdd)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/node from 20.6.0 to 20.6.1 in /test/container (#15451)

Bumps library/node from 20.6.0 to 20.6.1.

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/node from 20.6.0 to 20.6.1 in /ui-test (#15452)

Bumps library/node from 20.6.0 to 20.6.1.

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump gitpod/workspace-full from `d578722` to `511cecd` (#15453)

Bumps gitpod/workspace-full from `d578722` to `511cecd`.

---
updated-dependencies:
- dependency-name: gitpod/workspace-full
  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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump argo-ui from `13cea62` to `002d01b` in /ui (#15440)

Bumps [argo-ui](https://github.com/argoproj/argo-ui) from `13cea62` to `002d01b`.
- [Release notes](https://github.com/argoproj/argo-ui/releases)
- [Commits](13cea62a4a...002d01b18e)

---
updated-dependencies:
- dependency-name: argo-ui
  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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/golang in /test/remote (#15419)

Bumps library/golang from `970907c` to `62e5883`.

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/golang from `970907c` to `62e5883` (#15415)

Bumps library/golang from `970907c` to `62e5883`.

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(controller): make managed namespaces more 'prune-proof' (#13999)

* fix: make managed namespaces more 'prune-proof'

In the cases where someone would want to set resource tracking on a
managed namespace, or if someone would want to migrate from having a
namespace in Git to using `managedNamespaceMetadata`, we need to take
steps to ensure that the namespace does not get pruned.

In order to do that, we add the live namespace to the list of
`targetObjs` (so that it's considered a part of the source even though
it's not).

Finally, we need to also ensure that the managed namespace is not
considered `OutOfSync` (due to the same reason as above).

This is a subset of #11350, the main difference being that this commit
does not set resource tracking on its own, but can be opted into if
people choose to do so.

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

* refactor: extract managed namespace check

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

---------

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

* fix: extends CR to allow cronjob/workflow triggers (#15300)

Signed-off-by: Marcelo Moreira de Mello <tchello.mello@gmail.com>
Co-authored-by: Nicholas Morey <nicholas@morey.tech>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/node from 20.5.0 to 20.6.1 (#15454)

Bumps library/node from 20.5.0 to 20.6.1.

---
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>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/cyphar/filepath-securejoin (#15401)

Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.2.3 to 0.2.4.
- [Release notes](https://github.com/cyphar/filepath-securejoin/releases)
- [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.2.3...v0.2.4)

---
updated-dependencies:
- dependency-name: github.com/cyphar/filepath-securejoin
  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: Jimmy Neville <jimmyeneville@gmail.com>

* (docs) Add clarification on migration for CMP plugins (#15405)

* Add clarification on migration for CMP plugins

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

* Fix table

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

* Add warning on blank manifests for #15340

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

---------

Signed-off-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump sigstore/cosign-installer from 3.1.1 to 3.1.2 (#15330)

Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](6e04d228eb...11086d2504)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/xanzy/go-gitlab from 0.89.0 to 0.91.1 (#15331)

Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.89.0 to 0.91.1.
- [Changelog](https://github.com/xanzy/go-gitlab/blob/master/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.89.0...v0.91.1)

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Add KPMG to users (#15323)

Signed-off-by: Ansuman Swain <ansuman.swain@kpmg.co.uk>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Fix broken links for post selectors, fix ordering of args for dig example (#15346)

Signed-off-by: David Muckle <dvdmuckle@dvdmuckle.xyz>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/golang in /test/container (#15502)

Bumps library/golang from 1.21.0 to 1.21.1.

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/casbin/casbin/v2 from 2.73.0 to 2.77.2 (#15501)

Bumps [github.com/casbin/casbin/v2](https://github.com/casbin/casbin) from 2.73.0 to 2.77.2.
- [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.73.0...v2.77.2)

---
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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump actions/upload-artifact from 3.1.2 to 3.1.3 (#15497)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](0b7f8abb15...a8a3f3ad30)

---
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>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(cli): fix header in resource-overrides list-actions output (#15375)

Signed-off-by: Maxime Brunet <max@brnt.mx>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: adding tests for apiclient package: clientset tests (#15193)

Signed-off-by: zhaque44 <haque.zubair@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: Applicationset upsert for any namespaces (#15520)

* fix: Applicationset upsert for any namespaces

PR implements a small change to the argocd command adding the AppsetNamespace for the existing Appset check.

Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>

* Retrigger CI pipeline

Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>

* Retrigger CI pipeline

Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>

---------

Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: update ordering of support steps (#15508)

Signed-off-by: Kurt King <kurtaking@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: add option in output flag for app get and app resources cli command for tree view(#13370) (#15386)

* tree view feature for app get cli comand

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* including application details

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* testcase included for printTreeView

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* removed the unnecessary variables

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* Adding changes to the documentation

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* change in the argocd doc

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* included tee_test.go

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* tree view changes for app get and app resources

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* go.mod and go.sum by running go mod tidy

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* changes after review

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* changes after review

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

---------

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/go-playground/webhooks/v6 (#15516)

Bumps [github.com/go-playground/webhooks/v6](https://github.com/go-playground/webhooks) from 6.2.1-0.20230808162451-10570b0a59e8 to 6.3.0.
- [Release notes](https://github.com/go-playground/webhooks/releases)
- [Commits](https://github.com/go-playground/webhooks/commits/v6.3.0)

---
updated-dependencies:
- dependency-name: github.com/go-playground/webhooks/v6
  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: Jimmy Neville <jimmyeneville@gmail.com>

* fix: ApplicationSet deletes Application status (#15514)

* fix: ApplicationSet deletes Application status

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

* apply reviewer notes

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

---------

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

* docs: Update Application Set Webhook Instructions (#13764, #11532) (#15527)

* Update Generators-Pull-Request.md

Add note to clarify that the ApplicationSet controller requires its own Ingress resource. This seems to be a common issue for Argo CD users.

Signed-off-by: Kurt Madel <km@kurtmadel.com>

* Update Generators-Git.md

Updating note to match webhook note on pr generator.

Signed-off-by: Kurt Madel <km@kurtmadel.com>

---------

Signed-off-by: Kurt Madel <km@kurtmadel.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: Add 4data to users (#15531)

Signed-off-by: LStuker <lucien.stuker@4data.ch>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: fix kubectl apply in apps-in-any-namespace doc (#15197)

There's a kustomization.yaml file in that directory, so we should apply it with `-k`.

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

* docs: Fix docs for destinations in AppProjects (#15153) (#15182)

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/ktrysmt/go-bitbucket from 0.9.63 to 0.9.67 (#15500)

Bumps [github.com/ktrysmt/go-bitbucket](https://github.com/ktrysmt/go-bitbucket) from 0.9.63 to 0.9.67.
- [Release notes](https://github.com/ktrysmt/go-bitbucket/releases)
- [Commits](https://github.com/ktrysmt/go-bitbucket/compare/v0.9.63...v0.9.67)

---
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>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump goreleaser/goreleaser-action from 4.4.0 to 5.0.0 (#15496)

Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 4.4.0 to 5.0.0.
- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)
- [Commits](3fa32b8bb5...7ec5c2b0c6)

---
updated-dependencies:
- dependency-name: goreleaser/goreleaser-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: Jimmy Neville <jimmyeneville@gmail.com>

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

Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump actions/checkout from 3.5.3 to 4.0.0 (#15348)

* chore(deps): bump actions/checkout from 3.5.3 to 4.0.0

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.3 to 4.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](c85c95e3d7...3df4ab11eb)

---
updated-dependencies:
- dependency-name: actions/checkout
  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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(ui): Add button for wrapping lines in pod logs viewer (#15506)

* Add back wrap log line button

Signed-off-by: Yi Cai <yicai@redhat.com>

* Fixed lint issue

Signed-off-by: Yi Cai <yicai@redhat.com>

* Updated icon and location of Wrap Lines btn

Signed-off-by: Yi Cai <yicai@redhat.com>

* Fixed lint issue

Signed-off-by: Yi Cai <yicai@redhat.com>

* Put back pre tag and Ansi component

Signed-off-by: Yi Cai <yicai@redhat.com>

---------

Signed-off-by: Yi Cai <yicai@redhat.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add CODEOWNERS (#14693)

* chore: add CODEOWNERS

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

* new owners

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

* use teams

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

* restore old owners file

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: Jimmy Neville <jimmyeneville@gmail.com>

* fix: reflect expected integers in swagger doc (#13046)

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

* chore(deps): bump oras.land/oras-go/v2 from 2.2.1 to 2.3.0 (#15549)

Bumps [oras.land/oras-go/v2](https://github.com/oras-project/oras-go) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/oras-project/oras-go/releases)
- [Commits](https://github.com/oras-project/oras-go/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: oras.land/oras-go/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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump github.com/antonmedv/expr from 1.12.7 to 1.15.2 (#15548)

Bumps [github.com/antonmedv/expr](https://github.com/antonmedv/expr) from 1.12.7 to 1.15.2.
- [Release notes](https://github.com/antonmedv/expr/releases)
- [Commits](https://github.com/antonmedv/expr/compare/v1.12.7...v1.15.2)

---
updated-dependencies:
- dependency-name: github.com/antonmedv/expr
  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: Jimmy Neville <jimmyeneville@gmail.com>

* fix(repo-server): avoid fetching commit sha for multisource applications (#15037) (#15067)

* Rebase Signed-off-by: ozlevka-work <lev@ozeryansky.com>

Signed-off-by: Lev <lozeryan@akami.com>

* Remove test file Signed-off-by: ozlevka-work <lev@ozeryansky.com>

Signed-off-by: Lev <lozeryan@akami.com>

* Go linter fmt Signed-off-by: ozlevka-work <lev@ozeryansky.com>

Signed-off-by: Lev <lozeryan@akami.com>

* Additional linter fmt Signed-off-by: ozlevka-work <lev@ozeryansky.com>

Signed-off-by: Lev <lozeryan@akami.com>
Signed-off-by: Lev <lev@ozeryansky.com>

* Add unit test for changes Signed-off-by: Lev <lozeryan@akami.com>

Signed-off-by: Lev <lev@ozeryansky.com>

* Update reposerver/repository/repository.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Lev Ozeryansky <lozeryan@akamai.com>
Signed-off-by: Lev <lev@ozeryansky.com>

* Trigger CI

Signed-off-by: Lev <lev@ozeryansky.com>

---------

Signed-off-by: Lev <lozeryan@akami.com>
Signed-off-by: Lev <lev@ozeryansky.com>
Signed-off-by: Lev Ozeryansky <lozeryan@akamai.com>
Co-authored-by: Lev <lozeryan@akami.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* doc: adds vals-operator to secrets list (#11795)

Vals-Operator can also be used for managing secrets in Kubernetes.

Signed-off-by: Sergio Rua <58211930+digiserg@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump actions/cache from 3.3.1 to 3.3.2 (#15552)

Bumps [actions/cache](https://github.com/actions/cache) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](88522ab9f3...704facf57e)

---
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>
Co-authored-by: jannfis <jann@mistrust.net>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: better command reference titles (#15567) (#15568)

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

* chore(deps): bump library/node from 20.6.1 to 20.7.0 in /ui-test (#15583)

Bumps library/node from 20.6.1 to 20.7.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>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump library/node from 20.6.1 to 20.7.0 in /test/container (#15585)

Bumps library/node from 20.6.1 to 20.7.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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Add documentation on how to specify shard number for a cluster in "high availibility" doc (#5348) (#13258)

Signed-off-by: Sridhar Nandigam <nandigamsridhar.v@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: 'action' RBAC example for Kind without group (#15589)

Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore: add gdsoumya to reviewers (#15596)

Signed-off-by: gdsoumya <44349253+gdsoumya@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: added patch_ms and setop_ms timings to reconciliation logs (#15595)

* feat: added patch_ms to reconciliation logs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: added patch_ms and setop_ms timings to logs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

---------

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(action): minor lua changes (#15580)

* chore(action): add newlines at eof

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

* chore(action): fix whitespace indentation

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

* chore(action): use local annotations

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

---------

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

* chore(deps): bump library/golang from `cffaba7` to `2270a40` (#15615)

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

* feat(extensions): Automatically apply extension configs without restarting API-Server (#15574)

* feat: auto configure extensions

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

* feat: auto-reload extension configs without restarting api-server

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

* clean unused gorilla mux

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

* update docs

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

* Address review comments

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

* Add more test cases

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

* refactoring to reduce unnecessary function

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

* Add log

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

* fix bugs found during manual tests

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

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Update the supported version policy in Operator Manual Installation doc (#15619)

The supported version policy mentioned in the operator manual installation document diverges from the official policy that is mentioned in the security policy and the release cadence.

This change brings the version policy in line by referring the readers to the release and cadence documentation to check the specified policy.

Signed-off-by: Muhammad Mooneeb Hussain <mooneeb.hussain@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* doc: resource tracking custom label configuration (#15587)

Signed-off-by: Timoses <timoses@tutanota.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(cli): tree option in output flag for app sync, app wait and app rollback for tree view (#15572)

* app sync and app wait tree view changes

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* documentation changes

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* included the json,yaml and wide formats and removed the value assignment to the flag

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* Reoved extra spaces

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* removed extra spaces

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* refactored the code

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* better log statements

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

---------

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat: dynamic rebalancing of clusters across shards (#15036)

* Migrate Application Controller from Statefulset to Deployment

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add sharding deployment logic

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Update sharding logic and add comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add heartbeat as an environment variable

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add retry logic, heartbeat timeout environment variable

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* use the logic of pre-specified shard number on application controller pod

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix manifests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix lint and e2e tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* comment out failing e2e test

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* increase readiness probe interval period

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* "comment out readiness probe to see if e2e tests succeed"

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert commented readiness probe

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert commented test case

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* read environment variable for application controller deployment name

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add nil check on replica count for deployment of application controller

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Address comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add Informer, Update documentation, add unit tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update godoc

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* remove unwanted code and logs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add more documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert ApplicationController manifest to StatefulSet

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* reverting updated docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add documentation for the new dynamic distribution feature

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add an overlay for application controller deployment and update documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix nit

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Marking the feature as alpha

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add feature status link

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert go,mod changes

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update docs to avoid focusing on StatefulSet/Deployment (#26)

* update docs to avoid focusing on StatefulSet/Deployment

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

---------

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

* minor update to the doc

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@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: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump node version (#15616)

* chore(deps): bump node version

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

* fix version

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

* update lockfile

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: Jimmy Neville <jimmyeneville@gmail.com>

* feat(appset): add Support for AzureDevops Webhooks (#15047)

Signed-off-by: Robin Lieb <robin.j.lieb@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(cli): get latest app state before printing tree (#15639)

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

* chore(deps): bump actions/setup-node from 3.8.0 to 3.8.1 (#15108)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.8.0 to 3.8.1.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](bea5baf987...5e21ff4d9b)

---
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>
Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(kustomize): add patches field (#5114) (#14648)

Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(health): Implement AnsibleJob CRD health checks (#14483)

Signed-off-by: Mike Ng <ming@redhat.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(health): add PushSecret health status and force-sync action (#14375)

* feat(health): add `PushSecret` health status

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* add status healthy

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* Push action

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix test

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(kustomize): no concurrent processing if Kustomize patches are used (#15654)

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

* feat(appset): ignoreApplicationDifferences (#9101) (#14743)

* feat(appset): ignoreDifferences (#9101)

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

* better error messages

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

* do better

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

* docs

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

* more tests, update docs

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

* e2e test

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

* expect auto-added fields

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

* correct label

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

* better

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

* remove line that was reverted

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

* Update docs/operator-manual/applicationset.yaml

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

* remove line that mysteriously causes applicationset/utils unit tests to fail

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

* login to fix test

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

* maybe this will work, who knows

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

* burn it all down

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

* works on my machine

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: Jimmy Neville <jimmyeneville@gmail.com>

* fix(applicationset): cannot validate inherited project permissions (#9298) (#15026)

* fix(applicationset): cannot validate inherited project permissions

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* update tests to reflect behavior

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* chore(deps): bump semver from 5.7.1 to 5.7.2 in /ui-test (#14457)

Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

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

* chore(ci): free up disk space (#15674)

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

* fix: add a not found check for application controller deployment (#15678)

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* [fix] sidebar style (#15652)

Signed-off-by: ymktmk <ymktmk.tt@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(ci): free up disk space (#15683)

* fix(ci): free up disk space

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

* Update .github/workflows/image-reuse.yaml

Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* Update .github/workflows/image-reuse.yaml

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: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(ci): do not fail fast on e2e test failures (#15694)

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

* fix(ci): misplaced config option (#15698)

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

* fix(applicationset): git generator ignores empty files (#15661)

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(appset): don't emit k8s events for unchanged apps, log at debug (#15659) (#15660)

* fix(appset): don't emit k8s events for unchanged application events and move that scenario to debug logging level

Signed-off-by: Eric Blackburn <eblackburn@indeed.com>

* Retrigger CI pipeline

Signed-off-by: Eric Blackburn <eblackburn@indeed.com>

* Retrigger CI pipeline

Signed-off-by: Eric Blackburn <eblackburn@indeed.com>

---------

Signed-off-by: Eric Blackburn <eblackburn@indeed.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* feat(ci): retry individual e2e tests (#15696)

Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: Maintaining Uniformity In Documentation Writing Style (#15713)

In the Projects section there are two words 'what' and 'where'  are written in italic(in the first two sentences) but in the third sentence 'what' is written in normal text. So i changed the two words written in italic to normal text to maintain the uniformity of writing style of documentation.
See this issue in the Projects section  : "https://argo-cd.readthedocs.io/en/stable/user-guide/projects/"

Signed-off-by: PranitRout07 <102309095+PranitRout07@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: add dynamic cluster distribution doc in the menu (#15716)

Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Converted italic text to normal text (#15692)

To see the issue , go to this link "https://argo-cd.readthedocs.io/en/stable/operator-manual/app-any-namespace/"
In Prerequisites section ,the word 'not' is unnecessarily written in italic. It should be written in normal text to maintain the uniformity.

Signed-off-by: PranitRout07 <102309095+PranitRout07@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(action): populate all fields of Job from CronJob (#15259) (#15727)

Signed-off-by: sergey.ladutko <sergey.ladutko@vizor-games.com>
Co-authored-by: sergey.ladutko <sergey.ladutko@vizor-games.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix(application-controller): Fix panic error when trying to scale application controller shards  (#15725)

* Added error checking to determine if application controller deployment is found or not

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Fixed the informer to list deployments in namespace scope

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Fixed readiness check probe for application controller when running as deployment

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

---------

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* docs: move self-signed certs gitlab scm docs (#15720)

Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* fix: only enable dynamic cluster sharding feature explicitly (#15734)

* fix: only enable dynamic cluster sharding feature explicitly

Signed-off-by: Remington Breeze <remington@breeze.software>

---------

Signed-off-by: Remington Breeze <remington@breeze.software>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Fixed Custom Link Text not Hyperlinked (#15747)

Visit this link to see the issue : https://argo-cd.readthedocs.io/en/stable/developer-guide/ci/#public-cd

Signed-off-by: PranitRout07 <102309095+PranitRout07@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

* Update docs

Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>

---------

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>
Signed-off-by: Jimmy Neville <jimmyeneville@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
Signed-off-by: daftping <21245083+daftping@users.noreply.github.com>
Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>
Signed-off-by: Yi Cai <yicai@redhat.com>
Signed-off-by: Gerardo Corea <gerardocorea92@gmail.com>
Signed-off-by: mmerrill3 <jjpaacks@gmail.com>
Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Signed-off-by: Zechun Chen <zechun.chen@daocloud.io>
Signed-off-by: ylxianzhe <ylxianzhe@outlook.com>
Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: felix <felix@psy-coding.com>
Signed-off-by: CI <ci@argoproj.com>
Signed-off-by: Dylan Page <dylan.page@autodesk.com>
Signed-off-by: Jonathan West <jonwest@redhat.com>
Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
Signed-off-by: Nathan Romriell <nateromriell@gmail.com>
Signed-off-by: Alex Collins <alex_collins@intuit.com>
Signed-off-by: Trung <trung.hoang@pricehubble.com>
Signed-off-by: JesseBot <jessebot@linux.com>
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Signed-off-by: Nicholas Morey <nicholas@morey.tech>
Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>
Signed-off-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>
Signed-off-by: xashr <saschasynaos@gmail.com>
Signed-off-by: German Lashevich <german.lashevich@gmail.com>
Signed-off-by: Vipin M S <vipinachar2016@gmail.com>
Signed-off-by: Prune <prune@lecentre.net>
Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Mickaël Canévet <mickael.canevet@gmail.com>
Signed-off-by: Andrew Block <andy.block@gmail.com>
Signed-off-by: zvlb <vl.zemtsov@gmail.com>
Signed-off-by: Kevin Yue <yuezk001@gmail.com>
Signed-off-by: jmeridth <jmeridth@gmail.com>
Signed-off-by: Robin Lieb <robin.j.lieb@gmail.com>
Signed-off-by: Mason Cole <macole@beyondtrust.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>
Signed-off-by: Zadkiel Aharonian <zadkiel_aharonian@carrefour.com>
Signed-off-by: Philipp Dallig <philipp.dallig@gmail.com>
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Signed-off-by: Anton Gilgur <agilgur5@gmail.com>
Signed-off-by: Anton Lindholm <LinAnt@users.noreply.github.com>
Signed-off-by: AvhiMaz <avhimazumder5@outlook.com>
Signed-off-by: Yuan (Terry) Tang <terrytangyuan@gmail.com>
Signed-off-by: Jordi Grant Esteve <jgrant.esteve@gmail.com>
Signed-off-by: yyzxw <1020938856@qq.com>
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
Signed-off-by: SHIMADA Kento <shimada.kento8974@gmail.com>
Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>
Signed-off-by: B Pawan Kumar <pawan06kumar2003@gmail.com>
Signed-off-by: Dylan Slavin <dylan@sla.vin>
Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>
Signed-off-by: jmcshane <james.mcshane@superorbital.io>
Signed-off-by: Gaël Jourdan-Weil <gjourdanweil@gmail.com>
Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
Signed-off-by: Gaël Jourdan-Weil <gael.jourdan-weil@kelkoogroup.com>
Signed-off-by: ebuildy <ebuildy@gmail.com>
Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>
Signed-off-by: Christian Hernandez <christian@chernand.io>
Signed-off-by: Alexander Bellhäuser <alexbde@users.noreply.github.com>
Signed-off-by: AS <11219262+ashutosh16@users.noreply.github.com>
Signed-off-by: Vlad Fratila <vlad.fratila@up-sider.com>
Signed-off-by: phanama <yudiandreanp@gmail.com>
Signed-off-by: Carlos Castro carlos.castro@jumo.world
Signed-off-by: Carlos Castro <carlos.castro@jumo.world>
Signed-off-by: Fredrik A. Madsen-Malmo <fredrik.malmo@icloud.com>
Signed-off-by: David Muckle <dvdmuckle@dvdmuckle.xyz>
Signed-off-by: penglongli <pelenli@tencent.com>
Signed-off-by: Prasad Katti <prasad.katti@segment.com>
Signed-off-by: Torbjørn Fjørtoft <torbjorn.fjortoft@pgs.com>
Signed-off-by: Scott Windsor <scott.windsor@flexe.com>
Signed-off-by: Mike Splain <mike.splain@gmail.com>
Signed-off-by: Jake Burn <jake@ridedott.com>
Signed-off-by: Fs02 <surya.asriadie@gmail.com>
Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
Signed-off-by: Brad West <brad.g.west@gmail.com>
Signed-off-by: iam-veeramalla <abhishek.veeramalla@gmail.com>
Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>
Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
Signed-off-by: Cezar Sa Espinola <cezarsa@gmail.com>
Signed-off-by: ashu <ashupednekar49@gmail.com>
Signed-off-by: jannfis <jann@mistrust.net>
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: huyinhou <huyinhou@bytedance.com>
Signed-off-by: Mathias Petermann <mathias.petermann@swisscom.com>
Signed-off-by: David Marby <david@dmarby.se>
Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>
Signed-off-by: Alejandro López Sánchez <alejandro.lopez@factorial.co>
Signed-off-by: Liam Wyllie <risset@mailbox.org>
Signed-off-by: Marcelo Moreira de Mello <tchello.mello@gmail.com>
Signed-off-by: Ansuman Swain <ansuman.swain@kpmg.co.uk>
Signed-off-by: Maxime Brunet <max@brnt.mx>
Signed-off-by: zhaque44 <haque.zubair@gmail.com>
Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>
Signed-off-by: Kurt King <kurtaking@gmail.com>
Signed-off-by: Kurt Madel <km@kurtmadel.com>
Signed-off-by: LStuker <lucien.stuker@4data.ch>
Signed-off-by: Lev <lozeryan@akami.com>
Signed-off-by: Lev <lev@ozeryansky.com>
Signed-off-by: Lev Ozeryansky <lozeryan@akamai.com>
Signed-off-by: Sergio Rua <58211930+digiserg@users.noreply.github.com>
Signed-off-by: Sridhar Nandigam <nandigamsridhar.v@gmail.com>
Signed-off-by: gdsoumya <44349253+gdsoumya@users.noreply.github.com>
Signed-off-by: Josh Soref <jsoref@gmail.com>
Signed-off-by: Muhammad Mooneeb Hussain <mooneeb.hussain@gmail.com>
Signed-off-by: Timoses <timoses@tutanota.com>
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Signed-off-by: Mike Ng <ming@redhat.com>
Signed-off-by: ymktmk <ymktmk.tt@gmail.com>
Signed-off-by: Eric Blackburn <eblackburn@indeed.com>
Signed-off-by: PranitRout07 <102309095+PranitRout07@users.noreply.github.com>
Signed-off-by: sergey.ladutko <sergey.ladutko@vizor-games.com>
Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>
Signed-off-by: Remington Breeze <remington@breeze.software>
Co-authored-by: schakrad <58915923+schakrad@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nik Skoufis <n.skoufis@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: asingh <11219262+ashutosh16@users.noreply.github.com>
Co-authored-by: daftping <21245083+daftping@users.noreply.github.com>
Co-authored-by: Yuan Tang <terrytangyuan@gmail.com>
Co-authored-by: Yi Cai <yicai@redhat.com>
Co-authored-by: Gerardo Corea <gerardocorea92@gmail.com>
Co-authored-by: Michael Merrill <jjpaacks@gmail.com>
Co-authored-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Co-authored-by: Fish-pro <zechun.chen@daocloud.io>
Co-authored-by: XianzheTM <ylxianzhe@outlook.com>
Co-authored-by: Geoffrey MUSELLI <geoffrey.muselli@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Felix <github@felixglaeske.de>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: CI <ci@argoproj.com>
Co-authored-by: Dylan Page <genpage@pagefortress.com>
Co-authored-by: Jonathan West <jgwest@users.noreply.github.com>
Co-authored-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>
Co-authored-by: Nathan Romriell <nathan@modsy.com>
Co-authored-by: Alex Collins <alexec@users.noreply.github.com>
Co-authored-by: Hoang Quoc Trung <trung.hoang@pricehubble.com>
Co-authored-by: JesseBot <jessebot@linux.com>
Co-authored-by: Leonardo Luz Almeida <leoluz@users.noreply.github.com>
Co-authored-by: Nicholas Morey <nicholas@morey.tech>
Co-authored-by: Ashin Sabu <139749674+ashinsabu3@users.noreply.github.com>
Co-authored-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>
Co-authored-by: xashr <103113861+xashr@users.noreply.github.com>
Co-authored-by: German Lashevich <design.ber@gmail.com>
Co-authored-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>
Co-authored-by: Prune Sebastien THOMAS <prune@lecentre.net>
Co-authored-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Mickaël Canévet <mickael.canevet@gmail.com>
Co-authored-by: Andrew Block <andy.block@gmail.com>
Co-authored-by: Vladimir <31961982+zvlb@users.noreply.github.com>
Co-authored-by: Kevin Yue <k3vinyue@gmail.com>
Co-authored-by: Jason Meridth <jmeridth@gmail.com>
Co-authored-by: Robin Lieb <robin.j.lieb@gmail.com>
Co-authored-by: Mason Cole <117116981+bt-macole@users.noreply.github.com>
Co-authored-by: Zadkiel Aharonian <zadkiel_aharonian@carrefour.com>
Co-authored-by: Philipp Dallig <philipp.dallig@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: Anton Gilgur <4970083+agilgur5@users.noreply.github.com>
Co-authored-by: Anton Lindholm <LinAnt@users.noreply.github.com>
Co-authored-by: Avhi Mazumder <102310138+AvhiMaz@users.noreply.github.com>
Co-authored-by: selaci <selaci@users.noreply.github.com>
Co-authored-by: yyzxw <34639446+yyzxw@users.noreply.github.com>
Co-authored-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
Co-authored-by: SHIMADA Kento <shimada.kento8974@gmail.com>
Co-authored-by: B Pawan Kumar <pawan06kumar2003@gmail.com>
Co-authored-by: Dylan Slavin <dylan@sla.vin>
Co-authored-by: jjsiv <96917147+jjsiv@users.noreply.github.com>
Co-authored-by: James McShane <jmcshan1@gmail.com>
Co-authored-by: Gaël Jourdan-Weil <gjourdanweil@gmail.com>
Co-authored-by: Andreas Lindhé <lindhe@users.noreply.github.com>
Co-authored-by: Gaël Jourdan-Weil <gael.jourdan-weil@kelkoogroup.com>
Co-authored-by: Thomas Decaux <ebuildy@gmail.com>
Co-authored-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>
Co-authored-by: maheshbaliga <mahesh.baliga@infracloud.io>
Co-authored-by: Christian Hernandez <christianh814@users.noreply.github.com>
Co-authored-by: Alexander Bellhäuser <alexbde@users.noreply.github.com>
Co-authored-by: Vlad Fratila <vlad.fratila@gmail.com>
Co-authored-by: Yudi A Phanama <11147376+phanama@users.noreply.github.com>
Co-authored-by: Carlos Castro <carlos.castro@jumo.world>
Co-authored-by: Fredrik A. Madsen-Malmo <fredrik.malmo@icloud.com>
Co-authored-by: David Muckle <dvdmuckle@dvdmuckle.xyz>
Co-authored-by: Pelen <penglongli@users.noreply.github.com>
Co-authored-by: Prasad Katti <prasad.katti@segment.com>
Co-authored-by: jannfis <jann@mistrust.net>
Co-authored-by: Torbjørn Fjørtoft <torbjorn.fjortoft@gmail.com>
Co-authored-by: Scott Windsor <swindsor@gmail.com>
Co-authored-by: Mike Splain <mike.splain@gmail.com>
Co-authored-by: Jake Burn <jakeburn94@gmail.com>
Co-authored-by: Surya Asriadie <surya.asriadie@gmail.com>
Co-authored-by: gdsoumya <44349253+gdsoumya@users.noreply.github.com>
Co-authored-by: Brad West <brad.g.west@gmail.com>
Co-authored-by: iam-veeramalla <abhishek.veeramalla@gmail.com>
Co-authored-by: Oreon Lothamer <73498677+oreonl@users.noreply.github.com>
Co-authored-by: rumstead <37445536+rumstead@users.noreply.github.com>
Co-authored-by: Cezar Sá Espinola <cezarsa@gmail.com>
Co-authored-by: Ashutosh Pednekar <ashupednekar49@gmail.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: HYH <82195407@qq.com>
Co-authored-by: Mathias Petermann <mathias.petermann@gmail.com>
Co-authored-by: David Marby <david@dmarby.se>
Co-authored-by: Antoine Jouve <an-toine@users.noreply.github.com>
Co-authored-by: Alejandro López <a.lopez.sanchez@outlook.es>
Co-authored-by: Liam Wyllie <risset@mailbox.org>
Co-authored-by: Marcelo Mello <tchello.mello@gmail.com>
Co-authored-by: Ansuman Swain <Ansuman28@users.noreply.github.com>
Co-authored-by: Maxime Brunet <max@brnt.mx>
Co-authored-by: Zubair Haque <haque.zubair@gmail.com>
Co-authored-by: Harm Matthias Harms <harmmatthias.harms@gmail.com>
Co-authored-by: Kurt King <kurtaking@gmail.com>
Co-authored-by: Kurt Madel <kmadel@mac.com>
Co-authored-by: LStuker <lucien.stuker+github@protonmail.ch>
Co-authored-by: Lev Ozeryansky <lozeryan@akamai.com>
Co-authored-by: Lev <lozeryan@akami.com>
Co-authored-by: Sergio Rua <58211930+digiserg@users.noreply.github.com>
Co-authored-by: Sridhar Nandigam <nandigamsridhar.v@gmail.com>
Co-authored-by: Muhammad Mooneeb Hussain <mooneeb@chkk.io>
Co-authored-by: Timoses <timoses@tutanota.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Co-authored-by: Mike Ng <ming@redhat.com>
Co-authored-by: ymktmk <73768462+ymktmk@users.noreply.github.com>
Co-authored-by: ericblackburn <eblackburn@indeed.com>
Co-authored-by: PranitRout07 <102309095+PranitRout07@users.noreply.github.com>
Co-authored-by: SergeyLadutko <40435115+SergeyLadutko@users.noreply.github.com>
Co-authored-by: sergey.ladutko <sergey.ladutko@vizor-games.com>
Co-authored-by: Anand Francis Joseph <anjoseph@redhat.com>
Co-authored-by: Remington Breeze <remington@breeze.software>
2023-11-01 12:18:51 -04:00
Jorge Turrado Ferrero
c70e1b7163 fix(server): appset list uses argocd's namespace instead of all (#15429) (#15432)
* fix(server): appset list uses argocd's namespace instead of all

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>

* use lister to scope the observed namespaces based on which namespaces monitors for apps

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>

* apply feedback

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>

* add missing change 🤦

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>

* update generated manifests

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>

---------

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>
2023-11-01 10:55:21 -04:00
Zadkiel Aharonian
9eca44b4b7 fix(ui): prevent app panel to open on app direct link click (#15040)
Signed-off-by: Zadkiel Aharonian <hello@zadkiel.fr>
2023-11-01 10:51:26 -04:00
Christopher Fry
8e612b24f3 chore: specify namespace when restarting deployments in remote e2e tests (#16192)
Signed-off-by: Chris Fry <christopherfry@google.com>
2023-11-01 10:35:46 -04:00
navist2020
26264b87d0 Remove unnecessary error checking (#16150)
Signed-off-by: lijun <navist2020@163.com>
2023-10-31 22:31:38 -04:00
Priyanshu Thapliyal
9b4fc572bf fix api docs (#16186)
Signed-off-by: Priyanshu Thapliyal <114170980+Priyanshuthapliyal2005@users.noreply.github.com>
2023-10-31 22:09:24 -04:00
Michael Crenshaw
e36ce86b82 docs(cmp): fix CMP param getter example (#16077) (#16190)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-31 21:47:06 -04:00
Michael Crenshaw
5fc9fae74e chore(deps): bump slsa-github-generator to 1.9.0 (#16188)
* chore(deps): bump slsa-github-generator to 1.9.0

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

* catch more

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-31 21:00:34 +00:00
Chris Dolan
2d70f890b9 docs: Add Semgrep as a user (#16185)
Signed-off-by: Chris Dolan <chris@semgrep.com>
2023-10-31 20:31:47 +01:00
Rafal
d9e1b32eb9 fix(ui): Missing data in Sync Status if application never been synced (#16184)
Signed-off-by: Rafal Pelczar <rafal@akuity.io>
2023-10-31 18:10:37 +00:00
Rafal
aead2ede9e fix(ui): Improve apps tiles view (#16140)
* fix(ui): Improve apps tiles view

Signed-off-by: Rafal Pelczar <rafal@akuity.io>

* fix lint

Signed-off-by: Rafal Pelczar <rafal@akuity.io>

---------

Signed-off-by: Rafal Pelczar <rafal@akuity.io>
Signed-off-by: Rafal <rafal@akuity.io>
2023-10-31 10:19:33 -07:00
Michael Crenshaw
9a01a1ad31 chore(ci): bump cosign version (#16182)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-31 16:28:55 +00:00
Ishita Sequeira
c47ea326cb fix(application-controller): convert defaultDeploymentInformerResyncDuration to reflect 10 seconds (#16163)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2023-10-30 21:53:11 +00:00
Michael Crenshaw
28edaf58b0 fix(appset): ignoreApplicationDifferences not working (#15965)
* fix(appset): ignoreApplicationDifferences not working

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

* tests, docs

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

* link to enhancement request

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

* handle error

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

* Update docs/operator-manual/applicationset/Controlling-Resource-Modification.md

Co-authored-by: Hugues Peccatte <hugues.peccatte@gmail.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* fix bug, fix docs

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

* fix docs

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

* normalize empty syncPolicy field

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: Hugues Peccatte <hugues.peccatte@gmail.com>
2023-10-30 19:55:29 +00:00
Mathias Petermann
d429013409 docs(cmp): Document ConfigManagementPlugin.spec.version more clearly (#15974)
Signed-off-by: Mathias Petermann <mathias.petermann@gmail.com>
2023-10-30 19:14:58 +01:00
Mayursinh Sarvaiya
d747eb3f14 feat: PKCE authentication flow for web logins #9890 (#15889)
feat: PKCE authentication flow for web logins #9890 (#15889)

Signed-off-by: Mayursinh Sarvaiya <marvinduff97@gmail.com>
2023-10-30 09:40:34 -07:00
Michael Crenshaw
8241869050 chore(appset): better structured logging for controller (#16149)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-30 11:25:22 -04:00
Ashin Sabu
48f175baae fix: rbac validate command can now take either namespace or policy-file (#15543)
* fix: rbac validate command can now take either namespace or policy-file as arg

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* remove changes to generated text

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* unit test for rbacvalidatecommand

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* codegen changes

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* retrigger ci pipeline

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* retrigger ci pipeline

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* review comments and test changes

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* codegen changes

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* codegen changes - post rebase

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

---------

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>
2023-10-29 22:37:33 -04:00
Siddhesh Ghadi
f7a32fd346 Set cert resolver in notifications-controller (#15394)
Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>
2023-10-30 02:14:04 +00:00
github-actions[bot]
91bd63af24 [Bot] docs: Update Snyk reports (#16143)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-10-29 18:56:38 -04:00
Jayaraman N.R
0cc0d46212 feat(cli): example for generate-allow-list (#16136)
Signed-off-by: Jayaraman N R <Jayaraman_NR@intuit.com>

Signed-off-by: Jayaraman N.R <adarsh1999@gmail.com>
Co-authored-by: Jayaraman N R <Jayaraman_NR@intuit.com>
2023-10-28 12:56:45 -04:00
Christopher Fry
ce12527434 chore: fix typo in declarative tests filename (#15934)
Signed-off-by: Chris Fry <christopherfry@google.com>
2023-10-28 11:35:39 -04:00
Kunal Singh
4124adc693 docs(appset): ApplicationSets generators docs to use go templates (#16109) (#16127)
* docs: migrating fasttemplate to go-template; Git Generator

Signed-off-by: Kunal Singh <kunalsin9h@gmail.com>

* docs: missing yaml language specifier stopping syntax highlighting

Signed-off-by: Kunal Singh <kunalsin9h@gmail.com>

* docs: migrate List Generators page to go-templates

Signed-off-by: Kunal Singh <kunalsin9h@gmail.com>

* docs: migrate Matrix, Merge & SCM Provider Generators page to go-templates

Signed-off-by: Kunal Singh <kunalsin9h@gmail.com>

* docs: migrating fasttemplate to go-template

Signed-off-by: Kunal Singh <kunalsin9h@gmail.com>

---------

Signed-off-by: Kunal Singh <kunalsin9h@gmail.com>
2023-10-27 19:42:22 -04:00
Ratan Gulati
f5530355a9 feat(cli): Add examples to --help output for get KEYID (#16019)
Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>
2023-10-27 19:24:25 -04:00
Ratan Gulati
9b1fb1d98e feat(cli): Add examples to --help output for "gpg_list" (#16017)
* feat: Add examples to --help output for list

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* updated file

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

---------

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>
2023-10-27 19:22:15 -04:00
Ratan Gulati
0c91395925 feat: Add examples to --help output for remaining "create PROJECT ROLE-NAME" (#15983)
* feat: Add examples to --help output for remaining create PROJECT ROLE-NAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for remaining create PROJECT ROLE-NAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

---------

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>
2023-10-27 19:07:30 -04:00
Dao Thanh Tung
9556cd7bcb feat(cli): Add examples to argocd proj role cli family (#15875)
* Add examples to argocd project role cli

Signed-off-by: dttung2905 <ttdao.2015@accountancy.smu.edu.sg>

* Revert accidentally changed file

Signed-off-by: dttung2905 <ttdao.2015@accountancy.smu.edu.sg>

* Rebase from master

Signed-off-by: dttung2905 <ttdao.2015@accountancy.smu.edu.sg>

---------

Signed-off-by: dttung2905 <ttdao.2015@accountancy.smu.edu.sg>
2023-10-27 19:03:20 -04:00
Blake Pettersson
4f8c147bef chore: let docs approvers approve mkdocs.yml (#16134)
@argocd-approvers-docs cannot approve #15689 since `mkdocs.yml` is not
included in the `CODEOWNERS` file. This should be pretty benign to add.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-10-27 14:07:31 +00:00
Zeus Arias Lucero
b71277c6be docs: added identity-center.md doc for AWS SSO (#15689)
* docs: added identity center doc (AWS SSO)

Signed-off-by: zeusal <zeusariaslucero@gmail.com>

* Apply suggestions from code review

Co-authored-by: Carlos Santana <csantana23@gmail.com>
Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>

* Update identity-center.md

Added note for attribute mapping 

Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>

* Update identity-center.md

Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>

* Update docs/operator-manual/user-management/identity-center.md

Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>

* Update identity-center.md

Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>

Fixed image order and style doc

Update identity-center.md

Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>

Update identity-center.md

Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>

* Update identity-center.md

Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>

---------

Signed-off-by: zeusal <zeusariaslucero@gmail.com>
Signed-off-by: Zeus Arias Lucero <33123154+zeusal@users.noreply.github.com>
Co-authored-by: Zeus Arias <zeus.ariaslucero@ust.com>
Co-authored-by: Carlos Santana <csantana23@gmail.com>
Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
2023-10-27 09:14:17 -04:00
Gaurang Kudale
6e2f2c9d1e feat(cli): add admin-app-example (#15690) (#15861)
* update the admin-app-example Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

* update the admin-app-example Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

* update the admin-app-example Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

* updating the admin-app-example Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

* updating the admin-app-example Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

* Update cmd/argocd/commands/admin/app.go

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Gaurang Kudale <gaurangkudale@yahoo.com>

* update the string Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurangkudale@yahoo.com>

---------

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>
Signed-off-by: Gaurang Kudale <gaurangkudale@yahoo.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-10-25 16:03:54 -04:00
Joseph Perez
591a94ba73 fix: Add timezone to projectwindows list (#15929)
* list timezone in default list windows

Signed-off-by: Joseph Perez <perezj0230@gmail.com>

* add list example

Signed-off-by: Joseph Perez <perezj0230@gmail.com>

* clidocsgen

Signed-off-by: Joseph Perez <perezj0230@gmail.com>

---------

Signed-off-by: Joseph Perez <perezj0230@gmail.com>
2023-10-25 16:03:04 -04:00
Michael Crenshaw
a723a6c38c feat(cli): add project flag to avoid permission denied errors on 404 (#16040)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-25 15:55:37 -04:00
github-actions[bot]
fe3bb11803 [Bot] docs: Update Snyk reports (#16061)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-10-25 15:00:09 -04:00
Yi Cai
30e06d6d4a fix(ui): log button behaviors (#15848) (#16098)
* Fixed log button behaviors

Signed-off-by: Yi Cai <yicai@redhat.com>

* Fixed lint-ui issues

Signed-off-by: Yi Cai <yicai@redhat.com>

---------

Signed-off-by: Yi Cai <yicai@redhat.com>
2023-10-25 13:57:39 -04:00
Etien Rožnik
bc5fb811d6 feat: expose notification secrets for request payload templating (#16055)
Signed-off-by: Etien Roznik <12816736+eroznik@users.noreply.github.com>
2023-10-25 11:13:21 -04:00
Jordan Moore
f1d3d66da3 fix(banzai/KafkaCluster): Update health.lua (#15962)
fix(banzai/KafkaCluster): Update health.lua (#15962)

Uses ipairs() to correctly iterates over indexed elements

Signed-off-by: Jordan Moore <1930631+OneCricketeer@users.noreply.github.com>
2023-10-25 07:58:00 -07:00
Alexander Matyushentsev
f37d24f6d8 feat: make git requests configurable (#15646)
* feat: make git requests configurable

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

* docs: mention new settings in 'argocd-cmd-params-cm' configmap

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

* add comment about ignored error

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

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-10-24 20:41:22 +00:00
Michael Crenshaw
5d3bdb5bd0 fix(docs): proj role list example (#16074)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-24 14:14:43 -04:00
Michael Crenshaw
eab38b53ac docs(bounty): proposal for feature to hide annotations on secrets in UI (#15699)
* docs(bounty): proposal for feature to hide annotations on secrets in the UI

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

* fix file location

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-24 16:43:11 +00:00
Rafal
91875c01b8 fix(ui): Dark theme improvements (#15891)
Signed-off-by: Rafal Pelczar <rafal@akuity.io>
2023-10-24 08:58:05 -07:00
Edith Puclla
f8cd449e36 docs: add percona to list of Argo users (#16079)
* Add Percona user

Signed-off-by: Edith Puclla <edypuclla@gmail.com>

* Add Percona user

Signed-off-by: Edith Puclla <edypuclla@gmail.com>

Add Percona in USERS

---------

Signed-off-by: Edith Puclla <edypuclla@gmail.com>
2023-10-24 11:22:21 +00:00
gdsoumya
a43b799609 feat: add write back to application informer (#15987)
Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
Signed-off-by: gdsoumya <44349253+gdsoumya@users.noreply.github.com>
2023-10-23 18:15:53 -07:00
May Zhang
f4e0d35454 fix: argocd notification controller app cluster permission issue (#16057)
* if applicationNamespaces is not provided as input parameter, then use namespaced appClient

Signed-off-by: May Zhang <may_zhang@intuit.com>

* fix go lint error

Signed-off-by: May Zhang <may_zhang@intuit.com>

---------

Signed-off-by: May Zhang <may_zhang@intuit.com>
2023-10-23 21:44:49 +00:00
Alexander Matyushentsev
56a7bb79a4 fix: auto-sync fails with 'another operation is already in progress' error (#15638)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-10-23 08:40:13 -07:00
Mathias Petermann
752004c870 feat(cmp): Print stderr output from command even on success (#15921) (#15973)
* feat(cmp): Print stderr output from command even on success

Signed-off-by: Mathias Petermann <mathias.petermann@gmail.com>

* docs(cmp): Document logging from cmp sidecard for development purposes

Signed-off-by: Mathias Petermann <mathias.petermann@gmail.com>

---------

Signed-off-by: Mathias Petermann <mathias.petermann@gmail.com>
2023-10-23 09:59:56 -04:00
Shaurya Gulati
20618b44ed feat(cli): Add examples to --help output for "list PROJECT" (#16033)
Signed-off-by: Shauryagulati <Sgulati1020@gmail.com>
2023-10-23 09:43:18 -04:00
Ratan Gulati
c72a388618 feat(cli): Add examples to --help output for "gpg add" (#16020)
* feat: Add examples to --help output for gpg add

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update gpg.go

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for gpg add

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* updated file

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

---------

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>
2023-10-23 09:41:36 -04:00
Alexander Matyushentsev
9a922de9b2 fix: ensure appset don't attempt to remove application kind in patch requests (#16056)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-10-23 09:32:35 -04:00
Victor Sollerhed
35a9e0cc6d chore(deps): bump kustomize to v5.2.1 (#16054)
* kustomize v5.2.1 checksums

Signed-off-by: Victor Sollerhed <victor.sollerhed@pagero.com>

* kustomize v5.2.1 tool-versions

Signed-off-by: Victor Sollerhed <victor.sollerhed@pagero.com>

---------

Signed-off-by: Victor Sollerhed <victor.sollerhed@pagero.com>
2023-10-23 09:30:28 -04:00
bagnaram
973565e194 feat(ui): Recursive Helm Values files detection (#15935) (#15936)
Signed-off-by: bagnaram <11695670+bagnaram@users.noreply.github.com>
2023-10-19 16:24:58 -04:00
Nick K
1fe6c8993a fix: list manually provided external urls before generated ones (#13296)
Signed-off-by: Nick <nkkowa@gmail.com>
2023-10-19 19:42:45 +00:00
Christian Hernandez
bf80422a9d added example of using build env vars in your Kustomized Argo CD Application (#16025)
Signed-off-by: Christian Hernandez <christian@chernand.io>
2023-10-19 09:35:31 -07:00
Yuan (Terry) Tang
3e643843dd chore: Revert "fix: Replace antonmedv/expr with expr-lang/expr" (#16027)
Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>
2023-10-19 08:17:11 -07:00
Harshvir Potpose
ab1cc50a83 add example to --help command in argocd_admin_dashboard.md file (#16034)
Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
2023-10-19 16:19:26 +03:00
BhavikaSharma
d7cd236f21 fix: Add ENV variable to configure GRPC Keep Alive Time (#15656) (#15806)
* Add ENV variables to configure GRPC Keep Alive Time

Signed-off-by: Bhavika Sharma <bsharma@splunk.com>

* Retrigger CI pipeline

Signed-off-by: Bhavika Sharma <bsharma@splunk.com>

* Resolve conflict with master

Signed-off-by: Bhavika Sharma <bsharma@splunk.com>

* Update docs/user-guide/environment-variables.md

Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Signed-off-by: BhavikaSharma <BhavikaSharma@users.noreply.github.com>

---------

Signed-off-by: Bhavika Sharma <bsharma@splunk.com>
Signed-off-by: BhavikaSharma <BhavikaSharma@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-10-18 16:57:21 -04:00
gdsoumya
a9f03aa8cc feat: use rate limited queue (#15480)
* feat: use rate limited queue

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2023-10-18 12:08:04 -07:00
Blake Pettersson
9e0e8d5e8a chore(deps): upgrade k8s version and client-go (#15852)
* chore(deps): upgrade k8s version and client-go

Signed-off-by: fengshunli <1171313930@qq.com>

* revert bad merge

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

* fix codegen

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

* fix codegen

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

* fix: check for double definition

As found in #13965 (and as a follow-up to #13999), we also need to
define what happens if _both_ managedNamespaceMetadata _and_ an
Application manifest are both defined for the same namespace.

The idea here is that if that happens, we emit an
`ApplicationConditionRepeatedResourceWarning`, and set the sync status
to `Unknown`, since it's unclear what is supposed to happen.

The user will then have the option of removing one of the two
definitions.

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

* fix: check for double definition

A simpler fix - don't add a managed namespace to the targetObjs list if
a namespace already exists in the application source.

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

* build: extra space in doc

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

* build: extra space in doc, again

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

* chore: bump gitops-engine

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

---------

Signed-off-by: fengshunli <1171313930@qq.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: fengshunli <1171313930@qq.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-18 08:17:00 -07:00
Ratan Gulati
5b07a12678 feat: Add examples to --help output for remaining "get APPNAME" (#15862)
* feat: Add examples to --help output for get APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for get APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update app.go

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update argocd_app_get.md

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update argocd_app_get.md

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* updated app.go

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update app.go

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update argocd_app_get.md

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update app.go

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* docs: clarify health inheritance (#15799)

* docs: resource health inheritance

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

* write more better

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: Ratan Gulati <ratangulati.dev@gmail.com>

* updated file

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update app.go

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* updated get-APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* updated get-APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

---------

Signed-off-by: Ratan Gulati <ratangulati.dev@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>
2023-10-17 22:47:55 -04:00
Gaurang Kudale
f7a353a829 feat(cli): add the repocred-list-example (#15690) (#15869)
* update the repocreds-list changes Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

* update the string Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

---------

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>
2023-10-17 22:45:48 -04:00
Gaurang Kudale
1a43ff6cb3 feat(cli): add the cluster-list-example (#15690) (#15866) 2023-10-18 01:32:35 +00:00
Shaurya Gulati
df32338a72 feat: Add examples to --help output for "delete PROJECT ROLE-NAME" (#15986)
* feat: Add examples to --help output for delete PROJECT ROLE-NAME

Signed-off-by: Shauryagulati <Sgulati1020@gmail.com>

---------

Signed-off-by: Shauryagulati <Sgulati1020@gmail.com>
2023-10-17 08:19:54 -04:00
Yudi A Phanama
f7788a71e3 fix(grpcproxy): add GRPCKeepAliveEnforcementMinimum (#15708)
the absence of the setting potentially causes ENHANCE_YOUR_CALM

Signed-off-by: phanama <yudiandreanp@gmail.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2023-10-17 08:10:39 -04:00
Kota Kimura
da57e03cce fix: helm set parameter to allow passing list parameters (#15978)
Signed-off-by: kkk777-7 <kota.kimura0725@gmail.com>
2023-10-16 16:46:06 -04:00
ericblackburn
614a2531b0 fix(appset): performProgressiveSyncs only when the applicationset is using it (#15299)
Signed-off-by: Eric Blackburn <eblackburn@indeed.com>
2023-10-16 16:43:13 -04:00
github-actions[bot]
94401b9cb2 [Bot] docs: Update Snyk reports (#15977)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-10-16 16:31:59 -04:00
Nathan Romriell
99a4bf0a2d fix: delete event cache deadlock test flakiness (#15964)
Signed-off-by: Nathan Romriell <nateromriell@gmail.com>
2023-10-16 14:10:56 -04:00
naruse
dbc48f372c fix(ci): unstable integration test (#15976)
* wait more

Signed-off-by: naruse666 <become15@i.softbank.jp>

* fix: wait

Signed-off-by: naruse666 <become15@i.softbank.jp>

* rerun

Signed-off-by: naruse666 <become15@i.softbank.jp>

* rerun 2

Signed-off-by: naruse666 <become15@i.softbank.jp>

---------

Signed-off-by: naruse666 <become15@i.softbank.jp>
2023-10-15 13:26:48 -04:00
Matthijs
0fdd534c89 Added timezone example to sync_windows page (#15926)
I was looking for this in the docs but I could not find it. Did find that it was possible https://github.com/argoproj/argo-cd/pull/7442/files so I have added to an example to make it clear that this is possible.

Signed-off-by: Matthijs <Mattie112@users.noreply.github.com>
2023-10-15 11:24:50 +02:00
Alex Souslik
af17c8d0ff bump helm 3.13.1, kustomize 5.1.1 (#15703)
Signed-off-by: alex-souslik-hs <alex.s@hiredscore.com>
2023-10-13 20:00:47 +00:00
github-actions[bot]
6dbd47e632 [Bot] docs: Update Snyk reports (#15867)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-10-13 14:36:44 -04:00
Joseph Perez
b6e8c23fad feat(cli): Add examples to projectwindows.go (#15860)
* feat(cli): Add some examples to projectwindows.go

Signed-off-by: Joseph Perez <perezj0230@gmail.com>

* switch order of short and example

Signed-off-by: Joseph Perez <perezj0230@gmail.com>

* remove accidental add

Signed-off-by: Joseph Perez <perezj0230@gmail.com>

---------

Signed-off-by: Joseph Perez <perezj0230@gmail.com>
2023-10-13 13:13:40 -04:00
dependabot[bot]
bf06197433 chore(deps): bump github.com/google/go-cmp from 0.5.9 to 0.6.0 (#15919)
Bumps [github.com/google/go-cmp](https://github.com/google/go-cmp) from 0.5.9 to 0.6.0.
- [Release notes](https://github.com/google/go-cmp/releases)
- [Commits](https://github.com/google/go-cmp/compare/v0.5.9...v0.6.0)

---
updated-dependencies:
- dependency-name: github.com/google/go-cmp
  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>
2023-10-13 13:09:40 -04:00
smriti0710
af44ffb021 fix(ui): pod count tooltip (#15928)
Signed-off-by: Smriti Prakash <smriti_prakash@intuit.com>
Co-authored-by: Smriti Prakash <smriti_prakash@intuit.com>
2023-10-13 13:07:12 -04:00
Joseph Lombrozo
f8f9ae9acc fix: update docs for ApplicationService.Get to reflect reality (#15927)
Signed-off-by: Joe Lombrozo <joe@djeebus.net>
2023-10-12 13:31:22 -04:00
Francisco Rangel
c9aa373196 docs: improve toolchain/k3d docs (#15913)
* docs: improve toolchain/k3d docs

Signed-off-by: Francisco Rangel <franc.rangel07@protonmail.com>

* fix: add missing code formatting for first k3d flag

Signed-off-by: Francisco Rangel <franc.rangel07@protonmail.com>

* fix: add missing code formatting for first k3d legacy flag

Signed-off-by: Francisco Rangel <franc.rangel07@protonmail.com>

* fix: use correct type of quote

Signed-off-by: Francisco Rangel <franc.rangel07@protonmail.com>

* add single quotes around k3d extra arguments

Signed-off-by: Francisco Rangel <franc.rangel07@protonmail.com>

---------

Signed-off-by: Francisco Rangel <franc.rangel07@protonmail.com>
2023-10-12 09:43:07 +02:00
dependabot[bot]
7297a6c98b chore(deps): bump library/golang from 1.21.1 to 1.21.3 in /test/remote (#15892)
Bumps library/golang from 1.21.1 to 1.21.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>
2023-10-12 01:01:56 +00:00
dependabot[bot]
1058db8903 chore(deps): bump golang.org/x/net from 0.15.0 to 0.17.0 (#15916)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.15.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.15.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-12 00:22:59 +00:00
dependabot[bot]
ad4962352c chore(deps): bump google.golang.org/grpc from 1.56.2 to 1.58.3 (#15893)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.56.2 to 1.58.3.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.56.2...v1.58.3)

---
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>
2023-10-11 16:44:17 -04:00
Jack
aed8494378 docs: Improve helm docs #15706 (#15755)
* Add docs to make it easier to understand which values win

fix/docs/helm

Signed-off-by: phyzical <5182053+phyzical@users.noreply.github.com>

* refactor the docs to not link to stackoverflow

fix/docs/helm

Signed-off-by: phyzical <5182053+phyzical@users.noreply.github.com>

---------

Signed-off-by: phyzical <5182053+phyzical@users.noreply.github.com>
2023-10-11 17:32:43 +02:00
dependabot[bot]
761d7af431 chore(deps): bump library/golang from 1.21.1 to 1.21.3 (#15895)
Bumps library/golang from 1.21.1 to 1.21.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>
2023-10-11 11:20:40 -04:00
dependabot[bot]
46721c77fa chore(deps): bump library/golang in /test/container (#15894)
Bumps library/golang from 1.21.1 to 1.21.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>
2023-10-11 11:20:18 -04:00
Michael Crenshaw
018b01364d feat(health): add iammanager.keikoproj.io/Iamrole health check (#15899)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-11 14:53:47 +00:00
Ratan Gulati
9330d3a962 feat: Add examples to --help output for "generate-spec PROJECT" (#15871)
* feat: Add examples to --help output for get APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for get APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update app.go

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update argocd_app_get.md

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat(cli): Add examples to --help output for generate-spec PROJECT

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat(cli): Add examples to --help output for generate-spec PROJECT

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat(cli): Add examples to --help output for generate-spec PROJECT

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for all "argocd proj" cmds (#15824)

Signed-off-by: Michele Caci <michele.caci@gmail.com>
Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* chore(deps): bump gitops-engine (#15736)

* chore(deps): bump gitops-engine

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>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat(cli): Add example to argocd relogin command (#15839)

* feat: Add example to argocd relogin command

Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@gmail.com>

* feat: Add example to argocd relogin command

Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@gmail.com>

* correc --sso flag

Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@gmail.com>

* Apply suggestions from code review

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

---------

Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@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: Ratan Gulati <ratangulati.dev@gmail.com>

* test(e2e): allow build of argocd-e2e-cluster image for remote tests (#15805)

* chore: allow build of argocd-e2e-cluster image for remote testing

Signed-off-by: Chris Fry <christopherfry@google.com>

* Retrigger CI pipeline

Signed-off-by: Chris Fry <christopherfry@google.com>

---------

Signed-off-by: Chris Fry <christopherfry@google.com>
Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for get APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for get APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update app.go

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* Update argocd_app_get.md

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat(cli): Add examples to --help output for generate-spec PROJECT

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat(cli): Add examples to --help output for generate-spec PROJECT

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat(cli): Add examples to --help output for generate-spec PROJECT

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* docs: clarify health inheritance (#15799)

* docs: resource health inheritance

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

* write more better

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: Ratan Gulati <ratangulati.dev@gmail.com>

---------

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>
Signed-off-by: Michele Caci <michele.caci@gmail.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@gmail.com>
Signed-off-by: Chris Fry <christopherfry@google.com>
Co-authored-by: Michele Caci <michele.caci@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Co-authored-by: Chiranjeevi R <96932059+chiranjeevir-git@users.noreply.github.com>
Co-authored-by: Christopher Fry <ChristopherFry2008@gmail.com>
2023-10-10 18:50:02 -04:00
Gaurang Kudale
6a48b13711 feat(cli): add the repo-example (#15690) (#15865)
* updating the repo-example Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

* update the repo.go for rm  Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

* update the reverting changes Signed-off-by: Author Name gaurang.kudale02@gmail.com

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>

---------

Signed-off-by: Gaurang Kudale <gaurang.kudale02@gmail.com>
2023-10-10 18:47:12 -04:00
Ratan Gulati
d4fa84e8bd feat(cli): Add examples to --help output for "set APPNAME" (#15872)
* feat: Add examples to --help output for get APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for get APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

---------

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>
2023-10-10 10:50:24 -04:00
Ratan Gulati
0a50a1957f feat(cli): Add examples to --help output for "logs APPNAME" (#15873)
* feat: Add examples to --help output for logs APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

* feat: Add examples to --help output for logs APPNAME

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>

---------

Signed-off-by: Ratan Gulati <ratangulati.dev@gmail.com>
2023-10-10 10:49:29 -04:00
Yuan (Terry) Tang
154f482524 fix: Replace antonmedv/expr with expr-lang/expr (#15879) 2023-10-09 12:17:56 -07:00
Michael Crenshaw
f93b2e4000 docs: clarify health inheritance (#15799)
* docs: resource health inheritance

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

* write more better

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-08 10:39:37 -04:00
Christopher Fry
1959654dac test(e2e): allow build of argocd-e2e-cluster image for remote tests (#15805)
* chore: allow build of argocd-e2e-cluster image for remote testing

Signed-off-by: Chris Fry <christopherfry@google.com>

* Retrigger CI pipeline

Signed-off-by: Chris Fry <christopherfry@google.com>

---------

Signed-off-by: Chris Fry <christopherfry@google.com>
2023-10-07 02:55:30 +00:00
Chiranjeevi R
af4fa1e671 feat(cli): Add example to argocd relogin command (#15839)
* feat: Add example to argocd relogin command

Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@gmail.com>

* feat: Add example to argocd relogin command

Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@gmail.com>

* correc --sso flag

Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@gmail.com>

* Apply suggestions from code review

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

---------

Signed-off-by: Chiranjeevi R <chiranjeevi.ramanatha@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>
2023-10-06 23:25:54 +00:00
Michael Crenshaw
81b0750358 chore(deps): bump gitops-engine (#15736)
* chore(deps): bump gitops-engine

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>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-10-06 22:04:11 +00:00
Michele Caci
c3017bf742 feat: Add examples to --help output for all "argocd proj" cmds (#15824)
Signed-off-by: Michele Caci <michele.caci@gmail.com>
2023-10-06 17:27:15 -04:00
akashbalaraj
6e0149ae8d feat(cli): Added example to --help output for bcrypt (#15838)
* feat: Added example to --help output for bcrypt

Signed-off-by: abalaraj <akash_balaraj@intuit.com>

* feat: Added example to --help output for bcrypt

Signed-off-by: abalaraj <akash_balaraj@intuit.com>

---------

Signed-off-by: abalaraj <akash_balaraj@intuit.com>
2023-10-06 17:24:45 -04:00
Michael Crenshaw
4ff5b415cf chore: log more fields with error (#15735)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-10-06 20:49:33 +00:00
May Zhang
0c6644bf8e fix(notifications): Allow notifications controller to notify on all namespaces (#15702)
* Allow notifications controller to notify on all namespaces

This adds functionality to the notifications controller to be notified
of and send notifications for applications in any namespace. The
namespaces to watch are controlled by the same --application-namespaces
and ARGOCD_APPLICATION_NAMESPACES variables as in the application
controller.

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

* Add SEEK to users.md

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

* Remove unused fields

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

* Revert changes to Procfile

Signed-off-by: Nik Skoufis <n.skoufis@gmail.com>

* Fix unit tests

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

* - add argocd namespaces environment variable to notifications controller

Signed-off-by: Stewart Thomson <sthomson@wynshop.com>

* - add example cluster role rbac

Signed-off-by: Stewart Thomson <sthomson@wynshop.com>

* - only look for projects in the controller's namespace (argocd by default)

Signed-off-by: Stewart Thomson <sthomson@wynshop.com>

* - update base manifest

Signed-off-by: Stewart Thomson <sthomson@wynshop.com>

* - skip app processing in notification controller

Signed-off-by: Stewart Thomson <sthomson@wynshop.com>

* added unit test and updated doc

Signed-off-by: May Zhang <may_zhang@intuit.com>

* added unit test and updated doc

Signed-off-by: May Zhang <may_zhang@intuit.com>

* updated examples/k8s-rbac/argocd-server-applications/kustomization.yaml's resources

Signed-off-by: May Zhang <may_zhang@intuit.com>

---------

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>
Signed-off-by: Nik Skoufis <n.skoufis@gmail.com>
Signed-off-by: Stewart Thomson <sthomson@wynshop.com>
Signed-off-by: May Zhang <may_zhang@intuit.com>
Co-authored-by: Nikolas Skoufis <nskoufis@seek.com.au>
Co-authored-by: Nik Skoufis <n.skoufis@gmail.com>
Co-authored-by: Stewart Thomson <sthomson@wynshop.com>
2023-10-06 20:25:38 +00:00
Michael Crenshaw
b62d812477 docs: improve notifications docs (#15816)
* docs: improve notifications docs

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

* use a version compatible with Python 3.7, which is what RTD runs

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

* more fixes

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-06 18:55:34 +00:00
Christopher Fry
25cdb6f778 chore: skip server certificate verification for http requests in e2e tests (#15733)
* chore: skip verifying server certificate for http requests in e2e tests

Signed-off-by: Chris Fry <christopherfry@google.com>

* chore: skip certificate verification only for remote tests

Signed-off-by: Chris Fry <christopherfry@google.com>

---------

Signed-off-by: Chris Fry <christopherfry@google.com>
2023-10-06 13:20:48 -04:00
Geoffrey MUSELLI
c07bf2614c feat(appset): fromYaml, fromYamlArray toYaml functions (#15063)
* feat(appset): fromYaml, fromYamlArray toYaml functions

Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>

* fix(11993): Document and error messages

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

---------

Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>
Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
2023-10-06 15:07:23 +00:00
Kokilavani Kathiresan
a4b5173e75 feat(cli): Add example to --help output for app actions (#15822)
Signed-off-by: kokikathir <kathiresankokilavani@gmail.com>
2023-10-06 09:02:46 -04:00
Michele Caci
498f47ec13 feat(cli): Add examples to --help output for remaining "argocd account" (#15814)
* feat: Add examples to --help output for remaining "argocd account"

Signed-off-by: Michele Caci <michele.caci@gmail.com>

* Update cmd/argocd/commands/account.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Michele Caci <michele.caci@gmail.com>

---------

Signed-off-by: Michele Caci <michele.caci@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-06 08:59:58 -04:00
Michele Caci
91f107f3ff feat(cli): Add examples to --help output for remaining "argocd repocreds" cmds (#15846)
Signed-off-by: Michele Caci <michele.caci@gmail.com>
2023-10-06 08:19:54 -04:00
Christopher Fry
401a7f1818 test(e2e): always specify master as the initial git branch (#15662)
Signed-off-by: Chris Fry <christopherfry@google.com>
2023-10-06 03:43:19 +00:00
Dao Thanh Tung
e804c3e542 feat(cli): Add example to --help output 1 (#15782)
* re-sign commit with DCO

Signed-off-by: Dao Thanh Tung <ttdao.2015@accountancy.smu.edu.sg>

* Update doc file

Signed-off-by: Dao Thanh Tung <ttdao.2015@accountancy.smu.edu.sg>

---------

Signed-off-by: Dao Thanh Tung <ttdao.2015@accountancy.smu.edu.sg>
2023-10-05 21:19:22 -04:00
James McShane
3e9dd0efc7 chore(ci): fix generate code CI failure (#15828)
Signed-off-by: jmcshane <james.mcshane@superorbital.io>
2023-10-05 21:16:49 -04:00
Shailja Agarwala
00e3725e66 feat(cli): Added example to --help output for context (#15809)
* docs: fix list format (#15798)

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

* fix(appset): add option to disable SCM providers entirely (#14246) (#15248)

* feat(appset): add option to disable SCM providers entirely (#14246)

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

* clarify docs

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

* more clarification, small refactor

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

* more clarification

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

* fix test

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

* refactor

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

* fix test assertion

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

* simplify test expectation

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: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Signed-off-by: sagarwala1 <shailja_agarwala@intuit.com>

* add context example to help

Signed-off-by: sagarwala1 <shailja_agarwala@intuit.com>

* add context example to help Signed-off-by: sagarwala

Signed-off-by: sagarwala1 <shailja_agarwala@intuit.com>

* fea(cli)t: Add example to --help output for "argocd appset get" (#15808)

Signed-off-by: Michele Caci <michele.caci@gmail.com>
Signed-off-by: sagarwala1 <shailja_agarwala@intuit.com>

* fix: codeowners syntax error (#15781)

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Signed-off-by: sagarwala1 <shailja_agarwala@intuit.com>

* Trigger checks again Signed-off-by: sagarwala1 <shailja_agarwala@intuit.com>

Signed-off-by: sagarwala1 <shailja_agarwala@intuit.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: sagarwala1 <shailja_agarwala@intuit.com>
Signed-off-by: Michele Caci <michele.caci@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Co-authored-by: Michele Caci <michele.caci@gmail.com>
2023-10-05 18:57:53 -04:00
naruse
a1245885fe docs: actually all helm hooks are ignored (#15752)
* docs: actually all helm hooks are ignored

Signed-off-by: naruse666 <become15@i.softbank.jp>

* fix: add "All of"

Signed-off-by: naruse666 <become15@i.softbank.jp>

* Update docs/user-guide/helm.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: naruse <62323683+naruse666@users.noreply.github.com>

---------

Signed-off-by: naruse666 <become15@i.softbank.jp>
Signed-off-by: naruse <62323683+naruse666@users.noreply.github.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-10-05 08:58:11 -06:00
Christopher Fry
e37ff6f0ae test(e2e): update git submodule remote tests to use submodule url (#15701)
Signed-off-by: Chris Fry <christopherfry@google.com>
2023-10-05 09:55:27 -04:00
Christopher Fry
ae26a3cd70 test(e2e): do not always include plaintext for account update password (#15665)
Signed-off-by: Chris Fry <christopherfry@google.com>
2023-10-05 09:53:15 -04:00
Gergely Czuczy
c200d0c764 fix(cli): Do not error out with no errors (#15688) 2023-10-05 07:12:05 -04:00
Michael Crenshaw
ac0ae166f0 fix: codeowners syntax error (#15781)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-10-04 16:15:41 +00:00
Michele Caci
1da079ecd4 fea(cli)t: Add example to --help output for "argocd appset get" (#15808)
Signed-off-by: Michele Caci <michele.caci@gmail.com>
2023-10-04 15:18:19 +00:00
Michael Crenshaw
43fe01a113 fix(appset): add option to disable SCM providers entirely (#14246) (#15248)
* feat(appset): add option to disable SCM providers entirely (#14246)

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

* clarify docs

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

* more clarification, small refactor

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

* more clarification

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

* fix test

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

* refactor

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

* fix test assertion

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

* simplify test expectation

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: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2023-10-03 22:11:40 +00:00
Michael Crenshaw
d90543d5ae docs: fix list format (#15798)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-03 16:20:32 -04:00
Jorge Turrado Ferrero
6c44bdac01 chore: Add SCRM Lidl International Hub as users (#15801)
Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>
2023-10-03 20:03:49 +00:00
Michael Crenshaw
f466c42b5f chore(cli): clarify core mode code (#15800)
* chore(cli): clarify core mode code

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

* rename function

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-03 19:30:34 +00:00
Julien
357972e803 fix(ui): responsive topbar, filter button in application details page (#11188) (#15789)
Signed-off-by: Julien Fuix <julienfuix@epitech.eu>
Co-authored-by: Julien Fuix <julienfuix@epitech.eu>
2023-10-03 11:51:13 -04:00
James McShane
53f4f83cb6 fix(plugin): remove git environment variables unavailable to plugin execution (#14998) (#15104)
* remove git creds environment variables unavailable to plugin execution

Signed-off-by: jmcshane <james.mcshane@superorbital.io>

* remove integration test asserting askpass is forwarded

Signed-off-by: jmcshane <james.mcshane@superorbital.io>

---------

Signed-off-by: jmcshane <james.mcshane@superorbital.io>
2023-10-03 14:05:02 +00:00
Michael Crenshaw
a023f1b998 chore: allow docs approvers to merge USERS.md changes (#15773)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-02 20:16:39 +00:00
Leonardo Luz Almeida
f6df78e141 fix: address nil pointer when controller runs with sts and replicas > 1 (#15770)
* fix: address nil pointer when controller runs with sts and replicas > 1

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

* fix: lint

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

* fix: better handle errors

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

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2023-10-02 20:03:29 +00:00
Michael Crenshaw
4da1fc2c04 chore: revert codeowners test change (#15777)
This reverts commit 173eb5b33c.

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-02 16:02:05 -04:00
Anton Gilgur
12f81dec5a docs: add CONTRIBUTING.md copy at repo root (#14889)
* docs: add `CONTRIBUTING.md` symlink at repo root

- having a `CONTRIBUTING.md` at the root of the repo is a common convention
  - I looked at the root initially, didn't find it, then checked `docs/` and saw one there and then went to the website
    - but potential contributors may not realize this, so a symlink should help with discoverability

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

* change to cp instead of symlink per review

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

---------

Signed-off-by: Anton Gilgur <agilgur5@gmail.com>
2023-10-02 15:55:50 -04:00
Michael Crenshaw
173eb5b33c chore: don't make argocd-approvers owners of anything (#15774)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-02 15:45:24 -04:00
Gonçalo Montalvão Marques
9d48b7a198 docs: add Mercedes-Benz.io to user list (#15768)
Signed-off-by: Gonçalo Montalvão Marques <9379664+gonmmarques@users.noreply.github.com>
2023-10-02 15:12:24 -04:00
Michael Crenshaw
06b05c6b00 test: bump k8s versions for e2e tests (#15766)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-10-02 15:09:03 -04:00
chavacava
599dfcdfc7 chore: set proper struct tag for ApplicationSetTerminalGenerator.Plugin field (#15742)
Signed-off-by: chavacava <salvadorcavadini+github@gmail.com>
2023-10-02 11:39:54 -04:00
Stephan Renggli
27301707f1 docs: Add documentation for Zitadel SSO integration (#15029)
* Add zitadel documentation

Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>

* Add zitadel docs images

Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>

* Update zitadel.md

Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>

* Update docs/operator-manual/user-management/zitadel.md

Co-authored-by: Florian Forster <florian@zitadel.com>
Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>

* Update docs/operator-manual/user-management/zitadel.md

Co-authored-by: Florian Forster <florian@zitadel.com>
Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>

* Fix typos

Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>

* Apply suggestions from code review

Fix grammar issues

Co-authored-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>

* Add zitadel page to mkdocs.yml

Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>

---------

Signed-off-by: Stephan Renggli <5135902+stephanrenggli@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@zitadel.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-10-01 13:19:43 +02:00
PranitRout07
48a4a777d6 Fixed Custom Link Text not Hyperlinked (#15747)
Visit this link to see the issue : https://argo-cd.readthedocs.io/en/stable/developer-guide/ci/#public-cd

Signed-off-by: PranitRout07 <102309095+PranitRout07@users.noreply.github.com>
2023-09-30 14:36:56 +00:00
Remington Breeze
9f25800c9a fix: only enable dynamic cluster sharding feature explicitly (#15734)
* fix: only enable dynamic cluster sharding feature explicitly

Signed-off-by: Remington Breeze <remington@breeze.software>

---------

Signed-off-by: Remington Breeze <remington@breeze.software>
2023-09-30 00:41:36 +00:00
Leonardo Luz Almeida
672c1278ae docs: move self-signed certs gitlab scm docs (#15720) 2023-09-29 20:20:46 +00:00
Anand Francis Joseph
0386027fd9 fix(application-controller): Fix panic error when trying to scale application controller shards (#15725)
* Added error checking to determine if application controller deployment is found or not

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Fixed the informer to list deployments in namespace scope

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

* Fixed readiness check probe for application controller when running as deployment

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>

---------

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>
2023-09-29 13:34:50 -04:00
SergeyLadutko
b44400fa00 fix(action): populate all fields of Job from CronJob (#15259) (#15727)
Signed-off-by: sergey.ladutko <sergey.ladutko@vizor-games.com>
Co-authored-by: sergey.ladutko <sergey.ladutko@vizor-games.com>
2023-09-29 11:44:24 -04:00
PranitRout07
fd655e9bac Converted italic text to normal text (#15692)
To see the issue , go to this link "https://argo-cd.readthedocs.io/en/stable/operator-manual/app-any-namespace/"
In Prerequisites section ,the word 'not' is unnecessarily written in italic. It should be written in normal text to maintain the uniformity.

Signed-off-by: PranitRout07 <102309095+PranitRout07@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2023-09-29 00:25:21 +00:00
Leonardo Luz Almeida
c975b0a5ad docs: add dynamic cluster distribution doc in the menu (#15716) 2023-09-28 19:35:39 +00:00
PranitRout07
80d1bb87e0 docs: Maintaining Uniformity In Documentation Writing Style (#15713)
In the Projects section there are two words 'what' and 'where'  are written in italic(in the first two sentences) but in the third sentence 'what' is written in normal text. So i changed the two words written in italic to normal text to maintain the uniformity of writing style of documentation.
See this issue in the Projects section  : "https://argo-cd.readthedocs.io/en/stable/user-guide/projects/"

Signed-off-by: PranitRout07 <102309095+PranitRout07@users.noreply.github.com>
2023-09-28 13:19:06 -04:00
Michael Crenshaw
cc97a595f9 feat(ci): retry individual e2e tests (#15696) 2023-09-28 17:05:10 +00:00
ericblackburn
28ef0961b3 fix(appset): don't emit k8s events for unchanged apps, log at debug (#15659) (#15660)
* fix(appset): don't emit k8s events for unchanged application events and move that scenario to debug logging level

Signed-off-by: Eric Blackburn <eblackburn@indeed.com>

* Retrigger CI pipeline

Signed-off-by: Eric Blackburn <eblackburn@indeed.com>

* Retrigger CI pipeline

Signed-off-by: Eric Blackburn <eblackburn@indeed.com>

---------

Signed-off-by: Eric Blackburn <eblackburn@indeed.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-09-27 23:25:59 +00:00
Alexandre Gaudreault
a1c9d6bb04 fix(applicationset): git generator ignores empty files (#15661)
Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2023-09-27 21:11:49 +00:00
Michael Crenshaw
b40d8cb55e fix(ci): misplaced config option (#15698)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-27 15:05:23 -04:00
Michael Crenshaw
3557ec57dc fix(ci): do not fail fast on e2e test failures (#15694)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-27 13:58:17 -04:00
Michael Crenshaw
a934772778 fix(ci): free up disk space (#15683)
* fix(ci): free up disk space

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

* Update .github/workflows/image-reuse.yaml

Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* Update .github/workflows/image-reuse.yaml

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: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
2023-09-26 19:36:56 -04:00
ymktmk
5f63246b2e [fix] sidebar style (#15652)
Signed-off-by: ymktmk <ymktmk.tt@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-09-26 23:04:50 +02:00
Ishita Sequeira
1a9cda0a6c fix: add a not found check for application controller deployment (#15678)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2023-09-26 18:30:06 +00:00
Michael Crenshaw
bb8800d498 chore(ci): free up disk space (#15674)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-26 12:51:09 -04:00
dependabot[bot]
adcf78454b chore(deps): bump semver from 5.7.1 to 5.7.2 in /ui-test (#14457)
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-26 12:51:00 -04:00
Alexandre Gaudreault
8a2e0ba26d fix(applicationset): cannot validate inherited project permissions (#9298) (#15026)
* fix(applicationset): cannot validate inherited project permissions

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* update tests to reflect behavior

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2023-09-25 18:57:15 -04:00
Michael Crenshaw
61dc8b5083 feat(appset): ignoreApplicationDifferences (#9101) (#14743)
* feat(appset): ignoreDifferences (#9101)

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

* better error messages

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

* do better

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

* docs

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

* more tests, update docs

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

* e2e test

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

* expect auto-added fields

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

* correct label

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

* better

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

* remove line that was reverted

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

* Update docs/operator-manual/applicationset.yaml

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

* remove line that mysteriously causes applicationset/utils unit tests to fail

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

* login to fix test

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

* maybe this will work, who knows

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

* burn it all down

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

* works on my machine

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-25 18:45:26 -04:00
Michael Crenshaw
cbd88068b2 fix(kustomize): no concurrent processing if Kustomize patches are used (#15654)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-25 20:41:06 +00:00
Alexandre Gaudreault
129cf5370f feat(health): add PushSecret health status and force-sync action (#14375)
* feat(health): add `PushSecret` health status

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* add status healthy

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* Push action

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix test

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2023-09-25 10:41:24 -04:00
Mike Ng
30767ae9b0 feat(health): Implement AnsibleJob CRD health checks (#14483)
Signed-off-by: Mike Ng <ming@redhat.com>
2023-09-25 10:40:30 -04:00
Michael Crenshaw
03c6e1a14e feat(kustomize): add patches field (#5114) (#14648) 2023-09-23 20:46:25 +00:00
dependabot[bot]
08e53e7274 chore(deps): bump actions/setup-node from 3.8.0 to 3.8.1 (#15108)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.8.0 to 3.8.1.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](bea5baf987...5e21ff4d9b)

---
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>
Co-authored-by: Justin Marquis <76892343+34fathombelow@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-09-22 23:14:20 +02:00
Michael Crenshaw
1d274585bd fix(cli): get latest app state before printing tree (#15639)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-22 16:34:03 -04:00
Robin Lieb
62995f0675 feat(appset): add Support for AzureDevops Webhooks (#15047)
Signed-off-by: Robin Lieb <robin.j.lieb@gmail.com>
2023-09-22 16:33:16 -04:00
Michael Crenshaw
17527044b8 chore(deps): bump node version (#15616)
* chore(deps): bump node version

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

* fix version

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

* update lockfile

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-22 15:59:17 -04:00
Ishita Sequeira
cb25382658 feat: dynamic rebalancing of clusters across shards (#15036)
* Migrate Application Controller from Statefulset to Deployment

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add sharding deployment logic

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Update sharding logic and add comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add heartbeat as an environment variable

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add retry logic, heartbeat timeout environment variable

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* use the logic of pre-specified shard number on application controller pod

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix manifests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix lint and e2e tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* comment out failing e2e test

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* increase readiness probe interval period

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* "comment out readiness probe to see if e2e tests succeed"

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert commented readiness probe

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert commented test case

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* read environment variable for application controller deployment name

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add nil check on replica count for deployment of application controller

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Address comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add Informer, Update documentation, add unit tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update godoc

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* remove unwanted code and logs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add more documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert ApplicationController manifest to StatefulSet

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* reverting updated docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add documentation for the new dynamic distribution feature

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add an overlay for application controller deployment and update documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix nit

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Marking the feature as alpha

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add feature status link

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert go,mod changes

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update docs to avoid focusing on StatefulSet/Deployment (#26)

* update docs to avoid focusing on StatefulSet/Deployment

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

---------

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

* minor update to the doc

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@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>
2023-09-22 19:49:09 +00:00
schakrad
045f5b1a21 feat(cli): tree option in output flag for app sync, app wait and app rollback for tree view (#15572)
* app sync and app wait tree view changes

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* documentation changes

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* included the json,yaml and wide formats and removed the value assignment to the flag

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* Reoved extra spaces

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* removed extra spaces

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* refactored the code

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* better log statements

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

---------

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>
2023-09-22 14:45:57 -04:00
Timoses
ae47e05dd7 doc: resource tracking custom label configuration (#15587)
Signed-off-by: Timoses <timoses@tutanota.com>
2023-09-22 12:42:19 +00:00
Muhammad Mooneeb Hussain
2b1b125fa6 Update the supported version policy in Operator Manual Installation doc (#15619)
The supported version policy mentioned in the operator manual installation document diverges from the official policy that is mentioned in the security policy and the release cadence.

This change brings the version policy in line by referring the readers to the release and cadence documentation to check the specified policy.

Signed-off-by: Muhammad Mooneeb Hussain <mooneeb.hussain@gmail.com>
2023-09-22 13:16:12 +02:00
Leonardo Luz Almeida
ef88d1d026 feat(extensions): Automatically apply extension configs without restarting API-Server (#15574)
* feat: auto configure extensions

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

* feat: auto-reload extension configs without restarting api-server

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

* clean unused gorilla mux

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

* update docs

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

* Address review comments

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

* Add more test cases

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

* refactoring to reduce unnecessary function

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

* Add log

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

* fix bugs found during manual tests

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

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2023-09-21 20:57:09 +00:00
Michael Crenshaw
98ee9443e3 chore(deps): bump library/golang from cffaba7 to 2270a40 (#15615)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-21 10:54:16 -04:00
Josh Soref
491b3898ac chore(action): minor lua changes (#15580)
* chore(action): add newlines at eof

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

* chore(action): fix whitespace indentation

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

* chore(action): use local annotations

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

---------

Signed-off-by: Josh Soref <jsoref@gmail.com>
2023-09-21 09:20:42 -04:00
gdsoumya
45c0c2a422 feat: added patch_ms and setop_ms timings to reconciliation logs (#15595)
* feat: added patch_ms to reconciliation logs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: added patch_ms and setop_ms timings to logs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

---------

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2023-09-20 22:18:38 -07:00
gdsoumya
1a684a7e1e chore: add gdsoumya to reviewers (#15596)
Signed-off-by: gdsoumya <44349253+gdsoumya@users.noreply.github.com>
2023-09-20 16:11:54 +00:00
Michael Crenshaw
1e490d9b53 docs: 'action' RBAC example for Kind without group (#15589) 2023-09-20 14:40:50 +00:00
Sridhar Nandigam
5640d5d331 docs: Add documentation on how to specify shard number for a cluster in "high availibility" doc (#5348) (#13258)
Signed-off-by: Sridhar Nandigam <nandigamsridhar.v@gmail.com>
2023-09-20 10:23:08 -04:00
dependabot[bot]
c379de75b3 chore(deps): bump library/node from 20.6.1 to 20.7.0 in /test/container (#15585)
Bumps library/node from 20.6.1 to 20.7.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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-09-20 16:15:08 +03:00
dependabot[bot]
ee7a18d116 chore(deps): bump library/node from 20.6.1 to 20.7.0 in /ui-test (#15583)
Bumps library/node from 20.6.1 to 20.7.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>
2023-09-20 14:22:29 +03:00
Michael Crenshaw
5ad5826332 docs: better command reference titles (#15567) (#15568)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-19 14:34:24 -04:00
dependabot[bot]
df714accc0 chore(deps): bump actions/cache from 3.3.1 to 3.3.2 (#15552)
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](88522ab9f3...704facf57e)

---
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>
Co-authored-by: jannfis <jann@mistrust.net>
2023-09-19 14:23:49 +00:00
Sergio Rua
d58d1d3fca doc: adds vals-operator to secrets list (#11795)
Vals-Operator can also be used for managing secrets in Kubernetes.

Signed-off-by: Sergio Rua <58211930+digiserg@users.noreply.github.com>
2023-09-19 12:11:14 +00:00
Lev Ozeryansky
0e0896c831 fix(repo-server): avoid fetching commit sha for multisource applications (#15037) (#15067)
* Rebase Signed-off-by: ozlevka-work <lev@ozeryansky.com>

Signed-off-by: Lev <lozeryan@akami.com>

* Remove test file Signed-off-by: ozlevka-work <lev@ozeryansky.com>

Signed-off-by: Lev <lozeryan@akami.com>

* Go linter fmt Signed-off-by: ozlevka-work <lev@ozeryansky.com>

Signed-off-by: Lev <lozeryan@akami.com>

* Additional linter fmt Signed-off-by: ozlevka-work <lev@ozeryansky.com>

Signed-off-by: Lev <lozeryan@akami.com>
Signed-off-by: Lev <lev@ozeryansky.com>

* Add unit test for changes Signed-off-by: Lev <lozeryan@akami.com>

Signed-off-by: Lev <lev@ozeryansky.com>

* Update reposerver/repository/repository.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Lev Ozeryansky <lozeryan@akamai.com>
Signed-off-by: Lev <lev@ozeryansky.com>

* Trigger CI

Signed-off-by: Lev <lev@ozeryansky.com>

---------

Signed-off-by: Lev <lozeryan@akami.com>
Signed-off-by: Lev <lev@ozeryansky.com>
Signed-off-by: Lev Ozeryansky <lozeryan@akamai.com>
Co-authored-by: Lev <lozeryan@akami.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-19 07:19:26 -04:00
dependabot[bot]
cd6542be03 chore(deps): bump github.com/antonmedv/expr from 1.12.7 to 1.15.2 (#15548)
Bumps [github.com/antonmedv/expr](https://github.com/antonmedv/expr) from 1.12.7 to 1.15.2.
- [Release notes](https://github.com/antonmedv/expr/releases)
- [Commits](https://github.com/antonmedv/expr/compare/v1.12.7...v1.15.2)

---
updated-dependencies:
- dependency-name: github.com/antonmedv/expr
  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>
2023-09-19 07:14:57 -04:00
dependabot[bot]
9cee726edf chore(deps): bump oras.land/oras-go/v2 from 2.2.1 to 2.3.0 (#15549)
Bumps [oras.land/oras-go/v2](https://github.com/oras-project/oras-go) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/oras-project/oras-go/releases)
- [Commits](https://github.com/oras-project/oras-go/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: oras.land/oras-go/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>
2023-09-19 07:13:24 -04:00
Michael Crenshaw
4ceef86eac fix: reflect expected integers in swagger doc (#13046)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-18 20:03:22 +00:00
Michael Crenshaw
59a934536e chore: add CODEOWNERS (#14693)
* chore: add CODEOWNERS

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

* new owners

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

* use teams

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

* restore old owners file

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-18 19:27:05 +00:00
Yi Cai
795f2256cd feat(ui): Add button for wrapping lines in pod logs viewer (#15506)
* Add back wrap log line button

Signed-off-by: Yi Cai <yicai@redhat.com>

* Fixed lint issue

Signed-off-by: Yi Cai <yicai@redhat.com>

* Updated icon and location of Wrap Lines btn

Signed-off-by: Yi Cai <yicai@redhat.com>

* Fixed lint issue

Signed-off-by: Yi Cai <yicai@redhat.com>

* Put back pre tag and Ansi component

Signed-off-by: Yi Cai <yicai@redhat.com>

---------

Signed-off-by: Yi Cai <yicai@redhat.com>
2023-09-18 12:54:46 -04:00
dependabot[bot]
4604991dc0 chore(deps): bump actions/checkout from 3.5.3 to 4.0.0 (#15348)
* chore(deps): bump actions/checkout from 3.5.3 to 4.0.0

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.3 to 4.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](c85c95e3d7...3df4ab11eb)

---
updated-dependencies:
- dependency-name: actions/checkout
  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>
2023-09-18 16:07:19 +00:00
github-actions[bot]
f9690535f3 [Bot] docs: Update Snyk reports (#15532)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-09-18 14:16:41 +00:00
dependabot[bot]
7dedb8ee4a chore(deps): bump goreleaser/goreleaser-action from 4.4.0 to 5.0.0 (#15496)
Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 4.4.0 to 5.0.0.
- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)
- [Commits](3fa32b8bb5...7ec5c2b0c6)

---
updated-dependencies:
- dependency-name: goreleaser/goreleaser-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>
2023-09-18 09:24:02 -04:00
dependabot[bot]
0d45ce895b chore(deps): bump github.com/ktrysmt/go-bitbucket from 0.9.63 to 0.9.67 (#15500)
Bumps [github.com/ktrysmt/go-bitbucket](https://github.com/ktrysmt/go-bitbucket) from 0.9.63 to 0.9.67.
- [Release notes](https://github.com/ktrysmt/go-bitbucket/releases)
- [Commits](https://github.com/ktrysmt/go-bitbucket/compare/v0.9.63...v0.9.67)

---
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>
Co-authored-by: jannfis <jann@mistrust.net>
2023-09-18 09:22:51 -04:00
Andreas Lindhé
a40f7973b8 docs: Fix docs for destinations in AppProjects (#15153) (#15182)
Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
2023-09-18 02:29:31 +00:00
Michael Crenshaw
16c7c64f0d docs: fix kubectl apply in apps-in-any-namespace doc (#15197)
There's a kustomization.yaml file in that directory, so we should apply it with `-k`.

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-18 02:12:58 +00:00
LStuker
c733219926 chore: Add 4data to users (#15531)
Signed-off-by: LStuker <lucien.stuker@4data.ch>
2023-09-17 21:17:51 -04:00
Kurt Madel
084e66d7ed docs: Update Application Set Webhook Instructions (#13764, #11532) (#15527)
* Update Generators-Pull-Request.md

Add note to clarify that the ApplicationSet controller requires its own Ingress resource. This seems to be a common issue for Argo CD users.

Signed-off-by: Kurt Madel <km@kurtmadel.com>

* Update Generators-Git.md

Updating note to match webhook note on pr generator.

Signed-off-by: Kurt Madel <km@kurtmadel.com>

---------

Signed-off-by: Kurt Madel <km@kurtmadel.com>
2023-09-17 21:15:42 -04:00
Alexander Matyushentsev
21672a2a83 fix: ApplicationSet deletes Application status (#15514)
* fix: ApplicationSet deletes Application status

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

* apply reviewer notes

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

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-09-15 21:46:21 +00:00
dependabot[bot]
c30f0cca52 chore(deps): bump github.com/go-playground/webhooks/v6 (#15516)
Bumps [github.com/go-playground/webhooks/v6](https://github.com/go-playground/webhooks) from 6.2.1-0.20230808162451-10570b0a59e8 to 6.3.0.
- [Release notes](https://github.com/go-playground/webhooks/releases)
- [Commits](https://github.com/go-playground/webhooks/commits/v6.3.0)

---
updated-dependencies:
- dependency-name: github.com/go-playground/webhooks/v6
  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>
2023-09-15 16:51:07 -04:00
schakrad
0d0a2953dd feat: add option in output flag for app get and app resources cli command for tree view(#13370) (#15386)
* tree view feature for app get cli comand

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* including application details

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* testcase included for printTreeView

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* removed the unnecessary variables

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* Adding changes to the documentation

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* change in the argocd doc

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* included tee_test.go

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* tree view changes for app get and app resources

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* go.mod and go.sum by running go mod tidy

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* changes after review

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* changes after review

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

---------

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>
2023-09-15 15:22:58 -04:00
Kurt King
56e8987e24 chore: update ordering of support steps (#15508)
Signed-off-by: Kurt King <kurtaking@gmail.com>
2023-09-15 16:41:48 +00:00
Harm Matthias Harms
9f10a5fe0c fix: Applicationset upsert for any namespaces (#15520)
* fix: Applicationset upsert for any namespaces

PR implements a small change to the argocd command adding the AppsetNamespace for the existing Appset check.

Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>

* Retrigger CI pipeline

Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>

* Retrigger CI pipeline

Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>

---------

Signed-off-by: Harm Matthias Harms <matthias.harms@quis.de>
2023-09-15 10:32:26 -04:00
Zubair Haque
9b4589eaa8 chore: adding tests for apiclient package: clientset tests (#15193)
Signed-off-by: zhaque44 <haque.zubair@gmail.com>
2023-09-14 16:52:06 -04:00
Maxime Brunet
13375489bc fix(cli): fix header in resource-overrides list-actions output (#15375)
Signed-off-by: Maxime Brunet <max@brnt.mx>
2023-09-14 16:32:28 -04:00
dependabot[bot]
ab9fc97136 chore(deps): bump actions/upload-artifact from 3.1.2 to 3.1.3 (#15497)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](0b7f8abb15...a8a3f3ad30)

---
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>
Co-authored-by: jannfis <jann@mistrust.net>
2023-09-14 15:35:01 +00:00
dependabot[bot]
504f1fb970 chore(deps): bump github.com/casbin/casbin/v2 from 2.73.0 to 2.77.2 (#15501)
Bumps [github.com/casbin/casbin/v2](https://github.com/casbin/casbin) from 2.73.0 to 2.77.2.
- [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.73.0...v2.77.2)

---
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>
2023-09-14 08:25:36 -04:00
dependabot[bot]
2fa89f14a6 chore(deps): bump library/golang in /test/container (#15502)
Bumps library/golang from 1.21.0 to 1.21.1.

---
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>
2023-09-14 08:24:38 -04:00
David Muckle
db2da6b108 Fix broken links for post selectors, fix ordering of args for dig example (#15346)
Signed-off-by: David Muckle <dvdmuckle@dvdmuckle.xyz>
2023-09-13 21:31:28 -04:00
Ansuman Swain
571bf89c15 docs: Add KPMG to users (#15323)
Signed-off-by: Ansuman Swain <ansuman.swain@kpmg.co.uk>
Co-authored-by: jannfis <jann@mistrust.net>
2023-09-13 21:10:36 +00:00
dependabot[bot]
4e44aae0ab chore(deps): bump github.com/xanzy/go-gitlab from 0.89.0 to 0.91.1 (#15331)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.89.0 to 0.91.1.
- [Changelog](https://github.com/xanzy/go-gitlab/blob/master/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.89.0...v0.91.1)

---
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>
2023-09-13 16:11:20 -04:00
dependabot[bot]
6da1316f3e chore(deps): bump sigstore/cosign-installer from 3.1.1 to 3.1.2 (#15330)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](6e04d228eb...11086d2504)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  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>
2023-09-13 16:10:47 -04:00
Dan Garfield
38f2c5e890 (docs) Add clarification on migration for CMP plugins (#15405)
* Add clarification on migration for CMP plugins

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

* Fix table

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

* Add warning on blank manifests for #15340

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

---------

Signed-off-by: Dan Garfield <dan@codefresh.io>
2023-09-13 20:05:53 +00:00
dependabot[bot]
febb5867ca chore(deps): bump github.com/cyphar/filepath-securejoin (#15401)
Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.2.3 to 0.2.4.
- [Release notes](https://github.com/cyphar/filepath-securejoin/releases)
- [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.2.3...v0.2.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 13:47:06 -04:00
dependabot[bot]
a4ad5c546a chore(deps): bump library/node from 20.5.0 to 20.6.1 (#15454)
Bumps library/node from 20.5.0 to 20.6.1.

---
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>
Co-authored-by: jannfis <jann@mistrust.net>
2023-09-13 16:25:17 +00:00
Marcelo Mello
ce026de284 fix: extends CR to allow cronjob/workflow triggers (#15300)
Signed-off-by: Marcelo Moreira de Mello <tchello.mello@gmail.com>
Co-authored-by: Nicholas Morey <nicholas@morey.tech>
2023-09-13 12:01:45 -04:00
Blake Pettersson
92406553b3 fix(controller): make managed namespaces more 'prune-proof' (#13999)
* fix: make managed namespaces more 'prune-proof'

In the cases where someone would want to set resource tracking on a
managed namespace, or if someone would want to migrate from having a
namespace in Git to using `managedNamespaceMetadata`, we need to take
steps to ensure that the namespace does not get pruned.

In order to do that, we add the live namespace to the list of
`targetObjs` (so that it's considered a part of the source even though
it's not).

Finally, we need to also ensure that the managed namespace is not
considered `OutOfSync` (due to the same reason as above).

This is a subset of #11350, the main difference being that this commit
does not set resource tracking on its own, but can be opted into if
people choose to do so.

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

* refactor: extract managed namespace check

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

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-09-13 11:45:06 -04:00
dependabot[bot]
5c0deaedb3 chore(deps): bump library/golang from 970907c to 62e5883 (#15415)
Bumps library/golang from `970907c` to `62e5883`.

---
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>
2023-09-13 10:30:55 -04:00
dependabot[bot]
472482c47b chore(deps): bump library/golang in /test/remote (#15419)
Bumps library/golang from `970907c` to `62e5883`.

---
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>
2023-09-13 10:30:26 -04:00
dependabot[bot]
cfc5f9896c chore(deps): bump argo-ui from 13cea62 to 002d01b in /ui (#15440)
Bumps [argo-ui](https://github.com/argoproj/argo-ui) from `13cea62` to `002d01b`.
- [Release notes](https://github.com/argoproj/argo-ui/releases)
- [Commits](13cea62a4a...002d01b18e)

---
updated-dependencies:
- dependency-name: argo-ui
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 10:29:47 -04:00
dependabot[bot]
3fdb685c11 chore(deps): bump gitpod/workspace-full from d578722 to 511cecd (#15453)
Bumps gitpod/workspace-full from `d578722` to `511cecd`.

---
updated-dependencies:
- dependency-name: gitpod/workspace-full
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 10:27:58 -04:00
dependabot[bot]
17f5cb4613 chore(deps): bump library/node from 20.6.0 to 20.6.1 in /ui-test (#15452)
Bumps library/node from 20.6.0 to 20.6.1.

---
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>
2023-09-13 14:19:49 +00:00
dependabot[bot]
f33005b104 chore(deps): bump library/node from 20.6.0 to 20.6.1 in /test/container (#15451)
Bumps library/node from 20.6.0 to 20.6.1.

---
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>
2023-09-13 08:45:39 -04:00
dependabot[bot]
b89c9ec6e4 chore(deps): bump docker/setup-buildx-action from 2.9.1 to 3.0.0 (#15476)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.9.1 to 3.0.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](4c0219f9ac...f95db51fdd)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-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>
2023-09-13 08:41:02 -04:00
jannfis
543fc25d2f fix: Allow retrieving badges in other namespaces (#15468)
Signed-off-by: jannfis <jann@mistrust.net>
2023-09-13 08:36:32 -04:00
Liam Wyllie
15ec307be6 Fix incorrect wording in ApplicationSet git generator docs (#15374)
Signed-off-by: Liam Wyllie <risset@mailbox.org>
2023-09-12 19:28:26 -04:00
Alejandro López
f2f7be2c1e chore: add Factorial to USERS.md (#15473)
Signed-off-by: Alejandro López Sánchez <alejandro.lopez@factorial.co>
2023-09-12 23:23:34 +00:00
Antoine Jouve
8ed1d2b7e4 fix: Gitlab scm_provider - don't create transport from scratch (#15424) (#15425)
* fix : don't create transport from scratch, clone it instead

Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>

* feat: clone http.transport for gitea and gitlab providers

Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>

* chore: properly format gitea providers with gofmt

Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>

---------

Signed-off-by: Antoine Jouve <ant.jouve@gmail.com>
2023-09-12 17:31:26 -04:00
gdsoumya
bd58788a55 feat: appset preserve labels and global preserve fields (#15445)
* feat: appset preserve labels and global preserve fields

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* feat: appset preserve labels and global preserve fields

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* docs: updated docs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

* docs: updated docs

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>

---------

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2023-09-12 14:01:33 -07:00
David Marby
339072f910 Stop appending :443 to the server address when using grpc-web (#15435)
Signed-off-by: David Marby <david@dmarby.se>
Co-authored-by: jannfis <jann@mistrust.net>
2023-09-12 14:47:28 -04:00
Mathias Petermann
43c5905e6e feat: Enable haproxy metrics through helm Chart (#15459)
Signed-off-by: Mathias Petermann <mathias.petermann@swisscom.com>
2023-09-12 13:04:09 -04:00
HYH
dd727e7218 fix: failed to add cluster when the cluster server address is ipv6 (#8204) (#15350)
* fix: failed to add cluster when the cluster server address is ipv6 (#8204)

Signed-off-by: huyinhou <huyinhou@bytedance.com>

* fix: failed to add cluster when the cluster server address is ipv6 (#8204)

Signed-off-by: huyinhou <huyinhou@bytedance.com>

* remove unused import

Signed-off-by: huyinhou <huyinhou@bytedance.com>

* fix: lowercase URI secret name; abbreviated IPv6 address

Signed-off-by: huyinhou <huyinhou@bytedance.com>

---------

Signed-off-by: huyinhou <huyinhou@bytedance.com>
2023-09-12 12:38:35 -04:00
Josh Soref
3391f9ed23 docs: fix bullets (#15446)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-09-12 09:41:50 -04:00
jannfis
b7ef32eafc fix: Better enforcement of application namespace restrictions (#15431)
* fix: Better enforce application namespace restrictions

Signed-off-by: jannfis <jann@mistrust.net>

* Only call ValidateDestination when allowed

Signed-off-by: jannfis <jann@mistrust.net>

---------

Signed-off-by: jannfis <jann@mistrust.net>
2023-09-11 19:17:02 -04:00
github-actions[bot]
92ce5a4a3e [Bot] docs: Update Snyk reports (#15437)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Co-authored-by: jannfis <jann@mistrust.net>
2023-09-11 15:59:29 -04:00
Ashutosh Pednekar
2384560666 feat: added shorthand flags for follow and conatainre in app logs (#15400)
* feat: added shorthand flags for follow and conatainre in app logs

Signed-off-by: ashu <ashupednekar49@gmail.com>

* doc: re-generated cli docs

Signed-off-by: ashu <ashupednekar49@gmail.com>

---------

Signed-off-by: ashu <ashupednekar49@gmail.com>
Co-authored-by: jannfis <jann@mistrust.net>
2023-09-11 15:35:31 -04:00
Cezar Sá Espinola
54601c8fd3 Fix requeue after for Matrix/Merge with SCM or ClusterDecision generators (#15407)
Signed-off-by: Cezar Sa Espinola <cezarsa@gmail.com>
2023-09-10 11:17:40 -04:00
jannfis
3d01b6d4e9 chore: Fix flaky cluster test (#15433) 2023-09-08 20:14:22 -04:00
rumstead
5a2097d9e3 fix(appsets): gotemplate can cause panic from nil dereference (#15377) (#15378)
* fix(appsets): gotemplate can cause panic from nil deference

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

* fix(appsets): gotemplate can cause panic from nil dereference

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

---------

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
2023-09-08 22:22:08 +00:00
Andreas Lindhé
a9dd90e7cc docs: Improve RBAC documentation (#15430)
* Improve staging-db project name

This change renames the project to distinguish it from the role.

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Rename db-staging role to singular form

Role names should be singular ("User x has the role admin" as opposed to
"User x has the role admins").

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Remove trailing newlines

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Consistently mark `AppProject` as code

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Replace ```shell with ```console in suitable places

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Use consistent style for unordered list

https://github.com/DavidAnson/markdownlint/blob/main/doc/md004.md

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Use consistent emphasis style

https://github.com/DavidAnson/markdownlint/blob/main/doc/md049.md

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

* Fix incorrect description of the staging-db example

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>

---------

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
2023-09-08 18:04:07 +00:00
Oreon Lothamer
696e6e8b43 fix: handle annotations for resources with ':' in the name (#15101) (#15380)
* fix: handle annotations for resources with ':' in the name

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>

* fix: switch to using splitN for handling annotation splitting

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>

* fix: check len(parts) !=3

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>

* Retrigger CI pipeline

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>

---------

Signed-off-by: Oreon Lothamer <oreon.lothamer@softrams.com>
2023-09-07 17:41:05 -04:00
dependabot[bot]
10eac22b6a chore(deps): bump library/node from 20.5.0 to 20.6.0 in /ui-test (#15364)
Bumps library/node from 20.5.0 to 20.6.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>
2023-09-07 14:34:39 +00:00
Alexander Matyushentsev
4b2e5b06bf Merge pull request from GHSA-fwr2-64vr-xv9m
* fix: prevent seeing/editing 'kubectl.kubernetes.io/last-applied-configuration' cluster annotation

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

* fix: failing unit test

Signed-off-by: iam-veeramalla <abhishek.veeramalla@gmail.com>

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: iam-veeramalla <abhishek.veeramalla@gmail.com>
Co-authored-by: iam-veeramalla <abhishek.veeramalla@gmail.com>
2023-09-07 10:14:57 -04:00
pasha-codefresh
b8f92c4ff2 Merge pull request from GHSA-g687-f2gx-6wm8
* feat: use untar with limiter

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

* feat: use untar with limiter

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2023-09-07 10:12:15 -04:00
dependabot[bot]
f3911a40ed chore(deps): bump library/node from 20.4.0 to 20.6.0 in /test/container (#15366)
Bumps library/node from 20.4.0 to 20.6.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>
2023-09-07 08:56:22 -04:00
dependabot[bot]
a74c85aea7 chore(deps): bump library/golang from 1.21.0 to 1.21.1 in /test/remote (#15387)
Bumps library/golang from 1.21.0 to 1.21.1.

---
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>
2023-09-07 08:49:02 -04:00
dependabot[bot]
d8806bc77a chore(deps): bump library/golang from 1.21.0 to 1.21.1 (#15391)
Bumps library/golang from 1.21.0 to 1.21.1.

---
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>
2023-09-07 08:48:30 -04:00
Geoffrey MUSELLI
75b438a278 fix(appset): Revert applicationset-name labels (#15324)
* fix(15282) Revert applicationset-name labels

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* fix(15282) fix unit test

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

---------

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
2023-09-06 22:01:59 -04:00
Brad West
fec5b522a4 feat: Add ARGOCD_CLUSTER_CACHE_LIST_PAGE_BUFFER_SIZE environment variable (#15159)
Signed-off-by: Brad West <brad.g.west@gmail.com>
2023-09-06 22:01:35 -04:00
gdsoumya
4fadd9e541 feat: auto respect rbac for discovery/sync (#14381)
feat: auto respect rbac for discovery/sync (#14381)

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2023-09-06 10:41:30 -07:00
Surya Asriadie
0de579dd34 fix(notifications-catalog): Add nil check for on-deployed trigger (#15363)
Signed-off-by: Fs02 <surya.asriadie@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-09-06 15:57:16 +03:00
Jake Burn
ec2d3f6922 feat: add Dott to users (#15370)
Signed-off-by: Jake Burn <jake@ridedott.com>
2023-09-06 14:30:53 +03:00
Mike Splain
95ae1c5d98 feat: upgrade notification engine (#15359)
* Update notifications-engine dependencies

Signed-off-by: Mike Splain <mike.splain@gmail.com>

* Update docs

Signed-off-by: Mike Splain <mike.splain@gmail.com>

---------

Signed-off-by: Mike Splain <mike.splain@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-09-06 09:35:11 +00:00
Prasad Katti
eba40d4dec docs: Fixes a markdown typo in USERS.md (#15362)
This removes the whitespace between the link text and the link URL.

Signed-off-by: Prasad Katti <prasad.katti@segment.com>
2023-09-05 18:35:00 -04:00
Scott Windsor
da84f9e5be fix: Cache control 404 asset requests (#15327)
* backfill cache control header tests for ui assets

Signed-off-by: Scott Windsor <scott.windsor@flexe.com>

* Set cache-control header non-cache for assets not found

Signed-off-by: Scott Windsor <scott.windsor@flexe.com>

* fix golang-cilint warning

Signed-off-by: Scott Windsor <scott.windsor@flexe.com>

---------

Signed-off-by: Scott Windsor <scott.windsor@flexe.com>
2023-09-05 17:41:33 -04:00
yyzxw
ef7f32eb84 chore: remove duplicate function (#15123)
Signed-off-by: yyzxw <1020938856@qq.com>
2023-08-30 15:55:11 -04:00
Torbjørn Fjørtoft
d557be4dd2 fix: make WatchResourceTree use namespaced cache key (#15258)
* fix: make WatchResourceTree use namespaced application cache key

Signed-off-by: Torbjørn Fjørtoft <torbjorn.fjortoft@pgs.com>

* chore: add PGS to USERS.md

Signed-off-by: Torbjørn Fjørtoft <torbjorn.fjortoft@pgs.com>

---------

Signed-off-by: Torbjørn Fjørtoft <torbjorn.fjortoft@pgs.com>
2023-08-30 09:34:52 -04:00
Prasad Katti
ef24b3f858 docs: Add Twilio Segment to USERS.md (#15267)
Thank you to the Argo community!

Signed-off-by: Prasad Katti <prasad.katti@segment.com>
Co-authored-by: jannfis <jann@mistrust.net>
2023-08-29 13:43:28 -04:00
Pelen
71e4fa352a feat: support extra attributes for opentelemetry (#15071)
Signed-off-by: penglongli <pelenli@tencent.com>
2023-08-29 12:00:15 -04:00
David Muckle
b60861bf13 docs: Update ApplicationSet docs (#15269)
Signed-off-by: David Muckle <dvdmuckle@dvdmuckle.xyz>
2023-08-28 20:35:40 -04:00
Jędrzej Kotkowski
3d232434b3 docs: improve doc on labels parameter on scmProvider generator (#15255)
Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>
2023-08-28 11:45:09 -04:00
Fredrik A. Madsen-Malmo
eb526ff1bd chore: add Kvist to USERS.md (#15240)
Signed-off-by: Fredrik A. Madsen-Malmo <fredrik.malmo@icloud.com>
2023-08-25 17:43:44 +00:00
Carlos Castro
1dc3e5d8f0 fix(ui): Helm chart empty maintainers blow up Argo UI (#15225)
Signed-off-by: Carlos Castro carlos.castro@jumo.world

Signed-off-by: Carlos Castro carlos.castro@jumo.world
Signed-off-by: Carlos Castro <carlos.castro@jumo.world>
2023-08-25 09:59:06 -04:00
Michael Crenshaw
6baca2066f chore: better logs for jq expression errors (#15226)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-25 09:38:31 -04:00
Yudi A Phanama
5a486f0847 docs: clarify argocd-repo-server repo-cache-expiration HA use case (#15239)
Signed-off-by: phanama <yudiandreanp@gmail.com>
2023-08-25 07:52:44 -04:00
Vlad Fratila
dd49e228fd chore: add upsider to USERS.md (#15228)
Signed-off-by: Vlad Fratila <vlad.fratila@up-sider.com>
2023-08-24 18:38:01 +00:00
AS
e6896189e3 fix(ui): switch podgroup notification to tooltip message (#14821)
* improve pod grouping ux

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

fix: update log view on container select

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix(ui): improve pod grouping ux

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix(ui):update the pod grouping messages to tooltip

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix(ui):update the pod grouping messages to tooltip

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* fix: GroupNodes notification

Signed-off-by: AS <11219262+ashutosh16@users.noreply.github.com>

* fix: GroupNodes notification

Signed-off-by: AS <11219262+ashutosh16@users.noreply.github.com>

---------

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
Signed-off-by: AS <11219262+ashutosh16@users.noreply.github.com>
2023-08-24 08:09:22 -04:00
Michael Crenshaw
fed45069ef docs: remove unnecessary version number (#15198)
We have versioned docs now, no need for this.

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-23 23:17:06 +00:00
Alexander Bellhäuser
e97a4f9b10 fix(appset): Matrix Generator Override not Working for Booleans (#14498) (#14573)
* Fix AppSet matrix generator parameter override

Signed-off-by: Alexander Bellhäuser <alexbde@users.noreply.github.com>

* Add test case for parameter override fix

Signed-off-by: Alexander Bellhäuser <alexbde@users.noreply.github.com>

---------

Signed-off-by: Alexander Bellhäuser <alexbde@users.noreply.github.com>
2023-08-23 18:04:26 -04:00
Michael Crenshaw
15e3eb8d9d docs: document sourceNamespaces field (#15195)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-23 21:54:23 +00:00
Michael Crenshaw
0d04662371 chore: add example jq path expression (#15130)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-23 21:19:49 +00:00
Alexander Matyushentsev
24c080b5cb fix: stop creating new otel interceptor to avoid memory leak (#15174)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-08-23 01:47:40 +00:00
Christian Hernandez
32f10de147 fix: Updated docs about using a slash in ignoreDifferences (#15144)
Signed-off-by: Christian Hernandez <christian@chernand.io>
2023-08-22 20:51:20 +00:00
Michael Crenshaw
7317d6db33 fix(cli): add support for components with non-default names (#10200) (#14605)
* fix(cli): add support for components with non-default names (#10200)

Co-Authored-By: maheshbaliga <mahesh.baliga@infracloud.io>
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: maheshbaliga <mahesh.baliga@infracloud.io>
2023-08-22 15:29:13 -04:00
Lukas Wöhrl
3a72786c1a feat: run refresh from UI in parallel (#15138)
Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>
2023-08-22 10:19:12 -07:00
Michael Crenshaw
386d177435 fix: windows build (#15154)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-22 16:57:49 +00:00
Thomas Decaux
0d86847eab fix(ui): code lint (#15150)
Signed-off-by: ebuildy <ebuildy@gmail.com>
2023-08-22 09:55:50 -04:00
pasha-codefresh
e047efa8f9 Merge pull request from GHSA-c8xw-vjgf-94hr
Signed-off-by: pashakostohrys <pavel@codefresh.io>
2023-08-21 16:15:09 -04:00
Gaël Jourdan-Weil
f978e04c70 docs: ✏️ fix typo on configmap name for private certs (#9596)
Signed-off-by: Gaël Jourdan-Weil <gael.jourdan-weil@kelkoogroup.com>
2023-08-21 10:14:53 -04:00
Andreas Lindhé
dc8d729078 chore: Add kustomization.yaml for server app RBAC (#15124)
This change adds a `kustomization.yaml` file for the example RBAC
role/rolebinding for argocd server applications.
This makes it easier to include them as resources in another `kustomization.yaml`.

Instead of including

```yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.8.0/examples/k8s-rbac/argocd-server-applications/argocd-server-rbac-clusterrole.yaml
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.8.0/examples/k8s-rbac/argocd-server-applications/argocd-server-rbac-clusterrolebinding.yaml
```

the user can now instead include

```yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- github.com/argoproj/argo-cd/examples/k8s-rbac/argocd-server-applications?ref=v2.8.0
```

This change was performed by running:

```console
kustomize create
kustomize edit add resource argocd-server-rbac-clusterrole.yaml
kustomize edit add resource argocd-server-rbac-clusterrolebinding.yaml
```

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
2023-08-21 07:57:07 -04:00
Prune Sebastien THOMAS
628a5f63e6 feat(appset): added topic filter for Gitlab SCM (#14965)
* added topic (tag) filter for Gitlab SCM

Signed-off-by: Prune <prune@lecentre.net>

* corrected few comments

Signed-off-by: Prune <prune@lecentre.net>

* removed latest tag references

Signed-off-by: Prune <prune@lecentre.net>

---------

Signed-off-by: Prune <prune@lecentre.net>
2023-08-20 18:18:52 -04:00
Gaël Jourdan-Weil
a955151382 docs(progressive syncs): specify which ConfigMap to use (#15119)
Signed-off-by: Gaël Jourdan-Weil <gjourdanweil@gmail.com>
2023-08-20 18:04:33 -04:00
James McShane
6ca2e90b50 chore: update confusing variable name (#15106)
Signed-off-by: jmcshane <james.mcshane@superorbital.io>
2023-08-18 15:47:07 -04:00
jjsiv
ab9c29c2ba fix(appset): bitbucket server scm provider EOF on empty repo (#14411)
* fix bitbucket server scm provider EOF on empty repo default branch check

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>

* add unit test for bitbucketServer empty repo

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>

* check for EOF explicitly

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>

---------

Signed-off-by: Jedrzej Kotkowski <jedrzejk143@gmail.com>
2023-08-18 11:23:38 -04:00
Michael Crenshaw
e3fcf2ace3 docs: add docs for various annotations and labels (#14020)
* docs: add docs for various annotations

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

* more info

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>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-18 11:21:55 -04:00
Dylan Slavin
15254afdd1 fix(#12862): Update FlinkDeployment health check to support Flink v1.x (#15065)
Signed-off-by: Dylan Slavin <dylan@sla.vin>
2023-08-17 10:09:09 -07:00
B Pawan Kumar
c6e9893f0c chore: wrap error objects to include context (#10592) (#15055)
* chore: wrap error objects to include context (#10592)

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>

* chore: resolved common_test.go file as per reviewer's feedback

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>

* chore:changes in ulits.go

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>

* chore: resolving utils_test.go file

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>

---------

Signed-off-by: Pawank06 <pawan06kumar2003@gmail.com>
Signed-off-by: B Pawan Kumar <pawan06kumar2003@gmail.com>
2023-08-17 12:46:04 -04:00
SHIMADA Kento
f7b2178de1 docs: fix link for argocd-repo-creds.yaml sample (#15091)
Signed-off-by: SHIMADA Kento <shimada.kento8974@gmail.com>
2023-08-17 10:49:30 -04:00
Chetan Banavikalmutt
a4e36bd3e1 fix: requeue ApplicationSet if there are validation errors (#14429)
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
2023-08-17 09:17:47 -04:00
yyzxw
2dbc6c7c71 feat: add timeout for update cluster info (#14511)
* chore: simplified parsing of startup parameters

Signed-off-by: yyzxw <1020938856@qq.com>

* feat: add timeout for update cluster info

Signed-off-by: yyzxw <1020938856@qq.com>

---------

Signed-off-by: yyzxw <1020938856@qq.com>
2023-08-16 22:15:05 -04:00
Michael Crenshaw
f9961a0be1 docs: fix typo (#15083)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-16 22:28:37 +00:00
selaci
e019b7fecb docs: kubectl to synchronize argocd apps (#14881)
We can use kubectl to synchronize argocd applications the same way we can use
the argocd cli or ui, however there's no documentation.

This PR adds documentation for kubectl.

Signed-off-by: Jordi Grant Esteve <jgrant.esteve@gmail.com>
2023-08-16 15:59:18 -04:00
Michael Crenshaw
3290cb4842 docs: document permitOnlyProjectScopedClusters field (#15076)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-16 15:43:24 -04:00
Yuan (Terry) Tang
d2720732c1 docs: Update link to KubeCon China 2021 talk in README.md (#14887)
Signed-off-by: Yuan (Terry) Tang <terrytangyuan@gmail.com>
2023-08-16 12:26:13 -04:00
Avhi Mazumder
5f1a159058 chore: improve error logs (#10592) (#15059)
* chore: improve error logs

Signed-off-by: AvhiMaz <avhimazumder5@outlook.com>

* chore: Changes made according to the reviewer

Signed-off-by: AvhiMaz <avhimazumder5@outlook.com>

* chore: Chnages according to the reviewerI"

Signed-off-by: AvhiMaz <avhimazumder5@outlook.com>

* Update cmpserver/apiclient/plugin.pb.go

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

---------

Signed-off-by: AvhiMaz <avhimazumder5@outlook.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>
2023-08-16 12:18:35 -04:00
Anton Lindholm
25c82cb394 docs: Update bank vaults link to point to the new org (#15069)
Bank-Vaults recently migrated to a new organization. The old repository is archived.

Signed-off-by: Anton Lindholm <LinAnt@users.noreply.github.com>
2023-08-16 10:32:00 -04:00
dependabot[bot]
bfaac2b5ac chore(deps): bump actions/setup-node from 3.7.0 to 3.8.0 (#15054)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](e33196f742...bea5baf987)

---
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>
2023-08-15 10:00:33 -04:00
dependabot[bot]
1076733ad5 chore(deps): bump golangci/golangci-lint-action from 3.6.0 to 3.7.0 (#15053)
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](639cd343e1...3a91952989)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-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>
2023-08-15 09:59:56 -04:00
Anton Gilgur
94b986da2e docs(github): comment out notational pieces of PR template (#14888)
- the DCO and FAQ sentences are not filled out during PRs and are purely notational
  - comment them out with HTML comments, as is common practice
    - example from argo-helm: 962342fe2a/.github/pull_request_template.md (L1)
      - copied this practice from other repos I maintain and from other repos before that
- these comments are still visible to the PR author, just not visible when rendered, keeping the PR more concise

Signed-off-by: Anton Gilgur <agilgur5@gmail.com>
2023-08-15 04:07:46 +00:00
pasha-codefresh
b877bf0755 feat(cli): support apply out of sync flag only (#14624)
* feat: support apply out of sync flag only

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

* update engine version

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

* update gitops engine version

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

* add cli option

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

* feat: verify apply out of sync flag

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

* redundant comment

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

* improve test logic

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

* change command description and do codegen

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2023-08-14 15:53:30 -04:00
Geoffrey MUSELLI
0a97c228e1 fix(appset): Fix helm valuesObject with ApplicationSet (#14912) (#14920)
Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>
2023-08-14 14:26:09 +00:00
Blake Pettersson
48645db293 fix(reposerver): loosen source not permitted helm errors (#14210)
* fix: loosen source not permitted helm errors

With #12255, we check if a source is first permitted before running
`helm template`. This works a bit too well, since this may break
previously working manifests. If an `AppProject` has a set of
`sourceRepos` which are more restrictive than `*`, and it also has Helm
public dependencies (repos with credentials would not work with 2.7x
due to the fact they get filtered out before ending up on the repo
server). Whereas before this would work, this currently fails on
`HEAD` but not in `2.7x`.

What we instead do here is that we only run this check if the chart
failed to download - if it does then we run a check to see if the repo
is in the allowed repos list. If the repo is not in the allowed repos
list, we return the same error as in #12555, otherwise we bubble up the
error.

Should fix #13833.

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

* fix: check for 401 unauthorized in error

The regex check works fine for OCI artifacts, but the flow is slightly
different for standard Helm charts (specifically when running
`helm repo add`). To get around that, we also check the error for
`401 Unauthorized`.

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

* fix: loosen string check

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

* Revert "chore: revert #12255 (#14858)"

This reverts commit c8ae5bc3e7.

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

* wip

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

* wip

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

* chore: reword test to reduce confusion

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

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-08-14 10:06:43 -04:00
github-actions[bot]
8bbab61731 [Bot] docs: Update Snyk reports (#15031)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-08-14 10:04:24 -04:00
Philipp Dallig
d58b6e62c2 fix(health): spec.executor.instances is Optional, Support a flexible number of executors (#11877)
Support a flexible number of executors. For example with a mounted ConfigMap inside the Spark-Operator.

Signed-off-by: Philipp Dallig <philipp.dallig@gmail.com>
2023-08-14 09:57:02 -04:00
Zadkiel Aharonian
7a01a7ffe1 chore: add Carrefour Group to USERS.md (#15039)
Signed-off-by: Zadkiel Aharonian <zadkiel_aharonian@carrefour.com>
2023-08-14 09:27:28 -04:00
Ashin Sabu
3ea3d5af53 chore: give context to errors (#15019)
* chore: give context to error logs in reposerver

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* chore: give context to errors in applicationset

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* chore: give context to errors(tweaks in error messages)

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* chore: give context to errors(fix unit test)

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

---------

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>
2023-08-14 09:26:14 -04:00
Vipin M S
f7bfb3f15b chore: give context to errors (#10592) (#15022)
* chore: give context to errors

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/tls/tls.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/settings/settings.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/tls/tls.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Update util/tls/tls.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.com>

* Apply suggestions from code review

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

---------

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>
Signed-off-by: Vipin M S <40431065+vipinachar@users.noreply.github.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>
2023-08-11 21:00:13 +00:00
Mason Cole
48cdba975b fix: bump ubuntu base image (#15020) (#15021)
Latest version of the ubuntu image addresses CVE-2023-38408.

https://ubuntu.com/security/notices/USN-6242-1
https://github.com/docker-library/repo-info/blob/master/repos/ubuntu/remote/22.04.md

resolves #15020

Signed-off-by: Mason Cole <macole@beyondtrust.com>
2023-08-11 16:46:43 +00:00
dependabot[bot]
f0d0f61406 chore(deps): bump goreleaser/goreleaser-action from 4.3.0 to 4.4.0 (#14996)
Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)
- [Commits](336e29918d...3fa32b8bb5)

---
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>
2023-08-11 10:27:09 -04:00
Robin Lieb
6e7e4729b9 chore: upgrade to go 1.21 (#14992)
Signed-off-by: Robin Lieb <robin.j.lieb@gmail.com>
2023-08-11 09:33:36 -04:00
Jason Meridth
9f5133479b chore(deps): upgrade nhooyr.io/websocket dependency (#15000)
Upgrade from 1.8.6 to 1.8.7 due to high security issue

Was solved in dependency with https://github.com/nhooyr/websocket/pull/291

Signed-off-by: jmeridth <jmeridth@gmail.com>
2023-08-10 16:50:39 -04:00
Kevin Yue
c31da643aa fix: correct the swagger ui link to support --rootpath (#14845)
Signed-off-by: Kevin Yue <yuezk001@gmail.com>
2023-08-09 22:29:45 -04:00
Vladimir
51164e82f4 fix(ui): Update default and max count for maxCookieNumber (#14979)
* Update default and max count for maxCookieNumber

Signed-off-by: zvlb <vl.zemtsov@gmail.com>
2023-08-09 22:28:07 -04:00
Alexander Matyushentsev
a4eeb00395 fix: api server fails to call dex with istio (#14995)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-08-09 23:52:28 +00:00
Alexander Matyushentsev
19de408dbc feat: Add Support for AzureDevops Webhooks (#14969)
* feat: Add Support for AzureDevops Webhooks

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

* document azure devops webhook configuration

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

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-08-09 15:18:26 -07:00
Michael Crenshaw
5c76d8f027 chore: space in 'Argo CD' (#14987)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-09 13:16:17 -04:00
Andrew Block
20a1649afb docs: Adding native OCI support proposal (#13516)
Signed-off-by: Andrew Block <andy.block@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-09 10:19:49 -04:00
dependabot[bot]
83e4bff8f7 chore(deps): bump actions/setup-go from 4.0.1 to 4.1.0 (#14970)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](fac708d667...93397bea11)

---
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>
2023-08-09 10:11:12 -04:00
Mickaël Canévet
76f5cd3c1a chore: add Jellysmack in USERS.md (#14975)
Signed-off-by: Mickaël Canévet <mickael.canevet@gmail.com>
2023-08-09 10:03:35 -04:00
Mickaël Canévet
e7ad4fbc04 fix(actions): check if CronWorkflow has labels in create-workflow action (#14962) (#14974)
Signed-off-by: Mickaël Canévet <mickael.canevet@gmail.com>
2023-08-09 10:02:31 -04:00
Dan Garfield
ee3719cb54 docs: Feature bounty proposal (Experimental) (#14234)
* Create bounty proposal

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

* Update docs/proposals/feature-bounties.md

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

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>

* Update docs/proposals/feature-bounties.md

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

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>

* Update docs/proposals/feature-bounties.md

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

* Update docs/proposals/feature-bounties.md

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

* Update docs/proposals/feature-bounties.md

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

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>

* Update docs/proposals/feature-bounties.md

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

* Update docs/proposals/feature-bounties.md

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

---------

Signed-off-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-09 09:48:23 -04:00
Ashin Sabu
389cf7521d fix(cmp): send sigterm to cmp commands before sigkill to allow for potential cleanup (#9180) (#14955)
* fix: send sigterm to cmp commands before sigkill to allow for potential cleanup

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* fix: unit test for runCommand in cmpserver to test cleanup modified

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

* fix: change unit test for plugin/runCommand to avoid bad trap along with lint fix

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>

---------

Signed-off-by: Ashin Sabu <ashin.sabu@harness.io>
2023-08-08 15:30:41 +00:00
Prune Sebastien THOMAS
ab9bfd6dd7 feat(appset): Add SCM Provider option for Gitlab generator to filter shared projects from subgroups projects (#14831)
* added option to disable gitlab to fetch shared project from a subgroup

Signed-off-by: Prune <prune@lecentre.net>

* Correct gitlab SCM provider mock test

Signed-off-by: Prune <prune@lecentre.net>

* updated test to validate shared-groups

Signed-off-by: Prune <prune@lecentre.net>

* reworked shared project tests

Signed-off-by: Prune <prune@lecentre.net>

* added subgroups only test

Signed-off-by: Prune <prune@lecentre.net>

---------

Signed-off-by: Prune <prune@lecentre.net>
2023-08-08 10:01:11 -04:00
Vipin M S
8068be628d chore: give context to error logs (#10592) (#14915)
* chore: wrap error objects to include context

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* chore: wrap error objects to include context

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* chore: wrap error objects to include context

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* chore: wrap error objects to include context

Signed-off-by: Vipin M S <vipinachar2016@gmail.com>

* Update applicationset/controllers/applicationset_controller.go

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

---------

Signed-off-by: Vipin M S <vipinachar2016@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>
2023-08-07 20:21:11 +00:00
github-actions[bot]
9331a9f05e [Bot] docs: Update Snyk reports (#14919)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-08-07 18:23:57 +00:00
Vipin M S
68c33729ba fix(ui): COPY JSON for ArgoCD version should include trailing newline (#5117) (#14917)
Signed-off-by: Vipin M S <vipinachar2016@gmail.com>
2023-08-07 11:01:23 -04:00
JesseBot
9d9b872f72 docs: Update helm.md - add missing syntax highlighting for YAML and Dockerfile blocks (#14911)
Signed-off-by: JesseBot <jessebot@linux.com>
2023-08-07 10:57:47 -04:00
German Lashevich
9a0c3cfe5c docs: Update Generators-Git.md (#14921)
Remove a misleading symbol from the pattern for the path.Match function. The pipe symbol doesn't have any special meaning.

Signed-off-by: German Lashevich <german.lashevich@gmail.com>
2023-08-07 10:45:04 -04:00
dependabot[bot]
d3c9f91c46 chore(deps): bump golang.org/x/oauth2 from 0.10.0 to 0.11.0 (#14922)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.10.0 to 0.11.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.10.0...v0.11.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>
2023-08-07 10:37:28 -04:00
dependabot[bot]
77e17932c2 chore(deps): bump github.com/aws/aws-sdk-go from 1.44.312 to 1.44.317 (#14925)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.312 to 1.44.317.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.312...v1.44.317)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-08-07 10:35:50 -04:00
Alexander Matyushentsev
18e9edccae feat: provide short revision in ARGOCD_APP_REVISION_SHORT env variable (#14926)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-08-07 10:33:09 -04:00
Geoffrey MUSELLI
505f77acd1 fix(appset): typo in ARGOCD_APPLICATIONSET_CONTROLLER_ALLOWED_SCM_PROVIDERS (#14902) (#14913)
Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
2023-08-07 09:51:00 -04:00
xashr
d836ec393d fix: Change underscore (_) back to plus (+) to get valid SemVer when when reading tags from OCI registry (#14537)
* fix: Change underscore (_) back to plus (+) to get valid SemVer when reading tags from OCI registry

Signed-off-by: xashr <saschasynaos@gmail.com>

* Add test coverage for SemVer tags in TestGetTagsFromUrl

Signed-off-by: xashr <saschasynaos@gmail.com>

---------

Signed-off-by: xashr <saschasynaos@gmail.com>
2023-08-04 16:16:58 -04:00
Michael Crenshaw
95e942e793 chore: fix non-deterministic test (#14905)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-04 16:56:03 +00:00
Ashin Sabu
aaadb2097e fix(ui): Fixes health icon positioning (#14708) (#14852)
* fix: Fixes health icon positioning #14708

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>

* fix: Fixes alignment of app health application status panel #14708

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>

* fix: Added line height to App Status to fix its  positioning #14708

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>

---------

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>
2023-08-04 11:04:31 -04:00
Michael Crenshaw
21c71320bc chore: wrap ComparisonError messages (#14886)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-03 22:06:19 +00:00
Alexander Matyushentsev
fc60f007c2 fix: correct discrepancies in generated swagger file (#14813)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-08-03 16:47:10 -04:00
Talia Stocks
82702251a3 fix: Repo URL link for unsupported sources links to https://<argocd>/null/path/to/chart (#14861)
* Fix #14860

Fix #14860

Signed-off-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>

* Update USERS.md

Signed-off-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>

---------

Signed-off-by: Talia Stocks <928827+taliastocks@users.noreply.github.com>
2023-08-02 22:22:22 +00:00
Blake Pettersson
c8ae5bc3e7 chore: revert #12255 (#14858)
This reverts commit c651bd8de5.

Due to the imminent release of 2.8, this needs to be rolled back since
the proposed fix in #14210 cannot make it in time.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-08-02 16:48:57 -04:00
Leonardo Luz Almeida
b730747e39 chore: add more tests in proxy extension headers (#14842)
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2023-08-02 11:19:22 -04:00
Ashin Sabu
08465c6174 chore: give context to error logs #10592 (#14851)
* chore: give context to error logs

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>

* Update reposerver/repository/repository.go

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

---------

Signed-off-by: ashinsabu3 <ashin.sabu@harness.io>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-02 15:09:03 +00:00
Nicholas Morey
c721592d21 docs: use consistent password in plugin generator examples (#14837)
* docs: use consistent password in plugin generator examples

The example secret with the token is using `strong-password`, but the later examples use `string-password`.

This updates all of the examples to use `strong-password`.

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

* docs: update another-secret example to include `strong-password`

Consistent with above example of client token in argocd-secret

Signed-off-by: Nicholas Morey <nicholas@morey.tech>

---------

Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2023-08-01 21:02:04 -04:00
Leonardo Luz Almeida
3f9133eb59 chore: Add header support for proxy extension requests (#14800)
* chore: add server URL in the header of proxy extensions

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

* feat: add header support for proxy extension requests

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

* Address review comments

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

* address review comments

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

* Address review comments

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>
2023-08-01 20:42:11 -04:00
Michael Merrill
2ed089ace6 feat: Adding kubelogin capability to argocd-k8s-auth (#9460) (#10700)
Signed-off-by: mmerrill3 <jjpaacks@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>
2023-08-01 22:16:09 +00:00
Michael Crenshaw
69a6c763b8 chore: improve app destination docstrings (#14836)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-01 22:12:31 +00:00
JesseBot
47066ea46a docs: Change Generator docs for List Generator to note any key/value pairs can be used (#14825)
This is no longer limited to cluster/url value pairs.

Signed-off-by: JesseBot <jessebot@linux.com>
2023-08-01 13:54:53 -04:00
Alexander Matyushentsev
ec34b3fe7b fix: ManagedResources API should not return diff for hooks (#14816)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-08-01 08:18:36 -07:00
Hoang Quoc Trung
4a7e6ec855 fix(notifications-catalog): Add nil check for notifications_catalog triggers (#14795)
* Add nil check for notifications_catalog triggers

Signed-off-by: Trung <trung.hoang@pricehubble.com>

* Use correct nil check

Signed-off-by: Trung <trung.hoang@pricehubble.com>

* Add missing catalog generation to makefile

Signed-off-by: Trung <trung.hoang@pricehubble.com>

* Revert changes to update-manifests.sh

Signed-off-by: Trung <trung.hoang@pricehubble.com>

---------

Signed-off-by: Trung <trung.hoang@pricehubble.com>
2023-08-01 07:29:42 -04:00
Michael Crenshaw
72754d7726 docs: Update Controlling-Resource-Modification.md (#14751)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-08-01 00:19:37 +00:00
dependabot[bot]
be1b1ea645 chore(deps): bump library/node from 20.4.0 to 20.5.0 in /ui-test (#14662)
Bumps library/node from 20.4.0 to 20.5.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>
2023-07-31 20:16:23 -04:00
dependabot[bot]
0d99943b44 chore(deps): bump library/node from 20.4.0 to 20.5.0 (#14664)
Bumps library/node from 20.4.0 to 20.5.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>
2023-07-31 20:16:00 -04:00
Michael Crenshaw
49a395037e docs: add ignoreDifferences name and namespace fields (#14741)
* Update application.yaml

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

* Update docs/operator-manual/application.yaml

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-31 19:26:47 -04:00
Michael Crenshaw
f099aa70e4 docs: Update application.yaml (#14742)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-31 19:26:00 -04:00
Alex Collins
5795ba739d fix: Correct broken forever option in pod logs viewer. Fixes #14762 (#14763)
Signed-off-by: Alex Collins <alex_collins@intuit.com>
2023-07-31 19:24:59 -04:00
Michael Crenshaw
92616e4e0f fix(ui): no hyphen for "create job" action + nice icon (#14776) (#14777)
* chore(actions): space instead of hyphen in action name (#14776)

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

* new field for backwards-compatibility

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

* align icons for maximum synergy

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

* delete unused function

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

* revert unnecessary changes

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

* Update docs/operator-manual/upgrading/2.7-2.8.md

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-31 19:21:26 -04:00
Michael Crenshaw
951b6b1b46 feat(deep-links): alias application as apps for consistency with notifications engine (#14761)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-31 16:49:19 -04:00
Michael Crenshaw
e2ab450642 chore: make helm template errors less verbose (#14772)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-31 16:43:40 -04:00
Nathan Romriell
2f84dacc03 fix(controller): cache deadlock on delete and re-add cluster (#14780)
Signed-off-by: Nathan Romriell <nateromriell@gmail.com>
2023-07-31 09:04:01 -07:00
Kostis (Codefresh)
9e279d5a28 docs: Clarify that security policy covers last 3 versions (#14786)
* docs: Clarify that security policy covers last 3 versions

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>

* Update SECURITY.md

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

---------

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-31 15:54:56 +00:00
Jonathan West
2205b94f4e chore: Add query-scoped cluster URL in Cluster Secret E2E tests (#14446)
* Add query-scoped cluster URL in Cluster Secret E2E tests

Signed-off-by: Jonathan West <jonwest@redhat.com>

* Respond to review comments

Signed-off-by: Jonathan West <jonwest@redhat.com>

---------

Signed-off-by: Jonathan West <jonwest@redhat.com>
2023-07-31 11:52:54 -04:00
Dylan Page
8b5118c8e0 chore: add Autodesk to USERS.md (#14778)
Signed-off-by: Dylan Page <dylan.page@autodesk.com>
2023-07-31 10:16:20 -04:00
dependabot[bot]
58138ad0a5 chore(deps): bump github.com/casbin/casbin/v2 from 2.72.1 to 2.73.0 (#14783)
Bumps [github.com/casbin/casbin/v2](https://github.com/casbin/casbin) from 2.72.1 to 2.73.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.72.1...v2.73.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>
2023-07-31 04:59:00 +00:00
dependabot[bot]
6e3bd70a8b chore(deps): bump github.com/xanzy/go-gitlab from 0.88.0 to 0.89.0 (#14784)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.88.0 to 0.89.0.
- [Changelog](https://github.com/xanzy/go-gitlab/blob/master/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.88.0...v0.89.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>
2023-07-31 04:55:38 +00:00
dependabot[bot]
c3970b462e chore(deps): bump github.com/aws/aws-sdk-go from 1.44.309 to 1.44.312 (#14782)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.309 to 1.44.312.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.309...v1.44.312)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-31 04:46:07 +00:00
github-actions[bot]
0a11089db3 [Bot] docs: Update Snyk reports (#14781)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-07-30 01:26:35 +00:00
Felix
74a07f19c1 docs: Add missing value (#14538)
Signed-off-by: felix <felix@psy-coding.com>
2023-07-28 18:51:05 +00:00
Alexander Matyushentsev
1810c4c24c fix: OCI dependency url can't contain part of repository (#14699)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-07-27 16:18:06 -04:00
Blake Pettersson
9a47a765f8 fix(ui): display valuesobject if set (#14257)
* fix: display valuesobject if set

With #11538 we now have the ability to set helm values as an object
instead of a string, but we also need to be able to correctly display
it in the UI if it is set.

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

* fix: set valuesobject on save

If `valuesObject` is present, set it to the value of
`input.spec.source.helm.values` on save, as an unmarshaled json string.

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

* fix: set `helm.values` to empty string on save

If `valuesObject` exists, set `input.spec.source.helm.values` to an
empty string once `valuesObject` has been unmarshalled from the
values input. This is to prevent unnecessary duplication of the values.

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

* chore: eslint

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

* chore: eslint

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

* fix: deep clone app

This is so that we can conditionally set `source.helm.values` without
inadvertently affecting other parts of the app. Only when the edit
button is pressed do we toggle `source.helm.values`.

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

* chore: eslint

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

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2023-07-27 14:48:33 -04:00
dependabot[bot]
5f8fc55094 chore(deps): bump github.com/aws/aws-sdk-go from 1.44.305 to 1.44.309 (#14746)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.305 to 1.44.309.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.305...v1.44.309)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-27 12:33:54 -04:00
dependabot[bot]
89931c1826 chore(deps): bump github.com/go-git/go-git/v5 from 5.8.0 to 5.8.1 (#14744)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.8.0 to 5.8.1.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.8.0...v5.8.1)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  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>
2023-07-27 12:33:32 -04:00
Geoffrey MUSELLI
433ba3678c feat(appset): Restrict scm provider urls (#14286)
* 9353: Restrict scm provider urls

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Enforce restriction

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix after review

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Remove comment

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix units tests

Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>

* 9353: Code review, update comment

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Code review, update comment 2

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Remove doc issues

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix e2e

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix e2e goTemplate

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

* 9353: Fix e2e pullRequestGenerator

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>

---------

Signed-off-by: gmuselli <geoffrey.muselli@gmail.com>
Signed-off-by: Geoffrey Muselli <geoffrey.muselli@gmail.com>
2023-07-27 09:06:55 -04:00
XianzheTM
f1607fee7c fix(sso): Set redirectURI for gitea, google, oauth Dex connectors (#11237)
Signed-off-by: ylxianzhe <ylxianzhe@outlook.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-26 17:07:29 -04:00
Fish-pro
f7c654aac3 Clean up repeated package import (#13889)
Signed-off-by: Zechun Chen <zechun.chen@daocloud.io>
2023-07-26 17:07:05 -04:00
Alexandre Gaudreault
d04633b6cf fix: manifest generation error with null annotations (#14336) (#14680)
* fix: manifest generation error with null annotations

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix test

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* fix unit tests

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2023-07-26 17:05:44 -04:00
Michael Merrill
e08840f12b fix(server): handle PATCH in http/s server (#2677) (#14530)
Signed-off-by: mmerrill3 <jjpaacks@gmail.com>
2023-07-26 17:05:16 -04:00
Michael Crenshaw
703df96acd fix(controller): log failed attempts to update operation state (#14273)
* fix(controller): log failed attempts to update operation state

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

* new package name

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

* Update controller/appcontroller_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>
2023-07-26 21:02:56 +00:00
Gerardo Corea
4a504401a6 feat: adding a autosync_enabled field to the argocd_app_info gauge (#14424)
Signed-off-by: Gerardo Corea <gerardocorea92@gmail.com>
2023-07-26 12:35:44 -04:00
Yi Cai
ec9d305e3f chore: Upgrade semver to avoid cve (#14710)
Signed-off-by: Yi Cai <yicai@redhat.com>
2023-07-25 17:57:58 -04:00
Yuan Tang
0ae5882d5a chore: Print in-cluster svr addr disabled warning when server starts (#14553)
* chore: Print in-cluster svr addr disabled warning when server starts

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>

* fix: mock

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>

* no interface change

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

---------

Signed-off-by: Yuan Tang <terrytangyuan@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>
2023-07-24 13:49:51 -04:00
daftping
e10c4186a5 feat(deep-links): sprig support (#14660)
Signed-off-by: daftping <21245083+daftping@users.noreply.github.com>
2023-07-24 16:54:42 +00:00
asingh
4ed611c2dd fix(ui): The default pod group filter should be removed if fewer than 15 pods (#14590)
Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
2023-07-24 10:38:57 -04:00
schakrad
21e7d92093 fix: ApplicationSet Controller crashes when tag is not closed; panic: Cannot find end tag="}}"(#14227) (#14651)
* ApplicationSet bug fix

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>

* Update applicationset/utils/utils_test.go

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>

---------

Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.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>
2023-07-23 17:29:36 -04:00
Nik Skoufis
5120026d15 fix: webhook handler fails to refresh when alternate application namespaces are configured (#13976)
* fix: Add failing test for webhooks in all namespaces

This adds a failing test that properly exercises this functionality over
all namespaces. The issue with the code that is under test is that it
does not pass the namespace correctly to the patch of the application,
resulting in the patch not taking place in the correct namespace

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

* fix: queue webhook refresh for apps in all namespaces

This passes the test in the previous commit, to ensure that webhooks
correctly refresh applications across all namespaces.

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

* fix: Use existing NamespacedName type

Use the existing type instead of a custom type

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>

---------

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>
2023-07-21 14:29:57 -04:00
dependabot[bot]
db52c265c3 chore(deps): bump github.com/go-git/go-git/v5 from 5.7.0 to 5.8.0 (#14641)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.7.0 to 5.8.0.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.7.0...v5.8.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  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>
2023-07-21 15:48:07 +00:00
schakrad
244b9e162b fix(ui): Drop ready from Completed container status (#14434) (#14629)
Signed-off-by: schakrad <58915923+schakrad@users.noreply.github.com>
2023-07-21 10:34:47 -04:00
Andreas Lindhé
7bade3c06c docs: Skip export keyword in notification docs (#14633)
This change does three things:

1. It removes the `export` keyword. It's not required since the example
   executes a script where the variables are evaluated as an inline
   string. One could even argue that there is a slight security issue
   with using `export` here, since that will expose the credentials to
   all applications started in the current context.
2. It adds a space (` `) before the `PASSWORD` variable. This will keep
   it out of the user's Bash history by default. See [HISTIGNORE][bash].
3. Add a newline for clarity.

[bash]: https://www.gnu.org/software/bash/manual/bash.html#index-HISTIGNORE

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
2023-07-21 10:01:35 -04:00
Håkon Solbjørg
85cb3c378f docs(deep-links): Fix link to pkg.go.dev to not return 404 (#14595)
Signed-off-by: Håkon Solbjørg <hakon@solbj.org>
2023-07-21 10:00:04 -04:00
dependabot[bot]
3ee9c364ac chore(deps): bump github.com/aws/aws-sdk-go from 1.44.304 to 1.44.305 (#14632)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.304 to 1.44.305.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG_PENDING.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.304...v1.44.305)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-21 09:57:10 -04:00
Kyle Purkiss
278237e57b fix(ui): Fix Destination Cluster URL/Name Drop down not updating destination field (#13813) (#14216)
* fix(ui): Fix Destination Cluster URL/Name Drop down not updating destination field (fixes #13813)

Signed-off-by: Kyle Purkiss <kyle.purkiss@procore.com>

* Address linting errors

Signed-off-by: Kyle Purkiss <kyle.purkiss@procore.com>

---------

Signed-off-by: Kyle Purkiss <kyle.purkiss@procore.com>
2023-07-20 14:43:12 -04:00
dependabot[bot]
5cdd3e1645 chore(deps): bump pygments from 2.7.4 to 2.15.0 in /docs (#14615)
Bumps [pygments](https://github.com/pygments/pygments) from 2.7.4 to 2.15.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.7.4...2.15.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-20 14:27:22 +00:00
dependabot[bot]
43501ce3e7 chore(deps): bump github.com/xanzy/go-gitlab from 0.86.0 to 0.88.0 (#14616)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.86.0 to 0.88.0.
- [Changelog](https://github.com/xanzy/go-gitlab/blob/master/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.86.0...v0.88.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>
2023-07-20 13:05:41 +00:00
dependabot[bot]
7bc5804b04 chore(deps): bump github.com/antonmedv/expr from 1.12.6 to 1.12.7 (#14611)
Bumps [github.com/antonmedv/expr](https://github.com/antonmedv/expr) from 1.12.6 to 1.12.7.
- [Release notes](https://github.com/antonmedv/expr/releases)
- [Commits](https://github.com/antonmedv/expr/compare/v1.12.6...v1.12.7)

---
updated-dependencies:
- dependency-name: github.com/antonmedv/expr
  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>
2023-07-20 07:57:57 -04:00
dependabot[bot]
340504a195 chore(deps): bump github.com/xanzy/go-gitlab from 0.86.0 to 0.87.0 (#14610)
Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.86.0 to 0.87.0.
- [Changelog](https://github.com/xanzy/go-gitlab/blob/master/releases_test.go)
- [Commits](https://github.com/xanzy/go-gitlab/compare/v0.86.0...v0.87.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>
2023-07-20 07:57:17 -04:00
dependabot[bot]
558cc8e05e chore(deps): bump github.com/aws/aws-sdk-go from 1.44.301 to 1.44.304 (#14609)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.301 to 1.44.304.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.301...v1.44.304)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-20 07:56:25 -04:00
Michael Crenshaw
208852c4de fix(api): return 404 when the app is not found if a project is specified (#13393) (#13394)
* fix(api): return 404 when the app is not found if a project is specified (#13393)

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

simplify, respond 404 on project specified but doesn't match, always fetch app

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

handle project updates

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

* handle new endpoint, fix bad merge

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

* 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>
2023-07-19 09:22:28 -04:00
Lukas Wöhrl
6f5d5ca810 fix(cli): allow argocd cli app command for multi source apps (#14256)
Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>
2023-07-18 16:34:16 -04:00
schakrad
12a5a7a70d fix(cli): argocd CLI RBAC validation doesn't work on actions (#13911) (#14578)
* #11602 fix : Object options menu truncated when selected in ApplicationListView.

Signed-off-by: schakradari <saisindhu_chakradari@intuit.com>

* #11602 fix : Object options menu truncated when selected in ApplicationListView.

Signed-off-by: schakradari <saisindhu_chakradari@intuit.com>

* changes for argocd_rbac

Signed-off-by: schakrad <chakradari.sindhu@gmail.com>

---------

Signed-off-by: schakradari <saisindhu_chakradari@intuit.com>
Signed-off-by: schakrad <chakradari.sindhu@gmail.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-18 20:07:44 +00:00
Rami
dd800ec119 fix: Remove executable bit from default file mode (#14497)
* Fix file/directory opening mode

Signed-off-by: ramikg <72725910+ramikg@users.noreply.github.com>

* Fix TestUntgz/preserves_file_mode

Signed-off-by: ramikg <72725910+ramikg@users.noreply.github.com>

* Mention file mode fix in 2.7-2.8 release docs

Signed-off-by: ramikg <72725910+ramikg@users.noreply.github.com>

---------

Signed-off-by: ramikg <72725910+ramikg@users.noreply.github.com>
2023-07-18 13:29:38 -04:00
dependabot[bot]
1f88d02848 chore(deps): bump github.com/aws/aws-sdk-go from 1.44.300 to 1.44.301 (#14565)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.300 to 1.44.301.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.300...v1.44.301)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-18 16:01:16 +00:00
dependabot[bot]
fcbd4c2bbb chore(deps): bump github.com/casbin/casbin/v2 from 2.71.1 to 2.72.1 (#14564)
Bumps [github.com/casbin/casbin/v2](https://github.com/casbin/casbin) from 2.71.1 to 2.72.1.
- [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.71.1...v2.72.1)

---
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>
2023-07-18 10:43:27 -04:00
pasha-codefresh
2094404e0b fix(server): not need send application if it is not under enabled namespaces (#14479)
* fix: not need send application if it is not under enabled namespaces

* fix condition

* feat: Move application is permitted outside of watch function and cover with unit tests

* feat: Move application is permitted outside of watch function and cover with unit tests
2023-07-18 10:37:27 -04:00
Yuan Tang
462dffc0b7 fix: Correct pod log viewer to support short log lines. Fixes #14402 (#14543)
Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>
2023-07-17 21:42:02 -04:00
Michael Crenshaw
15eeb307eb fix(controller): populate ignoreDifferences in sync status (#14542)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-17 14:52:50 -04:00
Dimitar Georgievski
a57786657b docs: Correct example ClusterRole to allow Events in any namespace (#14544)
Fixes: #14477

Signed-off-by: Dimitar Georgievski <dgeorgievski@gmail.com>
2023-07-17 12:55:40 -04:00
Yuan Tang
9c0c6bcc17 chore: Print in-cluster svr addr disabled warning during ArgoDB initialization (#14539)
* chore: Print in-cluster svr addr disabled warning during ArgoDB initialization

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>

* fix: undo a change

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>

* chore: move to a function

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>

* chore: rename

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>

---------

Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>
2023-07-17 12:54:49 -04:00
Alexander Matyushentsev
ff92e60102 fix: 'argocd-server-tls' Secret should be loaded from informer (#14522)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-07-17 11:59:56 -04:00
Noah Elzner
657df211a0 chore: Generate SLSA provenance for SBOM (#14438) (#14507)
* Add provenance generation for sbom

Signed-off-by: Noah Elzner <78953604+enteraga6@users.noreply.github.com>

* upload SBOM

Signed-off-by: Noah Elzner <78953604+enteraga6@users.noreply.github.com>

* Remove cosign setup

Signed-off-by: Noah Elzner <78953604+enteraga6@users.noreply.github.com>

* include hashes in generate-sbom output

Signed-off-by: Noah Elzner <78953604+enteraga6@users.noreply.github.com>

* Replace Cosign Verification command with SLSA command in docs

Signed-off-by: Noah Elzner <78953604+enteraga6@users.noreply.github.com>

* Remove id-token write permission - no longer needed

Signed-off-by: Noah Elzner <78953604+enteraga6@users.noreply.github.com>

---------

Signed-off-by: Noah Elzner <78953604+enteraga6@users.noreply.github.com>
2023-07-17 11:56:49 -04:00
Michael Crenshaw
b90f3bc774 fix(appset): normalize app spec before applying (#14481)
* fix(appset): normalize app spec before applying

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

* fix nil ref, add test

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

* fix another test

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-17 09:19:25 -04:00
Yuan Tang
4bd8b07c51 chore: Update log level to warn when in-cluster svr addr is disabled but internal addr is used (#14520)
Signed-off-by: Yuan Tang <terrytangyuan@gmail.com>
2023-07-14 21:17:19 +00:00
Michael Crenshaw
9bf5e50784 fix(security): don't allow app enumeration via RevisionChartDetails (#14512)
* fix(security): don't allow app enumeration via RevisionChartDetails

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

* better app name

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-14 17:03:48 +00:00
Michael Crenshaw
1ee4389ae5 docs: improve ignoreResourceUpdates docs (#14475)
* docs: improve ignoreResourceUpdates docs

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

* more

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>
2023-07-14 11:38:03 -04:00
dependabot[bot]
0479583be3 chore(deps): bump github.com/aws/aws-sdk-go from 1.44.299 to 1.44.300 (#14510)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.299 to 1.44.300.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.299...v1.44.300)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-14 10:34:24 -04:00
dependabot[bot]
f8acbe93a8 chore(deps): bump sigs.k8s.io/structured-merge-diff/v4 (#14509)
Bumps [sigs.k8s.io/structured-merge-diff/v4](https://github.com/kubernetes-sigs/structured-merge-diff) from 4.2.3 to 4.3.0.
- [Release notes](https://github.com/kubernetes-sigs/structured-merge-diff/releases)
- [Changelog](https://github.com/kubernetes-sigs/structured-merge-diff/blob/master/RELEASE.md)
- [Commits](https://github.com/kubernetes-sigs/structured-merge-diff/compare/v4.2.3...v4.3.0)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/structured-merge-diff/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>
2023-07-14 10:33:50 -04:00
dependabot[bot]
575c5ad2c0 chore(deps): bump github.com/ktrysmt/go-bitbucket from 0.9.61 to 0.9.63 (#14503)
Bumps [github.com/ktrysmt/go-bitbucket](https://github.com/ktrysmt/go-bitbucket) from 0.9.61 to 0.9.63.
- [Release notes](https://github.com/ktrysmt/go-bitbucket/releases)
- [Commits](https://github.com/ktrysmt/go-bitbucket/compare/v0.9.61...v0.9.63)

---
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>
2023-07-13 16:52:23 +00:00
dependabot[bot]
e713a1591b chore(deps): bump github.com/antonmedv/expr from 1.12.5 to 1.12.6 (#14490)
Bumps [github.com/antonmedv/expr](https://github.com/antonmedv/expr) from 1.12.5 to 1.12.6.
- [Release notes](https://github.com/antonmedv/expr/releases)
- [Commits](https://github.com/antonmedv/expr/compare/v1.12.5...v1.12.6)

---
updated-dependencies:
- dependency-name: github.com/antonmedv/expr
  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>
2023-07-13 15:54:54 +00:00
dependabot[bot]
d558e42aec chore(deps): bump docker/setup-buildx-action from 2.9.0 to 2.9.1 (#14492)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.9.0 to 2.9.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](2a1a44ac4a...4c0219f9ac)

---
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>
2023-07-13 11:00:56 -04:00
dependabot[bot]
5fbe93504f chore(deps): bump github.com/bradleyfalzon/ghinstallation/v2 (#14489)
Bumps [github.com/bradleyfalzon/ghinstallation/v2](https://github.com/bradleyfalzon/ghinstallation) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/bradleyfalzon/ghinstallation/releases)
- [Commits](https://github.com/bradleyfalzon/ghinstallation/compare/v2.5.0...v2.6.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>
2023-07-13 10:59:16 -04:00
Michael Crenshaw
00917d19a9 chore: improve ignoreResourceUpdates logging (#14476)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-07-13 17:42:39 +03:00
Christian Hernandez
0fd5a99f20 added instructions on how to delete a user (#14488)
Signed-off-by: Christian Hernandez <christian@chernand.io>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-07-13 16:31:14 +03:00
dependabot[bot]
927b940c3e chore(deps): bump github.com/aws/aws-sdk-go from 1.44.298 to 1.44.299 (#14468)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.298 to 1.44.299.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.298...v1.44.299)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-12 23:16:55 +00:00
fsl
0f107851d7 chore(deps): bump library/golang from 1.20.5 to 1.20.6 (#14480)
Signed-off-by: fengshunli <1171313930@qq.com>
2023-07-12 17:49:32 +00:00
Maxime Brunet
103a41992e fix(cli): fix tracking annotation diff for non-namespaced resources (#13924)
Signed-off-by: Maxime Brunet <max@brnt.mx>
2023-07-12 09:35:35 -04:00
Matt Kelly
22281c5aab chore: Add VA.gov to USERS.md (#14401)
* Add VA.gov to USERS.md

FWIW, we use ArgoCD all over the place at the VA. 

Signed-off-by: Matt Kelly <Matthew.Kelly7@va.gov>

* Slightly different sort opinion

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

---------

Signed-off-by: Matt Kelly <Matthew.Kelly7@va.gov>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-11 18:51:16 +00:00
Ishita Sequeira
6fb238c7d8 feat(appset): Add support for self-signed TLS / Certificates for Gitlab Scm Provider (#14348)
* Add support for self-signed TLS / Certificates for Gitlab Scm Provider

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add support for self-signed TLS / Certificates for Gitlab Pull Request

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add TLS configuration for SCM and Pull request Gitlab Provider

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* rebase with master

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* add params to argocd-cmd-params-cm and docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix generated manifests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Address comments for docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add test cases to validate insecure mode and ca cert combinations

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* simplify (#24)

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

---------

Signed-off-by: ishitasequeira <ishiseq29@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>
2023-07-11 15:34:29 +00:00
fsl
6a9f4c4fef chore(deps): bump library/node from 20.3.1 to 20.4.0 (#14450)
Signed-off-by: fengshunli <1171313930@qq.com>
2023-07-11 15:09:44 +00:00
laurentsimon
5953cc2b59 docs: Update SLSA verification commands (#14437)
* update

Signed-off-by: laurentsimon <laurentsimon@google.com>

* update

Signed-off-by: laurentsimon <laurentsimon@google.com>

* update

Signed-off-by: laurentsimon <laurentsimon@google.com>

* update

Signed-off-by: laurentsimon <laurentsimon@google.com>

* update

Signed-off-by: laurentsimon <laurentsimon@google.com>

* update

Signed-off-by: laurentsimon <laurentsimon@google.com>

* update

Signed-off-by: laurentsimon <laurentsimon@google.com>

---------

Signed-off-by: laurentsimon <laurentsimon@google.com>
2023-07-11 10:53:40 -04:00
Michael Crenshaw
faaa302fac fix(action): copy metadata on create-job action (#14232) (#14233)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-11 15:04:32 +03:00
Aryan
056424928f chore: Replace os.Getenv("HOME") with os.UserHomeDir() (#12850) (#14325)
* Replace `os.Getenv("HOME")` with `os.UserHomeDir()`

`os.UserHomeDir()` is the recommended way of getting user home directory

Signed-off-by: Aryan Pathania <cont-a-pathania@mercari.com>

* Retrigger CI pipeline

Signed-off-by: Aryan Pathania <cont-a-pathania@mercari.com>

---------

Signed-off-by: Aryan Pathania <cont-a-pathania@mercari.com>
2023-07-10 18:33:40 -04:00
Michael Crenshaw
0cf31fb9c9 chore: add more logging for when RBAC enforcement fails (#14406)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-10 14:08:54 -04:00
dependabot[bot]
ddb0d10946 chore(deps): bump tough-cookie from 4.0.0 to 4.1.3 in /ui (#14417)
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.0.0 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.0.0...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 14:05:46 -04:00
dependabot[bot]
7c5c72cedb chore(deps): bump github.com/aws/aws-sdk-go from 1.44.297 to 1.44.298 (#14425)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.297 to 1.44.298.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.297...v1.44.298)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-10 12:26:11 -04:00
dependabot[bot]
1209ef2e5b chore(deps): bump docker/setup-buildx-action from 2.8.0 to 2.9.0 (#14423)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](16c0bc4a6e...2a1a44ac4a)

---
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>
2023-07-10 12:25:46 -04:00
Alex Collins
3b496ceca9 fix: Fix pod log viewer scrollbars (#14199)
* fix: Fix pod log viewer scrollbars

Signed-off-by: Alex Collins <alex_collins@intuit.com>

* fix scrolling

Signed-off-by: Alex Collins <alex_collins@intuit.com>

---------

Signed-off-by: Alex Collins <alex_collins@intuit.com>
2023-07-09 18:17:27 +00:00
github-actions[bot]
918e19e27a [Bot] docs: Update Snyk reports (#14415)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-07-09 01:48:59 +00:00
Yuki Nakamura
987615f4b0 docs: fix typo (#14412)
Signed-off-by: yukinakanaka <yuki.nakamura@mapbox.com>
2023-07-08 21:48:28 +00:00
Michael Crenshaw
e2e0da7fcc fix: trigger refresh on changed ignoreDifferences (#12607)
* fix: trigger refresh on changed ignoreDifferences

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

* make the tests mean things

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

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-07-07 15:18:10 -04:00
dependabot[bot]
c4fb292508 chore(deps): bump google.golang.org/grpc from 1.56.1 to 1.56.2 (#14390)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.56.1 to 1.56.2.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.56.1...v1.56.2)

---
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>
2023-07-07 16:43:55 +00:00
Vikash Yadav
a656459521 chore: Replace cacheSrc to cacheSource (#14393)
Changed cacheSrc to cacheSource

Signed-off-by: Vikash Yadav <yadav621gzp@gmail.com>
2023-07-07 16:09:08 +00:00
Edmund Rhudy
f2105d937d fix: adds WebSocket ping to interactive terminal (#14191) (#14192)
This adds a WebSocket ping message on a 5-second interval, sent
from the server to the client. This ensures that the interactive
terminal will remain open and won't be closed by load balancers
that are reaping idle connections.

Signed-off-by: Edmund Rhudy <erhudy@users.noreply.github.com>
2023-07-07 10:59:08 -04:00
dependabot[bot]
f5675ca4f3 chore(deps): bump github.com/aws/aws-sdk-go from 1.44.296 to 1.44.297 (#14391)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.296 to 1.44.297.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG_PENDING.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.296...v1.44.297)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-07 10:25:49 -04:00
dependabot[bot]
7cc6be45f1 chore(deps): bump github.com/ktrysmt/go-bitbucket from 0.9.60 to 0.9.61 (#14389)
Bumps [github.com/ktrysmt/go-bitbucket](https://github.com/ktrysmt/go-bitbucket) from 0.9.60 to 0.9.61.
- [Release notes](https://github.com/ktrysmt/go-bitbucket/releases)
- [Commits](https://github.com/ktrysmt/go-bitbucket/compare/v0.9.60...v0.9.61)

---
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>
2023-07-07 10:24:58 -04:00
Haitao Li
8f7b69387d fix: Update bitbucket.org rsa ssh key (#14392)
The key change announcement at https://bitbucket.org/blog/ssh-host-key-changes

Signed-off-by: Haitao Li <hli@atlassian.com>
2023-07-07 10:22:27 -04:00
Eng Zer Jun
03026997d1 chore: use t.Setenv to set env vars in tests (#14377)
This commit replaces `os.Setenv` with `t.Setenv` in tests. The
environment variable is automatically restored to its original value
when the test and all its subtests complete.

Reference: https://pkg.go.dev/testing#T.Setenv

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2023-07-06 19:50:08 -04:00
Alexandre Gaudreault
94ce1e99e9 fix(sharding): recurring info logs to debug (#14383)
Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2023-07-06 19:39:18 -04:00
dependabot[bot]
6041c0b7dd chore(deps): bump golang.org/x/oauth2 from 0.9.0 to 0.10.0 (#14361)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.9.0 to 0.10.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.9.0...v0.10.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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-07-06 13:50:38 -04:00
Christian Hernandez
47015cd37c docs: Added information about scopes (#2782) (#14354)
* Added information about scopes in the docs

Signed-off-by: Christian Hernandez <christian@chernand.io>

* Apply suggestions from code review

Co-authored-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Christian Hernandez <christianh814@users.noreply.github.com>

---------

Signed-off-by: Christian Hernandez <christian@chernand.io>
Signed-off-by: Christian Hernandez <christianh814@users.noreply.github.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2023-07-06 16:55:09 +00:00
Paul Martin
ef8dae885d docs: managedFieldsManagers example in docs needs double-quotes (#14324)
* is a Yaml special character and must be quoted, otherwise ArgoCD fails to parse and shows an error.

Signed-off-by: Paul Martin <paul.martin@gmail.com>
2023-07-06 10:32:59 -04:00
dependabot[bot]
d475b81781 chore(deps): bump github.com/aws/aws-sdk-go from 1.44.295 to 1.44.296 (#14359)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.295 to 1.44.296.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.295...v1.44.296)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-06 10:01:04 -04:00
dependabot[bot]
a28889f8f4 chore(deps): bump oras.land/oras-go/v2 from 2.2.0 to 2.2.1 (#14357)
Bumps [oras.land/oras-go/v2](https://github.com/oras-project/oras-go) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/oras-project/oras-go/releases)
- [Commits](https://github.com/oras-project/oras-go/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: oras.land/oras-go/v2
  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>
2023-07-06 10:00:42 -04:00
dependabot[bot]
a4ada1ef9e chore(deps): bump golang.org/x/term from 0.9.0 to 0.10.0 (#14358)
Bumps [golang.org/x/term](https://github.com/golang/term) from 0.9.0 to 0.10.0.
- [Commits](https://github.com/golang/term/compare/v0.9.0...v0.10.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>
2023-07-06 10:00:10 -04:00
dependabot[bot]
0219a49719 chore(deps): bump actions/setup-node from 3.6.0 to 3.7.0 (#14362)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](64ed1c7eab...e33196f742)

---
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>
2023-07-06 09:59:35 -04:00
Julien Bouquillon
ef9ceffd59 docs: typofix (#14344)
Signed-off-by: Julien Bouquillon <julien.bouquillon@sg.social.gouv.fr>
2023-07-05 21:40:01 -04:00
Calchan
4a50a31caf chore: add gofmt to golangci-lint in Makefile and .github/workflows/ci-build.yaml (#13729)
* fix: add gofmt to golangci-lint in Makefile and .github/workflows/ci-build.yaml

Signed-off-by: Denis Dupeyron <denis.dupeyron@gmail.com>

* fix go formatting issues using gofmt

Signed-off-by: Denis Dupeyron <denis.dupeyron@gmail.com>

* chore: simplify go code using gofmt

Signed-off-by: Denis Dupeyron <denis.dupeyron@gmail.com>

---------

Signed-off-by: Denis Dupeyron <denis.dupeyron@gmail.com>
2023-07-05 16:16:25 -04:00
dependabot[bot]
f0b8ffb7ca chore(deps): bump github.com/aws/aws-sdk-go from 1.44.294 to 1.44.295 (#14327)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.294 to 1.44.295.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.294...v1.44.295)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-04 07:05:41 -07:00
dependabot[bot]
52594d35a0 chore(deps): bump github.com/aws/aws-sdk-go from 1.44.293 to 1.44.294 (#14313)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.293 to 1.44.294.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.293...v1.44.294)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-07-03 12:57:51 -07:00
Michael Kotelnikov
f30cb7a200 fix: Change disallowed application destination message (#14284) (#14307)
* change disallowed application destinations message

Signed-off-by: michaelkot97 <michael.kot97@gmail.com>

* Changed e2e tests

Signed-off-by: michaelkot97 <michael.kot97@gmail.com>

---------

Signed-off-by: michaelkot97 <michael.kot97@gmail.com>
2023-07-03 12:51:10 -07:00
gdsoumya
d7632df378 feat: respecting rbac for resource exclusions/inclusions proposal (#13479)
* feat: respecting rbac for resource exclusions/inclusions proposal (#13479)

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
2023-07-03 09:40:04 -07:00
github-actions[bot]
0c5cf1c782 [Bot] docs: Update Snyk reports (#14308)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2023-07-02 19:07:45 -07:00
Venkata Mutyala
b9fefca17b feat: upgrade dexIDP from 2.36.0 -> 2.37.0 (#14305) (#14310)
* feat: update dexidp image tag from v2.36.0 -> v2.37.0

Signed-off-by: Venkata Mutyala <venkata@venkatamutyala.com>

* chore: adding GlueOps to USERS.md

Signed-off-by: Venkata Mutyala <venkata@venkatamutyala.com>

---------

Signed-off-by: Venkata Mutyala <venkata@venkatamutyala.com>
2023-07-02 19:05:11 -07:00
Michael Crenshaw
5f455af684 chore: add more logging for failures to get label metadata (#14275)
* chore: add more logging for failures to get label metadata

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

* context

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

* fix test

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

* fix test

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: jannfis <jann@mistrust.net>
Co-authored-by: jannfis <jann@mistrust.net>
2023-07-01 23:01:23 +00:00
Alexandre Gaudreault
53db27e88a fix: deadlock in controller (#14304)
Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2023-07-01 16:32:33 -04:00
jannfis
8032601d75 chore: Clean up repo server imports (#14218)
Signed-off-by: jannfis <jann@mistrust.net>
2023-06-30 20:24:37 -04:00
Christian Hernandez
b12017c3b4 docs: Adding explanation for CMP yaml/json generation (must be K8S object) (#9471) (#14295)
Signed-off-by: Christian Hernandez <christian@chernand.io>
2023-06-30 19:37:12 -04:00
Daniel Perevalov
168ce14342 docs: Clarify "SSH known host public keys" text (#13537)
Add `ssh_keyscan` example usage

Signed-off-by: Daniel Perevalov <daniel.perevalov@gmail.com>
2023-06-30 19:34:10 -04:00
bjarneo
1bffe34492 docs: change to the correct property for the dex server value (#14279)
* fix: change to the correct property for dex server

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

* Update argocd-cmd-params-cm.yaml

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

---------

Signed-off-by: bjarneo <bjarneo@users.noreply.github.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>
2023-06-30 14:58:13 +00:00
Benoît Sauvère
3ed882728b docs: explicit that ArgoCD hooks replaces the Helm ones (#14283)
* docs: explicit that ArgoCD hooks replace the Helm ones

After digging a bit in the code, I've found this comment that confirms
that if we define some ArgoCD hooks the Helm ones are ignored.
425d65e076/pkg/sync/hook/hook.go (L36C2-L36C46)

Signed-off-by: Benoît Sauvère <benoit.sauvere@backmarket.com>

* docs: add Back Market in the user list

Signed-off-by: Benoît Sauvère <benoit.sauvere@backmarket.com>

* Update docs/user-guide/helm.md

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

---------

Signed-off-by: Benoît Sauvère <benoit.sauvere@backmarket.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>
2023-06-30 14:51:40 +00:00
Aakanksha Bhende
a8553056b0 fix(ui): Added rel="noopener noreferrer" to link (#13820) (#14268)
* Added rel attribute to link

Signed-off-by: aakankshabhende <aakanksha0407@gmail.com>

* Fixed lint error

Signed-off-by: aakankshabhende <aakanksha0407@gmail.com>

---------

Signed-off-by: aakankshabhende <aakanksha0407@gmail.com>
2023-06-30 10:07:40 -04:00
yyzxw
9417e8e234 chore: improve reposerver readability (#14112)
Signed-off-by: yyzxw <1020938856@qq.com>
2023-06-30 09:35:45 -04:00
github-actions[bot]
f1e5610a73 Bump version in master (#14228)
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: crenshaw-dev <crenshaw-dev@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-06-30 09:34:55 -04:00
dependabot[bot]
092b3d132f chore(deps): bump github.com/aws/aws-sdk-go from 1.44.292 to 1.44.293 (#14278)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.292 to 1.44.293.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.292...v1.44.293)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-06-30 09:29:39 -04:00
dependabot[bot]
1c2f279984 chore(deps-dev): bump codecov from 3.7.2 to 3.8.3 in /ui (#12745)
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.7.2 to 3.8.3.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Changelog](https://github.com/codecov/codecov-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-node/compare/v3.7.2...v3.8.3)

---
updated-dependencies:
- dependency-name: codecov
  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>
2023-06-30 12:08:06 +00:00
hongzhou.chen
1801664e07 chore: remove useless lines from argocd_repo_server.go (#14154)
Signed-off-by: hongzhou.chen <f13ichanhz@gmail.com>
2023-06-30 14:03:25 +03:00
omerfsen
4d2cd06f86 docs: Add Documentation for Istio (#14197) 2023-06-29 20:41:56 +03:00
dependabot[bot]
ce2eff27dd chore(deps): bump github.com/aws/aws-sdk-go from 1.44.290 to 1.44.292 (#14265)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.290 to 1.44.292.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.290...v1.44.292)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-06-29 13:22:38 -04:00
dependabot[bot]
6497b7558c chore(deps): bump github.com/alicebob/miniredis/v2 from 2.30.3 to 2.30.4 (#14264)
Bumps [github.com/alicebob/miniredis/v2](https://github.com/alicebob/miniredis) from 2.30.3 to 2.30.4.
- [Release notes](https://github.com/alicebob/miniredis/releases)
- [Changelog](https://github.com/alicebob/miniredis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alicebob/miniredis/compare/v2.30.3...v2.30.4)

---
updated-dependencies:
- dependency-name: github.com/alicebob/miniredis/v2
  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>
2023-06-29 13:22:15 -04:00
dependabot[bot]
3d133b2f55 chore(deps): bump library/busybox in /test/e2e/multiarch-container (#14263)
Bumps library/busybox from `6e49438` to `2376a0c`.

---
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>
2023-06-29 13:21:45 -04:00
dependabot[bot]
93fc27d054 chore(deps): bump docker/setup-buildx-action from 2.7.0 to 2.8.0 (#14262)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](ecf95283f0...16c0bc4a6e)

---
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>
2023-06-29 13:20:37 -04:00
Romain Billot
52e05a10b8 docs(declarative/repo-ssh): url needs git suffix (#13894)
Signed-off-by: Romain Billot <romainbillot3009@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-06-29 17:24:25 +03:00
Clever Hu
e48c9e1cb6 Unified option format (#11258)
Signed-off-by: cleverhu <shouping.hu@daocloud.io>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2023-06-29 11:32:04 +03:00
satoru
19c8edc10e chore: List Flexport as an ArgoCD user (#14260)
Signed-off-by: satoru <satorulogic@gmail.com>
2023-06-29 02:36:33 +00:00
Ho Quoc Dat
00ba833a37 chore: Add VietMoney are using ArgoCD (#14247)
* Update USERS.md

Signed-off-by: Ho Quoc Dat <37528808+hoquocdat@users.noreply.github.com>

* alphabetical order

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

---------

Signed-off-by: Ho Quoc Dat <37528808+hoquocdat@users.noreply.github.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>
2023-06-28 15:14:12 +00:00
dependabot[bot]
e05cf82ad4 chore(deps): bump sigstore/cosign-installer from 3.1.0 to 3.1.1 (#14245)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](d13028333d...6e04d228eb)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  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>
2023-06-28 10:29:11 -04:00
satoru
77fbfc84f9 chore: just use strings.TrimSuffix (#14248)
It's implemented in the same way in the standard library.

Signed-off-by: satoru <satorulogic@gmail.com>
2023-06-28 09:46:49 -04:00
Clever Hu
b50e9f3084 Unified option format (#11257) 2023-06-28 00:27:50 +03:00
Mitch Connors
40e26fcfd1 docs: make argocd-cm appliable (#14215)
* make argocd-cm appliable

Signed-off-by: Mitch Connors <mitchconnors@gmail.com>

* add missing labels

Signed-off-by: Mitch Connors <mitchconnors@gmail.com>

---------

Signed-off-by: Mitch Connors <mitchconnors@gmail.com>
2023-06-27 12:24:26 -04:00
dependabot[bot]
67c752dc1a chore(deps): bump github.com/aws/aws-sdk-go from 1.44.289 to 1.44.290 (#14219)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.289 to 1.44.290.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.289...v1.44.290)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  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>
2023-06-27 16:05:33 +00:00
jannfis
97906bb930 fix: Correctly verify signatures when targetRevision is a branch name (#14214)
* fix: Correctly verify signatures when targetRevision is a branch name

Signed-off-by: jannfis <jann@mistrust.net>

* Add more e2e tests

Signed-off-by: jannfis <jann@mistrust.net>

* Fix a bug and add unit test

Signed-off-by: jannfis <jann@mistrust.net>

---------

Signed-off-by: jannfis <jann@mistrust.net>
2023-06-27 10:56:45 -04:00
1219 changed files with 120374 additions and 35766 deletions

View File

@@ -18,8 +18,10 @@ hack/
docs/
examples/
.github/
!test/fixture
!test/container
!test/e2e/testdata
!test/fixture
!test/remote
!hack/installers
!hack/gpg-wrapper.sh
!hack/git-verify-wrapper.sh

View File

@@ -9,12 +9,6 @@ assignees: ''
Target RC1 date: ___. __, ____
Target GA date: ___. __, ____
- [ ] Create new section in the [Release Planning doc](https://docs.google.com/document/d/1trJIomcgXcfvLw0aYnERrFWfPjQOfYMDJOCh1S8nMBc/edit?usp=sharing)
- [ ] Schedule a Release Planning meeting roughly two weeks before the scheduled Release freeze date by adding it to the community calendar (or delegate this task to someone with write access to the community calendar)
- [ ] Include Zoom link in the invite
- [ ] Post in #argo-cd and #argo-contributors one week before the meeting
- [ ] Post again one hour before the meeting
- [ ] At the meeting, remove issues/PRs from the project's column for that release which have not been “claimed” by at least one Approver (add it to the next column if Approver requests that)
- [ ] 1wk before feature freeze post in #argo-contributors that PRs must be merged by DD-MM-YYYY to be included in the release - ask approvers to drop items from milestone they cant merge
- [ ] At least two days before RC1 date, draft RC blog post and submit it for review (or delegate this task)
- [ ] Cut RC1 (or delegate this task to an Approver and coordinate timing)

View File

@@ -1,6 +1,8 @@
<!--
Note on DCO:
If the DCO action in the integration test fails, one or more of your commits are not signed off. Please click on the *Details* link next to the DCO action for instructions on how to resolve this.
-->
Checklist:
@@ -11,11 +13,12 @@ Checklist:
* [ ] I've updated both the CLI and UI to expose my feature, or I plan to submit a second PR with them.
* [ ] Does this PR require documentation updates?
* [ ] I've updated documentation as required by this PR.
* [ ] Optional. My organization is added to USERS.md.
* [ ] I have signed off all my commits as required by [DCO](https://github.com/argoproj/argoproj/blob/master/community/CONTRIBUTING.md#legal)
* [ ] I have written unit and/or e2e tests for my change. PRs without these are unlikely to be merged.
* [ ] My build is green ([troubleshooting builds](https://argo-cd.readthedocs.io/en/latest/developer-guide/ci/)).
* [ ] My build is green ([troubleshooting builds](https://argo-cd.readthedocs.io/en/latest/developer-guide/ci/)).
* [ ] My new feature complies with the [feature status](https://github.com/argoproj/argoproj/blob/master/community/feature-status.md) guidelines.
* [ ] I have added a brief description of why this PR is necessary and/or what this PR solves.
* [ ] Optional. My organization is added to USERS.md.
* [ ] Optional. For bug fixes, I've indicated what older releases this fix should be cherry-picked into (this may or may not happen depending on risk/complexity).
Please see [Contribution FAQs](https://argo-cd.readthedocs.io/en/latest/developer-guide/faq/) if you have questions about your pull-request.
<!-- Please see [Contribution FAQs](https://argo-cd.readthedocs.io/en/latest/developer-guide/faq/) if you have questions about your pull-request. -->

View File

@@ -16,7 +16,7 @@
## image-reuse.yaml
- The resuable workflow can be used to publish or build images with multiple container registries(Quay,GHCR, dockerhub), and then sign them with cosign when an image is published.
- A GO version `must` be specified e.g. 1.19
- A GO version `must` be specified e.g. 1.21
- The image name for each registry *must* contain the tag. Note: multiple tags are allowed for each registry using a CSV type.
- Multiple platforms can be specified e.g. linux/amd64,linux/arm64
- Images are not published by default. A boolean value must be set to `true` to push images.

View File

@@ -1,5 +1,5 @@
name: Integration tests
on:
on:
push:
branches:
- 'master'
@@ -13,7 +13,7 @@ on:
env:
# Golang version to use across CI steps
GOLANG_VERSION: '1.20'
GOLANG_VERSION: '1.21'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -23,36 +23,62 @@ permissions:
contents: read
jobs:
changes:
runs-on: ubuntu-latest
outputs:
backend: ${{ steps.filter.outputs.backend_any_changed }}
frontend: ${{ steps.filter.outputs.frontend_any_changed }}
steps:
- uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- uses: tj-actions/changed-files@90a06d6ba9543371ab4df8eeca0be07ca6054959 # v42.0.2
id: filter
with:
# Any file which is not under docs/, ui/ or is not a markdown file is counted as a backend file
files_yaml: |
backend:
- '!ui/**'
- '!**.md'
- '!**/*.md'
- '!docs/**'
frontend:
- 'ui/**'
- Dockerfile
check-go:
name: Ensure Go modules synchronicity
if: ${{ needs.changes.outputs.backend == 'true' }}
runs-on: ubuntu-22.04
needs:
- changes
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.0
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Download all Go modules
run: |
go mod download
- name: Check for tidyness of go.mod and go.sum
- name: Check for tidiness of go.mod and go.sum
run: |
go mod tidy
git diff --exit-code -- .
build-go:
name: Build & cache Go code
if: ${{ needs.changes.outputs.backend == 'true' }}
runs-on: ubuntu-22.04
needs:
- changes
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.0
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Restore go build cache
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
@@ -67,37 +93,42 @@ jobs:
contents: read # for actions/checkout to fetch code
pull-requests: read # for golangci/golangci-lint-action to fetch pull requests
name: Lint Go code
if: ${{ needs.changes.outputs.backend == 'true' }}
runs-on: ubuntu-22.04
needs:
- changes
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.0
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Run golangci-lint
uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0
uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0
with:
version: v1.51.0
args: --timeout 10m --exclude SA5011 --verbose
version: v1.54.0
args: --enable gofmt --timeout 10m --exclude SA5011 --verbose --max-issues-per-linter 0 --max-same-issues 0
test-go:
name: Run unit tests for Go packages
if: ${{ needs.changes.outputs.backend == 'true' }}
runs-on: ubuntu-22.04
needs:
- build-go
- changes
env:
GITHUB_TOKEN: ${{ secrets.E2E_TEST_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITLAB_TOKEN: ${{ secrets.E2E_TEST_GITLAB_TOKEN }}
GITLAB_TOKEN: ${{ secrets.E2E_TEST_GITLAB_TOKEN }}
steps:
- name: Create checkout directory
run: mkdir -p ~/go/src/github.com/argoproj
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Create symlink in GOPATH
run: ln -s $(pwd) ~/go/src/github.com/argoproj/argo-cd
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.0
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Install required packages
@@ -117,7 +148,7 @@ jobs:
run: |
echo "/usr/local/bin" >> $GITHUB_PATH
- name: Restore go build cache
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
@@ -138,33 +169,35 @@ jobs:
- name: Run all unit tests
run: make test-local
- name: Generate code coverage artifacts
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: code-coverage
path: coverage.out
- name: Generate test results artifacts
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: test-results
path: test-results/
test-go-race:
name: Run unit tests with -race for Go packages
if: ${{ needs.changes.outputs.backend == 'true' }}
runs-on: ubuntu-22.04
needs:
- build-go
- changes
env:
GITHUB_TOKEN: ${{ secrets.E2E_TEST_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITLAB_TOKEN: ${{ secrets.E2E_TEST_GITLAB_TOKEN }}
GITLAB_TOKEN: ${{ secrets.E2E_TEST_GITLAB_TOKEN }}
steps:
- name: Create checkout directory
run: mkdir -p ~/go/src/github.com/argoproj
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Create symlink in GOPATH
run: ln -s $(pwd) ~/go/src/github.com/argoproj/argo-cd
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.0
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Install required packages
@@ -184,7 +217,7 @@ jobs:
run: |
echo "/usr/local/bin" >> $GITHUB_PATH
- name: Restore go build cache
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
@@ -205,19 +238,22 @@ jobs:
- name: Run all unit tests
run: make test-race-local
- name: Generate test results artifacts
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: race-results
path: test-results/
codegen:
name: Check changes to generated code
if: ${{ needs.changes.outputs.backend == 'true' }}
runs-on: ubuntu-22.04
needs:
- changes
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.0
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Create symlink in GOPATH
@@ -260,17 +296,20 @@ jobs:
build-ui:
name: Build, test & lint UI code
if: ${{ needs.changes.outputs.frontend == 'true' }}
runs-on: ubuntu-22.04
needs:
- changes
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup NodeJS
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1
with:
node-version: '20.3.1'
node-version: '21.6.1'
- name: Restore node dependency cache
id: cache-dependencies
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with:
path: ui/node_modules
key: ${{ runner.os }}-node-dep-v2-${{ hashFiles('**/yarn.lock') }}
@@ -292,20 +331,22 @@ jobs:
analyze:
name: Process & analyze test artifacts
if: ${{ needs.changes.outputs.backend == 'true' || needs.changes.outputs.frontend == 'true' }}
runs-on: ubuntu-22.04
needs:
- test-go
- build-ui
- changes
env:
sonar_secret: ${{ secrets.SONAR_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
- name: Restore node dependency cache
id: cache-dependencies
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with:
path: ui/node_modules
key: ${{ runner.os }}-node-dep-v2-${{ hashFiles('**/yarn.lock') }}
@@ -315,7 +356,7 @@ jobs:
- name: Create test-results directory
run: |
mkdir -p test-results
- name: Get code coverage artifiact
- name: Get code coverage artifact
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: code-coverage
@@ -336,34 +377,37 @@ jobs:
SCANNER_PATH: /tmp/cache/scanner
OS: linux
run: |
# We do not use the provided action, because it does contain an old
# version of the scanner, and also takes time to build.
set -e
mkdir -p ${SCANNER_PATH}
export SONAR_USER_HOME=${SCANNER_PATH}/.sonar
if [[ ! -x "${SCANNER_PATH}/sonar-scanner-${SCANNER_VERSION}-${OS}/bin/sonar-scanner" ]]; then
curl -Ol https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SCANNER_VERSION}-${OS}.zip
unzip -qq -o sonar-scanner-cli-${SCANNER_VERSION}-${OS}.zip -d ${SCANNER_PATH}
fi
chmod +x ${SCANNER_PATH}/sonar-scanner-${SCANNER_VERSION}-${OS}/bin/sonar-scanner
chmod +x ${SCANNER_PATH}/sonar-scanner-${SCANNER_VERSION}-${OS}/jre/bin/java
# Explicitly set NODE_MODULES
export NODE_MODULES=${PWD}/ui/node_modules
export NODE_PATH=${PWD}/ui/node_modules
${SCANNER_PATH}/sonar-scanner-${SCANNER_VERSION}-${OS}/bin/sonar-scanner
# We do not use the provided action, because it does contain an old
# version of the scanner, and also takes time to build.
set -e
mkdir -p ${SCANNER_PATH}
export SONAR_USER_HOME=${SCANNER_PATH}/.sonar
if [[ ! -x "${SCANNER_PATH}/sonar-scanner-${SCANNER_VERSION}-${OS}/bin/sonar-scanner" ]]; then
curl -Ol https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SCANNER_VERSION}-${OS}.zip
unzip -qq -o sonar-scanner-cli-${SCANNER_VERSION}-${OS}.zip -d ${SCANNER_PATH}
fi
chmod +x ${SCANNER_PATH}/sonar-scanner-${SCANNER_VERSION}-${OS}/bin/sonar-scanner
chmod +x ${SCANNER_PATH}/sonar-scanner-${SCANNER_VERSION}-${OS}/jre/bin/java
# Explicitly set NODE_MODULES
export NODE_MODULES=${PWD}/ui/node_modules
export NODE_PATH=${PWD}/ui/node_modules
${SCANNER_PATH}/sonar-scanner-${SCANNER_VERSION}-${OS}/bin/sonar-scanner
if: env.sonar_secret != ''
test-e2e:
name: Run end-to-end tests
if: ${{ needs.changes.outputs.backend == 'true' }}
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
k3s-version: [v1.27.2, v1.26.0, v1.25.4, v1.24.3]
needs:
k3s-version: [v1.29.1, v1.28.6, v1.27.10, v1.26.13, v1.25.16]
needs:
- build-go
- changes
env:
GOPATH: /home/runner/go
ARGOCD_FAKE_IN_CLUSTER: "true"
@@ -373,15 +417,15 @@ jobs:
ARGOCD_E2E_K3S: "true"
ARGOCD_IN_CI: "true"
ARGOCD_E2E_APISERVER_PORT: "8088"
ARGOCD_APPLICATION_NAMESPACES: "argocd-e2e-external"
ARGOCD_APPLICATION_NAMESPACES: "argocd-e2e-external,argocd-e2e-external-2"
ARGOCD_SERVER: "127.0.0.1:8088"
GITHUB_TOKEN: ${{ secrets.E2E_TEST_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITLAB_TOKEN: ${{ secrets.E2E_TEST_GITLAB_TOKEN }}
GITLAB_TOKEN: ${{ secrets.E2E_TEST_GITLAB_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.0
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: GH actions workaround - Kill XSP4 process
@@ -400,7 +444,7 @@ jobs:
sudo chmod go-r $HOME/.kube/config
kubectl version
- name: Restore go build cache
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
@@ -426,9 +470,9 @@ jobs:
git config --global user.email "john.doe@example.com"
- name: Pull Docker image required for tests
run: |
docker pull ghcr.io/dexidp/dex:v2.36.0
docker pull ghcr.io/dexidp/dex:v2.38.0
docker pull argoproj/argo-cd-ci-builder:v1.0.0
docker pull redis:7.0.11-alpine
docker pull redis:7.0.14-alpine
- name: Create target directory for binaries in the build-process
run: |
mkdir -p dist
@@ -456,8 +500,31 @@ jobs:
set -x
make test-e2e-local
- name: Upload e2e-server logs
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: e2e-server-k8s${{ matrix.k3s-version }}.log
path: /tmp/e2e-server.log
if: ${{ failure() }}
# workaround for status checks -- check this one job instead of each individual E2E job in the matrix
# this allows us to skip the entire matrix when it doesn't need to run while still having accurate status checks
# see:
# https://github.com/argoproj/argo-workflows/pull/12006
# https://github.com/orgs/community/discussions/9141#discussioncomment-2296809
# https://github.com/orgs/community/discussions/26822#discussioncomment-3305794
test-e2e-composite-result:
name: E2E Tests - Composite result
if: ${{ always() }}
needs:
- test-e2e
- changes
runs-on: ubuntu-22.04
steps:
- run: |
result="${{ needs.test-e2e.result }}"
# mark as successful even if skipped
if [[ $result == "success" || $result == "skipped" ]]; then
exit 0
else
exit 1
fi

View File

@@ -27,10 +27,15 @@ jobs:
# CodeQL runs on ubuntu-latest and windows-latest
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
# Use correct go version. https://github.com/github/codeql-action/issues/1842#issuecomment-1704398087
- name: Setup Golang
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version-file: go.mod
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL

View File

@@ -58,28 +58,26 @@ jobs:
image-digest: ${{ steps.image.outputs.digest }}
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.3.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
if: ${{ github.ref_type == 'tag'}}
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.3.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
if: ${{ github.ref_type != 'tag'}}
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
with:
go-version: ${{ inputs.go-version }}
- name: Install cosign
uses: sigstore/cosign-installer@d13028333d784fcc802b67ec924bcebe75aa0a5f # v3.1.0
with:
cosign-release: 'v2.0.0'
uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0
- uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2.2.0
- uses: docker/setup-buildx-action@ecf95283f03858871ff00b787d79c419715afc34 # v2.7.0
- uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
- name: Setup tags for container image as a CSV type
run: |
@@ -106,7 +104,7 @@ jobs:
echo 'EOF' >> $GITHUB_ENV
- name: Login to Quay.io
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
with:
registry: quay.io
username: ${{ secrets.quay_username }}
@@ -114,7 +112,7 @@ jobs:
if: ${{ inputs.quay_image_name && inputs.push }}
- name: Login to GitHub Container Registry
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
with:
registry: ghcr.io
username: ${{ secrets.ghcr_username }}
@@ -122,7 +120,7 @@ jobs:
if: ${{ inputs.ghcr_image_name && inputs.push }}
- name: Login to dockerhub Container Registry
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
with:
username: ${{ secrets.docker_username }}
password: ${{ secrets.docker_password }}
@@ -135,9 +133,17 @@ jobs:
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
echo "GIT_TREE_STATE=$(if [ -z "`git status --porcelain`" ]; then echo "clean" ; else echo "dirty"; fi)" >> $GITHUB_ENV
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@4d9e71b726748f254fe64fa44d273194bd18ec91
with:
large-packages: false
docker-images: false
swap-storage: false
tool-cache: false
- name: Build and push container image
id: image
uses: docker/build-push-action@2eb1c1961a95fc15694676618e422e8ba1d63825 #v4.1.1
uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 #v5.3.0
with:
context: .
platforms: ${{ inputs.platforms }}

View File

@@ -25,7 +25,7 @@ jobs:
image-tag: ${{ steps.image.outputs.tag}}
platforms: ${{ steps.platforms.outputs.platforms }}
steps:
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
- uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Set image tag for ghcr
run: echo "tag=$(cat ./VERSION)-${GITHUB_SHA::8}" >> $GITHUB_OUTPUT
@@ -52,7 +52,7 @@ 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.20
go-version: 1.21
platforms: ${{ needs.set-vars.outputs.platforms }}
push: false
@@ -68,7 +68,7 @@ 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.20
go-version: 1.21
platforms: ${{ needs.set-vars.outputs.platforms }}
push: true
secrets:
@@ -86,7 +86,7 @@ jobs:
packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues)
if: ${{ github.repository == 'argoproj/argo-cd' && github.event_name == 'push' }}
# 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
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.7.0
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0
with:
image: ghcr.io/argoproj/argo-cd/argocd
digest: ${{ needs.build-and-publish.outputs.image-digest }}
@@ -104,7 +104,7 @@ jobs:
if: ${{ github.repository == 'argoproj/argo-cd' && github.event_name == 'push' }}
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.3.0
- uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- run: git clone "https://$TOKEN@github.com/argoproj/argoproj-deployments"
env:
TOKEN: ${{ secrets.TOKEN }}

View File

@@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.2.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -10,7 +10,7 @@ on:
permissions: {}
env:
GOLANG_VERSION: '1.20' # Note: go-version must also be set in job argocd-image.with.go-version
GOLANG_VERSION: '1.21' # Note: go-version must also be set in job argocd-image.with.go-version
jobs:
argocd-image:
@@ -23,7 +23,7 @@ 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.20
go-version: 1.21
platforms: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le
push: true
secrets:
@@ -38,7 +38,7 @@ jobs:
packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues)
# 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
if: github.repository == 'argoproj/argo-cd'
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.7.0
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0
with:
image: quay.io/argoproj/argocd
digest: ${{ needs.argocd-image.outputs.image-digest }}
@@ -59,7 +59,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
@@ -77,7 +77,7 @@ jobs:
fi
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.0
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
@@ -87,8 +87,16 @@ jobs:
echo "KUBECTL_VERSION=$(go list -m k8s.io/client-go | head -n 1 | rev | cut -d' ' -f1 | rev)" >> $GITHUB_ENV
echo "GIT_TREE_STATE=$(if [ -z "`git status --porcelain`" ]; then echo "clean" ; else echo "dirty"; fi)" >> $GITHUB_ENV
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@4d9e71b726748f254fe64fa44d273194bd18ec91
with:
large-packages: false
docker-images: false
swap-storage: false
tool-cache: false
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@336e29918d653399e599bfca99fadc1d7ffbc9f7 # v4.3.0
uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0
id: run-goreleaser
with:
version: latest
@@ -120,39 +128,35 @@ jobs:
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
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.7.0
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.10.0
with:
base64-subjects: "${{ needs.goreleaser.outputs.hashes }}"
provenance-name: "argocd-cli.intoto.jsonl"
upload-assets: true
generate-sbom:
name: Create Sbom and sign assets
name: Create SBOM and generate hash
needs:
- argocd-image
- goreleaser
permissions:
contents: write # Needed for release uploads
id-token: write # Needed for signing Sbom
outputs:
hashes: ${{ steps.sbom-hash.outputs.hashes}}
if: github.repository == 'argoproj/argo-cd'
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.2.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Golang
uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Install cosign
uses: sigstore/cosign-installer@d13028333d784fcc802b67ec924bcebe75aa0a5f # v3.1.0
with:
cosign-release: 'v2.0.0'
- name: Generate SBOM (spdx)
id: spdx-builder
env:
@@ -182,23 +186,38 @@ jobs:
fi
cd /tmp && tar -zcf sbom.tar.gz *.spdx
- name: Sign SBOM
- name: Generate SBOM hash
shell: bash
id: sbom-hash
run: |
cosign sign-blob \
--output-certificate=/tmp/sbom.tar.gz.pem \
--output-signature=/tmp/sbom.tar.gz.sig \
-y \
/tmp/sbom.tar.gz
- name: Upload SBOM and signature assets
# sha256sum generates sha256 hash for sbom.
# 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@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
/tmp/sbom.tar.*
/tmp/sbom.tar.gz
sbom-provenance:
needs: [generate-sbom]
permissions:
actions: read # for detecting the Github Actions environment
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
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.10.0
with:
base64-subjects: "${{ needs.generate-sbom.outputs.hashes }}"
provenance-name: "argocd-sbom.intoto.jsonl"
upload-assets: true
post-release:
needs:
- argocd-image
@@ -211,7 +230,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.2.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
@@ -254,11 +273,13 @@ jobs:
set -xue
SOURCE_TAG=${{ github.ref_name }}
VERSION_REF="${SOURCE_TAG#*v}"
COMMIT_HASH=$(git rev-parse HEAD)
if echo "$VERSION_REF" | grep -E -- '^[0-9]+\.[0-9]+\.0-rc1';then
VERSION=$(awk 'BEGIN {FS=OFS="."} {$2++; print}' <<< "${VERSION_REF%-rc1}")
echo "Updating VERSION to: $VERSION"
echo "UPDATE_VERSION=true" >> $GITHUB_ENV
echo "NEW_VERSION=$VERSION" >> $GITHUB_ENV
echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_ENV
else
echo "Not updating VERSION"
echo "UPDATE_VERSION=false" >> $GITHUB_ENV
@@ -267,6 +288,10 @@ jobs:
- name: Update VERSION on master branch
run: |
echo ${{ env.NEW_VERSION }} > VERSION
# Replace the 'project-release: vX.X.X-rcX' line in SECURITY-INSIGHTS.yml
sed -i "s/project-release: v.*$/project-release: v${{ env.NEW_VERSION }}/" SECURITY-INSIGHTS.yml
# Update the 'commit-hash: XXXXXXX' line in SECURITY-INSIGHTS.yml
sed -i "s/commit-hash: .*/commit-hash: ${{ env.NEW_VERSION }}/" SECURITY-INSIGHTS.yml
if: ${{ env.UPDATE_VERSION == 'true' }}
- name: Create PR to update VERSION on master branch

View File

@@ -30,12 +30,12 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0
uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
with:
results_file: results.sarif
results_format: sarif
@@ -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@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: SARIF file
path: results.sarif
@@ -62,6 +62,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # v2.2.1
uses: github/codeql-action/upload-sarif@83a02f7883b12e0e4e1a146174f5e2292a01e601 # v2.16.4
with:
sarif_file: results.sarif

View File

@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Build reports

2
.gitpod.Dockerfile vendored
View File

@@ -1,4 +1,4 @@
FROM gitpod/workspace-full@sha256:d5787229cd062aceae91109f1690013d3f25062916492fb7f444d13de3186178
FROM gitpod/workspace-full@sha256:511cecde4dc129ca9eb4cc4c479d61f95e5485ebe320a07f5b902f11899956a3
USER root

View File

@@ -114,7 +114,7 @@ changelog:
exclude:
- '^test:'
- '^.*?Bump(\([[:word:]]+\))?.+$'
- '^.*?[Bot](\([[:word:]]+\))?.+$'
- '^.*?\[Bot\](\([[:word:]]+\))?.+$'
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json

12
CODEOWNERS Normal file
View File

@@ -0,0 +1,12 @@
# All
** @argoproj/argocd-approvers
# Docs
/docs/** @argoproj/argocd-approvers @argoproj/argocd-approvers-docs
/USERS.md @argoproj/argocd-approvers @argoproj/argocd-approvers-docs
/README.md @argoproj/argocd-approvers @argoproj/argocd-approvers-docs
/mkdocs.yml @argoproj/argocd-approvers @argoproj/argocd-approvers-docs
# CI
/.github/** @argoproj/argocd-approvers @argoproj/argocd-approvers-ci
/.goreleaser.yaml @argoproj/argocd-approvers @argoproj/argocd-approvers-ci

1
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1 @@
Please refer to [the Contribution Guide](https://argo-cd.readthedocs.io/en/latest/developer-guide/code-contributions/)

View File

@@ -1,12 +1,12 @@
ARG BASE_IMAGE=docker.io/library/ubuntu:22.04@sha256:ac58ff7fe25edc58bdf0067ca99df00014dbd032e2246d30a722fa348fd799a5
ARG BASE_IMAGE=docker.io/library/ubuntu:22.04@sha256:0bced47fffa3361afa981854fcabcd4577cd43cebbb808cea2b1f33a3dd7f508
####################################################################################################
# Builder image
# 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.20.5@sha256:4b1fc02d16fca272e5e6e6adc98396219b43ef663a377eef4a97e881d364393f AS builder
FROM docker.io/library/golang:1.21.10@sha256:16438a8e66c0c984f732e815ee5b7d715b8e33e81bac6d6a3750b1067744e7ca AS builder
RUN echo 'deb http://deb.debian.org/debian buster-backports main' >> /etc/apt/sources.list
RUN echo 'deb http://archive.debian.org/debian buster-backports main' >> /etc/apt/sources.list
RUN apt-get update && apt-get install --no-install-recommends -y \
openssh-server \
@@ -28,7 +28,7 @@ WORKDIR /tmp
COPY hack/install.sh hack/tool-versions.sh ./
COPY hack/installers installers
RUN ./install.sh helm-linux && \
RUN ./install.sh helm && \
INSTALL_PATH=/usr/local/bin ./install.sh kustomize
####################################################################################################
@@ -51,7 +51,7 @@ RUN groupadd -g $ARGOCD_USER_ID argocd && \
apt-get update && \
apt-get dist-upgrade -y && \
apt-get install -y \
git git-lfs tini gpg tzdata && \
git git-lfs tini gpg tzdata connect-proxy && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
@@ -83,7 +83,7 @@ WORKDIR /home/argocd
####################################################################################################
# Argo CD UI stage
####################################################################################################
FROM --platform=$BUILDPLATFORM docker.io/library/node:20.3.1@sha256:2f0b0c15f97441defa812268ee943bbfaaf666ea6cf7cac62ee3f127906b35c6 AS argocd-ui
FROM --platform=$BUILDPLATFORM docker.io/library/node:21.6.2@sha256:65998e325b06014d4f1417a8a6afb1540d1ac66521cca76f2221a6953947f9ee 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.20.5@sha256:4b1fc02d16fca272e5e6e6adc98396219b43ef663a377eef4a97e881d364393f AS argocd-build
FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.21.10@sha256:16438a8e66c0c984f732e815ee5b7d715b8e33e81bac6d6a3750b1067744e7ca AS argocd-build
WORKDIR /go/src/github.com/argoproj/argo-cd

124
Makefile
View File

@@ -3,6 +3,7 @@ CURRENT_DIR=$(shell pwd)
DIST_DIR=${CURRENT_DIR}/dist
CLI_NAME=argocd
BIN_NAME=argocd
CGO_FLAG=0
GEN_RESOURCES_CLI_NAME=argocd-resources-gen
@@ -22,14 +23,21 @@ KUBECTL_VERSION=$(shell go list -m k8s.io/client-go | head -n 1 | rev | cut -d'
GOPATH?=$(shell if test -x `which go`; then go env GOPATH; else echo "$(HOME)/go"; fi)
GOCACHE?=$(HOME)/.cache/go-build
# Docker command to use
DOCKER?=docker
ifeq ($(DOCKER),podman)
PODMAN_ARGS=--userns keep-id
else
PODMAN_ARGS=
endif
DOCKER_SRCDIR?=$(GOPATH)/src
DOCKER_WORKDIR?=/go/src/github.com/argoproj/argo-cd
ARGOCD_PROCFILE?=Procfile
# Strict mode has been disabled in latest versions of mkdocs-material.
# Thus pointing to the older image of mkdocs-material matching the version used by argo-cd.
MKDOCS_DOCKER_IMAGE?=squidfunk/mkdocs-material:4.1.1
# pointing to python 3.7 to match https://github.com/argoproj/argo-cd/blob/master/.readthedocs.yml
MKDOCS_DOCKER_IMAGE?=python:3.7-alpine
MKDOCS_RUN_ARGS?=
# Configuration for building argocd-test-tools image
@@ -49,7 +57,7 @@ ARGOCD_E2E_DEX_PORT?=5556
ARGOCD_E2E_YARN_HOST?=localhost
ARGOCD_E2E_DISABLE_AUTH?=
ARGOCD_E2E_TEST_TIMEOUT?=45m
ARGOCD_E2E_TEST_TIMEOUT?=90m
ARGOCD_IN_CI?=false
ARGOCD_TEST_E2E?=true
@@ -76,7 +84,7 @@ SUDO?=
# Runs any command in the argocd-test-utils container in server mode
# Server mode container will start with uid 0 and drop privileges during runtime
define run-in-test-server
$(SUDO) docker run --rm -it \
$(SUDO) $(DOCKER) run --rm -it \
--name argocd-test-server \
-u $(CONTAINER_UID):$(CONTAINER_GID) \
-e USER_ID=$(CONTAINER_UID) \
@@ -101,13 +109,14 @@ define run-in-test-server
-p ${ARGOCD_E2E_APISERVER_PORT}:8080 \
-p 4000:4000 \
-p 5000:5000 \
$(PODMAN_ARGS) \
$(TEST_TOOLS_PREFIX)$(TEST_TOOLS_IMAGE):$(TEST_TOOLS_TAG) \
bash -c "$(1)"
endef
# Runs any command in the argocd-test-utils container in client mode
define run-in-test-client
$(SUDO) docker run --rm -it \
$(SUDO) $(DOCKER) run --rm -it \
--name argocd-test-client \
-u $(CONTAINER_UID):$(CONTAINER_GID) \
-e HOME=/home/user \
@@ -122,13 +131,14 @@ define run-in-test-client
-v ${HOME}/.kube:/home/user/.kube${VOLUME_MOUNT} \
-v /tmp:/tmp${VOLUME_MOUNT} \
-w ${DOCKER_WORKDIR} \
$(PODMAN_ARGS) \
$(TEST_TOOLS_PREFIX)$(TEST_TOOLS_IMAGE):$(TEST_TOOLS_TAG) \
bash -c "$(1)"
endef
#
define exec-in-test-server
$(SUDO) docker exec -it -u $(CONTAINER_UID):$(CONTAINER_GID) -e ARGOCD_E2E_RECORD=$(ARGOCD_E2E_RECORD) -e ARGOCD_E2E_K3S=$(ARGOCD_E2E_K3S) argocd-test-server $(1)
$(SUDO) $(DOCKER) exec -it -u $(CONTAINER_UID):$(CONTAINER_GID) -e ARGOCD_E2E_RECORD=$(ARGOCD_E2E_RECORD) -e ARGOCD_E2E_K3S=$(ARGOCD_E2E_K3S) argocd-test-server $(1)
endef
PATH:=$(PATH):$(PWD)/hack
@@ -175,29 +185,21 @@ endif
.PHONY: all
all: cli image
# We have some legacy requirements for being checked out within $GOPATH.
# The ensure-gopath target can be used as dependency to ensure we are running
# within these boundaries.
.PHONY: ensure-gopath
ensure-gopath:
ifneq ("$(PWD)","$(LEGACY_PATH)")
@echo "Due to legacy requirements for codegen, repository needs to be checked out within \$$GOPATH"
@echo "Location of this repo should be '$(LEGACY_PATH)' but is '$(PWD)'"
@exit 1
endif
.PHONY: gogen
gogen: ensure-gopath
gogen:
export GO111MODULE=off
go generate ./util/argo/...
.PHONY: protogen
protogen: ensure-gopath mod-vendor-local
protogen: mod-vendor-local protogen-fast
.PHONY: protogen-fast
protogen-fast:
export GO111MODULE=off
./hack/generate-proto.sh
.PHONY: openapigen
openapigen: ensure-gopath
openapigen:
export GO111MODULE=off
./hack/update-openapi.sh
@@ -212,19 +214,22 @@ notification-docs:
.PHONY: clientgen
clientgen: ensure-gopath
clientgen:
export GO111MODULE=off
./hack/update-codegen.sh
.PHONY: clidocsgen
clidocsgen: ensure-gopath
clidocsgen:
go run tools/cmd-docs/main.go
.PHONY: codegen-local
codegen-local: ensure-gopath mod-vendor-local gogen protogen clientgen openapigen clidocsgen manifests-local notification-docs notification-catalog
codegen-local: mod-vendor-local gogen protogen clientgen openapigen clidocsgen manifests-local notification-docs notification-catalog
rm -rf vendor/
.PHONY: codegen-local-fast
codegen-local-fast: gogen protogen-fast clientgen openapigen clidocsgen manifests-local notification-docs notification-catalog
.PHONY: codegen
codegen: test-tools-image
$(call run-in-test-client,make codegen-local)
@@ -235,11 +240,11 @@ cli: test-tools-image
.PHONY: cli-local
cli-local: clean-debug
CGO_ENABLED=0 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/${CLI_NAME} ./cmd
CGO_ENABLED=${CGO_FLAG} GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/${CLI_NAME} ./cmd
.PHONY: gen-resources-cli-local
gen-resources-cli-local: clean-debug
CGO_ENABLED=0 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/${GEN_RESOURCES_CLI_NAME} ./hack/gen-resources/cmd
CGO_ENABLED=${CGO_FLAG} GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/${GEN_RESOURCES_CLI_NAME} ./hack/gen-resources/cmd
.PHONY: release-cli
release-cli: clean-debug build-ui
@@ -254,8 +259,8 @@ release-cli: clean-debug build-ui
.PHONY: test-tools-image
test-tools-image:
ifndef SKIP_TEST_TOOLS_IMAGE
$(SUDO) docker build --build-arg UID=$(CONTAINER_UID) -t $(TEST_TOOLS_PREFIX)$(TEST_TOOLS_IMAGE) -f test/container/Dockerfile .
$(SUDO) docker tag $(TEST_TOOLS_PREFIX)$(TEST_TOOLS_IMAGE) $(TEST_TOOLS_PREFIX)$(TEST_TOOLS_IMAGE):$(TEST_TOOLS_TAG)
$(SUDO) $(DOCKER) build --build-arg UID=$(CONTAINER_UID) -t $(TEST_TOOLS_PREFIX)$(TEST_TOOLS_IMAGE) -f test/container/Dockerfile .
$(SUDO) $(DOCKER) tag $(TEST_TOOLS_PREFIX)$(TEST_TOOLS_IMAGE) $(TEST_TOOLS_PREFIX)$(TEST_TOOLS_IMAGE):$(TEST_TOOLS_TAG)
endif
.PHONY: manifests-local
@@ -269,25 +274,25 @@ manifests: test-tools-image
# consolidated binary for cli, util, server, repo-server, controller
.PHONY: argocd-all
argocd-all: clean-debug
CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/${BIN_NAME} ./cmd
CGO_ENABLED=${CGO_FLAG} GOOS=${GOOS} GOARCH=${GOARCH} GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/${BIN_NAME} ./cmd
.PHONY: server
server: clean-debug
CGO_ENABLED=0 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd-server ./cmd
CGO_ENABLED=${CGO_FLAG} GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd-server ./cmd
.PHONY: repo-server
repo-server:
CGO_ENABLED=0 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd-repo-server ./cmd
CGO_ENABLED=${CGO_FLAG} GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd-repo-server ./cmd
.PHONY: controller
controller:
CGO_ENABLED=0 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd-application-controller ./cmd
CGO_ENABLED=${CGO_FLAG} GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd-application-controller ./cmd
.PHONY: build-ui
build-ui:
DOCKER_BUILDKIT=1 docker build -t argocd-ui --platform=$(TARGET_ARCH) --target argocd-ui .
DOCKER_BUILDKIT=1 $(DOCKER) build -t argocd-ui --platform=$(TARGET_ARCH) --target argocd-ui .
find ./ui/dist -type f -not -name gitkeep -delete
docker run -v ${CURRENT_DIR}/ui/dist/app:/tmp/app --rm -t argocd-ui sh -c 'cp -r ./dist/app/* /tmp/app/'
$(DOCKER) run -v ${CURRENT_DIR}/ui/dist/app:/tmp/app --rm -t argocd-ui sh -c 'cp -r ./dist/app/* /tmp/app/'
.PHONY: image
ifeq ($(DEV_IMAGE), true)
@@ -296,29 +301,29 @@ ifeq ($(DEV_IMAGE), true)
# the dist directory is under .dockerignore.
IMAGE_TAG="dev-$(shell git describe --always --dirty)"
image: build-ui
DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t argocd-base --target argocd-base .
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd ./cmd
DOCKER_BUILDKIT=1 $(DOCKER) build --platform=$(TARGET_ARCH) -t argocd-base --target argocd-base .
CGO_ENABLED=${CGO_FLAG} GOOS=linux GOARCH=amd64 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd ./cmd
ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-server
ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-application-controller
ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-repo-server
ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-cmp-server
ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-dex
cp Dockerfile.dev dist
DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) -f dist/Dockerfile.dev dist
DOCKER_BUILDKIT=1 $(DOCKER) build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) -f dist/Dockerfile.dev dist
else
image:
DOCKER_BUILDKIT=1 docker build -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) --platform=$(TARGET_ARCH) .
DOCKER_BUILDKIT=1 $(DOCKER) build -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) --platform=$(TARGET_ARCH) .
endif
@if [ "$(DOCKER_PUSH)" = "true" ] ; then docker push $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) ; fi
@if [ "$(DOCKER_PUSH)" = "true" ] ; then $(DOCKER) push $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) ; fi
.PHONY: armimage
armimage:
docker build -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG)-arm .
$(DOCKER) build -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG)-arm .
.PHONY: builder-image
builder-image:
docker build -t $(IMAGE_PREFIX)argo-cd-ci-builder:$(IMAGE_TAG) --target builder .
@if [ "$(DOCKER_PUSH)" = "true" ] ; then docker push $(IMAGE_PREFIX)argo-cd-ci-builder:$(IMAGE_TAG) ; fi
$(DOCKER) build -t $(IMAGE_PREFIX)argo-cd-ci-builder:$(IMAGE_TAG) --target builder .
@if [ "$(DOCKER_PUSH)" = "true" ] ; then $(DOCKER) push $(IMAGE_PREFIX)argo-cd-ci-builder:$(IMAGE_TAG) ; fi
.PHONY: mod-download
mod-download: test-tools-image
@@ -352,7 +357,7 @@ lint-local:
golangci-lint --version
# NOTE: If you get a "Killed" OOM message, try reducing the value of GOGC
# See https://github.com/golangci/golangci-lint#memory-usage-of-golangci-lint
GOGC=$(ARGOCD_LINT_GOGC) GOMAXPROCS=2 golangci-lint run --fix --verbose --timeout 3000s
GOGC=$(ARGOCD_LINT_GOGC) GOMAXPROCS=2 golangci-lint run --enable gofmt --fix --verbose --timeout 3000s --max-issues-per-linter 0 --max-same-issues 0
.PHONY: lint-ui
lint-ui: test-tools-image
@@ -386,9 +391,9 @@ test: test-tools-image
.PHONY: test-local
test-local:
if test "$(TEST_MODULE)" = ""; then \
./hack/test.sh -coverprofile=coverage.out `go list ./... | grep -v 'test/e2e'`; \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES=`go list ./... | grep -v 'test/e2e'` ./hack/test.sh -coverprofile=coverage.out; \
else \
./hack/test.sh -coverprofile=coverage.out "$(TEST_MODULE)"; \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES="$(TEST_MODULE)" ./hack/test.sh -coverprofile=coverage.out "$(TEST_MODULE)"; \
fi
.PHONY: test-race
@@ -400,9 +405,9 @@ test-race: test-tools-image
.PHONY: test-race-local
test-race-local:
if test "$(TEST_MODULE)" = ""; then \
./hack/test.sh -race -coverprofile=coverage.out `go list ./... | grep -v 'test/e2e'`; \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES=`go list ./... | grep -v 'test/e2e'` ./hack/test.sh -race -coverprofile=coverage.out; \
else \
./hack/test.sh -race -coverprofile=coverage.out "$(TEST_MODULE)"; \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES="$(TEST_MODULE)" ./hack/test.sh -race -coverprofile=coverage.out; \
fi
# Run the E2E test suite. E2E test servers (see start-e2e target) must be
@@ -416,7 +421,7 @@ test-e2e:
test-e2e-local: cli-local
# NO_PROXY ensures all tests don't go out through a proxy if one is configured on the test system
export GO111MODULE=off
ARGOCD_E2E_RECORD=${ARGOCD_E2E_RECORD} ARGOCD_GPG_ENABLED=true NO_PROXY=* ./hack/test.sh -timeout $(ARGOCD_E2E_TEST_TIMEOUT) -v ./test/e2e
DIST_DIR=${DIST_DIR} RERUN_FAILS=5 PACKAGES="./test/e2e" ARGOCD_E2E_RECORD=${ARGOCD_E2E_RECORD} ARGOCD_GPG_ENABLED=true NO_PROXY=* ./hack/test.sh -timeout $(ARGOCD_E2E_TEST_TIMEOUT) -v
# Spawns a shell in the test server container for debugging purposes
debug-test-server: test-tools-image
@@ -429,7 +434,7 @@ debug-test-client: test-tools-image
# Starts e2e server in a container
.PHONY: start-e2e
start-e2e: test-tools-image
docker version
$(DOCKER) version
mkdir -p ${GOCACHE}
$(call run-in-test-server,make ARGOCD_PROCFILE=test/container/Procfile start-e2e-local)
@@ -438,6 +443,7 @@ start-e2e: test-tools-image
start-e2e-local: mod-vendor-local dep-ui-local cli-local
kubectl create ns argocd-e2e || true
kubectl create ns argocd-e2e-external || true
kubectl create ns argocd-e2e-external-2 || true
kubectl config set-context --current --namespace=argocd-e2e
kustomize build test/manifests/base | kubectl apply -f -
kubectl apply -f https://raw.githubusercontent.com/open-cluster-management/api/a6845f2ebcb186ec26b832f60c988537a58f3859/cluster/v1alpha1/0000_04_clusters.open-cluster-management.io_placementdecisions.crd.yaml
@@ -458,8 +464,9 @@ start-e2e-local: mod-vendor-local dep-ui-local cli-local
ARGOCD_ZJWT_FEATURE_FLAG=always \
ARGOCD_IN_CI=$(ARGOCD_IN_CI) \
BIN_MODE=$(ARGOCD_BIN_MODE) \
ARGOCD_APPLICATION_NAMESPACES=argocd-e2e-external \
ARGOCD_APPLICATIONSET_CONTROLLER_NAMESPACES=argocd-e2e-external \
ARGOCD_APPLICATION_NAMESPACES=argocd-e2e-external,argocd-e2e-external-2 \
ARGOCD_APPLICATIONSET_CONTROLLER_NAMESPACES=argocd-e2e-external,argocd-e2e-external-2 \
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}
@@ -474,7 +481,7 @@ clean: clean-debug
.PHONY: start
start: test-tools-image
docker version
$(DOCKER) version
$(call run-in-test-server,make ARGOCD_PROCFILE=test/container/Procfile start-local ARGOCD_START=${ARGOCD_START})
# Starts a local instance of ArgoCD
@@ -490,6 +497,7 @@ start-local: mod-vendor-local dep-ui-local cli-local
ARGOCD_ZJWT_FEATURE_FLAG=always \
ARGOCD_IN_CI=false \
ARGOCD_GPG_ENABLED=$(ARGOCD_GPG_ENABLED) \
BIN_MODE=$(ARGOCD_BIN_MODE) \
ARGOCD_E2E_TEST=false \
ARGOCD_APPLICATION_NAMESPACES=$(ARGOCD_APPLICATION_NAMESPACES) \
goreman -f $(ARGOCD_PROCFILE) start ${ARGOCD_START}
@@ -523,7 +531,7 @@ build-docs-local:
.PHONY: build-docs
build-docs:
docker run ${MKDOCS_RUN_ARGS} --rm -it -v ${CURRENT_DIR}:/docs --entrypoint "" ${MKDOCS_DOCKER_IMAGE} sh -c 'pip install -r docs/requirements.txt; mkdocs build'
$(DOCKER) run ${MKDOCS_RUN_ARGS} --rm -it -v ${CURRENT_DIR}:/docs -w /docs --entrypoint "" ${MKDOCS_DOCKER_IMAGE} sh -c 'pip install -r docs/requirements.txt; mkdocs build'
.PHONY: serve-docs-local
serve-docs-local:
@@ -531,8 +539,7 @@ serve-docs-local:
.PHONY: serve-docs
serve-docs:
docker run ${MKDOCS_RUN_ARGS} --rm -it -p 8000:8000 -v ${CURRENT_DIR}/site:/site -w /site --entrypoint "" ${MKDOCS_DOCKER_IMAGE} python3 -m http.server --bind 0.0.0.0 8000
$(DOCKER) run ${MKDOCS_RUN_ARGS} --rm -it -p 8000:8000 -v ${CURRENT_DIR}:/docs -w /docs --entrypoint "" ${MKDOCS_DOCKER_IMAGE} sh -c 'pip install -r docs/requirements.txt; mkdocs serve -a $$(ip route get 1 | awk '\''{print $$7}'\''):8000'
# Verify that kubectl can connect to your K8s cluster from Docker
.PHONY: verify-kube-connect
@@ -555,7 +562,8 @@ install-tools-local: install-test-tools-local install-codegen-tools-local instal
.PHONY: install-test-tools-local
install-test-tools-local:
./hack/install.sh kustomize
./hack/install.sh helm-linux
./hack/install.sh helm
./hack/install.sh gotestsum
# Installs all tools required for running codegen (Linux packages)
.PHONY: install-codegen-tools-local
@@ -583,7 +591,7 @@ list:
.PHONY: applicationset-controller
applicationset-controller:
GODEBUG="tarinsecurepath=0,zipinsecurepath=0" CGO_ENABLED=0 go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd-applicationset-controller ./cmd
GODEBUG="tarinsecurepath=0,zipinsecurepath=0" CGO_ENABLED=${CGO_FLAG} go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd-applicationset-controller ./cmd
.PHONY: checksums
checksums:
@@ -651,4 +659,4 @@ help:
@echo 'codegen:'
@echo ' codegen(-local) -- if using -local, run the following targets first'
@echo ' install-codegen-tools-local -- run this to install the codegen tools'
@echo ' install-go-tools-local -- run this to install go libraries for codegen'
@echo ' install-go-tools-local -- run this to install go libraries for codegen'

1
OWNERS
View File

@@ -5,6 +5,7 @@ owners:
approvers:
- alexec
- alexmt
- gdsoumya
- jannfis
- jessesuen
- jgwest

View File

@@ -1,4 +1,4 @@
controller: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "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:-''}"
controller: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "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 "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"
@@ -9,4 +9,5 @@ git-server: test/fixture/testrepos/start-git.sh
helm-registry: test/fixture/testrepos/start-helm-registry.sh
dev-mounter: [[ "$ARGOCD_E2E_TEST" != "true" ]] && go run hack/dev-mounter/main.go --configmap argocd-ssh-known-hosts-cm=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} --configmap argocd-tls-certs-cm=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} --configmap argocd-gpg-keys-cm=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source}
applicationset-controller: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "FORCE_LOG_COLORS=4 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-applicationset-controller $COMMAND --loglevel debug --metrics-addr localhost:12345 --probe-addr localhost:12346 --argocd-repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081}"
notification: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "FORCE_LOG_COLORS=4 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_BINARY_NAME=argocd-notifications $COMMAND --loglevel debug"
notification: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "FORCE_LOG_COLORS=4 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_BINARY_NAME=argocd-notifications $COMMAND --loglevel debug --application-namespaces=${ARGOCD_APPLICATION_NAMESPACES:-''} --self-service-notification-enabled=${ARGOCD_NOTIFICATION_CONTROLLER_SELF_SERVICE_NOTIFICATION_ENABLED:-'false'}"

View File

@@ -13,6 +13,7 @@
**Social:**
[![Twitter Follow](https://img.shields.io/twitter/follow/argoproj?style=social)](https://twitter.com/argoproj)
[![Slack](https://img.shields.io/badge/slack-argoproj-brightgreen.svg?logo=slack)](https://argoproj.github.io/community/join-slack)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-argoproj-blue.svg?logo=linkedin)](https://www.linkedin.com/company/argoproj/)
# Argo CD - Declarative Continuous Delivery for Kubernetes
@@ -56,7 +57,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://blog.akuity.io/unveil-the-secret-ingredients-of-continuous-delivery-at-enterprise-scale-with-argo-cd-7c5b4057ee49)
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. [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)
@@ -85,4 +86,5 @@ Participation in the Argo CD project is governed by the [CNCF Code of Conduct](h
1. [Getting Started with ArgoCD for GitOps Deployments](https://youtu.be/AvLuplh1skA)
1. [Using Argo CD & Datree for Stable Kubernetes CI/CD Deployments](https://youtu.be/17894DTru2Y)
1. [How to create Argo CD Applications Automatically using ApplicationSet? "Automation of GitOps"](https://amralaayassen.medium.com/how-to-create-argocd-applications-automatically-using-applicationset-automation-of-the-gitops-59455eaf4f72)
1. [Progressive Delivery with Service Mesh Argo Rollouts with Istio](https://www.cncf.io/blog/2022/12/16/progressive-delivery-with-service-mesh-argo-rollouts-with-istio/)

128
SECURITY-INSIGHTS.yml Normal file
View File

@@ -0,0 +1,128 @@
header:
schema-version: 1.0.0
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: b71277c6beb949d0199d647a582bc25822b88838
project-url: https://github.com/argoproj/argo-cd
project-release: v2.9.0-rc3
changelog: https://github.com/argoproj/argo-cd/releases
license: https://github.com/argoproj/argo-cd/blob/master/LICENSE
project-lifecycle:
status: active
roadmap: https://github.com/orgs/argoproj/projects/25
bug-fixes-only: false
core-maintainers:
- https://github.com/argoproj/argoproj/blob/master/MAINTAINERS.md
release-cycle: https://argo-cd.readthedocs.io/en/stable/developer-guide/release-process-and-cadence/
release-process: https://argo-cd.readthedocs.io/en/stable/developer-guide/release-process-and-cadence/#release-process
contribution-policy:
accepts-pull-requests: true
accepts-automated-pull-requests: true
automated-tools-list:
- automated-tool: dependabot
action: allowed
path:
- /
- automated-tool: snyk-report
action: allowed
path:
- docs/snyk
comment: |
This tool runs Snyk and generates a report of vulnerabilities in the project's dependencies. The report is
placed in the project's documentation. The workflow is defined here:
https://github.com/argoproj/argo-cd/blob/master/.github/workflows/update-snyk.yaml
contributing-policy: https://argo-cd.readthedocs.io/en/stable/developer-guide/code-contributions/
code-of-conduct: https://github.com/cncf/foundation/blob/master/code-of-conduct.md
documentation:
- https://argo-cd.readthedocs.io/
distribution-points:
- https://github.com/argoproj/argo-cd/releases
- https://quay.io/repository/argoproj/argocd
security-artifacts:
threat-model:
threat-model-created: true
evidence-url:
- https://github.com/argoproj/argoproj/blob/master/docs/argo_threat_model.pdf
- https://github.com/argoproj/argoproj/blob/master/docs/end_user_threat_model.pdf
self-assessment:
self-assessment-created: false
comment: |
An extensive self-assessment was performed for CNCF graduation. Because the self-assessment process was evolving
at the time, no standardized document has been published.
security-testing:
- tool-type: sca
tool-name: Dependabot
tool-version: "2"
tool-url: https://github.com/dependabot
integration:
ad-hoc: false
ci: false
before-release: false
tool-rulesets:
- https://github.com/argoproj/argo-cd/blob/master/.github/dependabot.yml
- tool-type: sca
tool-name: Snyk
tool-version: latest
tool-url: https://snyk.io/
integration:
ad-hoc: true
ci: true
before-release: false
- tool-type: sast
tool-name: CodeQL
tool-version: latest
tool-url: https://codeql.github.com/
integration:
ad-hoc: false
ci: true
before-release: false
comment: |
We use the default configuration with the latest version.
security-assessments:
- auditor-name: Trail of Bits
auditor-url: https://trailofbits.com
auditor-report: https://github.com/argoproj/argoproj/blob/master/docs/argo_security_final_report.pdf
report-year: 2021
- auditor-name: Ada Logics
auditor-url: https://adalogics.com
auditor-report: https://github.com/argoproj/argoproj/blob/master/docs/argo_security_audit_2022.pdf
report-year: 2022
- auditor-name: Ada Logics
auditor-url: https://adalogics.com
auditor-report: https://github.com/argoproj/argoproj/blob/master/docs/audit_fuzzer_adalogics_2022.pdf
report-year: 2022
comment: |
Part of the audit was performed by Ada Logics, focussed on fuzzing.
- auditor-name: Chainguard
auditor-url: https://chainguard.dev
auditor-report: https://github.com/argoproj/argoproj/blob/master/docs/software_supply_chain_slsa_assessment_chainguard_2023.pdf
report-year: 2023
comment: |
Confirmed the project's release process as achieving SLSA (v0.1) level 3.
security-contacts:
- type: email
value: cncf-argo-security@lists.cncf.io
primary: true
vulnerability-reporting:
accepts-vulnerability-reports: true
email-contact: cncf-argo-security@lists.cncf.io
security-policy: https://github.com/argoproj/argo-cd/security/policy
bug-bounty-available: true
bug-bounty-url: https://hackerone.com/ibb/policy_scopes
out-scope:
- vulnerable and outdated components # See https://github.com/argoproj/argo-cd/blob/master/SECURITY.md#a-word-about-security-scanners
- security logging and monitoring failures
dependencies:
third-party-packages: true
dependencies-lists:
- https://github.com/argoproj/argo-cd/blob/master/go.mod
- https://github.com/argoproj/argo-cd/blob/master/Dockerfile
- https://github.com/argoproj/argo-cd/blob/master/ui/package.json
sbom:
- sbom-file: https://github.com/argoproj/argo-cd/releases # Every release's assets include SBOMs.
sbom-format: SPDX
dependencies-lifecycle:
policy-url: https://argo-cd.readthedocs.io/en/stable/developer-guide/release-process-and-cadence/#dependencies-lifecycle-policy
env-dependencies-policy:
policy-url: https://argo-cd.readthedocs.io/en/stable/developer-guide/release-process-and-cadence/#dependencies-lifecycle-policy

View File

@@ -35,9 +35,7 @@ impact on Argo CD before opening an issue at least roughly.
## Supported Versions
We currently support the most recent release (`N`, e.g. `1.8`) and the release
previous to the most recent one (`N-1`, e.g. `1.7`). With the release of
`N+1`, `N-1` drops out of support and `N` becomes `N-1`.
We currently support the last 3 minor versions of Argo CD with security and bug fixes.
We regularly perform patch releases (e.g. `1.8.5` and `1.7.12`) for the
supported versions, which will contain fixes for security vulnerabilities and
@@ -52,7 +50,7 @@ of releasing it within a patch branch for the currently supported releases.
## Reporting a Vulnerability
If you find a security related bug in ArgoCD, we kindly ask you for responsible
If you find a security related bug in Argo CD, we kindly ask you for responsible
disclosure and for giving us appropriate time to react, analyze and develop a
fix to mitigate the found security vulnerability.

View File

@@ -7,6 +7,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [127Labs](https://127labs.com/)
1. [3Rein](https://www.3rein.com/)
1. [4data](https://4data.ch/)
1. [7shifts](https://www.7shifts.com/)
1. [Adevinta](https://www.adevinta.com/)
1. [Adfinis](https://adfinis.com)
@@ -19,12 +20,17 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Allianz Direct](https://www.allianzdirect.de/)
1. [Amadeus IT Group](https://amadeus.com/)
1. [Ambassador Labs](https://www.getambassador.io/)
1. [Ancestry](https://www.ancestry.com/)
1. [ANSTO - Australian Synchrotron](https://www.synchrotron.org.au/)
1. [Ant Group](https://www.antgroup.com/)
1. [AppDirect](https://www.appdirect.com)
1. [Arctiq Inc.](https://www.arctiq.ca)
2. [Arturia](https://www.arturia.com)
1. [ARZ Allgemeines Rechenzentrum GmbH](https://www.arz.at/)
1. [Autodesk](https://www.autodesk.com)
1. [Axians ACSP](https://www.axians.fr)
1. [Axual B.V.](https://axual.com)
1. [Back Market](https://www.backmarket.com)
1. [Baloise](https://www.baloise.com)
1. [BCDevExchange DevOps Platform](https://bcdevexchange.org/DevOpsPlatform)
1. [Beat](https://thebeat.co/en/)
@@ -36,16 +42,18 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Boozt](https://www.booztgroup.com/)
1. [Boticario](https://www.boticario.com.br/)
1. [Bulder Bank](https://bulderbank.no)
1. [CAM](https://cam-inc.co.jp)
1. [Camptocamp](https://camptocamp.com)
1. [Candis](https://www.candis.io)
1. [Capital One](https://www.capitalone.com)
1. [CARFAX](https://www.carfax.com)
1. [CARFAX Europe](https://www.carfax.eu)
1. [CARFAX](https://www.carfax.com)
1. [Carrefour Group](https://www.carrefour.com)
1. [Casavo](https://casavo.com)
1. [Celonis](https://www.celonis.com/)
1. [CERN](https://home.cern/)
1. [Chargetrip](https://chargetrip.com)
1. [Chainnodes](https://chainnodes.org)
1. [Chargetrip](https://chargetrip.com)
1. [Chime](https://www.chime.com)
1. [Cisco ET&I](https://eti.cisco.com/)
1. [Cloud Posse](https://www.cloudposse.com/)
@@ -70,6 +78,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Devtron Labs](https://github.com/devtron-labs/devtron)
1. [DigitalOcean](https://www.digitalocean.com)
1. [Divistant](https://divistant.com)
1. [Dott](https://ridedott.com)
1. [Doximity](https://www.doximity.com/)
1. [EDF Renewables](https://www.edf-re.com/)
1. [edX](https://edx.org)
@@ -81,11 +90,15 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Energisme](https://energisme.com/)
1. [enigmo](https://enigmo.co.jp/)
1. [Envoy](https://envoy.com/)
1. [Factorial](https://factorialhr.com/)
1. [Farfetch](https://www.farfetch.com)
1. [Faro](https://www.faro.com/)
1. [Fave](https://myfave.com)
1. [Flexport](https://www.flexport.com/)
1. [Flip](https://flip.id)
1. [Fly Security](https://www.flysecurity.com.br/)
1. [Fonoa](https://www.fonoa.com/)
1. [Fortra](https://www.fortra.com)
1. [freee](https://corp.freee.co.jp/en/company/)
1. [Freshop, Inc](https://www.freshop.com/)
1. [Future PLC](https://www.futureplc.com/)
@@ -99,10 +112,11 @@ Currently, the following organizations are **officially** using Argo CD:
1. [gloat](https://gloat.com/)
1. [GLOBIS](https://globis.com)
1. [Glovo](https://www.glovoapp.com)
1. [GlueOps](https://glueops.dev)
1. [GMETRI](https://gmetri.com/)
1. [Gojek](https://www.gojek.io/)
1. [GoTo](https://www.goto.com/)
1. [GoTo Financial](https://gotofinancial.com/)
1. [GoTo](https://www.goto.com/)
1. [Greenpass](https://www.greenpass.com.br/)
1. [Gridfuse](https://gridfuse.com/)
1. [Groww](https://groww.in)
@@ -115,15 +129,18 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Hiya](https://hiya.com)
1. [Honestbank](https://honestbank.com)
1. [Hostinger](https://www.hostinger.com)
1. [IABAI](https://www.iab.ai)
1. [IBM](https://www.ibm.com/)
1. [Ibotta](https://home.ibotta.com)
1. [IITS-Consulting](https://iits-consulting.de)
1. [IllumiDesk](https://www.illumidesk.com)
1. [imaware](https://imaware.health)
1. [Indeed](https://indeed.com)
1. [Index Exchange](https://www.indexexchange.com/)
1. [Info Support](https://www.infosupport.com/)
1. [InsideBoard](https://www.insideboard.com)
1. [Intuit](https://www.intuit.com/)
1. [Jellysmack](https://www.jellysmack.com)
1. [Joblift](https://joblift.com/)
1. [JovianX](https://www.jovianx.com/)
1. [Kaltura](https://corp.kaltura.com/)
@@ -137,8 +154,11 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Kinguin](https://www.kinguin.net/)
1. [KintoHub](https://www.kintohub.com/)
1. [KompiTech GmbH](https://www.kompitech.com/)
1. [Kong Inc.](https://konghq.com/)
1. [KPMG](https://kpmg.com/uk)
1. [KubeSphere](https://github.com/kubesphere)
1. [Kurly](https://www.kurly.com/)
1. [Kvist](https://kvistsolutions.com)
1. [LexisNexis](https://www.lexisnexis.com/)
1. [Lian Chu Securities](https://lczq.com)
1. [Liatrio](https://www.liatrio.com)
@@ -158,6 +178,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Meican](https://meican.com/)
1. [Meilleurs Agents](https://www.meilleursagents.com/)
1. [Mercedes-Benz Tech Innovation](https://www.mercedes-benz-techinnovation.com/)
1. [Mercedes-Benz.io](https://www.mercedes-benz.io/)
1. [Metanet](http://www.metanet.co.kr/en/)
1. [MindSpore](https://mindspore.cn)
1. [Mirantis](https://mirantis.com/)
@@ -170,6 +191,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Natura &Co](https://naturaeco.com/)
1. [Nethopper](https://nethopper.io)
1. [New Relic](https://newrelic.com/)
1. [Nextbasket](https://nextbasket.com)
1. [Nextdoor](https://nextdoor.com/)
1. [Nikkei](https://www.nikkei.co.jp/nikkeiinfo/en/)
1. [Nitro](https://gonitro.com)
@@ -180,6 +202,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Olfeo](https://www.olfeo.com/)
1. [omegaUp](https://omegaUp.com)
1. [Omni](https://omni.se/)
1. [Oncourse Home Solutions](https://oncoursehome.com/)
1. [openEuler](https://openeuler.org)
1. [openGauss](https://opengauss.org/)
1. [OpenGov](https://opengov.com)
@@ -190,16 +213,21 @@ Currently, the following organizations are **officially** using Argo CD:
1. [OpsVerse](https://opsverse.io)
1. [Optoro](https://www.optoro.com/)
1. [Orbital Insight](https://orbitalinsight.com/)
1. [Oscar Health Insurance](https://hioscar.com/)
1. [p3r](https://www.p3r.one/)
1. [Packlink](https://www.packlink.com/)
1. [PagerDuty](https://www.pagerduty.com/)
1. [Pandosearch](https://www.pandosearch.com/en/home)
1. [Patreon](https://www.patreon.com/)
1. [PayIt](https://payitgov.com/)
1. [PayPay](https://paypay.ne.jp/)
1. [Peloton Interactive](https://www.onepeloton.com/)
1. [Percona](https://percona.com/)
1. [PGS](https://www.pgs.com)
1. [Pigment](https://www.gopigment.com/)
1. [Pipefy](https://www.pipefy.com/)
1. [Pismo](https://pismo.io/)
1. [PITS Globale Datenrettungsdienste](https://www.pitsdatenrettung.de/)
1. [Platform9 Systems](https://platform9.com/)
1. [Polarpoint.io](https://polarpoint.io)
1. [PostFinance](https://github.com/postfinance)
@@ -215,22 +243,29 @@ Currently, the following organizations are **officially** using Argo CD:
1. [QuintoAndar](https://quintoandar.com.br)
1. [Quipper](https://www.quipper.com/)
1. [RapidAPI](https://www.rapidapi.com/)
1. [rebuy](https://www.rebuy.de/)
1. [Recreation.gov](https://www.recreation.gov/)
1. [Red Hat](https://www.redhat.com/)
1. [Redpill Linpro](https://www.redpill-linpro.com/)
1. [Reenigne Cloud](https://reenigne.ca)
1. [reev.com](https://www.reev.com/)
1. [RightRev](https://rightrev.com/)
1. [Rijkswaterstaat](https://www.rijkswaterstaat.nl/en)
1. [Rise](https://www.risecard.eu/)
1. [Riskified](https://www.riskified.com/)
1. [Robotinfra](https://www.robotinfra.com)
1. [Rocket.Chat](https://rocket.chat)
1. [Rubin Observatory](https://www.lsst.org)
1. [Saildrone](https://www.saildrone.com/)
1. [Salad Technologies](https://salad.com/)
1. [Saloodo! GmbH](https://www.saloodo.com)
1. [Sap Labs](http://sap.com)
1. [Sauce Labs](https://saucelabs.com/)
1. [Schwarz IT](https://jobs.schwarz/it-mission)
1. [SCRM Lidl International Hub](https://scrm.lidl)
1. [SEEK](https://seek.com.au)
1. [Semgrep](https://semgrep.com)
1. [Shield](https://shield.com)
1. [SI Analytics](https://si-analytics.ai)
1. [Skit](https://skit.ai/)
1. [Skyscanner](https://www.skyscanner.net/)
@@ -245,6 +280,8 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Spendesk](https://spendesk.com/)
1. [Splunk](https://splunk.com/)
1. [Spores Labs](https://spores.app)
1. [Statsig](https://statsig.com)
1. [SternumIOT](https://sternumiot.com)
1. [StreamNative](https://streamnative.io)
1. [Stuart](https://stuart.com/)
1. [Sumo Logic](https://sumologic.com/)
@@ -258,6 +295,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Tamkeen Technologies](https://tamkeentech.sa/)
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. [The Scale Factory](https://www.scalefactory.com/)
1. [ThousandEyes](https://www.thousandeyes.com/)
@@ -268,17 +306,21 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Trendyol](https://www.trendyol.com/)
1. [tru.ID](https://tru.id)
1. [Trusting Social](https://trustingsocial.com/)
1. [Twilio Segment](https://segment.com/)
1. [Twilio SendGrid](https://sendgrid.com)
1. [tZERO](https://www.tzero.com/)
1. [U.S. Veterans Affairs Department](https://www.va.gov/)
1. [UBIO](https://ub.io/)
1. [UFirstGroup](https://www.ufirstgroup.com/en/)
1. [ungleich.ch](https://ungleich.ch/)
1. [Unifonic Inc](https://www.unifonic.com/)
1. [Universidad Mesoamericana](https://www.umes.edu.gt/)
1. [Upsider Inc.](https://up-sider.com/lp/)
1. [Urbantz](https://urbantz.com/)
1. [Vectra](https://www.vectra.ai)
1. [Veepee](https://www.veepee.com)
1. [Viaduct](https://www.viaduct.ai/)
1. [VietMoney](https://vietmoney.vn/)
1. [Vinted](https://vinted.com/)
1. [Virtuo](https://www.govirtuo.com/)
1. [VISITS Technologies](https://visits.world/en)

View File

@@ -1 +1 @@
2.8.0
2.11.4

View File

@@ -17,9 +17,11 @@ package controllers
import (
"context"
"fmt"
"reflect"
"strings"
"time"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
log "github.com/sirupsen/logrus"
corev1 "k8s.io/api/core/v1"
apierr "k8s.io/apimachinery/pkg/api/errors"
@@ -28,9 +30,11 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/kubernetes"
k8scache "k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/cache"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -48,6 +52,7 @@ import (
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"
"github.com/argoproj/argo-cd/v2/pkg/apis/application"
)
@@ -58,10 +63,6 @@ const (
// https://github.com/argoproj-labs/argocd-notifications/blob/33d345fa838829bb50fca5c08523aba380d2c12b/pkg/controller/state.go#L17
NotifiedAnnotationKey = "notified.notifications.argoproj.io"
ReconcileRequeueOnValidationError = time.Minute * 3
// LabelKeyAppSetInstance is the label key to use to uniquely identify the apps of an applicationset
// The ArgoCD applicationset name is used as the instance name
LabelKeyAppSetInstance = "argocd.argoproj.io/application-set-name"
)
var (
@@ -83,9 +84,13 @@ type ApplicationSetReconciler struct {
Policy argov1alpha1.ApplicationsSyncPolicy
EnablePolicyOverride bool
utils.Renderer
ArgoCDNamespace string
ApplicationSetNamespaces []string
EnableProgressiveSyncs bool
ArgoCDNamespace string
ApplicationSetNamespaces []string
EnableProgressiveSyncs bool
SCMRootCAPath string
GlobalPreservedAnnotations []string
GlobalPreservedLabels []string
Cache cache.Cache
}
// +kubebuilder:rbac:groups=argoproj.io,resources=applicationsets,verbs=get;list;watch;create;update;patch;delete
@@ -106,13 +111,23 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
// Do not attempt to further reconcile the ApplicationSet if it is being deleted.
if applicationSetInfo.ObjectMeta.DeletionTimestamp != nil {
deleteAllowed := utils.DefaultPolicy(applicationSetInfo.Spec.SyncPolicy, r.Policy, r.EnablePolicyOverride).AllowDelete()
if !deleteAllowed {
if err := r.removeOwnerReferencesOnDeleteAppSet(ctx, applicationSetInfo); err != nil {
return ctrl.Result{}, err
}
controllerutil.RemoveFinalizer(&applicationSetInfo, argov1alpha1.ResourcesFinalizerName)
if err := r.Update(ctx, &applicationSetInfo); err != nil {
return ctrl.Result{}, err
}
}
return ctrl.Result{}, nil
}
// Log a warning if there are unrecognized generators
_ = utils.CheckInvalidGenerators(&applicationSetInfo)
// desiredApplications is the main list of all expected Applications from all generators in this appset.
desiredApplications, applicationSetReason, err := r.generateApplications(applicationSetInfo)
desiredApplications, applicationSetReason, err := r.generateApplications(logCtx, applicationSetInfo)
if err != nil {
_ = r.setApplicationSetStatusCondition(ctx,
&applicationSetInfo,
@@ -158,13 +173,15 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
if r.EnableProgressiveSyncs {
if applicationSetInfo.Spec.Strategy == nil && len(applicationSetInfo.Status.ApplicationStatus) > 0 {
log.Infof("Removing %v unnecessary AppStatus entries from ApplicationSet %v", len(applicationSetInfo.Status.ApplicationStatus), applicationSetInfo.Name)
// If appset used progressive sync but stopped, clean up the progressive sync application statuses
logCtx.Infof("Removing %v unnecessary AppStatus entries from ApplicationSet %v", len(applicationSetInfo.Status.ApplicationStatus), applicationSetInfo.Name)
err := r.setAppSetApplicationStatus(ctx, &applicationSetInfo, []argov1alpha1.ApplicationSetApplicationStatus{})
err := r.setAppSetApplicationStatus(ctx, logCtx, &applicationSetInfo, []argov1alpha1.ApplicationSetApplicationStatus{})
if err != nil {
return ctrl.Result{}, fmt.Errorf("failed to clear previous AppSet application statuses for %v: %w", applicationSetInfo.Name, err)
}
} else {
} else if applicationSetInfo.Spec.Strategy != nil {
// appset uses progressive sync
applications, err := r.getCurrentApplications(ctx, applicationSetInfo)
if err != nil {
return ctrl.Result{}, fmt.Errorf("failed to get current applications for application set: %w", err)
@@ -174,7 +191,7 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
appMap[app.Name] = app
}
appSyncMap, err = r.performProgressiveSyncs(ctx, applicationSetInfo, applications, desiredApplications, appMap)
appSyncMap, err = r.performProgressiveSyncs(ctx, logCtx, applicationSetInfo, applications, desiredApplications, appMap)
if err != nil {
return ctrl.Result{}, fmt.Errorf("failed to perform progressive sync reconciliation for application set: %w", err)
}
@@ -212,7 +229,7 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
if r.EnableProgressiveSyncs {
// trigger appropriate application syncs if RollingSync strategy is enabled
if progressiveSyncsStrategyEnabled(&applicationSetInfo, "RollingSync") {
validApps, err = r.syncValidApplications(ctx, &applicationSetInfo, appSyncMap, appMap, validApps)
validApps, err = r.syncValidApplications(logCtx, &applicationSetInfo, appSyncMap, appMap, validApps)
if err != nil {
_ = r.setApplicationSetStatusCondition(ctx,
@@ -230,7 +247,7 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
}
if utils.DefaultPolicy(applicationSetInfo.Spec.SyncPolicy, r.Policy, r.EnablePolicyOverride).AllowUpdate() {
err = r.createOrUpdateInCluster(ctx, applicationSetInfo, validApps)
err = r.createOrUpdateInCluster(ctx, logCtx, applicationSetInfo, validApps)
if err != nil {
_ = r.setApplicationSetStatusCondition(ctx,
&applicationSetInfo,
@@ -244,7 +261,7 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
return ctrl.Result{}, err
}
} else {
err = r.createInCluster(ctx, applicationSetInfo, validApps)
err = r.createInCluster(ctx, logCtx, applicationSetInfo, validApps)
if err != nil {
_ = r.setApplicationSetStatusCondition(ctx,
&applicationSetInfo,
@@ -260,7 +277,7 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
}
if utils.DefaultPolicy(applicationSetInfo.Spec.SyncPolicy, r.Policy, r.EnablePolicyOverride).AllowDelete() {
err = r.deleteInCluster(ctx, applicationSetInfo, desiredApplications)
err = r.deleteInCluster(ctx, logCtx, applicationSetInfo, desiredApplications)
if err != nil {
_ = r.setApplicationSetStatusCondition(ctx,
&applicationSetInfo,
@@ -294,7 +311,6 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
}
requeueAfter := r.getMinRequeueAfter(&applicationSetInfo)
logCtx.WithField("requeueAfter", requeueAfter).Info("end reconcile")
if len(validateErrors) == 0 {
if err := r.setApplicationSetStatusCondition(ctx,
@@ -308,8 +324,13 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
); err != nil {
return ctrl.Result{}, err
}
} else if requeueAfter == time.Duration(0) {
// Ensure that the request is requeued if there are validation errors.
requeueAfter = ReconcileRequeueOnValidationError
}
logCtx.WithField("requeueAfter", requeueAfter).Info("end reconcile")
return ctrl.Result{
RequeueAfter: requeueAfter,
}, nil
@@ -430,8 +451,7 @@ func (r *ApplicationSetReconciler) validateGeneratedApplications(ctx context.Con
errorsByIndex[i] = fmt.Errorf("ApplicationSet %s contains applications with duplicate name: %s", applicationSetInfo.Name, app.Name)
continue
}
proj, err := r.ArgoAppClientset.ArgoprojV1alpha1().AppProjects(r.ArgoCDNamespace).Get(ctx, app.Spec.GetProject(), metav1.GetOptions{})
_, err := r.ArgoAppClientset.ArgoprojV1alpha1().AppProjects(r.ArgoCDNamespace).Get(ctx, app.Spec.GetProject(), metav1.GetOptions{})
if err != nil {
if apierr.IsNotFound(err) {
errorsByIndex[i] = fmt.Errorf("application references project %s which does not exist", app.Spec.Project)
@@ -445,15 +465,6 @@ func (r *ApplicationSetReconciler) validateGeneratedApplications(ctx context.Con
continue
}
conditions, err := argoutil.ValidatePermissions(ctx, &app.Spec, proj, r.ArgoDB)
if err != nil {
return nil, err
}
if len(conditions) > 0 {
errorsByIndex[i] = fmt.Errorf("application spec is invalid: %s", argoutil.FormatAppConditions(conditions))
continue
}
}
return errorsByIndex, nil
@@ -491,7 +502,7 @@ func getTempApplication(applicationSetTemplate argov1alpha1.ApplicationSetTempla
return &tmplApplication
}
func (r *ApplicationSetReconciler) generateApplications(applicationSetInfo argov1alpha1.ApplicationSet) ([]argov1alpha1.Application, argov1alpha1.ApplicationSetReasonType, error) {
func (r *ApplicationSetReconciler) generateApplications(logCtx *log.Entry, applicationSetInfo argov1alpha1.ApplicationSet) ([]argov1alpha1.Application, argov1alpha1.ApplicationSetReasonType, error) {
var res []argov1alpha1.Application
var firstError error
@@ -500,7 +511,7 @@ func (r *ApplicationSetReconciler) generateApplications(applicationSetInfo argov
for _, requestedGenerator := range applicationSetInfo.Spec.Generators {
t, err := generators.Transform(requestedGenerator, r.Generators, applicationSetInfo.Spec.Template, &applicationSetInfo, map[string]interface{}{})
if err != nil {
log.WithError(err).WithField("generator", requestedGenerator).
logCtx.WithError(err).WithField("generator", requestedGenerator).
Error("error generating application from params")
if firstError == nil {
firstError = err
@@ -511,15 +522,12 @@ func (r *ApplicationSetReconciler) generateApplications(applicationSetInfo argov
for _, a := range t {
tmplApplication := getTempApplication(a.Template)
if tmplApplication.Labels == nil {
tmplApplication.Labels = make(map[string]string)
}
tmplApplication.Labels[LabelKeyAppSetInstance] = applicationSetInfo.Name
for _, p := range a.Params {
app, err := r.Renderer.RenderTemplateParams(tmplApplication, applicationSetInfo.Spec.SyncPolicy, p, applicationSetInfo.Spec.GoTemplate, applicationSetInfo.Spec.GoTemplateOptions)
if err != nil {
log.WithError(err).WithField("params", a.Params).WithField("generator", requestedGenerator).
logCtx.WithError(err).WithField("params", a.Params).WithField("generator", requestedGenerator).
Error("error generating application from params")
if firstError == nil {
@@ -528,17 +536,45 @@ func (r *ApplicationSetReconciler) generateApplications(applicationSetInfo argov
}
continue
}
if applicationSetInfo.Spec.TemplatePatch != nil {
patchedApplication, err := r.applyTemplatePatch(app, applicationSetInfo, p)
if err != nil {
log.WithError(err).WithField("params", a.Params).WithField("generator", requestedGenerator).
Error("error generating application from params")
if firstError == nil {
firstError = err
applicationSetReason = argov1alpha1.ApplicationSetReasonRenderTemplateParamsError
}
continue
}
app = patchedApplication
}
res = append(res, *app)
}
}
log.WithField("generator", requestedGenerator).Infof("generated %d applications", len(res))
log.WithField("generator", requestedGenerator).Debugf("apps from generator: %+v", res)
logCtx.WithField("generator", requestedGenerator).Infof("generated %d applications", len(res))
logCtx.WithField("generator", requestedGenerator).Debugf("apps from generator: %+v", res)
}
return res, applicationSetReason, firstError
}
func (r *ApplicationSetReconciler) applyTemplatePatch(app *argov1alpha1.Application, applicationSetInfo argov1alpha1.ApplicationSet, params map[string]interface{}) (*argov1alpha1.Application, error) {
replacedTemplate, err := r.Renderer.Replace(*applicationSetInfo.Spec.TemplatePatch, params, applicationSetInfo.Spec.GoTemplate, applicationSetInfo.Spec.GoTemplateOptions)
if err != nil {
return nil, fmt.Errorf("error replacing values in templatePatch: %w", err)
}
return applyTemplatePatch(app, replacedTemplate)
}
func ignoreNotAllowedNamespaces(namespaces []string) predicate.Predicate {
return predicate.Funcs{
CreateFunc: func(e event.CreateEvent) bool {
@@ -547,22 +583,24 @@ func ignoreNotAllowedNamespaces(namespaces []string) predicate.Predicate {
}
}
func (r *ApplicationSetReconciler) SetupWithManager(mgr ctrl.Manager, enableProgressiveSyncs bool, maxConcurrentReconciliations int) error {
if err := mgr.GetFieldIndexer().IndexField(context.TODO(), &argov1alpha1.Application{}, ".metadata.controller", func(rawObj client.Object) []string {
// grab the job object, extract the owner...
app := rawObj.(*argov1alpha1.Application)
owner := metav1.GetControllerOf(app)
if owner == nil {
return nil
}
// ...make sure it's a application set...
if owner.APIVersion != argov1alpha1.SchemeGroupVersion.String() || owner.Kind != "ApplicationSet" {
return nil
}
func appControllerIndexer(rawObj client.Object) []string {
// grab the job object, extract the owner...
app := rawObj.(*argov1alpha1.Application)
owner := metav1.GetControllerOf(app)
if owner == nil {
return nil
}
// ...make sure it's a application set...
if owner.APIVersion != argov1alpha1.SchemeGroupVersion.String() || owner.Kind != "ApplicationSet" {
return nil
}
// ...and if so, return it
return []string{owner.Name}
}); err != nil {
// ...and if so, return it
return []string{owner.Name}
}
func (r *ApplicationSetReconciler) SetupWithManager(mgr ctrl.Manager, enableProgressiveSyncs bool, maxConcurrentReconciliations int) error {
if err := mgr.GetFieldIndexer().IndexField(context.TODO(), &argov1alpha1.Application{}, ".metadata.controller", appControllerIndexer); err != nil {
return fmt.Errorf("error setting up with manager: %w", err)
}
@@ -583,19 +621,43 @@ func (r *ApplicationSetReconciler) SetupWithManager(mgr ctrl.Manager, enableProg
Complete(r)
}
func (r *ApplicationSetReconciler) updateCache(ctx context.Context, obj client.Object, logger *log.Entry) {
informer, err := r.Cache.GetInformer(ctx, obj)
if err != nil {
logger.Errorf("failed to get informer: %v", err)
return
}
// The controller runtime abstract away informers creation
// so unfortunately could not find any other way to access informer store.
k8sInformer, ok := informer.(k8scache.SharedInformer)
if !ok {
logger.Error("informer is not a kubernetes informer")
return
}
if err := k8sInformer.GetStore().Update(obj); err != nil {
logger.Errorf("failed to update cache: %v", err)
return
}
}
// createOrUpdateInCluster will create / update application resources in the cluster.
// - For new applications, it will call create
// - For existing application, it will call update
// The function also adds owner reference to all applications, and uses it to delete them.
func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context, applicationSet argov1alpha1.ApplicationSet, desiredApplications []argov1alpha1.Application) error {
func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context, logCtx *log.Entry, applicationSet argov1alpha1.ApplicationSet, desiredApplications []argov1alpha1.Application) error {
var firstError error
// Creates or updates the application in appList
for _, generatedApp := range desiredApplications {
appLog := log.WithFields(log.Fields{"app": generatedApp.Name, "appSet": applicationSet.Name})
// The app's namespace must be the same as the AppSet's namespace to preserve the appsets-in-any-namespace
// security boundary.
generatedApp.Namespace = applicationSet.Namespace
appLog := logCtx.WithFields(log.Fields{"app": generatedApp.QualifiedName()})
// Normalize to avoid fighting with the application controller.
generatedApp.Spec = *argoutil.NormalizeApplicationSpec(&generatedApp.Spec)
found := &argov1alpha1.Application{
ObjectMeta: metav1.ObjectMeta{
Name: generatedApp.Name,
@@ -607,7 +669,7 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
},
}
action, err := utils.CreateOrUpdate(ctx, r.Client, found, func() error {
action, err := utils.CreateOrUpdate(ctx, appLog, r.Client, applicationSet.Spec.IgnoreApplicationDifferences, normalizers.IgnoreNormalizerOpts{}, found, func() error {
// Copy only the Application/ObjectMeta fields that are significant, from the generatedApp
found.Spec = generatedApp.Spec
@@ -617,9 +679,21 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
}
preservedAnnotations := make([]string, 0)
preservedLabels := make([]string, 0)
if applicationSet.Spec.PreservedFields != nil {
preservedAnnotations = append(preservedAnnotations, applicationSet.Spec.PreservedFields.Annotations...)
preservedLabels = append(preservedLabels, applicationSet.Spec.PreservedFields.Labels...)
}
if len(r.GlobalPreservedAnnotations) > 0 {
preservedAnnotations = append(preservedAnnotations, r.GlobalPreservedAnnotations...)
}
if len(r.GlobalPreservedLabels) > 0 {
preservedLabels = append(preservedLabels, r.GlobalPreservedLabels...)
}
// Preserve specially treated argo cd annotations:
// * https://github.com/argoproj/applicationset/issues/180
// * https://github.com/argoproj/argo-cd/issues/10500
@@ -633,10 +707,32 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
generatedApp.Annotations[key] = state
}
}
for _, key := range preservedLabels {
if state, exists := found.ObjectMeta.Labels[key]; exists {
if generatedApp.Labels == nil {
generatedApp.Labels = map[string]string{}
}
generatedApp.Labels[key] = state
}
}
// Preserve post-delete finalizers:
// https://github.com/argoproj/argo-cd/issues/17181
for _, finalizer := range found.ObjectMeta.Finalizers {
if strings.HasPrefix(finalizer, argov1alpha1.PostDeleteFinalizerName) {
if generatedApp.Finalizers == nil {
generatedApp.Finalizers = []string{}
}
generatedApp.Finalizers = append(generatedApp.Finalizers, finalizer)
}
}
found.ObjectMeta.Annotations = generatedApp.Annotations
found.ObjectMeta.Finalizers = generatedApp.Finalizers
found.ObjectMeta.Labels = generatedApp.Labels
return controllerutil.SetControllerReference(&applicationSet, found, r.Scheme)
})
@@ -647,16 +743,24 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
}
continue
}
r.updateCache(ctx, found, appLog)
r.Recorder.Eventf(&applicationSet, corev1.EventTypeNormal, fmt.Sprint(action), "%s Application %q", action, generatedApp.Name)
appLog.Logf(log.InfoLevel, "%s Application", action)
if action != controllerutil.OperationResultNone {
// Don't pollute etcd with "unchanged Application" events
r.Recorder.Eventf(&applicationSet, corev1.EventTypeNormal, fmt.Sprint(action), "%s Application %q", action, generatedApp.Name)
appLog.Logf(log.InfoLevel, "%s Application", action)
} else {
// "unchanged Application" can be inferred by Reconcile Complete with no action being listed
// Or enable debug logging
appLog.Logf(log.DebugLevel, "%s Application", action)
}
}
return firstError
}
// createInCluster will filter from the desiredApplications only the application that needs to be created
// Then it will call createOrUpdateInCluster to do the actual create
func (r *ApplicationSetReconciler) createInCluster(ctx context.Context, applicationSet argov1alpha1.ApplicationSet, desiredApplications []argov1alpha1.Application) error {
func (r *ApplicationSetReconciler) createInCluster(ctx context.Context, logCtx *log.Entry, applicationSet argov1alpha1.ApplicationSet, desiredApplications []argov1alpha1.Application) error {
var createApps []argov1alpha1.Application
current, err := r.getCurrentApplications(ctx, applicationSet)
@@ -679,16 +783,15 @@ func (r *ApplicationSetReconciler) createInCluster(ctx context.Context, applicat
}
}
return r.createOrUpdateInCluster(ctx, applicationSet, createApps)
return r.createOrUpdateInCluster(ctx, logCtx, applicationSet, createApps)
}
func (r *ApplicationSetReconciler) getCurrentApplications(_ context.Context, applicationSet argov1alpha1.ApplicationSet) ([]argov1alpha1.Application, error) {
// TODO: Should this use the context param?
func (r *ApplicationSetReconciler) getCurrentApplications(ctx context.Context, applicationSet argov1alpha1.ApplicationSet) ([]argov1alpha1.Application, error) {
var current argov1alpha1.ApplicationList
err := r.Client.List(context.Background(), &current, client.MatchingFields{".metadata.controller": applicationSet.Name})
err := r.Client.List(ctx, &current, client.MatchingFields{".metadata.controller": applicationSet.Name}, client.InNamespace(applicationSet.Namespace))
if err != nil {
return nil, err
return nil, fmt.Errorf("error retrieving applications: %w", err)
}
return current.Items, nil
@@ -696,7 +799,7 @@ func (r *ApplicationSetReconciler) getCurrentApplications(_ context.Context, app
// deleteInCluster will delete Applications that are currently on the cluster, but not in appList.
// The function must be called after all generators had been called and generated applications
func (r *ApplicationSetReconciler) deleteInCluster(ctx context.Context, applicationSet argov1alpha1.ApplicationSet, desiredApplications []argov1alpha1.Application) error {
func (r *ApplicationSetReconciler) deleteInCluster(ctx context.Context, logCtx *log.Entry, applicationSet argov1alpha1.ApplicationSet, desiredApplications []argov1alpha1.Application) error {
// settingsMgr := settings.NewSettingsManager(context.TODO(), r.KubeClientset, applicationSet.Namespace)
// argoDB := db.NewDB(applicationSet.Namespace, settingsMgr, r.KubeClientset)
// clusterList, err := argoDB.ListClusters(ctx)
@@ -720,15 +823,15 @@ func (r *ApplicationSetReconciler) deleteInCluster(ctx context.Context, applicat
// Delete apps that are not in m[string]bool
var firstError error
for _, app := range current {
appLog := log.WithFields(log.Fields{"app": app.Name, "appSet": applicationSet.Name})
logCtx = logCtx.WithField("app", app.QualifiedName())
_, exists := m[app.Name]
if !exists {
// Removes the Argo CD resources finalizer if the application contains an invalid target (eg missing cluster)
err := r.removeFinalizerOnInvalidDestination(ctx, applicationSet, &app, clusterList, appLog)
err := r.removeFinalizerOnInvalidDestination(ctx, applicationSet, &app, clusterList, logCtx)
if err != nil {
appLog.WithError(err).Error("failed to update Application")
logCtx.WithError(err).Error("failed to update Application")
if firstError != nil {
firstError = err
}
@@ -737,14 +840,14 @@ func (r *ApplicationSetReconciler) deleteInCluster(ctx context.Context, applicat
err = r.Client.Delete(ctx, &app)
if err != nil {
appLog.WithError(err).Error("failed to delete Application")
logCtx.WithError(err).Error("failed to delete Application")
if firstError != nil {
firstError = err
}
continue
}
r.Recorder.Eventf(&applicationSet, corev1.EventTypeNormal, "Deleted", "Deleted Application %q", app.Name)
appLog.Log(log.InfoLevel, "Deleted application")
logCtx.Log(log.InfoLevel, "Deleted application")
}
}
return firstError
@@ -805,36 +908,59 @@ func (r *ApplicationSetReconciler) removeFinalizerOnInvalidDestination(ctx conte
// If the finalizer length changed (due to filtering out an Argo finalizer), update the finalizer list on the app
if len(newFinalizers) != len(app.Finalizers) {
app.Finalizers = newFinalizers
updated := app.DeepCopy()
updated.Finalizers = newFinalizers
patch := client.MergeFrom(app)
if log.IsLevelEnabled(log.DebugLevel) {
utils.LogPatch(appLog, patch, updated)
}
if err := r.Client.Patch(ctx, updated, patch); err != nil {
return fmt.Errorf("error updating finalizers: %w", err)
}
r.updateCache(ctx, updated, appLog)
// Application must have updated list of finalizers
updated.DeepCopyInto(app)
r.Recorder.Eventf(&applicationSet, corev1.EventTypeNormal, "Updated", "Updated Application %q finalizer before deletion, because application has an invalid destination", app.Name)
appLog.Log(log.InfoLevel, "Updating application finalizer before deletion, because application has an invalid destination")
err := r.Client.Update(ctx, app, &client.UpdateOptions{})
if err != nil {
return fmt.Errorf("error updating finalizers: %w", err)
}
}
}
return nil
}
func (r *ApplicationSetReconciler) performProgressiveSyncs(ctx context.Context, appset argov1alpha1.ApplicationSet, applications []argov1alpha1.Application, desiredApplications []argov1alpha1.Application, appMap map[string]argov1alpha1.Application) (map[string]bool, error) {
func (r *ApplicationSetReconciler) removeOwnerReferencesOnDeleteAppSet(ctx context.Context, applicationSet argov1alpha1.ApplicationSet) error {
applications, err := r.getCurrentApplications(ctx, applicationSet)
if err != nil {
return err
}
appDependencyList, appStepMap, err := r.buildAppDependencyList(ctx, appset, desiredApplications)
for _, app := range applications {
app.SetOwnerReferences([]metav1.OwnerReference{})
err := r.Client.Update(ctx, &app)
if err != nil {
return err
}
}
return nil
}
func (r *ApplicationSetReconciler) performProgressiveSyncs(ctx context.Context, logCtx *log.Entry, appset argov1alpha1.ApplicationSet, applications []argov1alpha1.Application, desiredApplications []argov1alpha1.Application, appMap map[string]argov1alpha1.Application) (map[string]bool, error) {
appDependencyList, appStepMap, err := r.buildAppDependencyList(logCtx, appset, desiredApplications)
if err != nil {
return nil, fmt.Errorf("failed to build app dependency list: %w", err)
}
_, err = r.updateApplicationSetApplicationStatus(ctx, &appset, applications, appStepMap)
_, err = r.updateApplicationSetApplicationStatus(ctx, logCtx, &appset, applications, appStepMap)
if err != nil {
return nil, fmt.Errorf("failed to update applicationset app status: %w", err)
}
log.Infof("ApplicationSet %v step list:", appset.Name)
logCtx.Infof("ApplicationSet %v step list:", appset.Name)
for i, step := range appDependencyList {
log.Infof("step %v: %+v", i+1, step)
logCtx.Infof("step %v: %+v", i+1, step)
}
appSyncMap, err := r.buildAppSyncMap(ctx, appset, appDependencyList, appMap)
@@ -842,9 +968,9 @@ func (r *ApplicationSetReconciler) performProgressiveSyncs(ctx context.Context,
return nil, fmt.Errorf("failed to build app sync map: %w", err)
}
log.Infof("Application allowed to sync before maxUpdate?: %+v", appSyncMap)
logCtx.Infof("Application allowed to sync before maxUpdate?: %+v", appSyncMap)
_, err = r.updateApplicationSetApplicationStatusProgress(ctx, &appset, appSyncMap, appStepMap, appMap)
_, err = r.updateApplicationSetApplicationStatusProgress(ctx, logCtx, &appset, appSyncMap, appStepMap, appMap)
if err != nil {
return nil, fmt.Errorf("failed to update applicationset application status progress: %w", err)
}
@@ -858,7 +984,7 @@ func (r *ApplicationSetReconciler) performProgressiveSyncs(ctx context.Context,
}
// this list tracks which Applications belong to each RollingUpdate step
func (r *ApplicationSetReconciler) buildAppDependencyList(ctx context.Context, applicationSet argov1alpha1.ApplicationSet, applications []argov1alpha1.Application) ([][]string, map[string]int, error) {
func (r *ApplicationSetReconciler) buildAppDependencyList(logCtx *log.Entry, applicationSet argov1alpha1.ApplicationSet, applications []argov1alpha1.Application) ([][]string, map[string]int, error) {
if applicationSet.Spec.Strategy == nil || applicationSet.Spec.Strategy.Type == "" || applicationSet.Spec.Strategy.Type == "AllAtOnce" {
return [][]string{}, map[string]int{}, nil
@@ -885,9 +1011,9 @@ func (r *ApplicationSetReconciler) buildAppDependencyList(ctx context.Context, a
for _, matchExpression := range step.MatchExpressions {
if val, ok := app.Labels[matchExpression.Key]; ok {
valueMatched := labelMatchedExpression(val, matchExpression)
valueMatched := labelMatchedExpression(logCtx, val, matchExpression)
if !valueMatched { // none of the matchExpression values was a match with the Application'ss labels
if !valueMatched { // none of the matchExpression values was a match with the Application's labels
selected = false
break
}
@@ -900,7 +1026,7 @@ func (r *ApplicationSetReconciler) buildAppDependencyList(ctx context.Context, a
if selected {
appDependencyList[i] = append(appDependencyList[i], app.Name)
if val, ok := appStepMap[app.Name]; ok {
log.Warnf("AppSet '%v' has a invalid matchExpression that selects Application '%v' label twice, in steps %v and %v", applicationSet.Name, app.Name, val+1, i+1)
logCtx.Warnf("AppSet '%v' has a invalid matchExpression that selects Application '%v' label twice, in steps %v and %v", applicationSet.Name, app.Name, val+1, i+1)
} else {
appStepMap[app.Name] = i
}
@@ -911,9 +1037,9 @@ func (r *ApplicationSetReconciler) buildAppDependencyList(ctx context.Context, a
return appDependencyList, appStepMap, nil
}
func labelMatchedExpression(val string, matchExpression argov1alpha1.ApplicationMatchExpression) bool {
func labelMatchedExpression(logCtx *log.Entry, val string, matchExpression argov1alpha1.ApplicationMatchExpression) bool {
if matchExpression.Operator != "In" && matchExpression.Operator != "NotIn" {
log.Errorf("skipping AppSet rollingUpdate step Application selection, invalid matchExpression operator provided: %q ", matchExpression.Operator)
logCtx.Errorf("skipping AppSet rollingUpdate step Application selection, invalid matchExpression operator provided: %q ", matchExpression.Operator)
return false
}
@@ -1017,7 +1143,7 @@ func statusStrings(app argov1alpha1.Application) (string, string, string) {
}
// check the status of each Application's status and promote Applications to the next status if needed
func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx context.Context, applicationSet *argov1alpha1.ApplicationSet, applications []argov1alpha1.Application, appStepMap map[string]int) ([]argov1alpha1.ApplicationSetApplicationStatus, error) {
func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx context.Context, logCtx *log.Entry, applicationSet *argov1alpha1.ApplicationSet, applications []argov1alpha1.Application, appStepMap map[string]int) ([]argov1alpha1.ApplicationSetApplicationStatus, error) {
now := metav1.Now()
appStatuses := make([]argov1alpha1.ApplicationSetApplicationStatus, 0, len(applications))
@@ -1050,7 +1176,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
}
if appOutdated && currentAppStatus.Status != "Waiting" && currentAppStatus.Status != "Pending" {
log.Infof("Application %v is outdated, updating its ApplicationSet status to Waiting", app.Name)
logCtx.Infof("Application %v is outdated, updating its ApplicationSet status to Waiting", app.Name)
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = "Waiting"
currentAppStatus.Message = "Application has pending changes, setting status to Waiting."
@@ -1062,15 +1188,15 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
// this covers race conditions where syncs initiated by RollingSync miraculously have a sync time before the transition to Pending state occurred (could be a few seconds)
if operationPhaseString == "Succeeded" && app.Status.OperationState.StartedAt.Add(time.Duration(10)*time.Second).After(currentAppStatus.LastTransitionTime.Time) {
if !app.Status.OperationState.StartedAt.After(currentAppStatus.LastTransitionTime.Time) {
log.Warnf("Application %v was synced less than 10s prior to entering Pending status, we'll assume the AppSet controller triggered this sync and update its status to Progressing", app.Name)
logCtx.Warnf("Application %v was synced less than 10s prior to entering Pending status, we'll assume the AppSet controller triggered this sync and update its status to Progressing", app.Name)
}
log.Infof("Application %v has completed a sync successfully, updating its ApplicationSet status to Progressing", app.Name)
logCtx.Infof("Application %v has completed a sync successfully, updating its ApplicationSet status to Progressing", app.Name)
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = "Progressing"
currentAppStatus.Message = "Application resource completed a sync successfully, updating status from Pending to Progressing."
currentAppStatus.Step = fmt.Sprint(appStepMap[currentAppStatus.Application] + 1)
} else if operationPhaseString == "Running" || healthStatusString == "Progressing" {
log.Infof("Application %v has entered Progressing status, updating its ApplicationSet status to Progressing", app.Name)
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."
@@ -1079,7 +1205,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
}
if currentAppStatus.Status == "Waiting" && isApplicationHealthy(app) {
log.Infof("Application %v is already synced and healthy, updating its ApplicationSet status to Healthy", app.Name)
logCtx.Infof("Application %v is already synced and healthy, updating its ApplicationSet status to Healthy", app.Name)
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = healthStatusString
currentAppStatus.Message = "Application resource is already Healthy, updating status from Waiting to Healthy."
@@ -1087,7 +1213,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
}
if currentAppStatus.Status == "Progressing" && isApplicationHealthy(app) {
log.Infof("Application %v has completed Progressing status, updating its ApplicationSet status to Healthy", app.Name)
logCtx.Infof("Application %v has completed Progressing status, updating its ApplicationSet status to Healthy", app.Name)
currentAppStatus.LastTransitionTime = &now
currentAppStatus.Status = healthStatusString
currentAppStatus.Message = "Application resource became Healthy, updating status from Progressing to Healthy."
@@ -1097,7 +1223,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
appStatuses = append(appStatuses, currentAppStatus)
}
err := r.setAppSetApplicationStatus(ctx, applicationSet, appStatuses)
err := r.setAppSetApplicationStatus(ctx, logCtx, applicationSet, appStatuses)
if err != nil {
return nil, fmt.Errorf("failed to set AppSet application statuses: %w", err)
}
@@ -1106,7 +1232,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
}
// check Applications that are in Waiting status and promote them to Pending if needed
func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress(ctx context.Context, applicationSet *argov1alpha1.ApplicationSet, appSyncMap map[string]bool, appStepMap map[string]int, appMap map[string]argov1alpha1.Application) ([]argov1alpha1.ApplicationSetApplicationStatus, error) {
func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress(ctx context.Context, logCtx *log.Entry, applicationSet *argov1alpha1.ApplicationSet, appSyncMap map[string]bool, appStepMap map[string]int, appMap map[string]argov1alpha1.Application) ([]argov1alpha1.ApplicationSetApplicationStatus, error) {
now := metav1.Now()
appStatuses := make([]argov1alpha1.ApplicationSetApplicationStatus, 0, len(applicationSet.Status.ApplicationStatus))
@@ -1148,7 +1274,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress
if maxUpdate != nil {
maxUpdateVal, err := intstr.GetScaledValueFromIntOrPercent(maxUpdate, totalCountMap[appStepMap[appStatus.Application]], false)
if err != nil {
log.Warnf("AppSet '%v' has a invalid maxUpdate value '%+v', ignoring maxUpdate logic for this step: %v", applicationSet.Name, maxUpdate, err)
logCtx.Warnf("AppSet '%v' has a invalid maxUpdate value '%+v', ignoring maxUpdate logic for this step: %v", applicationSet.Name, maxUpdate, err)
}
// ensure that percentage values greater than 0% always result in at least 1 Application being selected
@@ -1158,13 +1284,13 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress
if updateCountMap[appStepMap[appStatus.Application]] >= maxUpdateVal {
maxUpdateAllowed = false
log.Infof("Application %v is not allowed to update yet, %v/%v Applications already updating in step %v in AppSet %v", appStatus.Application, updateCountMap[appStepMap[appStatus.Application]], maxUpdateVal, appStepMap[appStatus.Application]+1, applicationSet.Name)
logCtx.Infof("Application %v is not allowed to update yet, %v/%v Applications already updating in step %v in AppSet %v", appStatus.Application, updateCountMap[appStepMap[appStatus.Application]], maxUpdateVal, appStepMap[appStatus.Application]+1, applicationSet.Name)
}
}
if appStatus.Status == "Waiting" && appSyncMap[appStatus.Application] && maxUpdateAllowed {
log.Infof("Application %v moved to Pending status, watching for the Application to start Progressing", appStatus.Application)
logCtx.Infof("Application %v moved to Pending status, watching for the Application to start Progressing", appStatus.Application)
appStatus.LastTransitionTime = &now
appStatus.Status = "Pending"
appStatus.Message = "Application moved to Pending status, watching for the Application resource to start Progressing."
@@ -1177,7 +1303,7 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress
}
}
err := r.setAppSetApplicationStatus(ctx, applicationSet, appStatuses)
err := r.setAppSetApplicationStatus(ctx, logCtx, applicationSet, appStatuses)
if err != nil {
return nil, fmt.Errorf("failed to set AppSet app status: %w", err)
}
@@ -1239,7 +1365,7 @@ func findApplicationStatusIndex(appStatuses []argov1alpha1.ApplicationSetApplica
// setApplicationSetApplicationStatus updates the ApplicatonSet's status field
// with any new/changed Application statuses.
func (r *ApplicationSetReconciler) setAppSetApplicationStatus(ctx context.Context, applicationSet *argov1alpha1.ApplicationSet, applicationStatuses []argov1alpha1.ApplicationSetApplicationStatus) error {
func (r *ApplicationSetReconciler) setAppSetApplicationStatus(ctx context.Context, logCtx *log.Entry, applicationSet *argov1alpha1.ApplicationSet, applicationStatuses []argov1alpha1.ApplicationSetApplicationStatus) error {
needToUpdateStatus := false
if len(applicationStatuses) != len(applicationSet.Status.ApplicationStatus) {
@@ -1273,7 +1399,7 @@ func (r *ApplicationSetReconciler) setAppSetApplicationStatus(ctx context.Contex
err := r.Client.Status().Update(ctx, applicationSet)
if err != nil {
log.Errorf("unable to set application set status: %v", err)
logCtx.Errorf("unable to set application set status: %v", err)
return fmt.Errorf("unable to set application set status: %v", err)
}
@@ -1288,7 +1414,7 @@ func (r *ApplicationSetReconciler) setAppSetApplicationStatus(ctx context.Contex
return nil
}
func (r *ApplicationSetReconciler) syncValidApplications(ctx context.Context, applicationSet *argov1alpha1.ApplicationSet, appSyncMap map[string]bool, appMap map[string]argov1alpha1.Application, validApps []argov1alpha1.Application) ([]argov1alpha1.Application, error) {
func (r *ApplicationSetReconciler) syncValidApplications(logCtx *log.Entry, applicationSet *argov1alpha1.ApplicationSet, appSyncMap map[string]bool, appMap map[string]argov1alpha1.Application, validApps []argov1alpha1.Application) ([]argov1alpha1.Application, error) {
rolloutApps := []argov1alpha1.Application{}
for i := range validApps {
pruneEnabled := false
@@ -1308,7 +1434,7 @@ func (r *ApplicationSetReconciler) syncValidApplications(ctx context.Context, ap
// check appSyncMap to determine which Applications are ready to be updated and which should be skipped
if appSyncMap[validApps[i].Name] && appMap[validApps[i].Name].Status.Sync.Status == "OutOfSync" && appSetStatusPending {
log.Infof("triggering sync for application: %v, prune enabled: %v", validApps[i].Name, pruneEnabled)
logCtx.Infof("triggering sync for application: %v, prune enabled: %v", validApps[i].Name, pruneEnabled)
validApps[i], _ = syncApplication(validApps[i], pruneEnabled)
}
rolloutApps = append(rolloutApps, validApps[i])
@@ -1352,29 +1478,51 @@ func getOwnsHandlerPredicates(enableProgressiveSyncs bool) predicate.Funcs {
CreateFunc: func(e event.CreateEvent) bool {
// if we are the owner and there is a create event, we most likely created it and do not need to
// re-reconcile
log.Debugln("received create event from owning an application")
if log.IsLevelEnabled(log.DebugLevel) {
var appName string
app, isApp := e.Object.(*argov1alpha1.Application)
if isApp {
appName = app.QualifiedName()
}
log.WithField("app", appName).Debugln("received create event from owning an application")
}
return false
},
DeleteFunc: func(e event.DeleteEvent) bool {
log.Debugln("received delete event from owning an application")
if log.IsLevelEnabled(log.DebugLevel) {
var appName string
app, isApp := e.Object.(*argov1alpha1.Application)
if isApp {
appName = app.QualifiedName()
}
log.WithField("app", appName).Debugln("received delete event from owning an application")
}
return true
},
UpdateFunc: func(e event.UpdateEvent) bool {
log.Debugln("received update event from owning an application")
appOld, isApp := e.ObjectOld.(*argov1alpha1.Application)
if !isApp {
return false
}
logCtx := log.WithField("app", appOld.QualifiedName())
logCtx.Debugln("received update event from owning an application")
appNew, isApp := e.ObjectNew.(*argov1alpha1.Application)
if !isApp {
return false
}
requeue := shouldRequeueApplicationSet(appOld, appNew, enableProgressiveSyncs)
log.Debugf("requeue: %t caused by application %s\n", requeue, appNew.Name)
logCtx.WithField("requeue", requeue).Debugf("requeue: %t caused by application %s\n", requeue, appNew.Name)
return requeue
},
GenericFunc: func(e event.GenericEvent) bool {
log.Debugln("received generic event from owning an application")
if log.IsLevelEnabled(log.DebugLevel) {
var appName string
app, isApp := e.Object.(*argov1alpha1.Application)
if isApp {
appName = app.QualifiedName()
}
log.WithField("app", appName).Debugln("received generic event from owning an application")
}
return true
},
}
@@ -1392,10 +1540,14 @@ func shouldRequeueApplicationSet(appOld *argov1alpha1.Application, appNew *argov
}
// the applicationset controller owns the application spec, labels, annotations, and finalizers on the applications
if !reflect.DeepEqual(appOld.Spec, appNew.Spec) ||
!reflect.DeepEqual(appOld.ObjectMeta.GetAnnotations(), appNew.ObjectMeta.GetAnnotations()) ||
!reflect.DeepEqual(appOld.ObjectMeta.GetLabels(), appNew.ObjectMeta.GetLabels()) ||
!reflect.DeepEqual(appOld.ObjectMeta.GetFinalizers(), appNew.ObjectMeta.GetFinalizers()) {
// reflect.DeepEqual considers nil slices/maps not equal to empty slices/maps
// https://pkg.go.dev/reflect#DeepEqual
// ApplicationDestination has an unexported field so we can just use the == for comparsion
if !cmp.Equal(appOld.Spec, appNew.Spec, cmpopts.EquateEmpty(), cmpopts.EquateComparable(argov1alpha1.ApplicationDestination{})) ||
!cmp.Equal(appOld.ObjectMeta.GetAnnotations(), appNew.ObjectMeta.GetAnnotations(), cmpopts.EquateEmpty()) ||
!cmp.Equal(appOld.ObjectMeta.GetLabels(), appNew.ObjectMeta.GetLabels(), cmpopts.EquateEmpty()) ||
!cmp.Equal(appOld.ObjectMeta.GetFinalizers(), appNew.ObjectMeta.GetFinalizers(), cmpopts.EquateEmpty()) {
return true
}

File diff suppressed because it is too large Load Diff

View File

@@ -5,9 +5,6 @@ import (
"testing"
"time"
"github.com/argoproj/argo-cd/v2/applicationset/generators"
"github.com/argoproj/argo-cd/v2/applicationset/services/mocks"
argov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -17,6 +14,10 @@ import (
kubefake "k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/tools/record"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"github.com/argoproj/argo-cd/v2/applicationset/generators"
"github.com/argoproj/argo-cd/v2/applicationset/services/mocks"
argov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func TestRequeueAfter(t *testing.T) {
@@ -59,9 +60,9 @@ func TestRequeueAfter(t *testing.T) {
"List": generators.NewListGenerator(),
"Clusters": generators.NewClusterGenerator(k8sClient, ctx, appClientset, "argocd"),
"Git": generators.NewGitGenerator(mockServer),
"SCMProvider": generators.NewSCMProviderGenerator(fake.NewClientBuilder().WithObjects(&corev1.Secret{}).Build(), generators.SCMAuthProviders{}),
"SCMProvider": generators.NewSCMProviderGenerator(fake.NewClientBuilder().WithObjects(&corev1.Secret{}).Build(), generators.SCMAuthProviders{}, "", []string{""}, true),
"ClusterDecisionResource": generators.NewDuckTypeGenerator(ctx, fakeDynClient, appClientset, "argocd"),
"PullRequest": generators.NewPullRequestGenerator(k8sClient, generators.SCMAuthProviders{}),
"PullRequest": generators.NewPullRequestGenerator(k8sClient, generators.SCMAuthProviders{}, "", []string{""}, true),
}
nestedGenerators := map[string]generators.Generator{

View File

@@ -0,0 +1,46 @@
package controllers
import (
"encoding/json"
"fmt"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func applyTemplatePatch(app *appv1.Application, templatePatch string) (*appv1.Application, error) {
appString, err := json.Marshal(app)
if err != nil {
return nil, fmt.Errorf("error while marhsalling Application %w", err)
}
convertedTemplatePatch, err := utils.ConvertYAMLToJSON(templatePatch)
if err != nil {
return nil, fmt.Errorf("error while converting template to json %q: %w", convertedTemplatePatch, err)
}
if err := json.Unmarshal([]byte(convertedTemplatePatch), &appv1.Application{}); err != nil {
return nil, fmt.Errorf("invalid templatePatch %q: %w", convertedTemplatePatch, err)
}
data, err := strategicpatch.StrategicMergePatch(appString, []byte(convertedTemplatePatch), appv1.Application{})
if err != nil {
return nil, fmt.Errorf("error while applying templatePatch template to json %q: %w", convertedTemplatePatch, err)
}
finalApp := appv1.Application{}
err = json.Unmarshal(data, &finalApp)
if err != nil {
return nil, fmt.Errorf("error while unmarhsalling patched application: %w", err)
}
// Prevent changes to the `project` field. This helps prevent malicious template patches
finalApp.Spec.Project = app.Spec.Project
return &finalApp, nil
}

View File

@@ -0,0 +1,249 @@
package controllers
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func Test_ApplyTemplatePatch(t *testing.T) {
testCases := []struct {
name string
appTemplate *appv1.Application
templatePatch string
expectedApp *appv1.Application
}{
{
name: "patch with JSON",
appTemplate: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
Namespace: "namespace",
Finalizers: []string{"resources-finalizer.argocd.argoproj.io"},
},
Spec: appv1.ApplicationSpec{
Project: "default",
Source: &appv1.ApplicationSource{
RepoURL: "https://github.com/argoproj/argocd-example-apps.git",
TargetRevision: "HEAD",
Path: "guestbook",
},
Destination: appv1.ApplicationDestination{
Server: "https://kubernetes.default.svc",
Namespace: "guestbook",
},
},
},
templatePatch: `{
"metadata": {
"annotations": {
"annotation-some-key": "annotation-some-value"
}
},
"spec": {
"source": {
"helm": {
"valueFiles": [
"values.test.yaml",
"values.big.yaml"
]
}
},
"syncPolicy": {
"automated": {
"prune": true
}
}
}
}`,
expectedApp: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
Namespace: "namespace",
Finalizers: []string{"resources-finalizer.argocd.argoproj.io"},
Annotations: map[string]string{
"annotation-some-key": "annotation-some-value",
},
},
Spec: appv1.ApplicationSpec{
Project: "default",
Source: &appv1.ApplicationSource{
RepoURL: "https://github.com/argoproj/argocd-example-apps.git",
TargetRevision: "HEAD",
Path: "guestbook",
Helm: &appv1.ApplicationSourceHelm{
ValueFiles: []string{
"values.test.yaml",
"values.big.yaml",
},
},
},
Destination: appv1.ApplicationDestination{
Server: "https://kubernetes.default.svc",
Namespace: "guestbook",
},
SyncPolicy: &appv1.SyncPolicy{
Automated: &appv1.SyncPolicyAutomated{
Prune: true,
},
},
},
},
},
{
name: "patch with YAML",
appTemplate: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
Namespace: "namespace",
Finalizers: []string{"resources-finalizer.argocd.argoproj.io"},
},
Spec: appv1.ApplicationSpec{
Project: "default",
Source: &appv1.ApplicationSource{
RepoURL: "https://github.com/argoproj/argocd-example-apps.git",
TargetRevision: "HEAD",
Path: "guestbook",
},
Destination: appv1.ApplicationDestination{
Server: "https://kubernetes.default.svc",
Namespace: "guestbook",
},
},
},
templatePatch: `
metadata:
annotations:
annotation-some-key: annotation-some-value
spec:
source:
helm:
valueFiles:
- values.test.yaml
- values.big.yaml
syncPolicy:
automated:
prune: true`,
expectedApp: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
Namespace: "namespace",
Finalizers: []string{"resources-finalizer.argocd.argoproj.io"},
Annotations: map[string]string{
"annotation-some-key": "annotation-some-value",
},
},
Spec: appv1.ApplicationSpec{
Project: "default",
Source: &appv1.ApplicationSource{
RepoURL: "https://github.com/argoproj/argocd-example-apps.git",
TargetRevision: "HEAD",
Path: "guestbook",
Helm: &appv1.ApplicationSourceHelm{
ValueFiles: []string{
"values.test.yaml",
"values.big.yaml",
},
},
},
Destination: appv1.ApplicationDestination{
Server: "https://kubernetes.default.svc",
Namespace: "guestbook",
},
SyncPolicy: &appv1.SyncPolicy{
Automated: &appv1.SyncPolicyAutomated{
Prune: true,
},
},
},
},
},
{
name: "project field isn't overwritten",
appTemplate: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
Namespace: "namespace",
},
Spec: appv1.ApplicationSpec{
Project: "default",
Source: &appv1.ApplicationSource{
RepoURL: "https://github.com/argoproj/argocd-example-apps.git",
TargetRevision: "HEAD",
Path: "guestbook",
},
Destination: appv1.ApplicationDestination{
Server: "https://kubernetes.default.svc",
Namespace: "guestbook",
},
},
},
templatePatch: `
spec:
project: my-project`,
expectedApp: &appv1.Application{
TypeMeta: metav1.TypeMeta{
Kind: "Application",
APIVersion: "argoproj.io/v1alpha1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "my-cluster-guestbook",
Namespace: "namespace",
},
Spec: appv1.ApplicationSpec{
Project: "default",
Source: &appv1.ApplicationSource{
RepoURL: "https://github.com/argoproj/argocd-example-apps.git",
TargetRevision: "HEAD",
Path: "guestbook",
},
Destination: appv1.ApplicationDestination{
Server: "https://kubernetes.default.svc",
Namespace: "guestbook",
},
},
},
},
}
for _, tc := range testCases {
tcc := tc
t.Run(tcc.name, func(t *testing.T) {
result, err := applyTemplatePatch(tcc.appTemplate, tcc.templatePatch)
require.NoError(t, err)
assert.Equal(t, *tcc.expectedApp, *result)
})
}
}
func TestError(t *testing.T) {
app := &appv1.Application{}
result, err := applyTemplatePatch(app, "hello world")
require.Error(t, err)
require.Nil(t, result)
}

View File

@@ -0,0 +1,26 @@
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
spec:
generators:
- scmProvider:
gitlab:
api: https://gitlab.com
group: test-argocd-proton
includeSubgroups: true
cloneProtocol: https
filters:
- repositoryMatch: test-app
template:
metadata:
name: '{{ repository }}-guestbook'
spec:
project: "default"
source:
repoURL: '{{ url }}'
targetRevision: '{{ branch }}'
path: guestbook
destination:
server: https://kubernetes.default.svc
namespace: guestbook

View File

@@ -61,8 +61,7 @@ func (g *ClusterGenerator) GetTemplate(appSetGenerator *argoappsetv1alpha1.Appli
return &appSetGenerator.Clusters.Template
}
func (g *ClusterGenerator) GenerateParams(
appSetGenerator *argoappsetv1alpha1.ApplicationSetGenerator, appSet *argoappsetv1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *ClusterGenerator) GenerateParams(appSetGenerator *argoappsetv1alpha1.ApplicationSetGenerator, appSet *argoappsetv1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
@@ -79,7 +78,7 @@ func (g *ClusterGenerator) GenerateParams(
// ListCluster from Argo CD's util/db package will include the local cluster in the list of clusters
clustersFromArgoCD, err := utils.ListClusters(g.ctx, g.clientset, g.namespace)
if err != nil {
return nil, err
return nil, fmt.Errorf("error listing clusters: %w", err)
}
if clustersFromArgoCD == nil {

View File

@@ -74,7 +74,7 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
// ListCluster from Argo CD's util/db package will include the local cluster in the list of clusters
clustersFromArgoCD, err := utils.ListClusters(g.ctx, g.clientset, g.namespace)
if err != nil {
return nil, err
return nil, fmt.Errorf("error listing clusters: %w", err)
}
if clustersFromArgoCD == nil {
@@ -85,7 +85,7 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
cm, err := g.clientset.CoreV1().ConfigMaps(g.namespace).Get(g.ctx, appSetGenerator.ClusterDecisionResource.ConfigMapRef, metav1.GetOptions{})
if err != nil {
return nil, err
return nil, fmt.Errorf("error reading configMapRef: %w", err)
}
// Extract GVK data for the dynamic client to use

View File

@@ -3,6 +3,7 @@ package generators
import (
"context"
"fmt"
"testing"
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
@@ -15,8 +16,6 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"testing"
)
const resourceApiVersion = "mallard.io/v1"

View File

@@ -4,9 +4,10 @@ import (
"fmt"
"reflect"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
"github.com/jeremywohl/flatten"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
"k8s.io/apimachinery/pkg/labels"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -124,7 +125,7 @@ func GetRelevantGenerators(requestedGenerator *argoprojiov1alpha1.ApplicationSet
func flattenParameters(in map[string]interface{}) (map[string]string, error) {
flat, err := flatten.Flatten(in, "", flatten.DotStyle)
if err != nil {
return nil, err
return nil, fmt.Errorf("error flatenning parameters: %w", err)
}
out := make(map[string]string, len(flat))
@@ -152,7 +153,7 @@ func InterpolateGenerator(requestedGenerator *argoprojiov1alpha1.ApplicationSetG
interpolatedGenerator, err := render.RenderGeneratorParams(requestedGenerator, params, useGoTemplate, goTemplateOptions)
if err != nil {
log.WithError(err).WithField("interpolatedGenerator", interpolatedGenerator).Error("error interpolating generator with other generator's parameter")
return *interpolatedGenerator, err
return argoprojiov1alpha1.ApplicationSetGenerator{}, err
}
return *interpolatedGenerator, nil

View File

@@ -4,13 +4,14 @@ import (
"context"
"testing"
"github.com/argoproj/argo-cd/v2/applicationset/services/mocks"
log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/argoproj/argo-cd/v2/applicationset/services/mocks"
argov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/stretchr/testify/mock"
@@ -500,3 +501,60 @@ func TestInterpolateGenerator_go(t *testing.T) {
assert.Equal(t, "production_01/west", interpolatedGenerator.Git.Files[0].Path)
assert.Equal(t, "https://production-01.example.com", interpolatedGenerator.Git.Files[1].Path)
}
func TestInterpolateGeneratorError(t *testing.T) {
type args struct {
requestedGenerator *argov1alpha1.ApplicationSetGenerator
params map[string]interface{}
useGoTemplate bool
goTemplateOptions []string
}
tests := []struct {
name string
args args
want argov1alpha1.ApplicationSetGenerator
expectedErrStr string
}{
{name: "Empty Gen", args: args{
requestedGenerator: nil,
params: nil,
useGoTemplate: false,
goTemplateOptions: nil,
}, want: argov1alpha1.ApplicationSetGenerator{}, expectedErrStr: "generator is empty"},
{name: "No Params", args: args{
requestedGenerator: &argov1alpha1.ApplicationSetGenerator{},
params: map[string]interface{}{},
useGoTemplate: false,
goTemplateOptions: nil,
}, want: argov1alpha1.ApplicationSetGenerator{}, expectedErrStr: ""},
{name: "Error templating", args: args{
requestedGenerator: &argov1alpha1.ApplicationSetGenerator{Git: &argov1alpha1.GitGenerator{
RepoURL: "foo",
Files: []argov1alpha1.GitFileGeneratorItem{{Path: "bar/"}},
Revision: "main",
Values: map[string]string{
"git_test": "{{ toPrettyJson . }}",
"selection": "{{ default .override .test }}",
"resolved": "{{ index .rmap (default .override .test) }}",
},
}},
params: map[string]interface{}{
"name": "in-cluster",
"override": "foo",
},
useGoTemplate: true,
goTemplateOptions: []string{},
}, want: argov1alpha1.ApplicationSetGenerator{}, expectedErrStr: "failed to replace parameters in generator: failed to execute go template {{ index .rmap (default .override .test) }}: template: :1:3: executing \"\" at <index .rmap (default .override .test)>: error calling index: index of untyped nil"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := InterpolateGenerator(tt.args.requestedGenerator, tt.args.params, tt.args.useGoTemplate, tt.args.goTemplateOptions)
if tt.expectedErrStr != "" {
assert.EqualError(t, err, tt.expectedErrStr)
} else {
require.NoError(t, err)
}
assert.Equalf(t, tt.want, got, "InterpolateGenerator(%v, %v, %v, %v)", tt.args.requestedGenerator, tt.args.params, tt.args.useGoTemplate, tt.args.goTemplateOptions)
})
}
}

View File

@@ -56,28 +56,30 @@ func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Applic
return nil, EmptyAppSetGeneratorError
}
noRevisionCache := appSet.RefreshRequired()
var err error
var res []map[string]interface{}
if len(appSetGenerator.Git.Directories) != 0 {
res, err = g.generateParamsForGitDirectories(appSetGenerator, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
res, err = g.generateParamsForGitDirectories(appSetGenerator, noRevisionCache, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
} else if len(appSetGenerator.Git.Files) != 0 {
res, err = g.generateParamsForGitFiles(appSetGenerator, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
res, err = g.generateParamsForGitFiles(appSetGenerator, noRevisionCache, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
} else {
return nil, EmptyAppSetGeneratorError
}
if err != nil {
return nil, err
return nil, fmt.Errorf("error generating params from git: %w", err)
}
return res, nil
}
func (g *GitGenerator) generateParamsForGitDirectories(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, useGoTemplate bool, goTemplateOptions []string) ([]map[string]interface{}, error) {
func (g *GitGenerator) generateParamsForGitDirectories(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, noRevisionCache bool, useGoTemplate bool, goTemplateOptions []string) ([]map[string]interface{}, error) {
// Directories, not files
allPaths, err := g.repos.GetDirectories(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision)
allPaths, err := g.repos.GetDirectories(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, noRevisionCache)
if err != nil {
return nil, err
return nil, fmt.Errorf("error getting directories from repo: %w", err)
}
log.WithFields(log.Fields{
@@ -92,18 +94,18 @@ func (g *GitGenerator) generateParamsForGitDirectories(appSetGenerator *argoproj
res, err := g.generateParamsFromApps(requestedApps, appSetGenerator, useGoTemplate, goTemplateOptions)
if err != nil {
return nil, fmt.Errorf("failed to generate params from apps: %w", err)
return nil, fmt.Errorf("error generating params from apps: %w", err)
}
return res, nil
}
func (g *GitGenerator) generateParamsForGitFiles(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, useGoTemplate bool, goTemplateOptions []string) ([]map[string]interface{}, error) {
func (g *GitGenerator) generateParamsForGitFiles(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, noRevisionCache bool, useGoTemplate bool, goTemplateOptions []string) ([]map[string]interface{}, error) {
// Get all files that match the requested path string, removing duplicates
allFiles := make(map[string][]byte)
for _, requestedPath := range appSetGenerator.Git.Files {
files, err := g.repos.GetFiles(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, requestedPath.Path)
files, err := g.repos.GetFiles(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, requestedPath.Path, noRevisionCache)
if err != nil {
return nil, err
}
@@ -148,6 +150,9 @@ func (g *GitGenerator) generateParamsFromGitFile(filePath string, fileContent []
return nil, fmt.Errorf("unable to parse file: %v", err)
}
objectsFound = append(objectsFound, singleObj)
} else if len(objectsFound) == 0 {
// If file is valid but empty, add a default empty item
objectsFound = append(objectsFound, map[string]interface{}{})
}
res := []map[string]interface{}{}
@@ -177,7 +182,7 @@ func (g *GitGenerator) generateParamsFromGitFile(filePath string, fileContent []
} else {
flat, err := flatten.Flatten(objectFound, "", flatten.DotStyle)
if err != nil {
return nil, err
return nil, fmt.Errorf("error flattening object: %w", err)
}
for k, v := range flat {
params[k] = fmt.Sprintf("%v", v)

View File

@@ -4,119 +4,173 @@ import (
"fmt"
"testing"
"github.com/argoproj/argo-cd/v2/applicationset/services/mocks"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/argoproj/argo-cd/v2/applicationset/services/mocks"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func Test_generateParamsFromGitFile(t *testing.T) {
values := map[string]string{}
params, err := (*GitGenerator)(nil).generateParamsFromGitFile("path/dir/file_name.yaml", []byte(`
defaultContent := []byte(`
foo:
bar: baz
`), values, false, nil, "")
if err != nil {
t.Fatal(err)
`)
type args struct {
filePath string
fileContent []byte
values map[string]string
useGoTemplate bool
goTemplateOptions []string
pathParamPrefix string
}
assert.Equal(t, []map[string]interface{}{
tests := []struct {
name string
args args
want []map[string]interface{}
wantErr bool
}{
{
"foo.bar": "baz",
"path": "path/dir",
"path.basename": "dir",
"path.filename": "file_name.yaml",
"path.basenameNormalized": "dir",
"path.filenameNormalized": "file-name.yaml",
"path[0]": "path",
"path[1]": "dir",
},
}, params)
}
func Test_generatePrefixedParamsFromGitFile(t *testing.T) {
values := map[string]string{}
params, err := (*GitGenerator)(nil).generateParamsFromGitFile("path/dir/file_name.yaml", []byte(`
foo:
bar: baz
`), values, false, nil, "myRepo")
if err != nil {
t.Fatal(err)
}
assert.Equal(t, []map[string]interface{}{
{
"foo.bar": "baz",
"myRepo.path": "path/dir",
"myRepo.path.basename": "dir",
"myRepo.path.filename": "file_name.yaml",
"myRepo.path.basenameNormalized": "dir",
"myRepo.path.filenameNormalized": "file-name.yaml",
"myRepo.path[0]": "path",
"myRepo.path[1]": "dir",
},
}, params)
}
func Test_generateParamsFromGitFileGoTemplate(t *testing.T) {
values := map[string]string{}
params, err := (*GitGenerator)(nil).generateParamsFromGitFile("path/dir/file_name.yaml", []byte(`
foo:
bar: baz
`), values, true, nil, "")
if err != nil {
t.Fatal(err)
}
assert.Equal(t, []map[string]interface{}{
{
"foo": map[string]interface{}{
"bar": "baz",
name: "empty file returns path parameters",
args: args{
filePath: "path/dir/file_name.yaml",
fileContent: []byte(""),
values: map[string]string{},
useGoTemplate: false,
},
"path": map[string]interface{}{
"path": "path/dir",
"basename": "dir",
"filename": "file_name.yaml",
"basenameNormalized": "dir",
"filenameNormalized": "file-name.yaml",
"segments": []string{
"path",
"dir",
want: []map[string]interface{}{
{
"path": "path/dir",
"path.basename": "dir",
"path.filename": "file_name.yaml",
"path.basenameNormalized": "dir",
"path.filenameNormalized": "file-name.yaml",
"path[0]": "path",
"path[1]": "dir",
},
},
},
}, params)
}
func Test_generatePrefixedParamsFromGitFileGoTemplate(t *testing.T) {
values := map[string]string{}
params, err := (*GitGenerator)(nil).generateParamsFromGitFile("path/dir/file_name.yaml", []byte(`
foo:
bar: baz
`), values, true, nil, "myRepo")
if err != nil {
t.Fatal(err)
}
assert.Equal(t, []map[string]interface{}{
{
"foo": map[string]interface{}{
"bar": "baz",
name: "invalid json/yaml file returns error",
args: args{
filePath: "path/dir/file_name.yaml",
fileContent: []byte("this is not json or yaml"),
values: map[string]string{},
useGoTemplate: false,
},
"myRepo": map[string]interface{}{
"path": map[string]interface{}{
"path": "path/dir",
"basename": "dir",
"filename": "file_name.yaml",
"basenameNormalized": "dir",
"filenameNormalized": "file-name.yaml",
"segments": []string{
"path",
"dir",
wantErr: true,
},
{
name: "file parameters are added to params",
args: args{
filePath: "path/dir/file_name.yaml",
fileContent: defaultContent,
values: map[string]string{},
useGoTemplate: false,
},
want: []map[string]interface{}{
{
"foo.bar": "baz",
"path": "path/dir",
"path.basename": "dir",
"path.filename": "file_name.yaml",
"path.basenameNormalized": "dir",
"path.filenameNormalized": "file-name.yaml",
"path[0]": "path",
"path[1]": "dir",
},
},
},
{
name: "path parameter are prefixed",
args: args{
filePath: "path/dir/file_name.yaml",
fileContent: defaultContent,
values: map[string]string{},
useGoTemplate: false,
pathParamPrefix: "myRepo",
},
want: []map[string]interface{}{
{
"foo.bar": "baz",
"myRepo.path": "path/dir",
"myRepo.path.basename": "dir",
"myRepo.path.filename": "file_name.yaml",
"myRepo.path.basenameNormalized": "dir",
"myRepo.path.filenameNormalized": "file-name.yaml",
"myRepo.path[0]": "path",
"myRepo.path[1]": "dir",
},
},
},
{
name: "file parameters are added to params with go template",
args: args{
filePath: "path/dir/file_name.yaml",
fileContent: defaultContent,
values: map[string]string{},
useGoTemplate: true,
},
want: []map[string]interface{}{
{
"foo": map[string]interface{}{
"bar": "baz",
},
"path": map[string]interface{}{
"path": "path/dir",
"basename": "dir",
"filename": "file_name.yaml",
"basenameNormalized": "dir",
"filenameNormalized": "file-name.yaml",
"segments": []string{
"path",
"dir",
},
},
},
},
},
}, params)
{
name: "path parameter are prefixed with go template",
args: args{
filePath: "path/dir/file_name.yaml",
fileContent: defaultContent,
values: map[string]string{},
useGoTemplate: true,
pathParamPrefix: "myRepo",
},
want: []map[string]interface{}{
{
"foo": map[string]interface{}{
"bar": "baz",
},
"myRepo": map[string]interface{}{
"path": map[string]interface{}{
"path": "path/dir",
"basename": "dir",
"filename": "file_name.yaml",
"basenameNormalized": "dir",
"filenameNormalized": "file-name.yaml",
"segments": []string{
"path",
"dir",
},
},
},
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
params, err := (*GitGenerator)(nil).generateParamsFromGitFile(tt.args.filePath, tt.args.fileContent, tt.args.values, tt.args.useGoTemplate, tt.args.goTemplateOptions, tt.args.pathParamPrefix)
if (err != nil) != tt.wantErr {
t.Errorf("GitGenerator.generateParamsFromGitFile() error = %v, wantErr %v", err, tt.wantErr)
return
}
assert.Equal(t, tt.want, params)
})
}
}
func TestGitGenerateParamsFromDirectories(t *testing.T) {
@@ -251,7 +305,7 @@ func TestGitGenerateParamsFromDirectories(t *testing.T) {
repoApps: []string{},
repoError: fmt.Errorf("error"),
expected: []map[string]interface{}{},
expectedError: fmt.Errorf("error"),
expectedError: fmt.Errorf("error generating params from git: error getting directories from repo: error"),
},
}
@@ -263,7 +317,7 @@ func TestGitGenerateParamsFromDirectories(t *testing.T) {
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError)
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
@@ -547,7 +601,7 @@ func TestGitGenerateParamsFromDirectoriesGoTemplate(t *testing.T) {
repoApps: []string{},
repoError: fmt.Errorf("error"),
expected: []map[string]interface{}{},
expectedError: fmt.Errorf("error"),
expectedError: fmt.Errorf("error generating params from git: error getting directories from repo: error"),
},
}
@@ -559,7 +613,7 @@ func TestGitGenerateParamsFromDirectoriesGoTemplate(t *testing.T) {
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError)
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
@@ -742,7 +796,7 @@ func TestGitGenerateParamsFromFiles(t *testing.T) {
repoFileContents: map[string][]byte{},
repoPathsError: fmt.Errorf("paths error"),
expected: []map[string]interface{}{},
expectedError: fmt.Errorf("paths error"),
expectedError: fmt.Errorf("error generating params from git: paths error"),
},
{
name: "test invalid JSON file returns error",
@@ -752,7 +806,7 @@ func TestGitGenerateParamsFromFiles(t *testing.T) {
},
repoPathsError: nil,
expected: []map[string]interface{}{},
expectedError: fmt.Errorf("unable to process file 'cluster-config/production/config.json': unable to parse file: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {}"),
expectedError: fmt.Errorf("error generating params from git: unable to process file 'cluster-config/production/config.json': unable to parse file: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {}"),
},
{
name: "test JSON array",
@@ -918,7 +972,7 @@ cluster:
t.Parallel()
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything).
argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).
Return(testCaseCopy.repoFileContents, testCaseCopy.repoPathsError)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)
@@ -1048,7 +1102,7 @@ func TestGitGenerateParamsFromFilesGoTemplate(t *testing.T) {
repoFileContents: map[string][]byte{},
repoPathsError: fmt.Errorf("paths error"),
expected: []map[string]interface{}{},
expectedError: fmt.Errorf("paths error"),
expectedError: fmt.Errorf("error generating params from git: paths error"),
},
{
name: "test invalid JSON file returns error",
@@ -1058,7 +1112,7 @@ func TestGitGenerateParamsFromFilesGoTemplate(t *testing.T) {
},
repoPathsError: nil,
expected: []map[string]interface{}{},
expectedError: fmt.Errorf("unable to process file 'cluster-config/production/config.json': unable to parse file: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {}"),
expectedError: fmt.Errorf("error generating params from git: unable to process file 'cluster-config/production/config.json': unable to parse file: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {}"),
},
{
name: "test JSON array",
@@ -1268,7 +1322,7 @@ cluster:
t.Parallel()
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything).
argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).
Return(testCaseCopy.repoFileContents, testCaseCopy.repoPathsError)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)

View File

@@ -5,8 +5,9 @@ import (
"fmt"
"time"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"sigs.k8s.io/yaml"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
var _ Generator = (*ListGenerator)(nil)
@@ -82,7 +83,7 @@ func (g *ListGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appli
if err != nil {
return nil, fmt.Errorf("error unmarshling decoded ElementsYaml %v", err)
}
res = append(res, yamlElements...)
res = append(res, yamlElements...)
}
return res, nil

View File

@@ -50,7 +50,7 @@ func (m *MatrixGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.App
g0, err := m.getParams(appSetGenerator.Matrix.Generators[0], appSet, nil)
if err != nil {
return nil, err
return nil, fmt.Errorf("error failed to get params for first generator in matrix generator: %w", err)
}
for _, a := range g0 {
g1, err := m.getParams(appSetGenerator.Matrix.Generators[1], appSet, a)
@@ -61,11 +61,11 @@ func (m *MatrixGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.App
if appSet.Spec.GoTemplate {
tmp := map[string]interface{}{}
if err := mergo.Merge(&tmp, a); err != nil {
return nil, fmt.Errorf("failed to merge params from the first generator in the matrix generator with temp map: %w", err)
if err := mergo.Merge(&tmp, b, mergo.WithOverride); err != nil {
return nil, fmt.Errorf("failed to merge params from the second generator in the matrix generator with temp map: %w", err)
}
if err := mergo.Merge(&tmp, b); err != nil {
return nil, fmt.Errorf("failed to merge params from the first generator in the matrix generator with the second: %w", err)
if err := mergo.Merge(&tmp, a, mergo.WithOverride); err != nil {
return nil, fmt.Errorf("failed to merge params from the second generator in the matrix generator with the first: %w", err)
}
res = append(res, tmp)
} else {
@@ -94,7 +94,7 @@ func (m *MatrixGenerator) getParams(appSetBaseGenerator argoprojiov1alpha1.Appli
}
mergeGen, err := getMergeGenerator(appSetBaseGenerator)
if err != nil {
return nil, err
return nil, fmt.Errorf("error retrieving merge generator: %w", err)
}
if mergeGen != nil && !appSet.Spec.ApplyNestedSelectors {
foundSelector := dropDisabledNestedSelectors(mergeGen.Generators)
@@ -146,13 +146,15 @@ func (m *MatrixGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.Ap
matrixGen, _ := getMatrixGenerator(r)
mergeGen, _ := getMergeGenerator(r)
base := &argoprojiov1alpha1.ApplicationSetGenerator{
List: r.List,
Clusters: r.Clusters,
Git: r.Git,
PullRequest: r.PullRequest,
Plugin: r.Plugin,
Matrix: matrixGen,
Merge: mergeGen,
List: r.List,
Clusters: r.Clusters,
Git: r.Git,
PullRequest: r.PullRequest,
Plugin: r.Plugin,
SCMProvider: r.SCMProvider,
ClusterDecisionResource: r.ClusterDecisionResource,
Matrix: matrixGen,
Merge: mergeGen,
}
generators := GetRelevantGenerators(base, m.supportedGenerators)

View File

@@ -271,6 +271,28 @@ func TestMatrixGenerateGoTemplate(t *testing.T) {
{"a": "2", "b": "2"},
},
},
{
name: "parameter override: first list elements take precedence",
baseGenerators: []argoprojiov1alpha1.ApplicationSetNestedGenerator{
{
List: &argoprojiov1alpha1.ListGenerator{
Elements: []apiextensionsv1.JSON{
{Raw: []byte(`{"booleanFalse": false, "booleanTrue": true, "stringFalse": "false", "stringTrue": "true"}`)},
},
},
},
{
List: &argoprojiov1alpha1.ListGenerator{
Elements: []apiextensionsv1.JSON{
{Raw: []byte(`{"booleanFalse": true, "booleanTrue": false, "stringFalse": "true", "stringTrue": "false"}`)},
},
},
},
},
expected: []map[string]interface{}{
{"booleanFalse": false, "booleanTrue": true, "stringFalse": "false", "stringTrue": "true"},
},
},
{
name: "returns error if there is less than two base generators",
baseGenerators: []argoprojiov1alpha1.ApplicationSetNestedGenerator{
@@ -404,6 +426,10 @@ func TestMatrixGetRequeueAfter(t *testing.T) {
pullRequestGenerator := &argoprojiov1alpha1.PullRequestGenerator{}
scmGenerator := &argoprojiov1alpha1.SCMProviderGenerator{}
duckTypeGenerator := &argoprojiov1alpha1.DuckTypeGenerator{}
testCases := []struct {
name string
baseGenerators []argoprojiov1alpha1.ApplicationSetNestedGenerator
@@ -461,6 +487,30 @@ func TestMatrixGetRequeueAfter(t *testing.T) {
},
expected: time.Duration(30 * time.Minute),
},
{
name: "returns the default time for duck type generator",
baseGenerators: []argoprojiov1alpha1.ApplicationSetNestedGenerator{
{
Git: gitGenerator,
},
{
ClusterDecisionResource: duckTypeGenerator,
},
},
expected: time.Duration(3 * time.Minute),
},
{
name: "returns the default time for scm generator",
baseGenerators: []argoprojiov1alpha1.ApplicationSetNestedGenerator{
{
Git: gitGenerator,
},
{
SCMProvider: scmGenerator,
},
},
expected: time.Duration(30 * time.Minute),
},
}
for _, testCase := range testCases {
@@ -471,18 +521,22 @@ func TestMatrixGetRequeueAfter(t *testing.T) {
for _, g := range testCaseCopy.baseGenerators {
gitGeneratorSpec := argoprojiov1alpha1.ApplicationSetGenerator{
Git: g.Git,
List: g.List,
PullRequest: g.PullRequest,
Git: g.Git,
List: g.List,
PullRequest: g.PullRequest,
SCMProvider: g.SCMProvider,
ClusterDecisionResource: g.ClusterDecisionResource,
}
mock.On("GetRequeueAfter", &gitGeneratorSpec).Return(testCaseCopy.gitGetRequeueAfter, nil)
}
var matrixGenerator = NewMatrixGenerator(
map[string]Generator{
"Git": mock,
"List": &ListGenerator{},
"PullRequest": &PullRequestGenerator{},
"Git": mock,
"List": &ListGenerator{},
"PullRequest": &PullRequestGenerator{},
"SCMProvider": &SCMProviderGenerator{},
"ClusterDecisionResource": &DuckTypeGenerator{},
},
)
@@ -1054,7 +1108,7 @@ func TestGitGenerator_GenerateParams_list_x_git_matrix_generator(t *testing.T) {
}
repoServiceMock := &mocks.Repos{}
repoServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(map[string][]byte{
repoServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(map[string][]byte{
"some/path.json": []byte("test: content"),
}, nil)
gitGenerator := NewGitGenerator(repoServiceMock)

View File

@@ -38,10 +38,10 @@ func NewMergeGenerator(supportedGenerators map[string]Generator) Generator {
// in slices ordered according to the order of the given generators.
func (m *MergeGenerator) getParamSetsForAllGenerators(generators []argoprojiov1alpha1.ApplicationSetNestedGenerator, appSet *argoprojiov1alpha1.ApplicationSet) ([][]map[string]interface{}, error) {
var paramSets [][]map[string]interface{}
for _, generator := range generators {
for i, generator := range generators {
generatorParamSets, err := m.getParams(generator, appSet)
if err != nil {
return nil, err
return nil, fmt.Errorf("error getting params from generator %d of %d: %w", i+1, len(generators), err)
}
// concatenate param lists produced by each generator
paramSets = append(paramSets, generatorParamSets)
@@ -61,18 +61,18 @@ func (m *MergeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appl
paramSetsFromGenerators, err := m.getParamSetsForAllGenerators(appSetGenerator.Merge.Generators, appSet)
if err != nil {
return nil, err
return nil, fmt.Errorf("error getting param sets from generators: %w", err)
}
baseParamSetsByMergeKey, err := getParamSetsByMergeKey(appSetGenerator.Merge.MergeKeys, paramSetsFromGenerators[0])
if err != nil {
return nil, err
return nil, fmt.Errorf("error getting param sets by merge key: %w", err)
}
for _, paramSets := range paramSetsFromGenerators[1:] {
paramSetsByMergeKey, err := getParamSetsByMergeKey(appSetGenerator.Merge.MergeKeys, paramSets)
if err != nil {
return nil, err
return nil, fmt.Errorf("error getting param sets by merge key: %w", err)
}
for mergeKeyValue, baseParamSet := range baseParamSetsByMergeKey {
@@ -80,13 +80,13 @@ func (m *MergeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appl
if appSet.Spec.GoTemplate {
if err := mergo.Merge(&baseParamSet, overrideParamSet, mergo.WithOverride); err != nil {
return nil, fmt.Errorf("failed to merge base param set with override param set: %w", err)
return nil, fmt.Errorf("error merging base param set with override param set: %w", err)
}
baseParamSetsByMergeKey[mergeKeyValue] = baseParamSet
} else {
overriddenParamSet, err := utils.CombineStringMapsAllowDuplicates(baseParamSet, overrideParamSet)
if err != nil {
return nil, err
return nil, fmt.Errorf("error combining string maps: %w", err)
}
baseParamSetsByMergeKey[mergeKeyValue] = utils.ConvertToMapStringInterface(overriddenParamSet)
}
@@ -125,7 +125,7 @@ func getParamSetsByMergeKey(mergeKeys []string, paramSets []map[string]interface
}
paramSetKeyJson, err := json.Marshal(paramSetKey)
if err != nil {
return nil, err
return nil, fmt.Errorf("error marshalling param set key json: %w", err)
}
paramSetKeyString := string(paramSetKeyJson)
if _, exists := paramSetsByMergeKey[paramSetKeyString]; exists {
@@ -201,13 +201,15 @@ func (m *MergeGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.App
matrixGen, _ := getMatrixGenerator(r)
mergeGen, _ := getMergeGenerator(r)
base := &argoprojiov1alpha1.ApplicationSetGenerator{
List: r.List,
Clusters: r.Clusters,
Git: r.Git,
PullRequest: r.PullRequest,
Plugin: r.Plugin,
Matrix: matrixGen,
Merge: mergeGen,
List: r.List,
Clusters: r.Clusters,
Git: r.Git,
PullRequest: r.PullRequest,
Plugin: r.Plugin,
SCMProvider: r.SCMProvider,
ClusterDecisionResource: r.ClusterDecisionResource,
Matrix: matrixGen,
Merge: mergeGen,
}
generators := GetRelevantGenerators(base, m.supportedGenerators)
@@ -234,7 +236,7 @@ func getMergeGenerator(r argoprojiov1alpha1.ApplicationSetNestedGenerator) (*arg
}
merge, err := argoprojiov1alpha1.ToNestedMergeGenerator(r.Merge)
if err != nil {
return nil, err
return nil, fmt.Errorf("error converting to nested merge generator: %w", err)
}
return merge.ToMergeGenerator(), nil
}

View File

@@ -71,7 +71,7 @@ func (g *PluginGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.App
pluginClient, err := g.getPluginFromGenerator(ctx, applicationSetInfo.Name, providerConfig)
if err != nil {
return nil, err
return nil, fmt.Errorf("error getting plugin from generator: %w", err)
}
list, err := pluginClient.List(ctx, providerConfig.Input.Parameters)
@@ -81,7 +81,7 @@ func (g *PluginGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.App
res, err := g.generateParams(appSetGenerator, applicationSetInfo, list.Output.Parameters, appSetGenerator.Plugin.Input.Parameters, applicationSetInfo.Spec.GoTemplate)
if err != nil {
return nil, err
return nil, fmt.Errorf("error generating params: %w", err)
}
return res, nil
@@ -108,7 +108,7 @@ func (g *PluginGenerator) getPluginFromGenerator(ctx context.Context, appSetName
pluginClient, err := plugin.NewPluginService(ctx, appSetName, cm["baseUrl"], token, requestTimeout)
if err != nil {
return nil, err
return nil, fmt.Errorf("error initializing plugin client: %w", err)
}
return pluginClient, nil
}

View File

@@ -475,7 +475,7 @@ func TestPluginGenerateParams(t *testing.T) {
},
},
},
expectedError: fmt.Errorf("error fetching Secret token: error fetching secret default/argocd-secret: secrets \"argocd-secret\" not found"),
expectedError: fmt.Errorf("error getting plugin from generator: error fetching Secret token: error fetching secret default/argocd-secret: secrets \"argocd-secret\" not found"),
},
{
name: "no configmap",
@@ -522,7 +522,7 @@ func TestPluginGenerateParams(t *testing.T) {
},
},
},
expectedError: fmt.Errorf("error fetching ConfigMap: configmaps \"\" not found"),
expectedError: fmt.Errorf("error getting plugin from generator: error fetching ConfigMap: configmaps \"\" not found"),
},
{
name: "no baseUrl",
@@ -577,7 +577,7 @@ func TestPluginGenerateParams(t *testing.T) {
},
},
},
expectedError: fmt.Errorf("error fetching ConfigMap: baseUrl not found in ConfigMap"),
expectedError: fmt.Errorf("error getting plugin from generator: error fetching ConfigMap: baseUrl not found in ConfigMap"),
},
{
name: "no token",
@@ -624,7 +624,7 @@ func TestPluginGenerateParams(t *testing.T) {
},
},
},
expectedError: fmt.Errorf("error fetching ConfigMap: token not found in ConfigMap"),
expectedError: fmt.Errorf("error getting plugin from generator: error fetching ConfigMap: token not found in ConfigMap"),
},
}

View File

@@ -25,12 +25,18 @@ type PullRequestGenerator struct {
client client.Client
selectServiceProviderFunc func(context.Context, *argoprojiov1alpha1.PullRequestGenerator, *argoprojiov1alpha1.ApplicationSet) (pullrequest.PullRequestService, error)
auth SCMAuthProviders
scmRootCAPath string
allowedSCMProviders []string
enableSCMProviders bool
}
func NewPullRequestGenerator(client client.Client, auth SCMAuthProviders) Generator {
func NewPullRequestGenerator(client client.Client, auth SCMAuthProviders, scmRootCAPath string, allowedScmProviders []string, enableSCMProviders bool) Generator {
g := &PullRequestGenerator{
client: client,
auth: auth,
client: client,
auth: auth,
scmRootCAPath: scmRootCAPath,
allowedSCMProviders: allowedScmProviders,
enableSCMProviders: enableSCMProviders,
}
g.selectServiceProviderFunc = g.selectServiceProvider
return g
@@ -62,7 +68,7 @@ func (g *PullRequestGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
ctx := context.Background()
svc, err := g.selectServiceProviderFunc(ctx, appSetGenerator.PullRequest, applicationSetInfo)
if err != nil {
return nil, fmt.Errorf("failed to select pull request service provider: %v", err)
return nil, fmt.Errorf("failed to select pull request service provider: %w", err)
}
pulls, err := pullrequest.ListPullRequests(ctx, svc, appSetGenerator.PullRequest.Filters)
@@ -117,6 +123,13 @@ func (g *PullRequestGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
// selectServiceProvider selects the provider to get pull requests from the configuration
func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, generatorConfig *argoprojiov1alpha1.PullRequestGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) (pullrequest.PullRequestService, error) {
if !g.enableSCMProviders {
return nil, ErrSCMProvidersDisabled
}
if err := ScmProviderAllowed(applicationSetInfo, generatorConfig, g.allowedSCMProviders); err != nil {
return nil, fmt.Errorf("scm provider not allowed: %w", err)
}
if generatorConfig.Github != nil {
return g.github(ctx, generatorConfig.Github, applicationSetInfo)
}
@@ -126,7 +139,7 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
}
return pullrequest.NewGitLabService(ctx, token, providerConfig.API, providerConfig.Project, providerConfig.Labels, providerConfig.PullRequestState)
return pullrequest.NewGitLabService(ctx, token, providerConfig.API, providerConfig.Project, providerConfig.Labels, providerConfig.PullRequestState, g.scmRootCAPath, providerConfig.Insecure)
}
if generatorConfig.Gitea != nil {
providerConfig := generatorConfig.Gitea

View File

@@ -27,7 +27,7 @@ func TestPullRequestGithubGenerateParams(t *testing.T) {
return pullrequest.NewFakeService(
ctx,
[]*pullrequest.PullRequest{
&pullrequest.PullRequest{
{
Number: 1,
Branch: "branch1",
TargetBranch: "master",
@@ -56,7 +56,7 @@ func TestPullRequestGithubGenerateParams(t *testing.T) {
return pullrequest.NewFakeService(
ctx,
[]*pullrequest.PullRequest{
&pullrequest.PullRequest{
{
Number: 2,
Branch: "feat/areally+long_pull_request_name_to_test_argo_slugification_and_branch_name_shortening_feature",
TargetBranch: "feat/anotherreally+long_pull_request_name_to_test_argo_slugification_and_branch_name_shortening_feature",
@@ -85,7 +85,7 @@ func TestPullRequestGithubGenerateParams(t *testing.T) {
return pullrequest.NewFakeService(
ctx,
[]*pullrequest.PullRequest{
&pullrequest.PullRequest{
{
Number: 1,
Branch: "a-very-short-sha",
TargetBranch: "master",
@@ -125,7 +125,7 @@ func TestPullRequestGithubGenerateParams(t *testing.T) {
return pullrequest.NewFakeService(
ctx,
[]*pullrequest.PullRequest{
&pullrequest.PullRequest{
{
Number: 1,
Branch: "branch1",
TargetBranch: "master",
@@ -162,7 +162,7 @@ func TestPullRequestGithubGenerateParams(t *testing.T) {
return pullrequest.NewFakeService(
ctx,
[]*pullrequest.PullRequest{
&pullrequest.PullRequest{
{
Number: 1,
Branch: "branch1",
TargetBranch: "master",
@@ -273,3 +273,102 @@ func TestPullRequestGetSecretRef(t *testing.T) {
})
}
}
func TestAllowedSCMProviderPullRequest(t *testing.T) {
cases := []struct {
name string
providerConfig *argoprojiov1alpha1.PullRequestGenerator
expectedError error
}{
{
name: "Error Github",
providerConfig: &argoprojiov1alpha1.PullRequestGenerator{
Github: &argoprojiov1alpha1.PullRequestGeneratorGithub{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
{
name: "Error Gitlab",
providerConfig: &argoprojiov1alpha1.PullRequestGenerator{
GitLab: &argoprojiov1alpha1.PullRequestGeneratorGitLab{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
{
name: "Error Gitea",
providerConfig: &argoprojiov1alpha1.PullRequestGenerator{
Gitea: &argoprojiov1alpha1.PullRequestGeneratorGitea{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
{
name: "Error Bitbucket",
providerConfig: &argoprojiov1alpha1.PullRequestGenerator{
BitbucketServer: &argoprojiov1alpha1.PullRequestGeneratorBitbucketServer{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
}
for _, testCase := range cases {
testCaseCopy := testCase
t.Run(testCaseCopy.name, func(t *testing.T) {
t.Parallel()
pullRequestGenerator := NewPullRequestGenerator(nil, SCMAuthProviders{}, "", []string{
"github.myorg.com",
"gitlab.myorg.com",
"gitea.myorg.com",
"bitbucket.myorg.com",
"azuredevops.myorg.com",
}, true)
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
},
Spec: argoprojiov1alpha1.ApplicationSetSpec{
Generators: []argoprojiov1alpha1.ApplicationSetGenerator{{
PullRequest: testCaseCopy.providerConfig,
}},
},
}
_, err := pullRequestGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
assert.Error(t, err, "Must return an error")
assert.ErrorAs(t, err, testCaseCopy.expectedError)
})
}
}
func TestSCMProviderDisabled_PRGenerator(t *testing.T) {
generator := NewPullRequestGenerator(nil, SCMAuthProviders{}, "", []string{}, false)
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
},
Spec: argoprojiov1alpha1.ApplicationSetSpec{
Generators: []argoprojiov1alpha1.ApplicationSetGenerator{{
PullRequest: &argoprojiov1alpha1.PullRequestGenerator{
Github: &argoprojiov1alpha1.PullRequestGeneratorGithub{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
}},
},
}
_, err := generator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
assert.ErrorIs(t, err, ErrSCMProvidersDisabled)
}

View File

@@ -2,6 +2,7 @@ package generators
import (
"context"
"errors"
"fmt"
"strings"
"time"
@@ -9,9 +10,12 @@ import (
corev1 "k8s.io/api/core/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
log "github.com/sirupsen/logrus"
"github.com/argoproj/argo-cd/v2/applicationset/services/github_app_auth"
"github.com/argoproj/argo-cd/v2/applicationset/services/scm_provider"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
"github.com/argoproj/argo-cd/v2/common"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -26,22 +30,28 @@ type SCMProviderGenerator struct {
// Testing hooks.
overrideProvider scm_provider.SCMProviderService
SCMAuthProviders
scmRootCAPath string
allowedSCMProviders []string
enableSCMProviders bool
}
type SCMAuthProviders struct {
GitHubApps github_app_auth.Credentials
}
func NewSCMProviderGenerator(client client.Client, providers SCMAuthProviders) Generator {
func NewSCMProviderGenerator(client client.Client, providers SCMAuthProviders, scmRootCAPath string, allowedSCMProviders []string, enableSCMProviders bool) Generator {
return &SCMProviderGenerator{
client: client,
SCMAuthProviders: providers,
client: client,
SCMAuthProviders: providers,
scmRootCAPath: scmRootCAPath,
allowedSCMProviders: allowedSCMProviders,
enableSCMProviders: enableSCMProviders,
}
}
// Testing generator
func NewTestSCMProviderGenerator(overrideProvider scm_provider.SCMProviderService) Generator {
return &SCMProviderGenerator{overrideProvider: overrideProvider}
return &SCMProviderGenerator{overrideProvider: overrideProvider, enableSCMProviders: true}
}
func (g *SCMProviderGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) time.Duration {
@@ -58,6 +68,46 @@ func (g *SCMProviderGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.A
return &appSetGenerator.SCMProvider.Template
}
var ErrSCMProvidersDisabled = errors.New("scm providers are disabled")
type ErrDisallowedSCMProvider struct {
Provider string
Allowed []string
}
func NewErrDisallowedSCMProvider(provider string, allowed []string) ErrDisallowedSCMProvider {
return ErrDisallowedSCMProvider{
Provider: provider,
Allowed: allowed,
}
}
func (e ErrDisallowedSCMProvider) Error() string {
return fmt.Sprintf("scm provider %q not allowed, must use one of the following: %s", e.Provider, strings.Join(e.Allowed, ", "))
}
func ScmProviderAllowed(applicationSetInfo *argoprojiov1alpha1.ApplicationSet, generator SCMGeneratorWithCustomApiUrl, allowedScmProviders []string) error {
url := generator.CustomApiUrl()
if url == "" || len(allowedScmProviders) == 0 {
return nil
}
for _, allowedScmProvider := range allowedScmProviders {
if url == allowedScmProvider {
return nil
}
}
log.WithFields(log.Fields{
common.SecurityField: common.SecurityMedium,
"applicationset": applicationSetInfo.Name,
"appSetNamespace": applicationSetInfo.Namespace,
}).Debugf("attempted to use disallowed SCM %q, must use one of the following: %s", url, strings.Join(allowedScmProviders, ", "))
return NewErrDisallowedSCMProvider(url, allowedScmProviders)
}
func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
@@ -67,10 +117,18 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
return nil, EmptyAppSetGeneratorError
}
ctx := context.Background()
if !g.enableSCMProviders {
return nil, ErrSCMProvidersDisabled
}
// Create the SCM provider helper.
providerConfig := appSetGenerator.SCMProvider
if err := ScmProviderAllowed(applicationSetInfo, providerConfig, g.allowedSCMProviders); err != nil {
return nil, fmt.Errorf("scm provider not allowed: %w", err)
}
ctx := context.Background()
var provider scm_provider.SCMProviderService
if g.overrideProvider != nil {
provider = g.overrideProvider
@@ -85,7 +143,7 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
if err != nil {
return nil, fmt.Errorf("error fetching Gitlab token: %v", err)
}
provider, err = scm_provider.NewGitlabProvider(ctx, providerConfig.Gitlab.Group, token, providerConfig.Gitlab.API, providerConfig.Gitlab.AllBranches, providerConfig.Gitlab.IncludeSubgroups)
provider, err = scm_provider.NewGitlabProvider(ctx, providerConfig.Gitlab.Group, token, providerConfig.Gitlab.API, providerConfig.Gitlab.AllBranches, providerConfig.Gitlab.IncludeSubgroups, providerConfig.Gitlab.WillIncludeSharedProjects(), providerConfig.Gitlab.Insecure, g.scmRootCAPath, providerConfig.Gitlab.Topic)
if err != nil {
return nil, fmt.Errorf("error initializing Gitlab service: %v", err)
}

View File

@@ -108,26 +108,26 @@ func TestSCMProviderGenerateParams(t *testing.T) {
},
expected: []map[string]interface{}{
{
"organization": "myorg",
"repository": "repo1",
"url": "git@github.com:myorg/repo1.git",
"branch": "main",
"organization": "myorg",
"repository": "repo1",
"url": "git@github.com:myorg/repo1.git",
"branch": "main",
"branchNormalized": "main",
"sha": "0bc57212c3cbbec69d20b34c507284bd300def5b",
"short_sha": "0bc57212",
"short_sha_7": "0bc5721",
"labels": "prod,staging",
"sha": "0bc57212c3cbbec69d20b34c507284bd300def5b",
"short_sha": "0bc57212",
"short_sha_7": "0bc5721",
"labels": "prod,staging",
},
{
"organization": "myorg",
"repository": "repo2",
"url": "git@github.com:myorg/repo2.git",
"branch": "main",
"organization": "myorg",
"repository": "repo2",
"url": "git@github.com:myorg/repo2.git",
"branch": "main",
"branchNormalized": "main",
"sha": "59d0",
"short_sha": "59d0",
"short_sha_7": "59d0",
"labels": "",
"sha": "59d0",
"short_sha": "59d0",
"short_sha_7": "59d0",
"labels": "",
},
},
},
@@ -174,7 +174,7 @@ func TestSCMProviderGenerateParams(t *testing.T) {
mockProvider := &scm_provider.MockProvider{
Repos: testCaseCopy.repos,
}
scmGenerator := &SCMProviderGenerator{overrideProvider: mockProvider}
scmGenerator := &SCMProviderGenerator{overrideProvider: mockProvider, enableSCMProviders: true}
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
@@ -200,3 +200,114 @@ func TestSCMProviderGenerateParams(t *testing.T) {
})
}
}
func TestAllowedSCMProvider(t *testing.T) {
cases := []struct {
name string
providerConfig *argoprojiov1alpha1.SCMProviderGenerator
expectedError error
}{
{
name: "Error Github",
providerConfig: &argoprojiov1alpha1.SCMProviderGenerator{
Github: &argoprojiov1alpha1.SCMProviderGeneratorGithub{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
{
name: "Error Gitlab",
providerConfig: &argoprojiov1alpha1.SCMProviderGenerator{
Gitlab: &argoprojiov1alpha1.SCMProviderGeneratorGitlab{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
{
name: "Error Gitea",
providerConfig: &argoprojiov1alpha1.SCMProviderGenerator{
Gitea: &argoprojiov1alpha1.SCMProviderGeneratorGitea{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
{
name: "Error Bitbucket",
providerConfig: &argoprojiov1alpha1.SCMProviderGenerator{
BitbucketServer: &argoprojiov1alpha1.SCMProviderGeneratorBitbucketServer{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
{
name: "Error AzureDevops",
providerConfig: &argoprojiov1alpha1.SCMProviderGenerator{
AzureDevOps: &argoprojiov1alpha1.SCMProviderGeneratorAzureDevOps{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
expectedError: &ErrDisallowedSCMProvider{},
},
}
for _, testCase := range cases {
testCaseCopy := testCase
t.Run(testCaseCopy.name, func(t *testing.T) {
t.Parallel()
scmGenerator := &SCMProviderGenerator{
allowedSCMProviders: []string{
"github.myorg.com",
"gitlab.myorg.com",
"gitea.myorg.com",
"bitbucket.myorg.com",
"azuredevops.myorg.com",
},
enableSCMProviders: true,
}
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
},
Spec: argoprojiov1alpha1.ApplicationSetSpec{
Generators: []argoprojiov1alpha1.ApplicationSetGenerator{{
SCMProvider: testCaseCopy.providerConfig,
}},
},
}
_, err := scmGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
assert.Error(t, err, "Must return an error")
assert.ErrorAs(t, err, testCaseCopy.expectedError)
})
}
}
func TestSCMProviderDisabled_SCMGenerator(t *testing.T) {
generator := &SCMProviderGenerator{enableSCMProviders: false}
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
},
Spec: argoprojiov1alpha1.ApplicationSetSpec{
Generators: []argoprojiov1alpha1.ApplicationSetGenerator{{
SCMProvider: &argoprojiov1alpha1.SCMProviderGenerator{
Github: &argoprojiov1alpha1.SCMProviderGeneratorGithub{
API: "https://myservice.mynamespace.svc.cluster.local",
},
},
}},
},
}
_, err := generator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
assert.ErrorIs(t, err, ErrSCMProvidersDisabled)
}

View File

@@ -0,0 +1,5 @@
package generators
type SCMGeneratorWithCustomApiUrl interface {
CustomApiUrl() string
}

View File

@@ -13,25 +13,25 @@ type Repos struct {
mock.Mock
}
// GetDirectories provides a mock function with given fields: ctx, repoURL, revision
func (_m *Repos) GetDirectories(ctx context.Context, repoURL string, revision string) ([]string, error) {
ret := _m.Called(ctx, repoURL, revision)
// GetDirectories provides a mock function with given fields: ctx, repoURL, revision, noRevisionCache
func (_m *Repos) GetDirectories(ctx context.Context, repoURL string, revision string, noRevisionCache bool) ([]string, error) {
ret := _m.Called(ctx, repoURL, revision, noRevisionCache)
var r0 []string
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, string, string) ([]string, error)); ok {
return rf(ctx, repoURL, revision)
if rf, ok := ret.Get(0).(func(context.Context, string, string, bool) ([]string, error)); ok {
return rf(ctx, repoURL, revision, noRevisionCache)
}
if rf, ok := ret.Get(0).(func(context.Context, string, string) []string); ok {
r0 = rf(ctx, repoURL, revision)
if rf, ok := ret.Get(0).(func(context.Context, string, string, bool) []string); ok {
r0 = rf(ctx, repoURL, revision, noRevisionCache)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]string)
}
}
if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
r1 = rf(ctx, repoURL, revision)
if rf, ok := ret.Get(1).(func(context.Context, string, string, bool) error); ok {
r1 = rf(ctx, repoURL, revision, noRevisionCache)
} else {
r1 = ret.Error(1)
}
@@ -39,25 +39,25 @@ func (_m *Repos) GetDirectories(ctx context.Context, repoURL string, revision st
return r0, r1
}
// GetFiles provides a mock function with given fields: ctx, repoURL, revision, pattern
func (_m *Repos) GetFiles(ctx context.Context, repoURL string, revision string, pattern string) (map[string][]byte, error) {
ret := _m.Called(ctx, repoURL, revision, pattern)
// GetFiles provides a mock function with given fields: ctx, repoURL, revision, pattern, noRevisionCache
func (_m *Repos) GetFiles(ctx context.Context, repoURL string, revision string, pattern string, noRevisionCache bool) (map[string][]byte, error) {
ret := _m.Called(ctx, repoURL, revision, pattern, noRevisionCache)
var r0 map[string][]byte
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (map[string][]byte, error)); ok {
return rf(ctx, repoURL, revision, pattern)
if rf, ok := ret.Get(0).(func(context.Context, string, string, string, bool) (map[string][]byte, error)); ok {
return rf(ctx, repoURL, revision, pattern, noRevisionCache)
}
if rf, ok := ret.Get(0).(func(context.Context, string, string, string) map[string][]byte); ok {
r0 = rf(ctx, repoURL, revision, pattern)
if rf, ok := ret.Get(0).(func(context.Context, string, string, string, bool) map[string][]byte); ok {
r0 = rf(ctx, repoURL, revision, pattern, noRevisionCache)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(map[string][]byte)
}
}
if rf, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok {
r1 = rf(ctx, repoURL, revision, pattern)
if rf, ok := ret.Get(1).(func(context.Context, string, string, string, bool) error); ok {
r1 = rf(ctx, repoURL, revision, pattern, noRevisionCache)
} else {
r1 = ret.Error(1)
}

View File

@@ -206,9 +206,9 @@ func TestBuildURL(t *testing.T) {
},
{
name: "Provided custom URL and organization",
url: "https://azuredevops.mycompany.com/",
url: "https://azuredevops.example.com/",
organization: "myorganization",
expected: "https://azuredevops.mycompany.com/myorganization",
expected: "https://azuredevops.example.com/myorganization",
},
}

View File

@@ -26,11 +26,13 @@ func NewGiteaService(ctx context.Context, token, url, owner, repo string, insecu
if insecure {
cookieJar, _ := cookiejar.New(nil)
tr := http.DefaultTransport.(*http.Transport).Clone()
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
httpClient = &http.Client{
Jar: cookieJar,
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}}
Jar: cookieJar,
Transport: tr,
}
}
client, err := gitea.NewClient(url, gitea.SetToken(token), gitea.SetHTTPClient(httpClient))
if err != nil {

View File

@@ -269,9 +269,9 @@ func TestGetGiteaPRLabelNames(t *testing.T) {
{
Name: "PR has labels",
PullLabels: []*gitea.Label{
&gitea.Label{Name: "label1"},
&gitea.Label{Name: "label2"},
&gitea.Label{Name: "label3"},
{Name: "label1"},
{Name: "label2"},
{Name: "label3"},
},
ExpectedResult: []string{"label1", "label2", "label3"},
},

View File

@@ -22,9 +22,9 @@ func TestContainLabels(t *testing.T) {
Name: "Match labels",
Labels: []string{"label1", "label2"},
PullLabels: []*github.Label{
&github.Label{Name: toPtr("label1")},
&github.Label{Name: toPtr("label2")},
&github.Label{Name: toPtr("label3")},
{Name: toPtr("label1")},
{Name: toPtr("label2")},
{Name: toPtr("label3")},
},
Expect: true,
},
@@ -32,9 +32,9 @@ func TestContainLabels(t *testing.T) {
Name: "Not match labels",
Labels: []string{"label1", "label4"},
PullLabels: []*github.Label{
&github.Label{Name: toPtr("label1")},
&github.Label{Name: toPtr("label2")},
&github.Label{Name: toPtr("label3")},
{Name: toPtr("label1")},
{Name: toPtr("label2")},
{Name: toPtr("label3")},
},
Expect: false,
},
@@ -42,9 +42,9 @@ func TestContainLabels(t *testing.T) {
Name: "No specify",
Labels: []string{},
PullLabels: []*github.Label{
&github.Label{Name: toPtr("label1")},
&github.Label{Name: toPtr("label2")},
&github.Label{Name: toPtr("label3")},
{Name: toPtr("label1")},
{Name: toPtr("label2")},
{Name: toPtr("label3")},
},
Expect: true,
},
@@ -68,9 +68,9 @@ func TestGetGitHubPRLabelNames(t *testing.T) {
{
Name: "PR has labels",
PullLabels: []*github.Label{
&github.Label{Name: toPtr("label1")},
&github.Label{Name: toPtr("label2")},
&github.Label{Name: toPtr("label3")},
{Name: toPtr("label1")},
{Name: toPtr("label2")},
{Name: toPtr("label3")},
},
ExpectedResult: []string{"label1", "label2", "label3"},
},

View File

@@ -3,8 +3,11 @@ package pull_request
import (
"context"
"fmt"
"net/http"
"os"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
"github.com/hashicorp/go-retryablehttp"
gitlab "github.com/xanzy/go-gitlab"
)
@@ -17,7 +20,7 @@ type GitLabService struct {
var _ PullRequestService = (*GitLabService)(nil)
func NewGitLabService(ctx context.Context, token, url, project string, labels []string, pullRequestState string) (PullRequestService, error) {
func NewGitLabService(ctx context.Context, token, url, project string, labels []string, pullRequestState string, scmRootCAPath string, insecure bool) (PullRequestService, error) {
var clientOptionFns []gitlab.ClientOptionFunc
// Set a custom Gitlab base URL if one is provided
@@ -29,6 +32,14 @@ func NewGitLabService(ctx context.Context, token, url, project string, labels []
token = os.Getenv("GITLAB_TOKEN")
}
tr := http.DefaultTransport.(*http.Transport).Clone()
tr.TLSClientConfig = utils.GetTlsConfig(scmRootCAPath, insecure)
retryClient := retryablehttp.NewClient()
retryClient.HTTPClient.Transport = tr
clientOptionFns = append(clientOptionFns, gitlab.WithHTTPClient(retryClient.HTTPClient))
client, err := gitlab.NewClient(token, clientOptionFns...)
if err != nil {
return nil, fmt.Errorf("error creating Gitlab client: %v", err)

View File

@@ -34,7 +34,7 @@ func TestGitLabServiceCustomBaseURL(t *testing.T) {
writeMRListResponse(t, w)
})
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", nil, "")
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", nil, "", "", false)
assert.NoError(t, err)
_, err = svc.List(context.Background())
@@ -53,7 +53,7 @@ func TestGitLabServiceToken(t *testing.T) {
writeMRListResponse(t, w)
})
svc, err := NewGitLabService(context.Background(), "token-123", server.URL, "278964", nil, "")
svc, err := NewGitLabService(context.Background(), "token-123", server.URL, "278964", nil, "", "", false)
assert.NoError(t, err)
_, err = svc.List(context.Background())
@@ -72,7 +72,7 @@ func TestList(t *testing.T) {
writeMRListResponse(t, w)
})
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "")
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "", "", false)
assert.NoError(t, err)
prs, err := svc.List(context.Background())
@@ -96,7 +96,7 @@ func TestListWithLabels(t *testing.T) {
writeMRListResponse(t, w)
})
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{"feature", "ready"}, "")
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{"feature", "ready"}, "", "", false)
assert.NoError(t, err)
_, err = svc.List(context.Background())
@@ -115,7 +115,7 @@ func TestListWithState(t *testing.T) {
writeMRListResponse(t, w)
})
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "opened")
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "opened", "", false)
assert.NoError(t, err)
_, err = svc.List(context.Background())

View File

@@ -11,6 +11,8 @@ import (
"github.com/argoproj/argo-cd/v2/util/io"
)
//go:generate go run github.com/vektra/mockery/v2@v2.25.1 --name=RepositoryDB
// RepositoryDB Is a lean facade for ArgoDB,
// Using a lean interface makes it easier to test the functionality of the git generator
type RepositoryDB interface {
@@ -25,13 +27,15 @@ type argoCDService struct {
newFileGlobbingEnabled bool
}
//go:generate go run github.com/vektra/mockery/v2@v2.25.1 --name=Repos
type Repos interface {
// GetFiles returns content of files (not directories) within the target repo
GetFiles(ctx context.Context, repoURL string, revision string, pattern string) (map[string][]byte, error)
GetFiles(ctx context.Context, repoURL string, revision string, pattern string, noRevisionCache bool) (map[string][]byte, error)
// GetDirectories returns a list of directories (not files) within the target repo
GetDirectories(ctx context.Context, repoURL string, revision string) ([]string, error)
GetDirectories(ctx context.Context, repoURL string, revision string, noRevisionCache bool) ([]string, error)
}
func NewArgoCDService(db db.ArgoDB, submoduleEnabled bool, repoClientset apiclient.Clientset, newFileGlobbingEnabled bool) (Repos, error) {
@@ -43,7 +47,7 @@ func NewArgoCDService(db db.ArgoDB, submoduleEnabled bool, repoClientset apiclie
}, nil
}
func (a *argoCDService) GetFiles(ctx context.Context, repoURL string, revision string, pattern string) (map[string][]byte, error) {
func (a *argoCDService) GetFiles(ctx context.Context, repoURL string, revision string, pattern string, noRevisionCache bool) (map[string][]byte, error) {
repo, err := a.repositoriesDB.GetRepository(ctx, repoURL)
if err != nil {
return nil, fmt.Errorf("error in GetRepository: %w", err)
@@ -55,21 +59,22 @@ func (a *argoCDService) GetFiles(ctx context.Context, repoURL string, revision s
Revision: revision,
Path: pattern,
NewGitFileGlobbingEnabled: a.newFileGlobbingEnabled,
NoRevisionCache: noRevisionCache,
}
closer, client, err := a.repoServerClientSet.NewRepoServerClient()
if err != nil {
return nil, err
return nil, fmt.Errorf("error initialising new repo server client: %w", err)
}
defer io.Close(closer)
fileResponse, err := client.GetGitFiles(ctx, fileRequest)
if err != nil {
return nil, err
return nil, fmt.Errorf("error retrieving Git files: %w", err)
}
return fileResponse.GetMap(), nil
}
func (a *argoCDService) GetDirectories(ctx context.Context, repoURL string, revision string) ([]string, error) {
func (a *argoCDService) GetDirectories(ctx context.Context, repoURL string, revision string, noRevisionCache bool) ([]string, error) {
repo, err := a.repositoriesDB.GetRepository(ctx, repoURL)
if err != nil {
return nil, fmt.Errorf("error in GetRepository: %w", err)
@@ -79,17 +84,18 @@ func (a *argoCDService) GetDirectories(ctx context.Context, repoURL string, revi
Repo: repo,
SubmoduleEnabled: a.submoduleEnabled,
Revision: revision,
NoRevisionCache: noRevisionCache,
}
closer, client, err := a.repoServerClientSet.NewRepoServerClient()
if err != nil {
return nil, err
return nil, fmt.Errorf("error initialising new repo server client: %w", err)
}
defer io.Close(closer)
dirResponse, err := client.GetGitDirectories(ctx, dirRequest)
if err != nil {
return nil, err
return nil, fmt.Errorf("error retrieving Git Directories: %w", err)
}
return dirResponse.GetPaths(), nil

View File

@@ -25,9 +25,10 @@ func TestGetDirectories(t *testing.T) {
repoServerClientFuncs []func(*repo_mocks.RepoServerServiceClient)
}
type args struct {
ctx context.Context
repoURL string
revision string
ctx context.Context
repoURL string
revision string
noRevisionCache bool
}
tests := []struct {
name string
@@ -88,11 +89,11 @@ func TestGetDirectories(t *testing.T) {
submoduleEnabled: tt.fields.submoduleEnabled,
repoServerClientSet: &repo_mocks.Clientset{RepoServerServiceClient: mockRepoClient},
}
got, err := a.GetDirectories(tt.args.ctx, tt.args.repoURL, tt.args.revision)
if !tt.wantErr(t, err, fmt.Sprintf("GetDirectories(%v, %v, %v)", tt.args.ctx, tt.args.repoURL, tt.args.revision)) {
got, err := a.GetDirectories(tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.noRevisionCache)
if !tt.wantErr(t, err, fmt.Sprintf("GetDirectories(%v, %v, %v, %v)", tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.noRevisionCache)) {
return
}
assert.Equalf(t, tt.want, got, "GetDirectories(%v, %v, %v)", tt.args.ctx, tt.args.repoURL, tt.args.revision)
assert.Equalf(t, tt.want, got, "GetDirectories(%v, %v, %v, %v)", tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.noRevisionCache)
})
}
}
@@ -105,10 +106,11 @@ func TestGetFiles(t *testing.T) {
repoServerClientFuncs []func(*repo_mocks.RepoServerServiceClient)
}
type args struct {
ctx context.Context
repoURL string
revision string
pattern string
ctx context.Context
repoURL string
revision string
pattern string
noRevisionCache bool
}
tests := []struct {
name string
@@ -175,11 +177,11 @@ func TestGetFiles(t *testing.T) {
submoduleEnabled: tt.fields.submoduleEnabled,
repoServerClientSet: &repo_mocks.Clientset{RepoServerServiceClient: mockRepoClient},
}
got, err := a.GetFiles(tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.pattern)
if !tt.wantErr(t, err, fmt.Sprintf("GetFiles(%v, %v, %v, %v)", tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.pattern)) {
got, err := a.GetFiles(tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.pattern, tt.args.noRevisionCache)
if !tt.wantErr(t, err, fmt.Sprintf("GetFiles(%v, %v, %v, %v, %v)", tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.pattern, tt.args.noRevisionCache)) {
return
}
assert.Equalf(t, tt.want, got, "GetFiles(%v, %v, %v, %v)", tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.pattern)
assert.Equalf(t, tt.want, got, "GetFiles(%v, %v, %v, %v, %v)", tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.pattern, tt.args.noRevisionCache)
})
}
}

View File

@@ -5,7 +5,6 @@ import (
"fmt"
"net/http"
"net/http/httptest"
"os"
"testing"
"github.com/stretchr/testify/assert"
@@ -62,7 +61,7 @@ func TestBitbucketHasRepo(t *testing.T) {
}))
defer func() { testServer.Close() }()
os.Setenv("BITBUCKET_API_BASE_URL", testServer.URL)
t.Setenv("BITBUCKET_API_BASE_URL", testServer.URL)
cases := []struct {
name, path, repo, owner, sha string
status int
@@ -449,7 +448,7 @@ func TestBitbucketListRepos(t *testing.T) {
}))
defer func() { testServer.Close() }()
os.Setenv("BITBUCKET_API_BASE_URL", testServer.URL)
t.Setenv("BITBUCKET_API_BASE_URL", testServer.URL)
cases := []struct {
name, proto, owner string
hasError, allBranches bool

View File

@@ -3,6 +3,7 @@ package scm_provider
import (
"context"
"fmt"
"io"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
bitbucketv1 "github.com/gfleury/go-bitbucket-v1"
@@ -183,8 +184,9 @@ func (b *BitbucketServerProvider) listBranches(repo *Repository) ([]bitbucketv1.
func (b *BitbucketServerProvider) getDefaultBranch(org string, repo string) (*bitbucketv1.Branch, error) {
response, err := b.client.DefaultApi.GetDefaultBranch(org, repo)
if response != nil && response.StatusCode == 404 {
// There's no default branch i.e. empty repo, not an error
// 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 == io.EOF) {
return nil, nil
}
if err != nil {

View File

@@ -365,6 +365,28 @@ func TestGetBranchesMissingDefault(t *testing.T) {
assert.Empty(t, repos)
}
func TestGetBranchesEmptyRepo(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
assert.Empty(t, r.Header.Get("Authorization"))
switch r.RequestURI {
case "/rest/api/1.0/projects/PROJECT/repos/REPO/branches/default":
return
}
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false)
assert.NoError(t, err)
repos, err := provider.GetBranches(context.Background(), &Repository{
Organization: "PROJECT",
Repository: "REPO",
URL: "ssh://git@mycompany.bitbucket.org/PROJECT/REPO.git",
Labels: []string{},
RepositoryId: 1,
})
assert.Empty(t, repos)
assert.NoError(t, err)
}
func TestGetBranchesErrorDefaultBranch(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
assert.Empty(t, r.Header.Get("Authorization"))

View File

@@ -27,11 +27,13 @@ func NewGiteaProvider(ctx context.Context, owner, token, url string, allBranches
if insecure {
cookieJar, _ := cookiejar.New(nil)
tr := http.DefaultTransport.(*http.Transport).Clone()
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
httpClient = &http.Client{
Jar: cookieJar,
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}}
Jar: cookieJar,
Transport: tr,
}
}
client, err := gitea.NewClient(url, gitea.SetToken(token), gitea.SetHTTPClient(httpClient))
if err != nil {

View File

@@ -7,38 +7,50 @@ import (
"os"
pathpkg "path"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
"github.com/hashicorp/go-retryablehttp"
"github.com/xanzy/go-gitlab"
)
type GitlabProvider struct {
client *gitlab.Client
organization string
allBranches bool
includeSubgroups bool
client *gitlab.Client
organization string
allBranches bool
includeSubgroups bool
includeSharedProjects bool
topic string
}
var _ SCMProviderService = &GitlabProvider{}
func NewGitlabProvider(ctx context.Context, organization string, token string, url string, allBranches, includeSubgroups bool) (*GitlabProvider, error) {
func NewGitlabProvider(ctx context.Context, organization string, token string, url string, allBranches, includeSubgroups, includeSharedProjects, insecure bool, scmRootCAPath, topic string) (*GitlabProvider, error) {
// Undocumented environment variable to set a default token, to be used in testing to dodge anonymous rate limits.
if token == "" {
token = os.Getenv("GITLAB_TOKEN")
}
var client *gitlab.Client
tr := http.DefaultTransport.(*http.Transport).Clone()
tr.TLSClientConfig = utils.GetTlsConfig(scmRootCAPath, insecure)
retryClient := retryablehttp.NewClient()
retryClient.HTTPClient.Transport = tr
if url == "" {
var err error
client, err = gitlab.NewClient(token)
client, err = gitlab.NewClient(token, gitlab.WithHTTPClient(retryClient.HTTPClient))
if err != nil {
return nil, err
}
} else {
var err error
client, err = gitlab.NewClient(token, gitlab.WithBaseURL(url))
client, err = gitlab.NewClient(token, gitlab.WithBaseURL(url), gitlab.WithHTTPClient(retryClient.HTTPClient))
if err != nil {
return nil, err
}
}
return &GitlabProvider{client: client, organization: organization, allBranches: allBranches, includeSubgroups: includeSubgroups}, nil
return &GitlabProvider{client: client, organization: organization, allBranches: allBranches, includeSubgroups: includeSubgroups, includeSharedProjects: includeSharedProjects, topic: topic}, nil
}
func (g *GitlabProvider) GetBranches(ctx context.Context, repo *Repository) ([]*Repository, error) {
@@ -66,7 +78,10 @@ func (g *GitlabProvider) ListRepos(ctx context.Context, cloneProtocol string) ([
opt := &gitlab.ListGroupProjectsOptions{
ListOptions: gitlab.ListOptions{PerPage: 100},
IncludeSubGroups: &g.includeSubgroups,
WithShared: &g.includeSharedProjects,
Topic: &g.topic,
}
repos := []*Repository{}
for {
gitlabRepos, resp, err := g.client.Groups.ListGroupProjects(g.organization, opt)
@@ -85,12 +100,20 @@ func (g *GitlabProvider) ListRepos(ctx context.Context, cloneProtocol string) ([
return nil, fmt.Errorf("unknown clone protocol for Gitlab %v", cloneProtocol)
}
var repoLabels []string
if len(gitlabRepo.Topics) == 0 {
// fallback to for gitlab prior to 14.5
repoLabels = gitlabRepo.TagList
} else {
repoLabels = gitlabRepo.Topics
}
repos = append(repos, &Repository{
Organization: gitlabRepo.Namespace.FullPath,
Repository: gitlabRepo.Path,
URL: url,
Branch: gitlabRepo.DefaultBranch,
Labels: gitlabRepo.TagList,
Labels: repoLabels,
RepositoryId: gitlabRepo.ID,
})
}

View File

@@ -19,7 +19,7 @@ func gitlabMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
switch r.RequestURI {
case "/api/v4":
fmt.Println("here1")
case "/api/v4/groups/test-argocd-proton/projects?include_subgroups=false&per_page=100":
case "/api/v4/groups/test-argocd-proton/projects?include_subgroups=false&per_page=100", "/api/v4/groups/test-argocd-proton/projects?include_subgroups=false&per_page=100&topic=&with_shared=false":
fmt.Println("here")
_, err := io.WriteString(w, `[{
"id": 27084533,
@@ -30,8 +30,12 @@ func gitlabMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
"path_with_namespace": "test-argocd-proton/argocd",
"created_at": "2021-06-01T17:30:44.724Z",
"default_branch": "master",
"tag_list": [],
"topics": [],
"tag_list": [
"test-topic"
],
"topics": [
"test-topic"
],
"ssh_url_to_repo": "git@gitlab.com:test-argocd-proton/argocd.git",
"http_url_to_repo": "https://gitlab.com/test-argocd-proton/argocd.git",
"web_url": "https://gitlab.com/test-argocd-proton/argocd",
@@ -143,6 +147,650 @@ func gitlabMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
if err != nil {
t.Fail()
}
case "/api/v4/groups/test-argocd-proton/projects?include_subgroups=true&per_page=100&topic=&with_shared=false":
fmt.Println("here")
_, err := io.WriteString(w, `[{
"id": 27084533,
"description": "",
"name": "argocd",
"name_with_namespace": "test argocd proton / argocd",
"path": "argocd",
"path_with_namespace": "test-argocd-proton/argocd",
"created_at": "2021-06-01T17:30:44.724Z",
"default_branch": "master",
"tag_list": [
"test-topic",
"specific-topic"
],
"topics": [
"test-topic",
"specific-topic"
],
"ssh_url_to_repo": "git@gitlab.com:test-argocd-proton/argocd.git",
"http_url_to_repo": "https://gitlab.com/test-argocd-proton/argocd.git",
"web_url": "https://gitlab.com/test-argocd-proton/argocd",
"readme_url": null,
"avatar_url": null,
"forks_count": 0,
"star_count": 0,
"last_activity_at": "2021-06-04T08:19:51.656Z",
"namespace": {
"id": 12258515,
"name": "test argocd proton",
"path": "test-argocd-proton",
"kind": "gro* Connection #0 to host gitlab.com left intact up ",
"full_path ": "test - argocd - proton ",
"parent_id ": null,
"avatar_url ": null,
"web_url ": "https: //gitlab.com/groups/test-argocd-proton"
},
"container_registry_image_prefix": "registry.gitlab.com/test-argocd-proton/argocd",
"_links": {
"self": "https://gitlab.com/api/v4/projects/27084533",
"issues": "https://gitlab.com/api/v4/projects/27084533/issues",
"merge_requests": "https://gitlab.com/api/v4/projects/27084533/merge_requests",
"repo_branches": "https://gitlab.com/api/v4/projects/27084533/repository/branches",
"labels": "https://gitlab.com/api/v4/projects/27084533/labels",
"events": "https://gitlab.com/api/v4/projects/27084533/events",
"members": "https://gitlab.com/api/v4/projects/27084533/members",
"cluster_agents": "https://gitlab.com/api/v4/projects/27084533/cluster_agents"
},
"packages_enabled": true,
"empty_repo": false,
"archived": false,
"visibility": "public",
"resolve_outdated_diff_discussions": false,
"container_expiration_policy": {
"cadence": "1d",
"enabled": false,
"keep_n": 10,
"older_than": "90d",
"name_regex": ".*",
"name_regex_keep": null,
"next_run_at": "2021-06-02T17:30:44.740Z"
},
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"container_registry_enabled": true,
"service_desk_enabled": true,
"can_create_merge_request_in": false,
"issues_access_level": "enabled",
"repository_access_level": "enabled",
"merge_requests_access_level": "enabled",
"forking_access_level": "enabled",
"wiki_access_level": "enabled",
"builds_access_level": "enabled",
"snippets_access_level": "enabled",
"pages_access_level": "enabled",
"operations_access_level": "enabled",
"analytics_access_level": "enabled",
"container_registry_access_level": "enabled",
"security_and_compliance_access_level": "private",
"emails_disabled": null,
"shared_runners_enabled": true,
"lfs_enabled": true,
"creator_id": 2378866,
"import_status": "none",
"open_issues_count": 0,
"ci_default_git_depth": 50,
"ci_forward_deployment_enabled": true,
"ci_job_token_scope_enabled": false,
"public_jobs": true,
"build_timeout": 3600,
"auto_cancel_pending_pipelines": "enabled",
"ci_config_path": "",
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": null,
"restrict_user_defined_variables": false,
"request_access_enabled": true,
"only_allow_merge_if_all_discussions_are_resolved": false,
"remove_source_branch_after_merge": true,
"printing_merge_request_link_enabled": true,
"merge_method": "merge",
"squash_option": "default_off",
"suggestion_commit_message": null,
"merge_commit_template": null,
"squash_commit_template": null,
"auto_devops_enabled": false,
"auto_devops_deploy_strategy": "continuous",
"autoclose_referenced_issues": true,
"keep_latest_artifact": true,
"runner_token_expiration_interval": null,
"approvals_before_merge": 0,
"mirror": false,
"external_authorization_classification_label": "",
"marked_for_deletion_at": null,
"marked_for_deletion_on": null,
"requirements_enabled": true,
"requirements_access_level": "enabled",
"security_and_compliance_enabled": false,
"compliance_frameworks": [],
"issues_template": null,
"merge_requests_template": null,
"merge_pipelines_enabled": false,
"merge_trains_enabled": false
},
{
"id": 27084538,
"description": "This is a Project from a Subgroup",
"name": "argocd-subgroup",
"name_with_namespace": "test argocd proton / subgroup / argocd-subgroup",
"path": "argocd-subgroup",
"path_with_namespace": "test-argocd-proton/subgroup/argocd-subgroup",
"created_at": "2021-06-01T17:30:44.724Z",
"default_branch": "master",
"tag_list": [
"test-topic"
],
"topics": [
"test-topic"
],
"ssh_url_to_repo": "git@gitlab.com:test-argocd-proton/subgroup/argocd-subgroup.git",
"http_url_to_repo": "https://gitlab.com/test-argocd-proton/subgroup/argocd-subgroup.git",
"web_url": "https://gitlab.com/test-argocd-proton/subgroup/argocd-subgroup",
"readme_url": null,
"avatar_url": null,
"forks_count": 0,
"star_count": 0,
"last_activity_at": "2021-06-04T08:19:51.656Z",
"namespace": {
"id": 12258542,
"name": "subgroup",
"path": "subgroup",
"kind": "group ",
"full_path ": "test-argocd-proton/subgroup",
"parent_id ": 12258515,
"avatar_url ": null,
"web_url ": "https: //gitlab.com/groups/test-argocd-proton/subgroup"
},
"container_registry_image_prefix": "registry.gitlab.com/test-argocd-proton/subgroup/argocd",
"_links": {
"self": "https://gitlab.com/api/v4/projects/27084538",
"issues": "https://gitlab.com/api/v4/projects/27084538/issues",
"merge_requests": "https://gitlab.com/api/v4/projects/27084538/merge_requests",
"repo_branches": "https://gitlab.com/api/v4/projects/27084538/repository/branches",
"labels": "https://gitlab.com/api/v4/projects/27084538/labels",
"events": "https://gitlab.com/api/v4/projects/27084538/events",
"members": "https://gitlab.com/api/v4/projects/27084538/members",
"cluster_agents": "https://gitlab.com/api/v4/projects/27084538/cluster_agents"
},
"packages_enabled": true,
"empty_repo": false,
"archived": false,
"visibility": "public",
"resolve_outdated_diff_discussions": false,
"container_expiration_policy": {
"cadence": "1d",
"enabled": false,
"keep_n": 10,
"older_than": "90d",
"name_regex": ".*",
"name_regex_keep": null,
"next_run_at": "2021-06-02T17:30:44.740Z"
},
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"container_registry_enabled": true,
"service_desk_enabled": true,
"can_create_merge_request_in": false,
"issues_access_level": "enabled",
"repository_access_level": "enabled",
"merge_requests_access_level": "enabled",
"forking_access_level": "enabled",
"wiki_access_level": "enabled",
"builds_access_level": "enabled",
"snippets_access_level": "enabled",
"pages_access_level": "enabled",
"operations_access_level": "enabled",
"analytics_access_level": "enabled",
"container_registry_access_level": "enabled",
"security_and_compliance_access_level": "private",
"emails_disabled": null,
"shared_runners_enabled": true,
"lfs_enabled": true,
"creator_id": 2378866,
"import_status": "none",
"open_issues_count": 0,
"ci_default_git_depth": 50,
"ci_forward_deployment_enabled": true,
"ci_job_token_scope_enabled": false,
"public_jobs": true,
"build_timeout": 3600,
"auto_cancel_pending_pipelines": "enabled",
"ci_config_path": "",
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": null,
"restrict_user_defined_variables": false,
"request_access_enabled": true,
"only_allow_merge_if_all_discussions_are_resolved": false,
"remove_source_branch_after_merge": true,
"printing_merge_request_link_enabled": true,
"merge_method": "merge",
"squash_option": "default_off",
"suggestion_commit_message": null,
"merge_commit_template": null,
"squash_commit_template": null,
"auto_devops_enabled": false,
"auto_devops_deploy_strategy": "continuous",
"autoclose_referenced_issues": true,
"keep_latest_artifact": true,
"runner_token_expiration_interval": null,
"approvals_before_merge": 0,
"mirror": false,
"external_authorization_classification_label": "",
"marked_for_deletion_at": null,
"marked_for_deletion_on": null,
"requirements_enabled": true,
"requirements_access_level": "enabled",
"security_and_compliance_enabled": false,
"compliance_frameworks": [],
"issues_template": null,
"merge_requests_template": null,
"merge_pipelines_enabled": false,
"merge_trains_enabled": false
}
]`)
if err != nil {
t.Fail()
}
case "/api/v4/groups/test-argocd-proton/projects?include_subgroups=false&per_page=100&topic=specific-topic&with_shared=false":
fmt.Println("here")
_, err := io.WriteString(w, `[{
"id": 27084533,
"description": "",
"name": "argocd",
"name_with_namespace": "test argocd proton / argocd",
"path": "argocd",
"path_with_namespace": "test-argocd-proton/argocd",
"created_at": "2021-06-01T17:30:44.724Z",
"default_branch": "master",
"tag_list": [
"test-topic",
"specific-topic"
],
"topics": [
"test-topic",
"specific-topic"
],
"ssh_url_to_repo": "git@gitlab.com:test-argocd-proton/argocd.git",
"http_url_to_repo": "https://gitlab.com/test-argocd-proton/argocd.git",
"web_url": "https://gitlab.com/test-argocd-proton/argocd",
"readme_url": null,
"avatar_url": null,
"forks_count": 0,
"star_count": 0,
"last_activity_at": "2021-06-04T08:19:51.656Z",
"namespace": {
"id": 12258515,
"name": "test argocd proton",
"path": "test-argocd-proton",
"kind": "gro* Connection #0 to host gitlab.com left intact up ",
"full_path ": "test - argocd - proton ",
"parent_id ": null,
"avatar_url ": null,
"web_url ": "https: //gitlab.com/groups/test-argocd-proton"
},
"container_registry_image_prefix": "registry.gitlab.com/test-argocd-proton/argocd",
"_links": {
"self": "https://gitlab.com/api/v4/projects/27084533",
"issues": "https://gitlab.com/api/v4/projects/27084533/issues",
"merge_requests": "https://gitlab.com/api/v4/projects/27084533/merge_requests",
"repo_branches": "https://gitlab.com/api/v4/projects/27084533/repository/branches",
"labels": "https://gitlab.com/api/v4/projects/27084533/labels",
"events": "https://gitlab.com/api/v4/projects/27084533/events",
"members": "https://gitlab.com/api/v4/projects/27084533/members",
"cluster_agents": "https://gitlab.com/api/v4/projects/27084533/cluster_agents"
},
"packages_enabled": true,
"empty_repo": false,
"archived": false,
"visibility": "public",
"resolve_outdated_diff_discussions": false,
"container_expiration_policy": {
"cadence": "1d",
"enabled": false,
"keep_n": 10,
"older_than": "90d",
"name_regex": ".*",
"name_regex_keep": null,
"next_run_at": "2021-06-02T17:30:44.740Z"
},
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"container_registry_enabled": true,
"service_desk_enabled": true,
"can_create_merge_request_in": false,
"issues_access_level": "enabled",
"repository_access_level": "enabled",
"merge_requests_access_level": "enabled",
"forking_access_level": "enabled",
"wiki_access_level": "enabled",
"builds_access_level": "enabled",
"snippets_access_level": "enabled",
"pages_access_level": "enabled",
"operations_access_level": "enabled",
"analytics_access_level": "enabled",
"container_registry_access_level": "enabled",
"security_and_compliance_access_level": "private",
"emails_disabled": null,
"shared_runners_enabled": true,
"lfs_enabled": true,
"creator_id": 2378866,
"import_status": "none",
"open_issues_count": 0,
"ci_default_git_depth": 50,
"ci_forward_deployment_enabled": true,
"ci_job_token_scope_enabled": false,
"public_jobs": true,
"build_timeout": 3600,
"auto_cancel_pending_pipelines": "enabled",
"ci_config_path": "",
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": null,
"restrict_user_defined_variables": false,
"request_access_enabled": true,
"only_allow_merge_if_all_discussions_are_resolved": false,
"remove_source_branch_after_merge": true,
"printing_merge_request_link_enabled": true,
"merge_method": "merge",
"squash_option": "default_off",
"suggestion_commit_message": null,
"merge_commit_template": null,
"squash_commit_template": null,
"auto_devops_enabled": false,
"auto_devops_deploy_strategy": "continuous",
"autoclose_referenced_issues": true,
"keep_latest_artifact": true,
"runner_token_expiration_interval": null,
"approvals_before_merge": 0,
"mirror": false,
"external_authorization_classification_label": "",
"marked_for_deletion_at": null,
"marked_for_deletion_on": null,
"requirements_enabled": true,
"requirements_access_level": "enabled",
"security_and_compliance_enabled": false,
"compliance_frameworks": [],
"issues_template": null,
"merge_requests_template": null,
"merge_pipelines_enabled": false,
"merge_trains_enabled": false
}
]`)
if err != nil {
t.Fail()
}
case "/api/v4/groups/test-argocd-proton/projects?include_subgroups=true&per_page=100&topic=&with_shared=true":
fmt.Println("here")
_, err := io.WriteString(w, `[{
"id": 27084533,
"description": "",
"name": "argocd",
"name_with_namespace": "test argocd proton / argocd",
"path": "argocd",
"path_with_namespace": "test-argocd-proton/argocd",
"created_at": "2021-06-01T17:30:44.724Z",
"default_branch": "master",
"tag_list": [
"test-topic"
],
"topics": [
"test-topic"
],
"ssh_url_to_repo": "git@gitlab.com:test-argocd-proton/argocd.git",
"http_url_to_repo": "https://gitlab.com/test-argocd-proton/argocd.git",
"web_url": "https://gitlab.com/test-argocd-proton/argocd",
"readme_url": null,
"avatar_url": null,
"forks_count": 0,
"star_count": 0,
"last_activity_at": "2021-06-04T08:19:51.656Z",
"namespace": {
"id": 12258515,
"name": "test argocd proton",
"path": "test-argocd-proton",
"kind": "gro* Connection #0 to host gitlab.com left intact up ",
"full_path ": "test - argocd - proton ",
"parent_id ": null,
"avatar_url ": null,
"web_url ": "https: //gitlab.com/groups/test-argocd-proton"
},
"container_registry_image_prefix": "registry.gitlab.com/test-argocd-proton/argocd",
"_links": {
"self": "https://gitlab.com/api/v4/projects/27084533",
"issues": "https://gitlab.com/api/v4/projects/27084533/issues",
"merge_requests": "https://gitlab.com/api/v4/projects/27084533/merge_requests",
"repo_branches": "https://gitlab.com/api/v4/projects/27084533/repository/branches",
"labels": "https://gitlab.com/api/v4/projects/27084533/labels",
"events": "https://gitlab.com/api/v4/projects/27084533/events",
"members": "https://gitlab.com/api/v4/projects/27084533/members",
"cluster_agents": "https://gitlab.com/api/v4/projects/27084533/cluster_agents"
},
"packages_enabled": true,
"empty_repo": false,
"archived": false,
"visibility": "public",
"resolve_outdated_diff_discussions": false,
"container_expiration_policy": {
"cadence": "1d",
"enabled": false,
"keep_n": 10,
"older_than": "90d",
"name_regex": ".*",
"name_regex_keep": null,
"next_run_at": "2021-06-02T17:30:44.740Z"
},
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"container_registry_enabled": true,
"service_desk_enabled": true,
"can_create_merge_request_in": false,
"issues_access_level": "enabled",
"repository_access_level": "enabled",
"merge_requests_access_level": "enabled",
"forking_access_level": "enabled",
"wiki_access_level": "enabled",
"builds_access_level": "enabled",
"snippets_access_level": "enabled",
"pages_access_level": "enabled",
"operations_access_level": "enabled",
"analytics_access_level": "enabled",
"container_registry_access_level": "enabled",
"security_and_compliance_access_level": "private",
"emails_disabled": null,
"shared_runners_enabled": true,
"lfs_enabled": true,
"creator_id": 2378866,
"import_status": "none",
"open_issues_count": 0,
"ci_default_git_depth": 50,
"ci_forward_deployment_enabled": true,
"ci_job_token_scope_enabled": false,
"public_jobs": true,
"build_timeout": 3600,
"auto_cancel_pending_pipelines": "enabled",
"ci_config_path": "",
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": null,
"restrict_user_defined_variables": false,
"request_access_enabled": true,
"only_allow_merge_if_all_discussions_are_resolved": false,
"remove_source_branch_after_merge": true,
"printing_merge_request_link_enabled": true,
"merge_method": "merge",
"squash_option": "default_off",
"suggestion_commit_message": null,
"merge_commit_template": null,
"squash_commit_template": null,
"auto_devops_enabled": false,
"auto_devops_deploy_strategy": "continuous",
"autoclose_referenced_issues": true,
"keep_latest_artifact": true,
"runner_token_expiration_interval": null,
"approvals_before_merge": 0,
"mirror": false,
"external_authorization_classification_label": "",
"marked_for_deletion_at": null,
"marked_for_deletion_on": null,
"requirements_enabled": true,
"requirements_access_level": "enabled",
"security_and_compliance_enabled": false,
"compliance_frameworks": [],
"issues_template": null,
"merge_requests_template": null,
"merge_pipelines_enabled": false,
"merge_trains_enabled": false
},
{
"id": 27084534,
"description": "This is a Shared Project",
"name": "shared-argocd",
"name_with_namespace": "shared project to test argocd proton / argocd",
"path": "shared-argocd",
"path_with_namespace": "test-shared-argocd-proton/shared-argocd",
"created_at": "2021-06-11T17:30:44.724Z",
"default_branch": "master",
"tag_list": [
"test-topic"
],
"topics": [
"test-topic"
],
"ssh_url_to_repo": "git@gitlab.com:test-shared-argocd-proton/shared-argocd.git",
"http_url_to_repo": "https://gitlab.com/test-shared-argocd-proton/shared-argocd.git",
"web_url": "https://gitlab.com/test-shared-argocd-proton/shared-argocd",
"readme_url": null,
"avatar_url": null,
"forks_count": 0,
"star_count": 0,
"last_activity_at": "2021-06-04T08:19:51.656Z",
"namespace": {
"id": 12258518,
"name": "test shared argocd proton",
"path": "test-shared-argocd-proton",
"kind": "group",
"full_path ": "test-shared-argocd-proton",
"parent_id ": null,
"avatar_url ": null,
"web_url ": "https: //gitlab.com/groups/test-shared-argocd-proton"
},
"container_registry_image_prefix": "registry.gitlab.com/test-shared-argocd-proton/shared-argocd",
"_links": {
"self": "https://gitlab.com/api/v4/projects/27084534",
"issues": "https://gitlab.com/api/v4/projects/27084534/issues",
"merge_requests": "https://gitlab.com/api/v4/projects/27084534/merge_requests",
"repo_branches": "https://gitlab.com/api/v4/projects/27084534/repository/branches",
"labels": "https://gitlab.com/api/v4/projects/27084534/labels",
"events": "https://gitlab.com/api/v4/projects/27084534/events",
"members": "https://gitlab.com/api/v4/projects/27084534/members",
"cluster_agents": "https://gitlab.com/api/v4/projects/27084534/cluster_agents"
},
"packages_enabled": true,
"empty_repo": false,
"archived": false,
"visibility": "public",
"resolve_outdated_diff_discussions": false,
"container_expiration_policy": {
"cadence": "1d",
"enabled": false,
"keep_n": 10,
"older_than": "90d",
"name_regex": ".*",
"name_regex_keep": null,
"next_run_at": "2021-06-12T17:30:44.740Z"
},
"issues_enabled": true,
"merge_requests_enabled": true,
"wiki_enabled": true,
"jobs_enabled": true,
"snippets_enabled": true,
"container_registry_enabled": true,
"service_desk_enabled": true,
"can_create_merge_request_in": false,
"issues_access_level": "enabled",
"repository_access_level": "enabled",
"merge_requests_access_level": "enabled",
"forking_access_level": "enabled",
"wiki_access_level": "enabled",
"builds_access_level": "enabled",
"snippets_access_level": "enabled",
"pages_access_level": "enabled",
"operations_access_level": "enabled",
"analytics_access_level": "enabled",
"container_registry_access_level": "enabled",
"security_and_compliance_access_level": "private",
"emails_disabled": null,
"shared_runners_enabled": true,
"lfs_enabled": true,
"creator_id": 2378866,
"import_status": "none",
"open_issues_count": 0,
"ci_default_git_depth": 50,
"ci_forward_deployment_enabled": true,
"ci_job_token_scope_enabled": false,
"public_jobs": true,
"build_timeout": 3600,
"auto_cancel_pending_pipelines": "enabled",
"ci_config_path": "",
"shared_with_groups": [
{
"group_id": 12258515,
"group_name": "test-argocd-proton",
"group_full_path": "test-shared-argocd-proton",
"group_access_level": 30,
"expires_at": null
}
],
"only_allow_merge_if_pipeline_succeeds": false,
"allow_merge_on_skipped_pipeline": null,
"restrict_user_defined_variables": false,
"request_access_enabled": true,
"only_allow_merge_if_all_discussions_are_resolved": false,
"remove_source_branch_after_merge": true,
"printing_merge_request_link_enabled": true,
"merge_method": "merge",
"squash_option": "default_off",
"suggestion_commit_message": null,
"merge_commit_template": null,
"squash_commit_template": null,
"auto_devops_enabled": false,
"auto_devops_deploy_strategy": "continuous",
"autoclose_referenced_issues": true,
"keep_latest_artifact": true,
"runner_token_expiration_interval": null,
"approvals_before_merge": 0,
"mirror": false,
"external_authorization_classification_label": "",
"marked_for_deletion_at": null,
"marked_for_deletion_on": null,
"requirements_enabled": true,
"requirements_access_level": "enabled",
"security_and_compliance_enabled": false,
"compliance_frameworks": [],
"issues_template": null,
"merge_requests_template": null,
"merge_pipelines_enabled": false,
"merge_trains_enabled": false
}]`)
if err != nil {
t.Fail()
}
case "/api/v4/projects/27084533/repository/branches/master":
fmt.Println("returning")
_, err := io.WriteString(w, `{
@@ -229,6 +877,116 @@ func gitlabMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
if err != nil {
t.Fail()
}
case "/api/v4/projects/27084534/repository/branches?per_page=100":
_, err := io.WriteString(w, `[{
"name": "master",
"commit": {
"id": "8898d7999fc99dd0fd578650b58b244fc63f6b53",
"short_id": "8898d799",
"created_at": "2021-06-04T08:24:44.000+00:00",
"parent_ids": null,
"title": "Merge branch 'pipeline-1317911429' into 'master'",
"message": "Merge branch 'pipeline-1317911429' into 'master'",
"author_name": "Martin Vozník",
"author_email": "martin@voznik.cz",
"authored_date": "2021-06-04T08:24:44.000+00:00",
"committer_name": "Martin Vozník",
"committer_email": "martin@voznik.cz",
"committed_date": "2021-06-04T08:24:44.000+00:00",
"trailers": null,
"web_url": "https://gitlab.com/test-shared-argocd-proton/shared-argocd/-/commit/8898d7999fc99dd0fd578650b58b244fc63f6b53"
},
"merged": false,
"protected": true,
"developers_can_push": false,
"developers_can_merge": false,
"can_push": false,
"default": true,
"web_url": "https://gitlab.com/test-shared-argocd-proton/shared-argocd/-/tree/master"
}, {
"name": "pipeline-2310077506",
"commit": {
"id": "0f92540e5f396ba960adea4ed0aa905baf3f73d1",
"short_id": "0f92540e",
"created_at": "2021-06-01T18:39:59.000+00:00",
"parent_ids": null,
"title": "[testapp-ci] manifests/demo/test-app.yaml: release v1.0.1",
"message": "[testapp-ci] manifests/demo/test-app.yaml: release v1.0.1",
"author_name": "ci-test-app",
"author_email": "mvoznik+cicd@protonmail.com",
"authored_date": "2021-06-01T18:39:59.000+00:00",
"committer_name": "ci-test-app",
"committer_email": "mvoznik+cicd@protonmail.com",
"committed_date": "2021-06-01T18:39:59.000+00:00",
"trailers": null,
"web_url": "https://gitlab.com/test-shared-argocd-proton/shared-argocd/-/commit/0f92540e5f396ba960adea4ed0aa905baf3f73d1"
},
"merged": false,
"protected": false,
"developers_can_push": false,
"developers_can_merge": false,
"can_push": false,
"default": false,
"web_url": "https://gitlab.com/test-shared-argocd-proton/shared-argocd/-/tree/pipeline-1310077506"
}]`)
if err != nil {
t.Fail()
}
case "/api/v4/projects/27084538/repository/branches?per_page=100":
_, err := io.WriteString(w, `[{
"name": "master",
"commit": {
"id": "8898d7999fc99dd0fd578650b58b244fc63f6b58",
"short_id": "8898d801",
"created_at": "2021-06-04T08:24:44.000+00:00",
"parent_ids": null,
"title": "Merge branch 'pipeline-1317911429' into 'master'",
"message": "Merge branch 'pipeline-1317911429' into 'master'",
"author_name": "Martin Vozník",
"author_email": "martin@voznik.cz",
"authored_date": "2021-06-04T08:24:44.000+00:00",
"committer_name": "Martin Vozník",
"committer_email": "martin@voznik.cz",
"committed_date": "2021-06-04T08:24:44.000+00:00",
"trailers": null,
"web_url": "https://gitlab.com/test-argocd-proton/subgroup/argocd-subgroup/-/commit/8898d7999fc99dd0fd578650b58b244fc63f6b53"
},
"merged": false,
"protected": true,
"developers_can_push": false,
"developers_can_merge": false,
"can_push": false,
"default": true,
"web_url": "https://gitlab.com/test-argocd-proton/subgroup/argocd-subgroup/-/tree/master"
}, {
"name": "pipeline-2310077506",
"commit": {
"id": "0f92540e5f396ba960adea4ed0aa905baf3f73d1",
"short_id": "0f92540e",
"created_at": "2021-06-01T18:39:59.000+00:00",
"parent_ids": null,
"title": "[testapp-ci] manifests/demo/test-app.yaml: release v1.0.1",
"message": "[testapp-ci] manifests/demo/test-app.yaml: release v1.0.1",
"author_name": "ci-test-app",
"author_email": "mvoznik+cicd@protonmail.com",
"authored_date": "2021-06-01T18:39:59.000+00:00",
"committer_name": "ci-test-app",
"committer_email": "mvoznik+cicd@protonmail.com",
"committed_date": "2021-06-01T18:39:59.000+00:00",
"trailers": null,
"web_url": "https://gitlab.com/test-argocd-proton/subgroup/argocd-subgroup/-/commit/0f92540e5f396ba960adea4ed0aa905baf3f73d1"
},
"merged": false,
"protected": false,
"developers_can_push": false,
"developers_can_merge": false,
"can_push": false,
"default": false,
"web_url": "https://gitlab.com/test-argocd-proton/subgroup/argocd-subgroup/-/tree/pipeline-1310077506"
}]`)
if err != nil {
t.Fail()
}
case "/api/v4/projects/test-argocd-proton%2Fargocd":
fmt.Println("auct")
_, err := io.WriteString(w, `{
@@ -240,8 +998,12 @@ func gitlabMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
"path_with_namespace": "test-argocd-proton/argocd",
"created_at": "2021-06-01T17:30:44.724Z",
"default_branch": "master",
"tag_list": [],
"topics": [],
"tag_list": [
"test-topic"
],
"topics": [
"test-topic"
],
"ssh_url_to_repo": "git@gitlab.com:test-argocd-proton/argocd.git",
"http_url_to_repo": "https://gitlab.com/test-argocd-proton/argocd.git",
"web_url": "https://gitlab.com/test-argocd-proton/argocd",
@@ -286,10 +1048,10 @@ func gitlabMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
}
func TestGitlabListRepos(t *testing.T) {
cases := []struct {
name, proto, url string
hasError, allBranches, includeSubgroups bool
branches []string
filters []v1alpha1.SCMProviderGeneratorFilter
name, proto, url, topic string
hasError, allBranches, includeSubgroups, includeSharedProjects, insecure bool
branches []string
filters []v1alpha1.SCMProviderGeneratorFilter
}{
{
name: "blank protocol",
@@ -301,6 +1063,16 @@ func TestGitlabListRepos(t *testing.T) {
proto: "ssh",
url: "git@gitlab.com:test-argocd-proton/argocd.git",
},
{
name: "labelmatch",
proto: "ssh",
url: "git@gitlab.com:test-argocd-proton/argocd.git",
filters: []v1alpha1.SCMProviderGeneratorFilter{
{
LabelMatch: strp("test-topic"),
},
},
},
{
name: "https protocol",
proto: "https",
@@ -317,32 +1089,66 @@ func TestGitlabListRepos(t *testing.T) {
url: "git@gitlab.com:test-argocd-proton/argocd.git",
branches: []string{"master"},
},
{
name: "all subgroups",
allBranches: true,
url: "git@gitlab.com:test-argocd-proton/argocd.git",
branches: []string{"master"},
includeSharedProjects: false,
includeSubgroups: true,
},
{
name: "all subgroups and shared projects",
allBranches: true,
url: "git@gitlab.com:test-argocd-proton/argocd.git",
branches: []string{"master"},
includeSharedProjects: true,
includeSubgroups: true,
},
{
name: "specific topic",
allBranches: true,
url: "git@gitlab.com:test-argocd-proton/argocd.git",
branches: []string{"master"},
includeSubgroups: false,
topic: "specific-topic",
},
}
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
gitlabMockHandler(t)(w, r)
}))
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
provider, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, c.allBranches, c.includeSubgroups)
provider, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, c.allBranches, c.includeSubgroups, c.includeSharedProjects, c.insecure, "", c.topic)
rawRepos, err := ListRepos(context.Background(), provider, c.filters, c.proto)
if c.hasError {
assert.NotNil(t, err)
} else {
assert.Nil(t, err)
// Just check that this one project shows up. Not a great test but better thing nothing?
// Just check that this one project shows up. Not a great test but better than nothing?
repos := []*Repository{}
uniqueRepos := map[string]int{}
branches := []string{}
for _, r := range rawRepos {
if r.Repository == "argocd" {
repos = append(repos, r)
branches = append(branches, r.Branch)
}
uniqueRepos[r.Repository]++
}
assert.NotEmpty(t, repos)
assert.Equal(t, c.url, repos[0].URL)
for _, b := range c.branches {
assert.Contains(t, branches, b)
}
// In case of listing subgroups, validate the number of returned projects
if c.includeSubgroups || c.includeSharedProjects {
assert.Equal(t, 2, len(uniqueRepos))
}
// In case we filter on the topic, ensure we got only one repo returned
if c.topic != "" {
assert.Equal(t, 1, len(uniqueRepos))
}
}
})
}
@@ -352,7 +1158,7 @@ func TestGitlabHasPath(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
gitlabMockHandler(t)(w, r)
}))
host, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true)
host, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true, true, false, "", "")
repo := &Repository{
Organization: "test-argocd-proton",
Repository: "argocd",
@@ -398,7 +1204,7 @@ func TestGitlabGetBranches(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
gitlabMockHandler(t)(w, r)
}))
host, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true)
host, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true, true, false, "", "")
repo := &Repository{
RepositoryId: 27084533,

View File

@@ -180,7 +180,7 @@ func secretToCluster(s *corev1.Secret) (*appv1.Cluster, error) {
if val, err := strconv.Atoi(string(shardStr)); err != nil {
log.Warnf("Error while parsing shard in cluster secret '%s': %v", s.Name, err)
} else {
shard = pointer.Int64Ptr(int64(val))
shard = pointer.Int64(int64(val))
}
}
cluster := appv1.Cluster{

View File

@@ -13,7 +13,6 @@ import (
kubetesting "k8s.io/client-go/testing"
argoappv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/test/e2e/fixture/applicationsets/utils"
)
const (
@@ -69,7 +68,7 @@ func createClusterSecret(secretName string, clusterName string, clusterServer st
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: secretName,
Namespace: utils.ArgoCDNamespace,
Namespace: fakeNamespace,
Labels: map[string]string{
ArgoCDSecretTypeLabel: ArgoCDSecretTypeCluster,
},
@@ -111,7 +110,7 @@ func TestValidateDestination(t *testing.T) {
objects = append(objects, secret)
kubeclientset := fake.NewSimpleClientset(objects...)
appCond := ValidateDestination(context.Background(), &dest, kubeclientset, utils.ArgoCDNamespace)
appCond := ValidateDestination(context.Background(), &dest, kubeclientset, fakeNamespace)
assert.Nil(t, appCond)
assert.Equal(t, "https://127.0.0.1:6443", dest.Server)
assert.True(t, dest.IsServerInferred())
@@ -124,7 +123,7 @@ func TestValidateDestination(t *testing.T) {
Namespace: "default",
}
err := ValidateDestination(context.Background(), &dest, nil, utils.ArgoCDNamespace)
err := ValidateDestination(context.Background(), &dest, nil, fakeNamespace)
assert.Equal(t, "application destination can't have both name and server defined: minikube https://127.0.0.1:6443", err.Error())
assert.False(t, dest.IsServerInferred())
})
@@ -139,7 +138,7 @@ func TestValidateDestination(t *testing.T) {
return true, nil, fmt.Errorf("an error occurred")
})
err := ValidateDestination(context.Background(), &dest, kubeclientset, utils.ArgoCDNamespace)
err := ValidateDestination(context.Background(), &dest, kubeclientset, fakeNamespace)
assert.Equal(t, "unable to find destination server: an error occurred", err.Error())
assert.False(t, dest.IsServerInferred())
})
@@ -154,7 +153,7 @@ func TestValidateDestination(t *testing.T) {
objects = append(objects, secret)
kubeclientset := fake.NewSimpleClientset(objects...)
err := ValidateDestination(context.Background(), &dest, kubeclientset, utils.ArgoCDNamespace)
err := ValidateDestination(context.Background(), &dest, kubeclientset, fakeNamespace)
assert.Equal(t, "unable to find destination server: there are no clusters with this name: minikube", err.Error())
assert.False(t, dest.IsServerInferred())
})
@@ -171,7 +170,7 @@ func TestValidateDestination(t *testing.T) {
objects = append(objects, secret, secret2)
kubeclientset := fake.NewSimpleClientset(objects...)
err := ValidateDestination(context.Background(), &dest, kubeclientset, utils.ArgoCDNamespace)
err := ValidateDestination(context.Background(), &dest, kubeclientset, fakeNamespace)
assert.Equal(t, "unable to find destination server: there are 2 clusters with the same name: [https://127.0.0.1:2443 https://127.0.0.1:8443]", err.Error())
assert.False(t, dest.IsServerInferred())
})

View File

@@ -2,18 +2,25 @@ package utils
import (
"context"
"encoding/json"
"fmt"
log "github.com/sirupsen/logrus"
"k8s.io/apimachinery/pkg/api/errors"
"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/conversion"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
argov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/util/argo"
argodiff "github.com/argoproj/argo-cd/v2/util/argo/diff"
"github.com/argoproj/argo-cd/v2/util/argo/normalizers"
)
// CreateOrUpdate overrides "sigs.k8s.io/controller-runtime" function
@@ -29,7 +36,7 @@ import (
// The MutateFn is called regardless of creating or updating an object.
//
// It returns the executed operation and an error.
func CreateOrUpdate(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn) (controllerutil.OperationResult, error) {
func CreateOrUpdate(ctx context.Context, logCtx *log.Entry, c client.Client, ignoreAppDifferences argov1alpha1.ApplicationSetIgnoreDifferences, ignoreNormalizerOpts normalizers.IgnoreNormalizerOpts, obj *argov1alpha1.Application, f controllerutil.MutateFn) (controllerutil.OperationResult, error) {
key := client.ObjectKeyFromObject(obj)
if err := c.Get(ctx, key, obj); err != nil {
@@ -45,11 +52,24 @@ func CreateOrUpdate(ctx context.Context, c client.Client, obj client.Object, f c
return controllerutil.OperationResultCreated, nil
}
existing := obj.DeepCopyObject()
normalizedLive := obj.DeepCopy()
// Mutate the live object to match the desired state.
if err := mutate(f, key, obj); err != nil {
return controllerutil.OperationResultNone, err
}
// Apply ignoreApplicationDifferences rules to remove ignored fields from both the live and the desired state. This
// prevents those differences from appearing in the diff and therefore in the patch.
err := applyIgnoreDifferences(ignoreAppDifferences, normalizedLive, obj, ignoreNormalizerOpts)
if err != nil {
return controllerutil.OperationResultNone, fmt.Errorf("failed to apply ignore differences: %w", err)
}
// Normalize to avoid diffing on unimportant differences.
normalizedLive.Spec = *argo.NormalizeApplicationSpec(&normalizedLive.Spec)
obj.Spec = *argo.NormalizeApplicationSpec(&obj.Spec)
equality := conversion.EqualitiesOrDie(
func(a, b resource.Quantity) bool {
// Ignore formatting, only care that numeric value stayed the same.
@@ -75,16 +95,34 @@ func CreateOrUpdate(ctx context.Context, c client.Client, obj client.Object, f c
},
)
if equality.DeepEqual(existing, obj) {
if equality.DeepEqual(normalizedLive, obj) {
return controllerutil.OperationResultNone, nil
}
if err := c.Update(ctx, obj); err != nil {
patch := client.MergeFrom(normalizedLive)
if log.IsLevelEnabled(log.DebugLevel) {
LogPatch(logCtx, patch, obj)
}
if err := c.Patch(ctx, obj, patch); err != nil {
return controllerutil.OperationResultNone, err
}
return controllerutil.OperationResultUpdated, nil
}
func LogPatch(logCtx *log.Entry, patch client.Patch, obj *argov1alpha1.Application) {
patchBytes, err := patch.Data(obj)
if err != nil {
logCtx.Errorf("failed to generate patch: %v", err)
}
// Get the patch as a plain object so it is easier to work with in json logs.
var patchObj map[string]interface{}
err = json.Unmarshal(patchBytes, &patchObj)
if err != nil {
logCtx.Errorf("failed to unmarshal patch: %v", err)
}
logCtx.WithField("patch", patchObj).Debug("patching application")
}
// mutate wraps a MutateFn and applies validation to its result
func mutate(f controllerutil.MutateFn, key client.ObjectKey, obj client.Object) error {
if err := f(); err != nil {
@@ -95,3 +133,71 @@ func mutate(f controllerutil.MutateFn, key client.ObjectKey, obj client.Object)
}
return nil
}
// applyIgnoreDifferences applies the ignore differences rules to the found application. It modifies the applications in place.
func applyIgnoreDifferences(applicationSetIgnoreDifferences argov1alpha1.ApplicationSetIgnoreDifferences, found *argov1alpha1.Application, generatedApp *argov1alpha1.Application, ignoreNormalizerOpts normalizers.IgnoreNormalizerOpts) error {
if len(applicationSetIgnoreDifferences) == 0 {
return nil
}
generatedAppCopy := generatedApp.DeepCopy()
diffConfig, err := argodiff.NewDiffConfigBuilder().
WithDiffSettings(applicationSetIgnoreDifferences.ToApplicationIgnoreDifferences(), nil, false, ignoreNormalizerOpts).
WithNoCache().
Build()
if err != nil {
return fmt.Errorf("failed to build diff config: %w", err)
}
unstructuredFound, err := appToUnstructured(found)
if err != nil {
return fmt.Errorf("failed to convert found application to unstructured: %w", err)
}
unstructuredGenerated, err := appToUnstructured(generatedApp)
if err != nil {
return fmt.Errorf("failed to convert found application to unstructured: %w", err)
}
result, err := argodiff.Normalize([]*unstructured.Unstructured{unstructuredFound}, []*unstructured.Unstructured{unstructuredGenerated}, diffConfig)
if err != nil {
return fmt.Errorf("failed to normalize application spec: %w", err)
}
if len(result.Lives) != 1 {
return fmt.Errorf("expected 1 normalized application, got %d", len(result.Lives))
}
foundJsonNormalized, err := json.Marshal(result.Lives[0].Object)
if err != nil {
return fmt.Errorf("failed to marshal normalized app to json: %w", err)
}
foundNormalized := &argov1alpha1.Application{}
err = json.Unmarshal(foundJsonNormalized, &foundNormalized)
if err != nil {
return fmt.Errorf("failed to unmarshal normalized app to json: %w", err)
}
if len(result.Targets) != 1 {
return fmt.Errorf("expected 1 normalized application, got %d", len(result.Targets))
}
foundNormalized.DeepCopyInto(found)
generatedJsonNormalized, err := json.Marshal(result.Targets[0].Object)
if err != nil {
return fmt.Errorf("failed to marshal normalized app to json: %w", err)
}
generatedAppNormalized := &argov1alpha1.Application{}
err = json.Unmarshal(generatedJsonNormalized, &generatedAppNormalized)
if err != nil {
return fmt.Errorf("failed to unmarshal normalized app json to structured app: %w", err)
}
generatedAppNormalized.DeepCopyInto(generatedApp)
// Prohibit jq queries from mutating silly things.
generatedApp.TypeMeta = generatedAppCopy.TypeMeta
generatedApp.Name = generatedAppCopy.Name
generatedApp.Namespace = generatedAppCopy.Namespace
generatedApp.Operation = generatedAppCopy.Operation
return nil
}
func appToUnstructured(app client.Object) (*unstructured.Unstructured, error) {
u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(app)
if err != nil {
return nil, fmt.Errorf("failed to convert app object to unstructured: %w", err)
}
return &unstructured.Unstructured{Object: u}, nil
}

View File

@@ -0,0 +1,235 @@
package utils
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gopkg.in/yaml.v3"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/util/argo/normalizers"
)
func Test_applyIgnoreDifferences(t *testing.T) {
appMeta := metav1.TypeMeta{
APIVersion: v1alpha1.ApplicationSchemaGroupVersionKind.GroupVersion().String(),
Kind: v1alpha1.ApplicationSchemaGroupVersionKind.Kind,
}
testCases := []struct {
name string
ignoreDifferences v1alpha1.ApplicationSetIgnoreDifferences
foundApp string
generatedApp string
expectedApp string
}{
{
name: "empty ignoreDifferences",
foundApp: `
spec: {}`,
generatedApp: `
spec: {}`,
expectedApp: `
spec: {}`,
},
{
// For this use case: https://github.com/argoproj/argo-cd/issues/9101#issuecomment-1191138278
name: "ignore target revision with jq",
ignoreDifferences: v1alpha1.ApplicationSetIgnoreDifferences{
{JQPathExpressions: []string{".spec.source.targetRevision"}},
},
foundApp: `
spec:
source:
targetRevision: foo`,
generatedApp: `
spec:
source:
targetRevision: bar`,
expectedApp: `
spec:
source:
targetRevision: foo`,
},
{
// For this use case: https://github.com/argoproj/argo-cd/issues/9101#issuecomment-1103593714
name: "ignore helm parameter with jq",
ignoreDifferences: v1alpha1.ApplicationSetIgnoreDifferences{
{JQPathExpressions: []string{`.spec.source.helm.parameters | select(.name == "image.tag")`}},
},
foundApp: `
spec:
source:
helm:
parameters:
- name: image.tag
value: test
- name: another
value: value`,
generatedApp: `
spec:
source:
helm:
parameters:
- name: image.tag
value: v1.0.0
- name: another
value: value`,
expectedApp: `
spec:
source:
helm:
parameters:
- name: image.tag
value: test
- name: another
value: value`,
},
{
// For this use case: https://github.com/argoproj/argo-cd/issues/9101#issuecomment-1191138278
name: "ignore auto-sync in appset when it's not in the cluster with jq",
ignoreDifferences: v1alpha1.ApplicationSetIgnoreDifferences{
{JQPathExpressions: []string{".spec.syncPolicy.automated"}},
},
foundApp: `
spec:
syncPolicy:
retry:
limit: 5`,
generatedApp: `
spec:
syncPolicy:
automated:
selfHeal: true
retry:
limit: 5`,
expectedApp: `
spec:
syncPolicy:
retry:
limit: 5`,
},
{
name: "ignore auto-sync in the cluster when it's not in the appset with jq",
ignoreDifferences: v1alpha1.ApplicationSetIgnoreDifferences{
{JQPathExpressions: []string{".spec.syncPolicy.automated"}},
},
foundApp: `
spec:
syncPolicy:
automated:
selfHeal: true
retry:
limit: 5`,
generatedApp: `
spec:
syncPolicy:
retry:
limit: 5`,
expectedApp: `
spec:
syncPolicy:
automated:
selfHeal: true
retry:
limit: 5`,
},
{
// For this use case: https://github.com/argoproj/argo-cd/issues/9101#issuecomment-1420656537
name: "ignore a one-off annotation with jq",
ignoreDifferences: v1alpha1.ApplicationSetIgnoreDifferences{
{JQPathExpressions: []string{`.metadata.annotations | select(.["foo.bar"] == "baz")`}},
},
foundApp: `
metadata:
annotations:
foo.bar: baz
some.other: annotation`,
generatedApp: `
metadata:
annotations:
some.other: annotation`,
expectedApp: `
metadata:
annotations:
foo.bar: baz
some.other: annotation`,
},
{
// For this use case: https://github.com/argoproj/argo-cd/issues/9101#issuecomment-1515672638
name: "ignore the source.plugin field with a json pointer",
ignoreDifferences: v1alpha1.ApplicationSetIgnoreDifferences{
{JSONPointers: []string{"/spec/source/plugin"}},
},
foundApp: `
spec:
source:
plugin:
parameters:
- name: url
string: https://example.com`,
generatedApp: `
spec:
source:
plugin:
parameters:
- name: url
string: https://example.com/wrong`,
expectedApp: `
spec:
source:
plugin:
parameters:
- name: url
string: https://example.com`,
},
{
// For this use case: https://github.com/argoproj/argo-cd/pull/14743#issuecomment-1761954799
name: "ignore parameters added to a multi-source app in the cluster",
ignoreDifferences: v1alpha1.ApplicationSetIgnoreDifferences{
{JQPathExpressions: []string{`.spec.sources[] | select(.repoURL | contains("test-repo")).helm.parameters`}},
},
foundApp: `
spec:
sources:
- repoURL: https://git.example.com/test-org/test-repo
helm:
parameters:
- name: test
value: hi`,
generatedApp: `
spec:
sources:
- repoURL: https://git.example.com/test-org/test-repo`,
expectedApp: `
spec:
sources:
- repoURL: https://git.example.com/test-org/test-repo
helm:
parameters:
- name: test
value: hi`,
},
}
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
foundApp := v1alpha1.Application{TypeMeta: appMeta}
err := yaml.Unmarshal([]byte(tc.foundApp), &foundApp)
require.NoError(t, err, tc.foundApp)
generatedApp := v1alpha1.Application{TypeMeta: appMeta}
err = yaml.Unmarshal([]byte(tc.generatedApp), &generatedApp)
require.NoError(t, err, tc.generatedApp)
err = applyIgnoreDifferences(tc.ignoreDifferences, &foundApp, &generatedApp, normalizers.IgnoreNormalizerOpts{})
require.NoError(t, err)
yamlFound, err := yaml.Marshal(tc.foundApp)
require.NoError(t, err)
yamlExpected, err := yaml.Marshal(tc.expectedApp)
require.NoError(t, err)
assert.Equal(t, string(yamlExpected), string(yamlFound))
})
}
}

View File

@@ -0,0 +1,71 @@
package utils
import (
"regexp"
"strings"
"sigs.k8s.io/yaml"
)
// SanitizeName sanitizes the name in accordance with the below rules
// 1. contain no more than 253 characters
// 2. contain only lowercase alphanumeric characters, '-' or '.'
// 3. start and end with an alphanumeric character
func SanitizeName(name string) string {
invalidDNSNameChars := regexp.MustCompile("[^-a-z0-9.]")
maxDNSNameLength := 253
name = strings.ToLower(name)
name = invalidDNSNameChars.ReplaceAllString(name, "-")
if len(name) > maxDNSNameLength {
name = name[:maxDNSNameLength]
}
return strings.Trim(name, "-.")
}
// This has been copied from helm and may be removed as soon as it is retrofited in sprig
// toYAML takes an interface, marshals it to yaml, and returns a string. It will
// always return a string, even on marshal error (empty string).
//
// This is designed to be called from a template.
func toYAML(v interface{}) (string, error) {
data, err := yaml.Marshal(v)
if err != nil {
// Swallow errors inside of a template.
return "", err
}
return strings.TrimSuffix(string(data), "\n"), nil
}
// This has been copied from helm and may be removed as soon as it is retrofited in sprig
// fromYAML converts a YAML document into a map[string]interface{}.
//
// This is not a general-purpose YAML parser, and will not parse all valid
// YAML documents. Additionally, because its intended use is within templates
// it tolerates errors. It will insert the returned error message string into
// m["Error"] in the returned map.
func fromYAML(str string) (map[string]interface{}, error) {
m := map[string]interface{}{}
if err := yaml.Unmarshal([]byte(str), &m); err != nil {
return nil, err
}
return m, nil
}
// This has been copied from helm and may be removed as soon as it is retrofited in sprig
// fromYAMLArray converts a YAML array into a []interface{}.
//
// This is not a general-purpose YAML parser, and will not parse all valid
// YAML documents. Additionally, because its intended use is within templates
// it tolerates errors. It will insert the returned error message string as
// the first and only item in the returned array.
func fromYAMLArray(str string) ([]interface{}, error) {
a := []interface{}{}
if err := yaml.Unmarshal([]byte(str), &a); err != nil {
return nil, err
}
return a, nil
}

View File

@@ -2,9 +2,12 @@ package utils
import (
"bytes"
"crypto/tls"
"crypto/x509"
"encoding/json"
"fmt"
"io"
"os"
"reflect"
"regexp"
"sort"
@@ -13,7 +16,9 @@ import (
"unsafe"
"github.com/Masterminds/sprig/v3"
"github.com/gosimple/slug"
"github.com/valyala/fasttemplate"
"sigs.k8s.io/yaml"
log "github.com/sirupsen/logrus"
@@ -28,10 +33,15 @@ func init() {
delete(sprigFuncMap, "expandenv")
delete(sprigFuncMap, "getHostByName")
sprigFuncMap["normalize"] = SanitizeName
sprigFuncMap["slugify"] = SlugifyName
sprigFuncMap["toYaml"] = toYAML
sprigFuncMap["fromYaml"] = fromYAML
sprigFuncMap["fromYamlArray"] = fromYAMLArray
}
type Renderer interface {
RenderTemplateParams(tmpl *argoappsv1.Application, syncPolicy *argoappsv1.ApplicationSetSyncPolicy, params map[string]interface{}, useGoTemplate bool, goTemplateOptions []string) (*argoappsv1.Application, error)
Replace(tmpl string, replaceMap map[string]interface{}, useGoTemplate bool, goTemplateOptions []string) (string, error)
}
type Render struct {
@@ -48,6 +58,22 @@ func copyUnexported(copy, original reflect.Value) {
copyValueIntoUnexported(copy, unexported)
}
func IsJSONStr(str string) bool {
str = strings.TrimSpace(str)
return len(str) > 0 && str[0] == '{'
}
func ConvertYAMLToJSON(str string) (string, error) {
if !IsJSONStr(str) {
jsonStr, err := yaml.YAMLToJSON([]byte(str))
if err != nil {
return str, err
}
return string(jsonStr), nil
}
return str, nil
}
// This function is in charge of searching all String fields of the object recursively and apply templating
// thanks to https://gist.github.com/randallmlough/1fd78ec8a1034916ca52281e3b886dc7
func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[string]interface{}, useGoTemplate bool, goTemplateOptions []string) error {
@@ -71,6 +97,7 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
}
// Unwrap the newly created pointer
if err := r.deeplyReplace(copy.Elem(), originalValue, replaceMap, useGoTemplate, goTemplateOptions); err != nil {
// Not wrapping the error, since this is a recursive function. Avoids excessively long error messages.
return err
}
@@ -83,11 +110,19 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
originalValue := original.Elem()
// Create a new object. Now new gives us a pointer, but we want the value it
// points to, so we have to call Elem() to unwrap it
copyValue := reflect.New(originalValue.Type()).Elem()
if err := r.deeplyReplace(copyValue, originalValue, replaceMap, useGoTemplate, goTemplateOptions); err != nil {
return err
if originalValue.IsValid() {
reflectType := originalValue.Type()
reflectValue := reflect.New(reflectType)
copyValue := reflectValue.Elem()
if err := r.deeplyReplace(copyValue, originalValue, replaceMap, useGoTemplate, goTemplateOptions); err != nil {
// Not wrapping the error, since this is a recursive function. Avoids excessively long error messages.
return err
}
copy.Set(copyValue)
}
copy.Set(copyValue)
// If it is a struct we translate each field
case reflect.Struct:
@@ -96,10 +131,14 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
// specific case time
if currentType == "time.Time" {
copy.Field(i).Set(original.Field(i))
} else if currentType == "Raw.k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" {
} else if currentType == "Raw.k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" || currentType == "Raw.k8s.io/apimachinery/pkg/runtime" {
var unmarshaled interface{}
originalBytes := original.Field(i).Bytes()
err := json.Unmarshal(originalBytes, &unmarshaled)
convertedToJson, err := ConvertYAMLToJSON(string(originalBytes))
if err != nil {
return fmt.Errorf("error while converting template to json %q: %w", convertedToJson, err)
}
err = json.Unmarshal([]byte(convertedToJson), &unmarshaled)
if err != nil {
return fmt.Errorf("failed to unmarshal JSON field: %w", err)
}
@@ -116,6 +155,7 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
}
copy.Field(i).Set(reflect.ValueOf(data))
} else if err := r.deeplyReplace(copy.Field(i), original.Field(i), replaceMap, useGoTemplate, goTemplateOptions); err != nil {
// Not wrapping the error, since this is a recursive function. Avoids excessively long error messages.
return err
}
}
@@ -130,6 +170,7 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
for i := 0; i < original.Len(); i += 1 {
if err := r.deeplyReplace(copy.Index(i), original.Index(i), replaceMap, useGoTemplate, goTemplateOptions); err != nil {
// Not wrapping the error, since this is a recursive function. Avoids excessively long error messages.
return err
}
}
@@ -150,6 +191,7 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
copyValue := reflect.New(originalValue.Type()).Elem()
if err := r.deeplyReplace(copyValue, originalValue, replaceMap, useGoTemplate, goTemplateOptions); err != nil {
// Not wrapping the error, since this is a recursive function. Avoids excessively long error messages.
return err
}
@@ -157,6 +199,7 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
if key.Kind() == reflect.String {
templatedKey, err := r.Replace(key.String(), replaceMap, useGoTemplate, goTemplateOptions)
if err != nil {
// Not wrapping the error, since this is a recursive function. Avoids excessively long error messages.
return err
}
key = reflect.ValueOf(templatedKey)
@@ -171,6 +214,7 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
strToTemplate := original.String()
templated, err := r.Replace(strToTemplate, replaceMap, useGoTemplate, goTemplateOptions)
if err != nil {
// Not wrapping the error, since this is a recursive function. Avoids excessively long error messages.
return err
}
if copy.CanSet() {
@@ -280,7 +324,10 @@ func (r *Render) Replace(tmpl string, replaceMap map[string]interface{}, useGoTe
return tmpl, nil
}
fstTmpl := fasttemplate.New(tmpl, "{{", "}}")
fstTmpl, err := fasttemplate.NewTemplate(tmpl, "{{", "}}")
if err != nil {
return "", fmt.Errorf("invalid template: %w", err)
}
replacedTmpl := fstTmpl.ExecuteFuncString(func(w io.Writer, tag string) (int, error) {
trimmedTag := strings.TrimSpace(tag)
replacement, ok := replaceMap[trimmedTag].(string)
@@ -390,19 +437,85 @@ func NormalizeBitbucketBasePath(basePath string) string {
return basePath
}
// SanitizeName sanitizes the name in accordance with the below rules
// 1. contain no more than 253 characters
// 2. contain only lowercase alphanumeric characters, '-' or '.'
// 3. start and end with an alphanumeric character
func SanitizeName(name string) string {
invalidDNSNameChars := regexp.MustCompile("[^-a-z0-9.]")
maxDNSNameLength := 253
// SlugifyName generates a URL-friendly slug from the provided name and additional options.
// The slug is generated in accordance with the following rules:
// 1. The generated slug will be URL-safe and suitable for use in URLs.
// 2. The maximum length of the slug can be specified using the `maxSize` argument.
// 3. Smart truncation can be enabled or disabled using the `EnableSmartTruncate` argument.
// 4. The input name can be any string value that needs to be converted into a slug.
//
// Args:
// - args: A variadic number of arguments where:
// - The first argument (if provided) is an integer specifying the maximum length of the slug.
// - The second argument (if provided) is a boolean indicating whether smart truncation is enabled.
// - The last argument (if provided) is the input name that needs to be slugified.
// If no name is provided, an empty string will be used.
//
// Returns:
// - string: The generated URL-friendly slug based on the input name and options.
func SlugifyName(args ...interface{}) string {
// Default values for arguments
maxSize := 50
EnableSmartTruncate := true
name := ""
name = strings.ToLower(name)
name = invalidDNSNameChars.ReplaceAllString(name, "-")
if len(name) > maxDNSNameLength {
name = name[:maxDNSNameLength]
// Process the arguments
for idx, arg := range args {
switch idx {
case len(args) - 1:
name = arg.(string)
case 0:
maxSize = arg.(int)
case 1:
EnableSmartTruncate = arg.(bool)
default:
log.Errorf("Bad 'slugify' arguments.")
}
}
return strings.Trim(name, "-.")
sanitizedName := SanitizeName(name)
// Configure slug generation options
slug.EnableSmartTruncate = EnableSmartTruncate
slug.MaxLength = maxSize
// Generate the slug from the input name
urlSlug := slug.Make(sanitizedName)
return urlSlug
}
func getTlsConfigWithCACert(scmRootCAPath string) *tls.Config {
tlsConfig := &tls.Config{}
if scmRootCAPath != "" {
_, err := os.Stat(scmRootCAPath)
if os.IsNotExist(err) {
log.Errorf("scmRootCAPath '%s' specified does not exist: %s", scmRootCAPath, err)
return tlsConfig
}
rootCA, err := os.ReadFile(scmRootCAPath)
if err != nil {
log.Errorf("error reading certificate from file '%s', proceeding without custom rootCA : %s", scmRootCAPath, err)
return tlsConfig
}
certPool := x509.NewCertPool()
ok := certPool.AppendCertsFromPEM([]byte(rootCA))
if !ok {
log.Errorf("failed to append certificates from PEM: proceeding without custom rootCA")
} else {
tlsConfig.RootCAs = certPool
}
}
return tlsConfig
}
func GetTlsConfig(scmRootCAPath string, insecure bool) *tls.Config {
tlsConfig := getTlsConfigWithCACert(scmRootCAPath)
if insecure {
tlsConfig.InsecureSkipVerify = true
}
return tlsConfig
}

View File

@@ -1,6 +1,10 @@
package utils
import (
"crypto/x509"
"encoding/json"
"os"
"path"
"testing"
"time"
@@ -195,6 +199,113 @@ func TestRenderTemplateParams(t *testing.T) {
}
func TestRenderHelmValuesObjectJson(t *testing.T) {
params := map[string]interface{}{
"test": "Hello world",
}
application := &argoappsv1.Application{
ObjectMeta: metav1.ObjectMeta{
Annotations: map[string]string{"annotation-key": "annotation-value", "annotation-key2": "annotation-value2"},
Labels: map[string]string{"label-key": "label-value", "label-key2": "label-value2"},
CreationTimestamp: metav1.NewTime(time.Now()),
UID: types.UID("d546da12-06b7-4f9a-8ea2-3adb16a20e2b"),
Name: "application-one",
Namespace: "default",
},
Spec: argoappsv1.ApplicationSpec{
Source: &argoappsv1.ApplicationSource{
Path: "",
RepoURL: "",
TargetRevision: "",
Chart: "",
Helm: &argoappsv1.ApplicationSourceHelm{
ValuesObject: &runtime.RawExtension{
Raw: []byte(`{
"some": {
"string": "{{.test}}"
}
}`),
},
},
},
Destination: argoappsv1.ApplicationDestination{
Server: "",
Namespace: "",
Name: "",
},
Project: "",
},
}
// Render the cloned application, into a new application
render := Render{}
newApplication, err := render.RenderTemplateParams(application, nil, params, true, []string{})
assert.NoError(t, err)
assert.NotNil(t, newApplication)
var unmarshaled interface{}
err = json.Unmarshal(newApplication.Spec.Source.Helm.ValuesObject.Raw, &unmarshaled)
assert.NoError(t, err)
assert.Equal(t, unmarshaled.(map[string]interface{})["some"].(map[string]interface{})["string"], "Hello world")
}
func TestRenderHelmValuesObjectYaml(t *testing.T) {
params := map[string]interface{}{
"test": "Hello world",
}
application := &argoappsv1.Application{
ObjectMeta: metav1.ObjectMeta{
Annotations: map[string]string{"annotation-key": "annotation-value", "annotation-key2": "annotation-value2"},
Labels: map[string]string{"label-key": "label-value", "label-key2": "label-value2"},
CreationTimestamp: metav1.NewTime(time.Now()),
UID: types.UID("d546da12-06b7-4f9a-8ea2-3adb16a20e2b"),
Name: "application-one",
Namespace: "default",
},
Spec: argoappsv1.ApplicationSpec{
Source: &argoappsv1.ApplicationSource{
Path: "",
RepoURL: "",
TargetRevision: "",
Chart: "",
Helm: &argoappsv1.ApplicationSourceHelm{
ValuesObject: &runtime.RawExtension{
Raw: []byte(`some:
string: "{{.test}}"`),
},
},
},
Destination: argoappsv1.ApplicationDestination{
Server: "",
Namespace: "",
Name: "",
},
Project: "",
},
}
// Render the cloned application, into a new application
render := Render{}
newApplication, err := render.RenderTemplateParams(application, nil, params, true, []string{})
assert.NoError(t, err)
assert.NotNil(t, newApplication)
var unmarshaled interface{}
err = json.Unmarshal(newApplication.Spec.Source.Helm.ValuesObject.Raw, &unmarshaled)
assert.NoError(t, err)
assert.Equal(t, unmarshaled.(map[string]interface{})["some"].(map[string]interface{})["string"], "Hello world")
}
func TestRenderTemplateParamsGoTemplate(t *testing.T) {
// Believe it or not, this is actually less complex than the equivalent solution using reflection
@@ -444,6 +555,64 @@ func TestRenderTemplateParamsGoTemplate(t *testing.T) {
templateOptions: []string{"missingkey=error"},
errorMessage: `failed to execute go template --> {{.doesnotexist}} <--: template: :1:6: executing "" at <.doesnotexist>: map has no entry for key "doesnotexist"`,
},
{
name: "toYaml",
fieldVal: `{{ toYaml . | indent 2 }}`,
expectedVal: " foo:\n bar:\n bool: true\n number: 2\n str: Hello world",
params: map[string]interface{}{
"foo": map[string]interface{}{
"bar": map[string]interface{}{
"bool": true,
"number": 2,
"str": "Hello world",
},
},
},
},
{
name: "toYaml Error",
fieldVal: `{{ toYaml . | indent 2 }}`,
expectedVal: " foo:\n bar:\n bool: true\n number: 2\n str: Hello world",
errorMessage: "failed to execute go template {{ toYaml . | indent 2 }}: template: :1:3: executing \"\" at <toYaml .>: error calling toYaml: error marshaling into JSON: json: unsupported type: func(*string)",
params: map[string]interface{}{
"foo": func(test *string) {
},
},
},
{
name: "fromYaml",
fieldVal: `{{ get (fromYaml .value) "hello" }}`,
expectedVal: "world",
params: map[string]interface{}{
"value": "hello: world",
},
},
{
name: "fromYaml error",
fieldVal: `{{ get (fromYaml .value) "hello" }}`,
expectedVal: "world",
errorMessage: "failed to execute go template {{ get (fromYaml .value) \"hello\" }}: template: :1:8: executing \"\" at <fromYaml .value>: error calling fromYaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {}",
params: map[string]interface{}{
"value": "non\n compliant\n yaml",
},
},
{
name: "fromYamlArray",
fieldVal: `{{ fromYamlArray .value | last }}`,
expectedVal: "bonjour tout le monde",
params: map[string]interface{}{
"value": "- hello world\n- bonjour tout le monde",
},
},
{
name: "fromYamlArray error",
fieldVal: `{{ fromYamlArray .value | last }}`,
expectedVal: "bonjour tout le monde",
errorMessage: "failed to execute go template {{ fromYamlArray .value | last }}: template: :1:3: executing \"\" at <fromYamlArray .value>: error calling fromYamlArray: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type []interface {}",
params: map[string]interface{}{
"value": "non\n compliant\n yaml",
},
},
}
for _, test := range tests {
@@ -556,6 +725,14 @@ func TestRenderTemplateKeys(t *testing.T) {
})
}
func Test_Render_Replace_no_panic_on_missing_closing_brace(t *testing.T) {
r := &Render{}
assert.NotPanics(t, func() {
_, err := r.Replace("{{properly.closed}} {{improperly.closed}", nil, false, []string{})
assert.Error(t, err)
})
}
func TestRenderTemplateParamsFinalizers(t *testing.T) {
emptyApplication := &argoappsv1.Application{
@@ -1065,3 +1242,129 @@ func TestNormalizeBitbucketBasePath(t *testing.T) {
assert.Equal(t, c.expectedBasePath, result, c.testName)
}
}
func TestSlugify(t *testing.T) {
for _, c := range []struct {
branch string
smartTruncate bool
length int
expectedBasePath string
}{
{
branch: "feat/a_really+long_pull_request_name_to_test_argo_slugification_and_branch_name_shortening_feature",
smartTruncate: false,
length: 50,
expectedBasePath: "feat-a-really-long-pull-request-name-to-test-argo",
},
{
branch: "feat/a_really+long_pull_request_name_to_test_argo_slugification_and_branch_name_shortening_feature",
smartTruncate: true,
length: 53,
expectedBasePath: "feat-a-really-long-pull-request-name-to-test-argo",
},
{
branch: "feat/areallylongpullrequestnametotestargoslugificationandbranchnameshorteningfeature",
smartTruncate: true,
length: 50,
expectedBasePath: "feat",
},
{
branch: "feat/areallylongpullrequestnametotestargoslugificationandbranchnameshorteningfeature",
smartTruncate: false,
length: 50,
expectedBasePath: "feat-areallylongpullrequestnametotestargoslugifica",
},
} {
result := SlugifyName(c.length, c.smartTruncate, c.branch)
assert.Equal(t, c.expectedBasePath, result, c.branch)
}
}
func TestGetTLSConfig(t *testing.T) {
// certParsed, err := tls.X509KeyPair(test.Cert, test.PrivateKey)
// require.NoError(t, err)
temppath := t.TempDir()
cert := `
-----BEGIN CERTIFICATE-----
MIIFvTCCA6WgAwIBAgIUGrTmW3qc39zqnE08e3qNDhUkeWswDQYJKoZIhvcNAQEL
BQAwbjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAklMMRAwDgYDVQQHDAdDaGljYWdv
MRQwEgYDVQQKDAtDYXBvbmUsIEluYzEQMA4GA1UECwwHU3BlY09wczEYMBYGA1UE
AwwPZm9vLmV4YW1wbGUuY29tMB4XDTE5MDcwODEzNTUwNVoXDTIwMDcwNzEzNTUw
NVowbjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAklMMRAwDgYDVQQHDAdDaGljYWdv
MRQwEgYDVQQKDAtDYXBvbmUsIEluYzEQMA4GA1UECwwHU3BlY09wczEYMBYGA1UE
AwwPZm9vLmV4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
AgEA3csSO13w7qQXKeSLNcpeuAe6wAjXYbRkRl6ariqzTEDcFTKmy2QiXJTKoEGn
bvwxq0T91var7rxY88SGL/qi8Zmo0tVSR0XvKSKcghFIkQOTyDmVgMPZGCvixt4q
gQ7hUVSk4KkFmtcqBVuvnzI1d/DKfZAGKdmGcfRpuAsnVhac3swP0w4Tl1BFrK9U
vuIkz4KwXG77s5oB8rMUnyuLasLsGNpvpvXhkcQRhp6vpcCO2bS7kOTTelAPIucw
P37qkOEdZdiWCLrr57dmhg6tmcVlmBMg6JtmfLxn2HQd9ZrCKlkWxMk5NYs6CAW5
kgbDZUWQTAsnHeoJKbcgtPkIbxDRxNpPukFMtbA4VEWv1EkODXy9FyEKDOI/PV6K
/80oLkgCIhCkP2mvwSFheU0RHTuZ0o0vVolP5TEOq5iufnDN4wrxqb12o//XLRc0
RiLqGVVxhFdyKCjVxcLfII9AAp5Tse4PMh6bf6jDfB3OMvGkhMbJWhKXdR2NUTl0
esKawMPRXIn5g3oBdNm8kyRsTTnvB567pU8uNSmA8j3jxfGCPynI8JdiwKQuW/+P
WgLIflgxqAfG85dVVOsFmF9o5o24dDslvv9yHnHH102c6ijPCg1EobqlyFzqqxOD
Wf2OPjIkzoTH+O27VRugnY/maIU1nshNO7ViRX5zIxEUtNMCAwEAAaNTMFEwHQYD
VR0OBBYEFNY4gDLgPBidogkmpO8nq5yAq5g+MB8GA1UdIwQYMBaAFNY4gDLgPBid
ogkmpO8nq5yAq5g+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIB
AJ0WGioNtGNg3m6ywpmxNThorQD5ZvDMlmZlDVk78E2wfNyMhwbVhKhlAnONv0wv
kmsGjibY75nRZ+EK9PxSJ644841fryQXQ+bli5fhr7DW3uTKwaRsnzETJXRJuljq
6+c6Zyg1/mqwnyx7YvPgVh3w496DYx/jm6Fm1IEq3BzOmn6H/gGPq3gbURzEqI3h
P+kC2vJa8RZWrpa05Xk/Q1QUkErDX9vJghb9z3+GgirISZQzqWRghII/znv3NOE6
zoIgaaWNFn8KPeBVpUoboH+IhpgibsnbTbI0G7AMtFq6qm3kn/4DZ2N2tuh1G2tT
zR2Fh7hJbU7CrqxANrgnIoHG/nLSvzE24ckLb0Vj69uGQlwnZkn9fz6F7KytU+Az
NoB2rjufaB0GQi1azdboMvdGSOxhSCAR8otWT5yDrywCqVnEvjw0oxKmuRduNe2/
6AcG6TtK2/K+LHuhymiAwZM2qE6VD2odvb+tCzDkZOIeoIz/JcVlNpXE9FuVl250
9NWvugeghq7tUv81iJ8ninBefJ4lUfxAehTPQqX+zXcfxgjvMRCi/ig73nLyhmjx
r2AaraPFgrprnxUibP4L7jxdr+iiw5bWN9/B81PodrS7n5TNtnfnpZD6X6rThqOP
xO7Tr5lAo74vNUkF2EHNaI28/RGnJPm2TIxZqy4rNH6L
-----END CERTIFICATE-----
`
rootCAPath := path.Join(temppath, "foo.example.com")
err := os.WriteFile(rootCAPath, []byte(cert), 0666)
if err != nil {
panic(err)
}
certPool := x509.NewCertPool()
ok := certPool.AppendCertsFromPEM([]byte(cert))
assert.True(t, ok)
testCases := []struct {
name string
scmRootCAPath string
insecure bool
validateCertInTlsConfig bool
}{
{
name: "Insecure mode configured, SCM Root CA Path not set",
scmRootCAPath: "",
insecure: true,
validateCertInTlsConfig: false,
},
{
name: "SCM Root CA Path set, Insecure mode set to false",
scmRootCAPath: rootCAPath,
insecure: false,
validateCertInTlsConfig: true,
},
{
name: "SCM Root CA Path set, Insecure mode set to true",
scmRootCAPath: rootCAPath,
insecure: true,
validateCertInTlsConfig: true,
},
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
tlsConfig := GetTlsConfig(testCase.scmRootCAPath, testCase.insecure)
assert.Equal(t, testCase.insecure, tlsConfig.InsecureSkipVerify)
if testCase.validateCertInTlsConfig {
assert.NotNil(t, tlsConfig)
assert.True(t, tlsConfig.RootCAs.Equal(certPool))
}
})
}
}

View File

@@ -0,0 +1,85 @@
{
"id": "2ab4e3d3-b7a6-425e-92b1-5a9982c1269e",
"eventType": "git.pullrequest.created",
"publisherId": "tfs",
"scope": "all",
"message": {
"text": "Jamal Hartnett created a new pull request",
"html": "Jamal Hartnett created a new pull request",
"markdown": "Jamal Hartnett created a new pull request"
},
"detailedMessage": {
"text": "Jamal Hartnett created a new pull request\r\n\r\n- Merge status: Succeeded\r\n- Merge commit: eef717(https://dev.azure.com/fabrikam/DefaultCollection/_apis/repos/git/repositories/4bc14d40-c903-45e2-872e-0462c7748079/commits/eef717f69257a6333f221566c1c987dc94cc0d72)\r\n",
"html": "Jamal Hartnett created a new pull request\r\n<ul>\r\n<li>Merge status: Succeeded</li>\r\n<li>Merge commit: <a href=\"https://dev.azure.com/fabrikam/DefaultCollection/_apis/repos/git/repositories/4bc14d40-c903-45e2-872e-0462c7748079/commits/eef717f69257a6333f221566c1c987dc94cc0d72\">eef717</a></li>\r\n</ul>",
"markdown": "Jamal Hartnett created a new pull request\r\n\r\n+ Merge status: Succeeded\r\n+ Merge commit: [eef717](https://dev.azure.com/fabrikam/DefaultCollection/_apis/repos/git/repositories/4bc14d40-c903-45e2-872e-0462c7748079/commits/eef717f69257a6333f221566c1c987dc94cc0d72)\r\n"
},
"resource": {
"repository": {
"id": "4bc14d40-c903-45e2-872e-0462c7748079",
"name": "Fabrikam",
"url": "https://dev.azure.com/fabrikam/DefaultCollection/_apis/repos/git/repositories/4bc14d40-c903-45e2-872e-0462c7748079",
"project": {
"id": "6ce954b1-ce1f-45d1-b94d-e6bf2464ba2c",
"name": "DefaultCollection",
"url": "https://dev.azure.com/fabrikam/DefaultCollection/_apis/projects/6ce954b1-ce1f-45d1-b94d-e6bf2464ba2c",
"state": "wellFormed"
},
"defaultBranch": "refs/heads/master",
"remoteUrl": "https://dev.azure.com/fabrikam/DefaultCollection/_git/Fabrikam"
},
"pullRequestId": 1,
"status": "active",
"createdBy": {
"id": "54d125f7-69f7-4191-904f-c5b96b6261c8",
"displayName": "Jamal Hartnett",
"uniqueName": "fabrikamfiber4@hotmail.com",
"url": "https://vssps.dev.azure.com/fabrikam/_apis/Identities/54d125f7-69f7-4191-904f-c5b96b6261c8",
"imageUrl": "https://dev.azure.com/fabrikam/DefaultCollection/_api/_common/identityImage?id=54d125f7-69f7-4191-904f-c5b96b6261c8"
},
"creationDate": "2014-06-17T16:55:46.589889Z",
"title": "my first pull request",
"description": " - test2\r\n",
"sourceRefName": "refs/heads/mytopic",
"targetRefName": "refs/heads/master",
"mergeStatus": "succeeded",
"mergeId": "a10bb228-6ba6-4362-abd7-49ea21333dbd",
"lastMergeSourceCommit": {
"commitId": "53d54ac915144006c2c9e90d2c7d3880920db49c",
"url": "https://dev.azure.com/fabrikam/DefaultCollection/_apis/repos/git/repositories/4bc14d40-c903-45e2-872e-0462c7748079/commits/53d54ac915144006c2c9e90d2c7d3880920db49c"
},
"lastMergeTargetCommit": {
"commitId": "a511f535b1ea495ee0c903badb68fbc83772c882",
"url": "https://dev.azure.com/fabrikam/DefaultCollection/_apis/repos/git/repositories/4bc14d40-c903-45e2-872e-0462c7748079/commits/a511f535b1ea495ee0c903badb68fbc83772c882"
},
"lastMergeCommit": {
"commitId": "eef717f69257a6333f221566c1c987dc94cc0d72",
"url": "https://dev.azure.com/fabrikam/DefaultCollection/_apis/repos/git/repositories/4bc14d40-c903-45e2-872e-0462c7748079/commits/eef717f69257a6333f221566c1c987dc94cc0d72"
},
"reviewers": [
{
"reviewerUrl": null,
"vote": 0,
"id": "2ea2d095-48f9-4cd6-9966-62f6f574096c",
"displayName": "[Mobile]\\Mobile Team",
"uniqueName": "vstfs:///Classification/TeamProject/f0811a3b-8c8a-4e43-a3bf-9a049b4835bd\\Mobile Team",
"url": "https://vssps.dev.azure.com/fabrikam/_apis/Identities/2ea2d095-48f9-4cd6-9966-62f6f574096c",
"imageUrl": "https://dev.azure.com/fabrikam/DefaultCollection/_api/_common/identityImage?id=2ea2d095-48f9-4cd6-9966-62f6f574096c",
"isContainer": true
}
],
"url": "https://dev.azure.com/fabrikam/DefaultCollection/_apis/repos/git/repositories/4bc14d40-c903-45e2-872e-0462c7748079/pullRequests/1"
},
"resourceVersion": "1.0",
"resourceContainers": {
"collection": {
"id": "c12d0eb8-e382-443b-9f9c-c52cba5014c2"
},
"account": {
"id": "f844ec47-a9db-4511-8281-8b63f4eaf94e"
},
"project": {
"id": "be9b3917-87e6-42a4-a549-2bc06a7a878f"
}
},
"createdDate": "2016-09-19T13:03:27.2879096Z"
}

View File

@@ -0,0 +1,76 @@
{
"id": "03c164c2-8912-4d5e-8009-3707d5f83734",
"eventType": "git.push",
"publisherId": "tfs",
"scope": "all",
"message": {
"text": "Jamal Hartnett pushed updates to branch master of repository Fabrikam-Fiber-Git.",
"html": "Jamal Hartnett pushed updates to branch master of repository Fabrikam-Fiber-Git.",
"markdown": "Jamal Hartnett pushed updates to branch `master` of repository `Fabrikam-Fiber-Git`."
},
"detailedMessage": {
"text": "Jamal Hartnett pushed 1 commit to branch master of repository Fabrikam-Fiber-Git.\n - Fixed bug in web.config file 33b55f7c",
"html": "Jamal Hartnett pushed 1 commit to branch <a href=\"https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git/#version=GBmaster\">master</a> of repository <a href=\"https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git/\">Fabrikam-Fiber-Git</a>.\n<ul>\n<li>Fixed bug in web.config file <a href=\"https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git/commit/33b55f7cb7e7e245323987634f960cf4a6e6bc74\">33b55f7c</a>\n</ul>",
"markdown": "Jamal Hartnett pushed 1 commit to branch [master](https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git/#version=GBmaster) of repository [Fabrikam-Fiber-Git](https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git/).\n* Fixed bug in web.config file [33b55f7c](https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git/commit/33b55f7cb7e7e245323987634f960cf4a6e6bc74)"
},
"resource": {
"commits": [
{
"commitId": "33b55f7cb7e7e245323987634f960cf4a6e6bc74",
"author": {
"name": "Jamal Hartnett",
"email": "fabrikamfiber4@hotmail.com",
"date": "2015-02-25T19:01:00Z"
},
"committer": {
"name": "Jamal Hartnett",
"email": "fabrikamfiber4@hotmail.com",
"date": "2015-02-25T19:01:00Z"
},
"comment": "Fixed bug in web.config file",
"url": "https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git/commit/33b55f7cb7e7e245323987634f960cf4a6e6bc74"
}
],
"refUpdates": [
{
"name": "refs/heads/master",
"oldObjectId": "aad331d8d3b131fa9ae03cf5e53965b51942618a",
"newObjectId": "33b55f7cb7e7e245323987634f960cf4a6e6bc74"
}
],
"repository": {
"id": "278d5cd2-584d-4b63-824a-2ba458937249",
"name": "Fabrikam-Fiber-Git",
"url": "https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_apis/repos/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249",
"project": {
"id": "6ce954b1-ce1f-45d1-b94d-e6bf2464ba2c",
"name": "DefaultCollection",
"url": "https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_apis/projects/6ce954b1-ce1f-45d1-b94d-e6bf2464ba2c",
"state": "wellFormed"
},
"defaultBranch": "refs/heads/master",
"remoteUrl": "https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git"
},
"pushedBy": {
"id": "00067FFED5C7AF52@Live.com",
"displayName": "Jamal Hartnett",
"uniqueName": "Windows Live ID\\fabrikamfiber4@hotmail.com"
},
"pushId": 14,
"date": "2014-05-02T19:17:13.3309587Z",
"url": "https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_apis/repos/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/pushes/14"
},
"resourceVersion": "1.0",
"resourceContainers": {
"collection": {
"id": "c12d0eb8-e382-443b-9f9c-c52cba5014c2"
},
"account": {
"id": "f844ec47-a9db-4511-8281-8b63f4eaf94e"
},
"project": {
"id": "be9b3917-87e6-42a4-a549-2bc06a7a878f"
}
},
"createdDate": "2016-09-19T13:03:27.0379153Z"
}

View File

@@ -0,0 +1,473 @@
{
"action": "labeled",
"number": 2,
"label": {
"id": 6129306173,
"node_id": "LA_kwDOIqudU88AAAABbVXKPQ",
"url": "https://api.github.com/repos/SG60/backstage/labels/deploy-preview",
"name": "deploy-preview",
"color": "bfd4f2",
"default": false,
"description": ""
},
"pull_request": {
"url": "https://api.github.com/repos/Codertocat/Hello-World/pulls/2",
"id": 279147437,
"node_id": "MDExOlB1bGxSZXF1ZXN0Mjc5MTQ3NDM3",
"html_url": "https://github.com/Codertocat/Hello-World/pull/2",
"diff_url": "https://github.com/Codertocat/Hello-World/pull/2.diff",
"patch_url": "https://github.com/Codertocat/Hello-World/pull/2.patch",
"issue_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/2",
"number": 2,
"state": "open",
"locked": false,
"title": "Update the README with new information.",
"user": {
"login": "Codertocat",
"id": 21031067,
"node_id": "MDQ6VXNlcjIxMDMxMDY3",
"avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Codertocat",
"html_url": "https://github.com/Codertocat",
"followers_url": "https://api.github.com/users/Codertocat/followers",
"following_url": "https://api.github.com/users/Codertocat/following{/other_user}",
"gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions",
"organizations_url": "https://api.github.com/users/Codertocat/orgs",
"repos_url": "https://api.github.com/users/Codertocat/repos",
"events_url": "https://api.github.com/users/Codertocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/Codertocat/received_events",
"type": "User",
"site_admin": false
},
"body": "This is a pretty simple change that we need to pull into master.",
"created_at": "2019-05-15T15:20:33Z",
"updated_at": "2019-05-15T15:20:33Z",
"closed_at": null,
"merged_at": null,
"merge_commit_sha": null,
"assignee": null,
"assignees": [],
"requested_reviewers": [],
"requested_teams": [],
"labels": [
{
"id": 6129306173,
"node_id": "LA_kwDOIqudU88AAAABbVXKPQ",
"url": "https://api.github.com/repos/Codertocat/Hello-World/labels/deploy-preview",
"name": "deploy-preview",
"color": "bfd4f2",
"default": false,
"description": ""
}
],
"milestone": null,
"commits_url": "https://api.github.com/repos/Codertocat/Hello-World/pulls/2/commits",
"review_comments_url": "https://api.github.com/repos/Codertocat/Hello-World/pulls/2/comments",
"review_comment_url": "https://api.github.com/repos/Codertocat/Hello-World/pulls/comments{/number}",
"comments_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/2/comments",
"statuses_url": "https://api.github.com/repos/Codertocat/Hello-World/statuses/ec26c3e57ca3a959ca5aad62de7213c562f8c821",
"head": {
"label": "Codertocat:changes",
"ref": "changes",
"sha": "ec26c3e57ca3a959ca5aad62de7213c562f8c821",
"user": {
"login": "Codertocat",
"id": 21031067,
"node_id": "MDQ6VXNlcjIxMDMxMDY3",
"avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Codertocat",
"html_url": "https://github.com/Codertocat",
"followers_url": "https://api.github.com/users/Codertocat/followers",
"following_url": "https://api.github.com/users/Codertocat/following{/other_user}",
"gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions",
"organizations_url": "https://api.github.com/users/Codertocat/orgs",
"repos_url": "https://api.github.com/users/Codertocat/repos",
"events_url": "https://api.github.com/users/Codertocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/Codertocat/received_events",
"type": "User",
"site_admin": false
},
"repo": {
"id": 186853002,
"node_id": "MDEwOlJlcG9zaXRvcnkxODY4NTMwMDI=",
"name": "Hello-World",
"full_name": "Codertocat/Hello-World",
"private": false,
"owner": {
"login": "Codertocat",
"id": 21031067,
"node_id": "MDQ6VXNlcjIxMDMxMDY3",
"avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Codertocat",
"html_url": "https://github.com/Codertocat",
"followers_url": "https://api.github.com/users/Codertocat/followers",
"following_url": "https://api.github.com/users/Codertocat/following{/other_user}",
"gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions",
"organizations_url": "https://api.github.com/users/Codertocat/orgs",
"repos_url": "https://api.github.com/users/Codertocat/repos",
"events_url": "https://api.github.com/users/Codertocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/Codertocat/received_events",
"type": "User",
"site_admin": false
},
"html_url": "https://github.com/Codertocat/Hello-World",
"description": null,
"fork": false,
"url": "https://api.github.com/repos/Codertocat/Hello-World",
"forks_url": "https://api.github.com/repos/Codertocat/Hello-World/forks",
"keys_url": "https://api.github.com/repos/Codertocat/Hello-World/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/Codertocat/Hello-World/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/Codertocat/Hello-World/teams",
"hooks_url": "https://api.github.com/repos/Codertocat/Hello-World/hooks",
"issue_events_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/events{/number}",
"events_url": "https://api.github.com/repos/Codertocat/Hello-World/events",
"assignees_url": "https://api.github.com/repos/Codertocat/Hello-World/assignees{/user}",
"branches_url": "https://api.github.com/repos/Codertocat/Hello-World/branches{/branch}",
"tags_url": "https://api.github.com/repos/Codertocat/Hello-World/tags",
"blobs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/Codertocat/Hello-World/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/Codertocat/Hello-World/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/Codertocat/Hello-World/statuses/{sha}",
"languages_url": "https://api.github.com/repos/Codertocat/Hello-World/languages",
"stargazers_url": "https://api.github.com/repos/Codertocat/Hello-World/stargazers",
"contributors_url": "https://api.github.com/repos/Codertocat/Hello-World/contributors",
"subscribers_url": "https://api.github.com/repos/Codertocat/Hello-World/subscribers",
"subscription_url": "https://api.github.com/repos/Codertocat/Hello-World/subscription",
"commits_url": "https://api.github.com/repos/Codertocat/Hello-World/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/Codertocat/Hello-World/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/Codertocat/Hello-World/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/Codertocat/Hello-World/contents/{+path}",
"compare_url": "https://api.github.com/repos/Codertocat/Hello-World/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/Codertocat/Hello-World/merges",
"archive_url": "https://api.github.com/repos/Codertocat/Hello-World/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/Codertocat/Hello-World/downloads",
"issues_url": "https://api.github.com/repos/Codertocat/Hello-World/issues{/number}",
"pulls_url": "https://api.github.com/repos/Codertocat/Hello-World/pulls{/number}",
"milestones_url": "https://api.github.com/repos/Codertocat/Hello-World/milestones{/number}",
"notifications_url": "https://api.github.com/repos/Codertocat/Hello-World/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/Codertocat/Hello-World/labels{/name}",
"releases_url": "https://api.github.com/repos/Codertocat/Hello-World/releases{/id}",
"deployments_url": "https://api.github.com/repos/Codertocat/Hello-World/deployments",
"created_at": "2019-05-15T15:19:25Z",
"updated_at": "2019-05-15T15:19:27Z",
"pushed_at": "2019-05-15T15:20:32Z",
"git_url": "git://github.com/Codertocat/Hello-World.git",
"ssh_url": "git@github.com:Codertocat/Hello-World.git",
"clone_url": "https://github.com/Codertocat/Hello-World.git",
"svn_url": "https://github.com/Codertocat/Hello-World",
"homepage": null,
"size": 0,
"stargazers_count": 0,
"watchers_count": 0,
"language": null,
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": true,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 2,
"license": null,
"forks": 0,
"open_issues": 2,
"watchers": 0,
"default_branch": "master",
"allow_squash_merge": true,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"delete_branch_on_merge": false
}
},
"base": {
"label": "Codertocat:master",
"ref": "master",
"sha": "f95f852bd8fca8fcc58a9a2d6c842781e32a215e",
"user": {
"login": "Codertocat",
"id": 21031067,
"node_id": "MDQ6VXNlcjIxMDMxMDY3",
"avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Codertocat",
"html_url": "https://github.com/Codertocat",
"followers_url": "https://api.github.com/users/Codertocat/followers",
"following_url": "https://api.github.com/users/Codertocat/following{/other_user}",
"gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions",
"organizations_url": "https://api.github.com/users/Codertocat/orgs",
"repos_url": "https://api.github.com/users/Codertocat/repos",
"events_url": "https://api.github.com/users/Codertocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/Codertocat/received_events",
"type": "User",
"site_admin": false
},
"repo": {
"id": 186853002,
"node_id": "MDEwOlJlcG9zaXRvcnkxODY4NTMwMDI=",
"name": "Hello-World",
"full_name": "Codertocat/Hello-World",
"private": false,
"owner": {
"login": "Codertocat",
"id": 21031067,
"node_id": "MDQ6VXNlcjIxMDMxMDY3",
"avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Codertocat",
"html_url": "https://github.com/Codertocat",
"followers_url": "https://api.github.com/users/Codertocat/followers",
"following_url": "https://api.github.com/users/Codertocat/following{/other_user}",
"gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions",
"organizations_url": "https://api.github.com/users/Codertocat/orgs",
"repos_url": "https://api.github.com/users/Codertocat/repos",
"events_url": "https://api.github.com/users/Codertocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/Codertocat/received_events",
"type": "User",
"site_admin": false
},
"html_url": "https://github.com/Codertocat/Hello-World",
"description": null,
"fork": false,
"url": "https://api.github.com/repos/Codertocat/Hello-World",
"forks_url": "https://api.github.com/repos/Codertocat/Hello-World/forks",
"keys_url": "https://api.github.com/repos/Codertocat/Hello-World/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/Codertocat/Hello-World/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/Codertocat/Hello-World/teams",
"hooks_url": "https://api.github.com/repos/Codertocat/Hello-World/hooks",
"issue_events_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/events{/number}",
"events_url": "https://api.github.com/repos/Codertocat/Hello-World/events",
"assignees_url": "https://api.github.com/repos/Codertocat/Hello-World/assignees{/user}",
"branches_url": "https://api.github.com/repos/Codertocat/Hello-World/branches{/branch}",
"tags_url": "https://api.github.com/repos/Codertocat/Hello-World/tags",
"blobs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/Codertocat/Hello-World/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/Codertocat/Hello-World/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/Codertocat/Hello-World/statuses/{sha}",
"languages_url": "https://api.github.com/repos/Codertocat/Hello-World/languages",
"stargazers_url": "https://api.github.com/repos/Codertocat/Hello-World/stargazers",
"contributors_url": "https://api.github.com/repos/Codertocat/Hello-World/contributors",
"subscribers_url": "https://api.github.com/repos/Codertocat/Hello-World/subscribers",
"subscription_url": "https://api.github.com/repos/Codertocat/Hello-World/subscription",
"commits_url": "https://api.github.com/repos/Codertocat/Hello-World/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/Codertocat/Hello-World/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/Codertocat/Hello-World/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/Codertocat/Hello-World/contents/{+path}",
"compare_url": "https://api.github.com/repos/Codertocat/Hello-World/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/Codertocat/Hello-World/merges",
"archive_url": "https://api.github.com/repos/Codertocat/Hello-World/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/Codertocat/Hello-World/downloads",
"issues_url": "https://api.github.com/repos/Codertocat/Hello-World/issues{/number}",
"pulls_url": "https://api.github.com/repos/Codertocat/Hello-World/pulls{/number}",
"milestones_url": "https://api.github.com/repos/Codertocat/Hello-World/milestones{/number}",
"notifications_url": "https://api.github.com/repos/Codertocat/Hello-World/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/Codertocat/Hello-World/labels{/name}",
"releases_url": "https://api.github.com/repos/Codertocat/Hello-World/releases{/id}",
"deployments_url": "https://api.github.com/repos/Codertocat/Hello-World/deployments",
"created_at": "2019-05-15T15:19:25Z",
"updated_at": "2019-05-15T15:19:27Z",
"pushed_at": "2019-05-15T15:20:32Z",
"git_url": "git://github.com/Codertocat/Hello-World.git",
"ssh_url": "git@github.com:Codertocat/Hello-World.git",
"clone_url": "https://github.com/Codertocat/Hello-World.git",
"svn_url": "https://github.com/Codertocat/Hello-World",
"homepage": null,
"size": 0,
"stargazers_count": 0,
"watchers_count": 0,
"language": null,
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": true,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 2,
"license": null,
"forks": 0,
"open_issues": 2,
"watchers": 0,
"default_branch": "master",
"allow_squash_merge": true,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"delete_branch_on_merge": false
}
},
"_links": {
"self": {
"href": "https://api.github.com/repos/Codertocat/Hello-World/pulls/2"
},
"html": {
"href": "https://github.com/Codertocat/Hello-World/pull/2"
},
"issue": {
"href": "https://api.github.com/repos/Codertocat/Hello-World/issues/2"
},
"comments": {
"href": "https://api.github.com/repos/Codertocat/Hello-World/issues/2/comments"
},
"review_comments": {
"href": "https://api.github.com/repos/Codertocat/Hello-World/pulls/2/comments"
},
"review_comment": {
"href": "https://api.github.com/repos/Codertocat/Hello-World/pulls/comments{/number}"
},
"commits": {
"href": "https://api.github.com/repos/Codertocat/Hello-World/pulls/2/commits"
},
"statuses": {
"href": "https://api.github.com/repos/Codertocat/Hello-World/statuses/ec26c3e57ca3a959ca5aad62de7213c562f8c821"
}
},
"author_association": "OWNER",
"draft": false,
"merged": false,
"mergeable": null,
"rebaseable": null,
"mergeable_state": "unknown",
"merged_by": null,
"comments": 0,
"review_comments": 0,
"maintainer_can_modify": false,
"commits": 1,
"additions": 1,
"deletions": 1,
"changed_files": 1
},
"repository": {
"id": 186853002,
"node_id": "MDEwOlJlcG9zaXRvcnkxODY4NTMwMDI=",
"name": "Hello-World",
"full_name": "Codertocat/Hello-World",
"private": false,
"owner": {
"login": "Codertocat",
"id": 21031067,
"node_id": "MDQ6VXNlcjIxMDMxMDY3",
"avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Codertocat",
"html_url": "https://github.com/Codertocat",
"followers_url": "https://api.github.com/users/Codertocat/followers",
"following_url": "https://api.github.com/users/Codertocat/following{/other_user}",
"gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions",
"organizations_url": "https://api.github.com/users/Codertocat/orgs",
"repos_url": "https://api.github.com/users/Codertocat/repos",
"events_url": "https://api.github.com/users/Codertocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/Codertocat/received_events",
"type": "User",
"site_admin": false
},
"html_url": "https://github.com/Codertocat/Hello-World",
"description": null,
"fork": false,
"url": "https://api.github.com/repos/Codertocat/Hello-World",
"forks_url": "https://api.github.com/repos/Codertocat/Hello-World/forks",
"keys_url": "https://api.github.com/repos/Codertocat/Hello-World/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/Codertocat/Hello-World/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/Codertocat/Hello-World/teams",
"hooks_url": "https://api.github.com/repos/Codertocat/Hello-World/hooks",
"issue_events_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/events{/number}",
"events_url": "https://api.github.com/repos/Codertocat/Hello-World/events",
"assignees_url": "https://api.github.com/repos/Codertocat/Hello-World/assignees{/user}",
"branches_url": "https://api.github.com/repos/Codertocat/Hello-World/branches{/branch}",
"tags_url": "https://api.github.com/repos/Codertocat/Hello-World/tags",
"blobs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/Codertocat/Hello-World/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/Codertocat/Hello-World/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/Codertocat/Hello-World/statuses/{sha}",
"languages_url": "https://api.github.com/repos/Codertocat/Hello-World/languages",
"stargazers_url": "https://api.github.com/repos/Codertocat/Hello-World/stargazers",
"contributors_url": "https://api.github.com/repos/Codertocat/Hello-World/contributors",
"subscribers_url": "https://api.github.com/repos/Codertocat/Hello-World/subscribers",
"subscription_url": "https://api.github.com/repos/Codertocat/Hello-World/subscription",
"commits_url": "https://api.github.com/repos/Codertocat/Hello-World/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/Codertocat/Hello-World/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/Codertocat/Hello-World/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/Codertocat/Hello-World/contents/{+path}",
"compare_url": "https://api.github.com/repos/Codertocat/Hello-World/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/Codertocat/Hello-World/merges",
"archive_url": "https://api.github.com/repos/Codertocat/Hello-World/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/Codertocat/Hello-World/downloads",
"issues_url": "https://api.github.com/repos/Codertocat/Hello-World/issues{/number}",
"pulls_url": "https://api.github.com/repos/Codertocat/Hello-World/pulls{/number}",
"milestones_url": "https://api.github.com/repos/Codertocat/Hello-World/milestones{/number}",
"notifications_url": "https://api.github.com/repos/Codertocat/Hello-World/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/Codertocat/Hello-World/labels{/name}",
"releases_url": "https://api.github.com/repos/Codertocat/Hello-World/releases{/id}",
"deployments_url": "https://api.github.com/repos/Codertocat/Hello-World/deployments",
"created_at": "2019-05-15T15:19:25Z",
"updated_at": "2019-05-15T15:19:27Z",
"pushed_at": "2019-05-15T15:20:32Z",
"git_url": "git://github.com/Codertocat/Hello-World.git",
"ssh_url": "git@github.com:Codertocat/Hello-World.git",
"clone_url": "https://github.com/Codertocat/Hello-World.git",
"svn_url": "https://github.com/Codertocat/Hello-World",
"homepage": null,
"size": 0,
"stargazers_count": 0,
"watchers_count": 0,
"language": null,
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": true,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 2,
"license": null,
"forks": 0,
"open_issues": 2,
"watchers": 0,
"default_branch": "master"
},
"sender": {
"login": "Codertocat",
"id": 21031067,
"node_id": "MDQ6VXNlcjIxMDMxMDY3",
"avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Codertocat",
"html_url": "https://github.com/Codertocat",
"followers_url": "https://api.github.com/users/Codertocat/followers",
"following_url": "https://api.github.com/users/Codertocat/following{/other_user}",
"gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions",
"organizations_url": "https://api.github.com/users/Codertocat/orgs",
"repos_url": "https://api.github.com/users/Codertocat/repos",
"events_url": "https://api.github.com/users/Codertocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/Codertocat/received_events",
"type": "User",
"site_admin": false
}
}

View File

@@ -2,6 +2,7 @@ package webhook
import (
"context"
"errors"
"fmt"
"html"
"net/http"
@@ -19,17 +20,24 @@ import (
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
argosettings "github.com/argoproj/argo-cd/v2/util/settings"
"github.com/go-playground/webhooks/v6/azuredevops"
"github.com/go-playground/webhooks/v6/github"
"github.com/go-playground/webhooks/v6/gitlab"
log "github.com/sirupsen/logrus"
"gopkg.in/go-playground/webhooks.v5/github"
"gopkg.in/go-playground/webhooks.v5/gitlab"
)
var (
errBasicAuthVerificationFailed = errors.New("basic auth verification failed")
)
type WebhookHandler struct {
namespace string
github *github.Webhook
gitlab *gitlab.Webhook
client client.Client
generators map[string]generators.Generator
namespace string
github *github.Webhook
gitlab *gitlab.Webhook
azuredevops *azuredevops.Webhook
azuredevopsAuthHandler func(r *http.Request) error
client client.Client
generators map[string]generators.Generator
}
type gitGeneratorInfo struct {
@@ -39,8 +47,14 @@ type gitGeneratorInfo struct {
}
type prGeneratorInfo struct {
Github *prGeneratorGithubInfo
Gitlab *prGeneratorGitlabInfo
Azuredevops *prGeneratorAzuredevopsInfo
Github *prGeneratorGithubInfo
Gitlab *prGeneratorGitlabInfo
}
type prGeneratorAzuredevopsInfo struct {
Repo string
Project string
}
type prGeneratorGithubInfo struct {
@@ -68,13 +82,28 @@ func NewWebhookHandler(namespace string, argocdSettingsMgr *argosettings.Setting
if err != nil {
return nil, fmt.Errorf("Unable to init GitLab webhook: %v", err)
}
azuredevopsHandler, err := azuredevops.New()
if err != nil {
return nil, fmt.Errorf("Unable to init Azure DevOps webhook: %v", err)
}
azuredevopsAuthHandler := func(r *http.Request) error {
if argocdSettings.WebhookAzureDevOpsUsername != "" && argocdSettings.WebhookAzureDevOpsPassword != "" {
username, password, ok := r.BasicAuth()
if !ok || username != argocdSettings.WebhookAzureDevOpsUsername || password != argocdSettings.WebhookAzureDevOpsPassword {
return errBasicAuthVerificationFailed
}
}
return nil
}
return &WebhookHandler{
namespace: namespace,
github: githubHandler,
gitlab: gitlabHandler,
client: client,
generators: generators,
namespace: namespace,
github: githubHandler,
gitlab: gitlabHandler,
azuredevops: azuredevopsHandler,
azuredevopsAuthHandler: azuredevopsAuthHandler,
client: client,
generators: generators,
}, nil
}
@@ -125,6 +154,14 @@ func (h *WebhookHandler) Handler(w http.ResponseWriter, r *http.Request) {
payload, err = h.github.Parse(r, github.PushEvent, github.PullRequestEvent, github.PingEvent)
case r.Header.Get("X-Gitlab-Event") != "":
payload, err = h.gitlab.Parse(r, gitlab.PushEvents, gitlab.TagEvents, gitlab.MergeRequestEvents)
case r.Header.Get("X-Vss-Activityid") != "":
if err = h.azuredevopsAuthHandler(r); err != nil {
if errors.Is(err, errBasicAuthVerificationFailed) {
log.WithField(common.SecurityField, common.SecurityHigh).Infof("Azure DevOps webhook basic auth verification failed")
}
} else {
payload, err = h.azuredevops.Parse(r, azuredevops.GitPushEventType, azuredevops.GitPullRequestCreatedEventType, azuredevops.GitPullRequestUpdatedEventType, azuredevops.GitPullRequestMergedEventType)
}
default:
log.Debug("Ignoring unknown webhook event")
http.Error(w, "Unknown webhook event", http.StatusBadRequest)
@@ -164,6 +201,12 @@ func getGitGeneratorInfo(payload interface{}) *gitGeneratorInfo {
webURL = payload.Project.WebURL
revision = parseRevision(payload.Ref)
touchedHead = payload.Project.DefaultBranch == revision
case azuredevops.GitPushEvent:
// See: https://learn.microsoft.com/en-us/azure/devops/service-hooks/events?view=azure-devops#git.push
webURL = payload.Resource.Repository.RemoteURL
revision = parseRevision(payload.Resource.RefUpdates[0].Name)
touchedHead = payload.Resource.RefUpdates[0].Name == payload.Resource.Repository.DefaultBranch
// unfortunately, Azure DevOps doesn't provide a list of changed files
default:
return nil
}
@@ -229,6 +272,18 @@ func getPRGeneratorInfo(payload interface{}) *prGeneratorInfo {
Project: strconv.FormatInt(payload.ObjectAttributes.TargetProjectID, 10),
APIHostname: urlObj.Hostname(),
}
case azuredevops.GitPullRequestEvent:
if !isAllowedAzureDevOpsPullRequestAction(string(payload.EventType)) {
return nil
}
repo := payload.Resource.Repository.Name
project := payload.Resource.Repository.Project.Name
info.Azuredevops = &prGeneratorAzuredevopsInfo{
Repo: repo,
Project: project,
}
default:
return nil
}
@@ -256,6 +311,13 @@ var gitlabAllowedPullRequestActions = []string{
"merge",
}
// azuredevopsAllowedPullRequestActions is a list of Azure DevOps actions that allow refresh
var azuredevopsAllowedPullRequestActions = []string{
"git.pullrequest.created",
"git.pullrequest.merged",
"git.pullrequest.updated",
}
func isAllowedGithubPullRequestAction(action string) bool {
for _, allow := range githubAllowedPullRequestActions {
if allow == action {
@@ -274,6 +336,15 @@ func isAllowedGitlabPullRequestAction(action string) bool {
return false
}
func isAllowedAzureDevOpsPullRequestAction(action string) bool {
for _, allow := range azuredevopsAllowedPullRequestActions {
if allow == action {
return true
}
}
return false
}
func shouldRefreshGitGenerator(gen *v1alpha1.GitGenerator, info *gitGeneratorInfo) bool {
if gen == nil || info == nil {
return false
@@ -341,10 +412,12 @@ func shouldRefreshPRGenerator(gen *v1alpha1.PullRequestGenerator, info *prGenera
}
if gen.Github != nil && info.Github != nil {
if gen.Github.Owner != info.Github.Owner {
// repository owner and name are case-insensitive
// See https://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests
if !strings.EqualFold(gen.Github.Owner, info.Github.Owner) {
return false
}
if gen.Github.Repo != info.Github.Repo {
if !strings.EqualFold(gen.Github.Repo, info.Github.Repo) {
return false
}
api := gen.Github.API
@@ -359,6 +432,16 @@ func shouldRefreshPRGenerator(gen *v1alpha1.PullRequestGenerator, info *prGenera
return true
}
if gen.AzureDevOps != nil && info.Azuredevops != nil {
if gen.AzureDevOps.Project != info.Azuredevops.Project {
return false
}
if gen.AzureDevOps.Repo != info.Azuredevops.Repo {
return false
}
return true
}
return false
}
@@ -562,7 +645,7 @@ func refreshApplicationSet(c client.Client, appSet *v1alpha1.ApplicationSet) err
return retry.RetryOnConflict(retry.DefaultBackoff, func() error {
err := c.Get(context.Background(), types.NamespacedName{Name: appSet.Name, Namespace: appSet.Namespace}, appSet)
if err != nil {
return err
return fmt.Errorf("error getting ApplicationSet: %w", err)
}
if appSet.Annotations == nil {
appSet.Annotations = map[string]string{}

View File

@@ -20,12 +20,13 @@ import (
kubefake "k8s.io/client-go/kubernetes/fake"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
"github.com/argoproj/argo-cd/v2/applicationset/generators"
"github.com/argoproj/argo-cd/v2/applicationset/services/scm_provider"
"github.com/argoproj/argo-cd/v2/common"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
argosettings "github.com/argoproj/argo-cd/v2/util/settings"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
)
type generatorMock struct {
@@ -110,7 +111,7 @@ func TestWebhookHandler(t *testing.T) {
expectedRefresh: false,
},
{
desc: "WebHook from a GitHub repository via pull_reqeuest opened event",
desc: "WebHook from a GitHub repository via pull_request opened event",
headerKey: "X-GitHub-Event",
headerValue: "pull_request",
payloadFile: "github-pull-request-opened-event.json",
@@ -119,7 +120,7 @@ func TestWebhookHandler(t *testing.T) {
expectedRefresh: true,
},
{
desc: "WebHook from a GitHub repository via pull_reqeuest assigned event",
desc: "WebHook from a GitHub repository via pull_request assigned event",
headerKey: "X-GitHub-Event",
headerValue: "pull_request",
payloadFile: "github-pull-request-assigned-event.json",
@@ -127,6 +128,15 @@ func TestWebhookHandler(t *testing.T) {
expectedStatusCode: http.StatusOK,
expectedRefresh: false,
},
{
desc: "WebHook from a GitHub repository via pull_request labeled event",
headerKey: "X-GitHub-Event",
headerValue: "pull_request",
payloadFile: "github-pull-request-labeled-event.json",
effectedAppSets: []string{"pull-request-github", "matrix-pull-request-github", "matrix-scm-pull-request-github", "merge-pull-request-github", "plugin", "matrix-pull-request-github-plugin"},
expectedStatusCode: http.StatusOK,
expectedRefresh: true,
},
{
desc: "WebHook from a GitLab repository via open merge request event",
headerKey: "X-Gitlab-Event",
@@ -145,6 +155,24 @@ func TestWebhookHandler(t *testing.T) {
expectedStatusCode: http.StatusOK,
expectedRefresh: false,
},
{
desc: "WebHook from a Azure DevOps repository via Commit",
headerKey: "X-Vss-Activityid",
headerValue: "Push Hook",
payloadFile: "azuredevops-push.json",
effectedAppSets: []string{"git-azure-devops", "plugin", "matrix-pull-request-github-plugin"},
expectedStatusCode: http.StatusOK,
expectedRefresh: true,
},
{
desc: "WebHook from a Azure DevOps repository via pull request event",
headerKey: "X-Vss-Activityid",
headerValue: "Pull Request Hook",
payloadFile: "azuredevops-pull-request.json",
effectedAppSets: []string{"pull-request-azure-devops", "plugin", "matrix-pull-request-github-plugin"},
expectedStatusCode: http.StatusOK,
expectedRefresh: true,
},
}
namespace := "test"
@@ -160,15 +188,17 @@ func TestWebhookHandler(t *testing.T) {
fc := fake.NewClientBuilder().WithScheme(scheme).WithObjects(
fakeAppWithGitGenerator("git-github", namespace, "https://github.com/org/repo"),
fakeAppWithGitGenerator("git-gitlab", namespace, "https://gitlab/group/name"),
fakeAppWithGithubPullRequestGenerator("pull-request-github", namespace, "Codertocat", "Hello-World"),
fakeAppWithGitGenerator("git-azure-devops", namespace, "https://dev.azure.com/fabrikam-fiber-inc/DefaultCollection/_git/Fabrikam-Fiber-Git"),
fakeAppWithGithubPullRequestGenerator("pull-request-github", namespace, "CodErTOcat", "Hello-World"),
fakeAppWithGitlabPullRequestGenerator("pull-request-gitlab", namespace, "100500"),
fakeAppWithAzureDevOpsPullRequestGenerator("pull-request-azure-devops", namespace, "DefaultCollection", "Fabrikam"),
fakeAppWithPluginGenerator("plugin", namespace),
fakeAppWithMatrixAndGitGenerator("matrix-git-github", namespace, "https://github.com/org/repo"),
fakeAppWithMatrixAndPullRequestGenerator("matrix-pull-request-github", namespace, "Codertocat", "Hello-World"),
fakeAppWithMatrixAndScmWithGitGenerator("matrix-scm-git-github", namespace, "org"),
fakeAppWithMatrixAndScmWithPullRequestGenerator("matrix-scm-pull-request-github", namespace, "Codertocat"),
fakeAppWithMatrixAndNestedGitGenerator("matrix-nested-git-github", namespace, "https://github.com/org/repo"),
fakeAppWithMatrixAndPullRequestGeneratorWithPluginGenerator("matrix-pull-request-github-plugin", namespace, "Codertocat", "Hello-World", "plugin-cm"),
fakeAppWithMatrixAndPullRequestGeneratorWithPluginGenerator("matrix-pull-request-github-plugin", namespace, "coDErtoCat", "HeLLO-WorLD", "plugin-cm"),
fakeAppWithMergeAndGitGenerator("merge-git-github", namespace, "https://github.com/org/repo"),
fakeAppWithMergeAndPullRequestGenerator("merge-pull-request-github", namespace, "Codertocat", "Hello-World"),
fakeAppWithMergeAndNestedGitGenerator("merge-nested-git-github", namespace, "https://github.com/org/repo"),
@@ -337,6 +367,27 @@ func fakeAppWithGithubPullRequestGenerator(name, namespace, owner, repo string)
}
}
func fakeAppWithAzureDevOpsPullRequestGenerator(name, namespace, project, repo string) *v1alpha1.ApplicationSet {
return &v1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
},
Spec: v1alpha1.ApplicationSetSpec{
Generators: []v1alpha1.ApplicationSetGenerator{
{
PullRequest: &v1alpha1.PullRequestGenerator{
AzureDevOps: &v1alpha1.PullRequestGeneratorAzureDevOps{
Project: project,
Repo: repo,
},
},
},
},
},
}
}
func fakeAppWithMatrixAndGitGenerator(name, namespace, repo string) *v1alpha1.ApplicationSet {
return &v1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -3,5 +3,6 @@ package assets
import "embed"
// Embedded contains embedded assets
//
//go:embed *
var Embedded embed.FS

View File

@@ -234,7 +234,7 @@
},
{
"type": "string",
"description": "forces application reconciliation if set to true.",
"description": "forces application reconciliation if set to 'hard'.",
"name": "refresh",
"in": "query"
},
@@ -401,6 +401,11 @@
"type": "boolean",
"name": "validate",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -462,6 +467,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -523,6 +533,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -558,7 +573,7 @@
},
{
"type": "string",
"description": "forces application reconciliation if set to true.",
"description": "forces application reconciliation if set to 'hard'.",
"name": "refresh",
"in": "query"
},
@@ -649,6 +664,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -737,6 +757,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -773,6 +798,11 @@
"type": "string",
"name": "namespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -885,6 +915,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -935,6 +970,30 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
},
{
"type": "array",
"items": {
"type": "string",
"format": "int64"
},
"collectionFormat": "multi",
"name": "sourcePositions",
"in": "query"
},
{
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi",
"name": "revisions",
"in": "query"
}
],
"responses": {
@@ -971,6 +1030,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1084,6 +1148,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1154,6 +1223,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1226,6 +1300,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1295,6 +1374,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1356,6 +1440,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1423,6 +1512,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1484,6 +1578,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1529,6 +1628,11 @@
"description": "the application's namespace.",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1574,6 +1678,11 @@
"description": "the application's namespace.",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1662,6 +1771,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -1737,6 +1851,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -3716,7 +3835,7 @@
},
{
"type": "string",
"description": "forces application reconciliation if set to true.",
"description": "forces application reconciliation if set to 'hard'.",
"name": "refresh",
"in": "query"
},
@@ -3833,6 +3952,11 @@
"type": "string",
"name": "appNamespace",
"in": "query"
},
{
"type": "string",
"name": "project",
"in": "query"
}
],
"responses": {
@@ -3931,7 +4055,7 @@
"type": "object",
"properties": {
"expiresIn": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "expiresIn represents a duration in seconds"
},
@@ -3958,14 +4082,14 @@
"type": "object",
"properties": {
"expiresAt": {
"type": "string",
"type": "integer",
"format": "int64"
},
"id": {
"type": "string"
},
"issuedAt": {
"type": "string",
"type": "integer",
"format": "int64"
}
}
@@ -3998,6 +4122,9 @@
},
"name": {
"type": "string"
},
"project": {
"type": "string"
}
}
},
@@ -4027,6 +4154,9 @@
},
"patchType": {
"type": "string"
},
"project": {
"type": "string"
}
}
},
@@ -4051,12 +4181,15 @@
"type": "boolean"
},
"id": {
"type": "string",
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"project": {
"type": "string"
},
"prune": {
"type": "boolean"
}
@@ -4087,6 +4220,9 @@
"name": {
"type": "string"
},
"project": {
"type": "string"
},
"prune": {
"type": "boolean"
},
@@ -4102,6 +4238,19 @@
"revision": {
"type": "string"
},
"revisions": {
"type": "array",
"items": {
"type": "string"
}
},
"sourcePositions": {
"type": "array",
"items": {
"type": "string",
"format": "int64"
}
},
"strategy": {
"$ref": "#/definitions/v1alpha1SyncStrategy"
},
@@ -4345,6 +4494,9 @@
"clientID": {
"type": "string"
},
"enablePKCEAuthentication": {
"type": "boolean"
},
"idTokenClaims": {
"type": "object",
"additionalProperties": {
@@ -4509,7 +4661,7 @@
"type": "string"
},
"type": {
"type": "string",
"type": "integer",
"format": "int64"
}
}
@@ -4648,7 +4800,7 @@
"type": "string"
},
"expiresIn": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "expiresIn represents a duration in seconds"
},
@@ -4972,7 +5124,7 @@
}
},
"runtimeRawExtension": {
"description": "RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned\nstruct, and Object in your internal struct. You also need to register your\nvarious plugin types.\n\n// Internal package:\ntype MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n}\ntype PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package:\ntype MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n}\ntype PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this:\n{\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into\nyour external MyAPIObject. That causes the raw JSON to be stored, but not unpacked.\nThe next step is to copy (using pkg/conversion) into the internal struct. The runtime\npackage's DefaultScheme has conversion functions installed which will unpack the\nJSON stored in RawExtension, turning it into the correct object type, and storing it\nin the Object. (TODO: In the case where the object is of an unknown type, a\nruntime.Unknown object will be created and stored.)\n\n+k8s:deepcopy-gen=true\n+protobuf=true\n+k8s:openapi-gen=true",
"description": "RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned\nstruct, and Object in your internal struct. You also need to register your\nvarious plugin types.\n\n// Internal package:\n\n\ttype MyAPIObject struct {\n\t\truntime.TypeMeta `json:\",inline\"`\n\t\tMyPlugin runtime.Object `json:\"myPlugin\"`\n\t}\n\n\ttype PluginA struct {\n\t\tAOption string `json:\"aOption\"`\n\t}\n\n// External package:\n\n\ttype MyAPIObject struct {\n\t\truntime.TypeMeta `json:\",inline\"`\n\t\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n\t}\n\n\ttype PluginA struct {\n\t\tAOption string `json:\"aOption\"`\n\t}\n\n// On the wire, the JSON will look something like this:\n\n\t{\n\t\t\"kind\":\"MyAPIObject\",\n\t\t\"apiVersion\":\"v1\",\n\t\t\"myPlugin\": {\n\t\t\t\"kind\":\"PluginA\",\n\t\t\t\"aOption\":\"foo\",\n\t\t},\n\t}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into\nyour external MyAPIObject. That causes the raw JSON to be stored, but not unpacked.\nThe next step is to copy (using pkg/conversion) into the internal struct. The runtime\npackage's DefaultScheme has conversion functions installed which will unpack the\nJSON stored in RawExtension, turning it into the correct object type, and storing it\nin the Object. (TODO: In the case where the object is of an unknown type, a\nruntime.Unknown object will be created and stored.)\n\n+k8s:deepcopy-gen=true\n+protobuf=true\n+k8s:openapi-gen=true",
"type": "object",
"properties": {
"raw": {
@@ -5239,7 +5391,7 @@
"type": "string"
},
"remainingItemCount": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "remainingItemCount is the number of subsequent items in the list which are not included in this\nlist response. If the list request contained label or field selectors, then the number of\nremaining items is unknown and the field will be left unset and omitted during serialization.\nIf the list is complete (either because it is not chunking or because this is the last chunk),\nthen there are no more remaining items and this field will be left unset and omitted during\nserialization.\nServers older than v1.15 do not set this field.\nThe intended use of the remainingItemCount is *estimating* the size of a collection. Clients\nshould not rely on the remainingItemCount to be set or to be exact.\n+optional"
},
@@ -5317,7 +5469,7 @@
},
"seconds": {
"description": "Represents seconds of UTC time since Unix epoch\n1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n9999-12-31T23:59:59Z inclusive.",
"type": "string",
"type": "integer",
"format": "int64"
}
}
@@ -5379,15 +5531,11 @@
"type": "string"
}
},
"clusterName": {
"description": "Deprecated: ClusterName is a legacy field that was always cleared by\nthe system and never used; it will be removed completely in 1.25.\n\nThe name in the go struct is changed to help clients detect\naccidental use.\n\n+optional",
"type": "string"
},
"creationTimestamp": {
"$ref": "#/definitions/v1Time"
},
"deletionGracePeriodSeconds": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "Number of seconds allowed for this object to gracefully terminate before\nit will be removed from the system. Only set when deletionTimestamp is also set.\nMay only be shortened.\nRead-only.\n+optional"
},
@@ -5406,7 +5554,7 @@
"type": "string"
},
"generation": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "A sequence number representing a specific generation of the desired state.\nPopulated by the system. Read-only.\n+optional"
},
@@ -5454,8 +5602,8 @@
}
},
"v1ObjectReference": {
"description": "ObjectReference contains enough information to let you inspect or modify the referred object.\n---\nNew uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.\n 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.\n 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular\n restrictions like, \"must refer only to types A and B\" or \"UID not honored\" or \"name must be restricted\".\n Those cannot be well described when embedded.\n 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.\n 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity\n during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple\n and the version of the actual struct is irrelevant.\n 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type\n will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control.\n\nInstead of using this type, create a locally provided and used type that is well-focused on your reference.\nFor example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object\n+structType=atomic",
"type": "object",
"title": "ObjectReference contains enough information to let you inspect or modify the referred object.\n---\nNew uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.\n 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.\n 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular\n restrictions like, \"must refer only to types A and B\" or \"UID not honored\" or \"name must be restricted\".\n Those cannot be well described when embedded.\n 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.\n 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity\n during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple\n and the version of the actual struct is irrelevant.\n 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type\n will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control.\nInstead of using this type, create a locally provided and used type that is well-focused on your reference.\nFor example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object\n+structType=atomic",
"properties": {
"apiVersion": {
"type": "string",
@@ -5537,19 +5685,8 @@
},
"v1Time": {
"description": "Time is a wrapper around time.Time which supports correct\nmarshaling to YAML and JSON. Wrappers are provided for many\nof the factory methods that the time package offers.\n\n+protobuf.options.marshal=false\n+protobuf.as=Timestamp\n+protobuf.options.(gogoproto.goproto_stringer)=false",
"type": "object",
"properties": {
"nanos": {
"description": "Non-negative fractions of a second at nanosecond resolution. Negative\nsecond values with fractions must still have non-negative nanos values\nthat count forward in time. Must be from 0 to 999,999,999\ninclusive. This field may be limited in precision depending on context.",
"type": "integer",
"format": "int32"
},
"seconds": {
"description": "Represents seconds of UTC time since Unix epoch\n1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n9999-12-31T23:59:59Z inclusive.",
"type": "string",
"format": "int64"
}
}
"type": "string",
"format": "date-time"
},
"v1alpha1AWSAuthConfig": {
"type": "object",
@@ -5559,6 +5696,10 @@
"type": "string",
"title": "ClusterName contains AWS cluster name"
},
"profile": {
"description": "Profile contains optional role ARN. If set then AWS IAM Authenticator uses the profile to perform cluster operations instead of the default AWS credential provider chain.",
"type": "string"
},
"roleARN": {
"description": "RoleARN contains optional role ARN. If set then AWS IAM Authenticator assume a role to perform cluster operations instead of the default AWS credential provider chain.",
"type": "string"
@@ -5735,16 +5876,16 @@
"title": "ApplicationDestination holds information about the application's destination",
"properties": {
"name": {
"type": "string",
"title": "Name is an alternate way of specifying the target cluster by its symbolic name"
"description": "Name is an alternate way of specifying the target cluster by its symbolic name. This must be set if Server is not set.",
"type": "string"
},
"namespace": {
"type": "string",
"title": "Namespace specifies the target namespace for the application's resources.\nThe namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace"
},
"server": {
"type": "string",
"title": "Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API"
"description": "Server specifies the URL of the target cluster's Kubernetes control plane API. This must be set if Name is not set.",
"type": "string"
}
}
},
@@ -5788,6 +5929,12 @@
"items": {
"type": "string"
}
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
@@ -5943,6 +6090,30 @@
}
}
},
"v1alpha1ApplicationSetResourceIgnoreDifferences": {
"description": "ApplicationSetResourceIgnoreDifferences configures how the ApplicationSet controller will ignore differences in live\napplications when applying changes from generated applications.",
"type": "object",
"properties": {
"jqPathExpressions": {
"description": "JQPathExpressions is a list of JQ path expressions to fields to ignore differences for.",
"type": "array",
"items": {
"type": "string"
}
},
"jsonPointers": {
"description": "JSONPointers is a list of JSON pointers to fields to ignore differences for.",
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"description": "Name is the name of the application to ignore differences for. If not specified, the rule applies to all applications.",
"type": "string"
}
}
},
"v1alpha1ApplicationSetRolloutStep": {
"type": "object",
"properties": {
@@ -5991,6 +6162,12 @@
"type": "string"
}
},
"ignoreApplicationDifferences": {
"type": "array",
"items": {
"$ref": "#/definitions/v1alpha1ApplicationSetResourceIgnoreDifferences"
}
},
"preservedFields": {
"$ref": "#/definitions/v1alpha1ApplicationPreservedFields"
},
@@ -6002,6 +6179,9 @@
},
"template": {
"$ref": "#/definitions/v1alpha1ApplicationSetTemplate"
},
"templatePatch": {
"type": "string"
}
}
},
@@ -6254,6 +6434,13 @@
"type": "string"
}
},
"components": {
"type": "array",
"title": "Components specifies a list of kustomize components to add to the kustomization before building",
"items": {
"type": "string"
}
},
"forceCommonAnnotations": {
"type": "boolean",
"title": "ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps"
@@ -6269,6 +6456,10 @@
"type": "string"
}
},
"labelWithoutSelector": {
"type": "boolean",
"title": "LabelWithoutSelector specifies whether to apply common labels to resource selectors or not"
},
"namePrefix": {
"type": "string",
"title": "NamePrefix is a prefix appended to resources for Kustomize apps"
@@ -6281,6 +6472,13 @@
"type": "string",
"title": "Namespace sets the namespace that Kustomize adds to all resources"
},
"patches": {
"type": "array",
"title": "Patches is a list of Kustomize patches",
"items": {
"$ref": "#/definitions/v1alpha1KustomizePatch"
}
},
"replicas": {
"type": "array",
"title": "Replicas is a list of Kustomize Replicas override specifications",
@@ -6369,7 +6567,7 @@
},
"revisionHistoryLimit": {
"description": "RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions.\nThis should only be changed in exceptional circumstances.\nSetting to zero will store no history. This will reduce storage used.\nIncreasing will increase the space used to store the history, so we do not recommend increasing it.\nDefault is 10.",
"type": "string",
"type": "integer",
"format": "int64"
},
"source": {
@@ -6519,7 +6717,7 @@
"title": "Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. \"2m\", \"1h\")"
},
"factor": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "Factor is a factor to multiply the base duration after each failed retry"
},
@@ -6630,7 +6828,7 @@
},
"shard": {
"description": "Shard contains optional shard number. Calculated on the fly by the application controller if not specified.",
"type": "string",
"type": "integer",
"format": "int64"
}
}
@@ -6640,7 +6838,7 @@
"title": "ClusterCacheInfo contains information about the cluster cache",
"properties": {
"apisCount": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "APIsCount holds number of observed Kubernetes API count"
},
@@ -6648,7 +6846,7 @@
"$ref": "#/definitions/v1Time"
},
"resourcesCount": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "ResourcesCount holds number of observed Kubernetes resources"
}
@@ -6711,7 +6909,7 @@
}
},
"applicationsCount": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "ApplicationsCount is the number of applications managed by Argo CD on the cluster"
},
@@ -6767,6 +6965,13 @@
"destination": {
"$ref": "#/definitions/v1alpha1ApplicationDestination"
},
"ignoreDifferences": {
"type": "array",
"title": "IgnoreDifferences is a reference to the application's ignored differences used for comparison",
"items": {
"$ref": "#/definitions/v1alpha1ResourceIgnoreDifferences"
}
},
"source": {
"$ref": "#/definitions/v1alpha1ApplicationSource"
},
@@ -6829,7 +7034,7 @@
"type": "string"
},
"requeueAfterSeconds": {
"type": "string",
"type": "integer",
"format": "int64"
},
"template": {
@@ -6917,7 +7122,7 @@
"type": "string"
},
"requeueAfterSeconds": {
"type": "string",
"type": "integer",
"format": "int64"
},
"revision": {
@@ -7049,15 +7254,15 @@
"title": "TODO: describe this type",
"properties": {
"capacity": {
"type": "string",
"type": "integer",
"format": "int64"
},
"requestedByApp": {
"type": "string",
"type": "integer",
"format": "int64"
},
"requestedByNeighbors": {
"type": "string",
"type": "integer",
"format": "int64"
},
"resourceName": {
@@ -7095,11 +7300,11 @@
"title": "JWTToken holds the issuedAt and expiresAt values of a token",
"properties": {
"exp": {
"type": "string",
"type": "integer",
"format": "int64"
},
"iat": {
"type": "string",
"type": "integer",
"format": "int64"
},
"id": {
@@ -7146,6 +7351,20 @@
}
}
},
"v1alpha1KustomizeGvk": {
"type": "object",
"properties": {
"group": {
"type": "string"
},
"kind": {
"type": "string"
},
"version": {
"type": "string"
}
}
},
"v1alpha1KustomizeOptions": {
"type": "object",
"title": "KustomizeOptions are options for kustomize to use when building manifests",
@@ -7160,6 +7379,26 @@
}
}
},
"v1alpha1KustomizePatch": {
"type": "object",
"properties": {
"options": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
},
"patch": {
"type": "string"
},
"path": {
"type": "string"
},
"target": {
"$ref": "#/definitions/v1alpha1KustomizeSelector"
}
}
},
"v1alpha1KustomizeReplica": {
"type": "object",
"properties": {
@@ -7172,12 +7411,41 @@
}
}
},
"v1alpha1KustomizeResId": {
"type": "object",
"properties": {
"gvk": {
"$ref": "#/definitions/v1alpha1KustomizeGvk"
},
"name": {
"type": "string"
},
"namespace": {
"type": "string"
}
}
},
"v1alpha1KustomizeSelector": {
"type": "object",
"properties": {
"annotationSelector": {
"type": "string"
},
"labelSelector": {
"type": "string"
},
"resId": {
"$ref": "#/definitions/v1alpha1KustomizeResId"
}
}
},
"v1alpha1ListGenerator": {
"type": "object",
"title": "ListGenerator include items info",
"properties": {
"elements": {
"type": "array",
"title": "+kubebuilder:validation:Optional",
"items": {
"$ref": "#/definitions/v1JSON"
}
@@ -7298,7 +7566,7 @@
"title": "Phase is the current phase of the operation"
},
"retryCount": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "RetryCount contains time of operation retries"
},
@@ -7390,7 +7658,7 @@
},
"requeueAfterSeconds": {
"description": "RequeueAfterSeconds determines how long the ApplicationSet controller will wait before reconciling the ApplicationSet again.",
"type": "string",
"type": "integer",
"format": "int64"
},
"template": {
@@ -7483,7 +7751,7 @@
},
"requeueAfterSeconds": {
"description": "Standard parameters.",
"type": "string",
"type": "integer",
"format": "int64"
},
"template": {
@@ -7588,6 +7856,10 @@
"description": "The GitLab API URL to talk to. If blank, uses https://gitlab.com/.",
"type": "string"
},
"insecure": {
"type": "boolean",
"title": "Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false"
},
"labels": {
"type": "array",
"title": "Labels is used to filter the MRs that you want to target",
@@ -7686,12 +7958,12 @@
"title": "GithubAppEnterpriseBaseURL specifies the GitHub API URL for GitHub app authentication. If empty will default to https://api.github.com"
},
"githubAppID": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "GithubAppId specifies the Github App ID of the app used to access the repo for GitHub app authentication"
},
"githubAppInstallationID": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "GithubAppInstallationId specifies the ID of the installed GitHub App for GitHub app authentication"
},
@@ -7776,12 +8048,12 @@
"title": "GithubAppEnterpriseBaseURL specifies the base URL of GitHub Enterprise installation. If empty will default to https://api.github.com"
},
"githubAppID": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "GithubAppId specifies the ID of the GitHub app used to access the repo"
},
"githubAppInstallationID": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "GithubAppInstallationId specifies the installation ID of the GitHub App used to access the repo"
},
@@ -7908,6 +8180,12 @@
"disabled": {
"type": "boolean"
},
"displayName": {
"type": "string"
},
"iconClass": {
"type": "string"
},
"name": {
"type": "string"
},
@@ -8089,13 +8367,15 @@
"$ref": "#/definitions/v1alpha1ResourceRef"
}
},
"resourceRef": {
"$ref": "#/definitions/v1alpha1ResourceRef"
},
"resourceVersion": {
"type": "string"
}
}
},
"allOf": [
{
"$ref": "#/definitions/v1alpha1ResourceRef"
}
]
},
"v1alpha1ResourceOverride": {
"type": "object",
@@ -8223,7 +8503,7 @@
"type": "string"
},
"syncWave": {
"type": "string",
"type": "integer",
"format": "int64"
},
"version": {
@@ -8240,7 +8520,7 @@
},
"limit": {
"description": "Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.",
"type": "string",
"type": "integer",
"format": "int64"
}
}
@@ -8256,10 +8536,13 @@
"$ref": "#/definitions/v1Time"
},
"id": {
"type": "string",
"type": "integer",
"format": "int64",
"title": "ID is an auto incrementing identifier of the RevisionHistory"
},
"initiatedBy": {
"$ref": "#/definitions/v1alpha1OperationInitiator"
},
"revision": {
"type": "string",
"title": "Revision holds the revision the sync was performed against"
@@ -8349,7 +8632,7 @@
},
"requeueAfterSeconds": {
"description": "Standard parameters.",
"type": "string",
"type": "integer",
"format": "int64"
},
"template": {
@@ -8554,12 +8837,24 @@
"description": "Gitlab group to scan. Required. You can use either the project id (recommended) or the full namespaced path.",
"type": "string"
},
"includeSharedProjects": {
"type": "boolean",
"title": "When recursing through subgroups, also include shared Projects (true) or scan only the subgroups under same path (false). Defaults to \"true\""
},
"includeSubgroups": {
"type": "boolean",
"title": "Recurse through subgroups (true) or scan only the base group (false). Defaults to \"false\""
},
"insecure": {
"type": "boolean",
"title": "Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false"
},
"tokenRef": {
"$ref": "#/definitions/v1alpha1SecretRef"
},
"topic": {
"description": "Filter repos list based on Gitlab Topic.",
"type": "string"
}
}
},

View File

@@ -19,11 +19,12 @@ import (
"github.com/argoproj/argo-cd/v2/controller/sharding"
"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/pkg/ratelimiter"
"github.com/argoproj/argo-cd/v2/reposerver/apiclient"
"github.com/argoproj/argo-cd/v2/util/argo/normalizers"
cacheutil "github.com/argoproj/argo-cd/v2/util/cache"
appstatecache "github.com/argoproj/argo-cd/v2/util/cache/appstate"
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/argoproj/argo-cd/v2/util/db"
"github.com/argoproj/argo-cd/v2/util/env"
"github.com/argoproj/argo-cd/v2/util/errors"
kubeutil "github.com/argoproj/argo-cd/v2/util/kube"
@@ -34,7 +35,7 @@ import (
const (
// CLIName is the name of the CLI
cliName = "argocd-application-controller"
cliName = common.ApplicationController
// Default time in seconds for application resync period
defaultAppResyncPeriod = 180
// Default time in seconds for application hard resync period
@@ -43,27 +44,36 @@ const (
func NewCommand() *cobra.Command {
var (
clientConfig clientcmd.ClientConfig
appResyncPeriod int64
appHardResyncPeriod int64
repoServerAddress string
repoServerTimeoutSeconds int
selfHealTimeoutSeconds int
statusProcessors int
operationProcessors int
glogLevel int
metricsPort int
metricsCacheExpiration time.Duration
metricsAplicationLabels []string
kubectlParallelismLimit int64
cacheSrc func() (*appstatecache.Cache, error)
redisClient *redis.Client
repoServerPlaintext bool
repoServerStrictTLS bool
otlpAddress string
applicationNamespaces []string
persistResourceHealth bool
shardingAlgorithm string
workqueueRateLimit ratelimiter.AppControllerRateLimiterConfig
clientConfig clientcmd.ClientConfig
appResyncPeriod int64
appHardResyncPeriod int64
appResyncJitter int64
repoErrorGracePeriod int64
repoServerAddress string
repoServerTimeoutSeconds int
selfHealTimeoutSeconds int
statusProcessors int
operationProcessors int
glogLevel int
metricsPort int
metricsCacheExpiration time.Duration
metricsAplicationLabels []string
kubectlParallelismLimit int64
cacheSource func() (*appstatecache.Cache, error)
redisClient *redis.Client
repoServerPlaintext bool
repoServerStrictTLS bool
otlpAddress string
otlpInsecure bool
otlpHeaders map[string]string
otlpAttrs []string
applicationNamespaces []string
persistResourceHealth bool
shardingAlgorithm string
enableDynamicClusterDistribution bool
serverSideDiff bool
ignoreNormalizerOpts normalizers.IgnoreNormalizerOpts
)
var command = cobra.Command{
Use: cliName,
@@ -91,7 +101,7 @@ func NewCommand() *cobra.Command {
config, err := clientConfig.ClientConfig()
errors.CheckError(err)
errors.CheckError(v1alpha1.SetK8SConfigDefaults(config))
config.UserAgent = fmt.Sprintf("argocd-application-controller/%s (%s)", vers.Version, vers.Platform)
config.UserAgent = fmt.Sprintf("%s/%s (%s)", common.DefaultApplicationControllerName, vers.Version, vers.Platform)
kubeClient := kubernetes.NewForConfigOrDie(config)
appClient := appclientset.NewForConfigOrDie(config)
@@ -126,7 +136,7 @@ func NewCommand() *cobra.Command {
repoClientset := apiclient.NewRepoServerClientset(repoServerAddress, repoServerTimeoutSeconds, tlsConfig)
cache, err := cacheSrc()
cache, err := cacheSource()
errors.CheckError(err)
cache.Cache.SetClient(cacheutil.NewTwoLevelClient(cache.Cache.GetClient(), 10*time.Minute))
@@ -136,7 +146,8 @@ func NewCommand() *cobra.Command {
appController.InvalidateProjectsCache()
}))
kubectl := kubeutil.NewKubectl()
clusterFilter := getClusterFilter(kubeClient, settingsMgr, shardingAlgorithm)
clusterSharding, err := sharding.GetClusterSharding(kubeClient, settingsMgr, shardingAlgorithm, enableDynamicClusterDistribution)
errors.CheckError(err)
appController, err = controller.NewApplicationController(
namespace,
settingsMgr,
@@ -147,14 +158,20 @@ func NewCommand() *cobra.Command {
kubectl,
resyncDuration,
hardResyncDuration,
time.Duration(appResyncJitter)*time.Second,
time.Duration(selfHealTimeoutSeconds)*time.Second,
time.Duration(repoErrorGracePeriod)*time.Second,
metricsPort,
metricsCacheExpiration,
metricsAplicationLabels,
kubectlParallelismLimit,
persistResourceHealth,
clusterFilter,
clusterSharding,
applicationNamespaces,
&workqueueRateLimit,
serverSideDiff,
enableDynamicClusterDistribution,
ignoreNormalizerOpts,
)
errors.CheckError(err)
cacheutil.CollectMetrics(redisClient, appController.GetMetricsServer())
@@ -164,7 +181,7 @@ func NewCommand() *cobra.Command {
stats.RegisterHeapDumper("memprofile")
if otlpAddress != "" {
closeTracer, err := trace.InitTracer(ctx, "argocd-controller", otlpAddress)
closeTracer, err := trace.InitTracer(ctx, "argocd-controller", otlpAddress, otlpInsecure, otlpHeaders, otlpAttrs)
if err != nil {
log.Fatalf("failed to initialize tracing: %v", err)
}
@@ -181,6 +198,8 @@ func NewCommand() *cobra.Command {
clientConfig = cli.AddKubectlFlagsToCmd(&command)
command.Flags().Int64Var(&appResyncPeriod, "app-resync", int64(env.ParseDurationFromEnv("ARGOCD_RECONCILIATION_TIMEOUT", defaultAppResyncPeriod*time.Second, 0, math.MaxInt64).Seconds()), "Time period in seconds for application resync.")
command.Flags().Int64Var(&appHardResyncPeriod, "app-hard-resync", int64(env.ParseDurationFromEnv("ARGOCD_HARD_RECONCILIATION_TIMEOUT", defaultAppHardResyncPeriod*time.Second, 0, math.MaxInt64).Seconds()), "Time period in seconds for application hard resync.")
command.Flags().Int64Var(&appResyncJitter, "app-resync-jitter", int64(env.ParseDurationFromEnv("ARGOCD_RECONCILIATION_JITTER", 0*time.Second, 0, math.MaxInt64).Seconds()), "Maximum time period in seconds to add as a delay jitter for application resync.")
command.Flags().Int64Var(&repoErrorGracePeriod, "repo-error-grace-period-seconds", int64(env.ParseDurationFromEnv("ARGOCD_REPO_ERROR_GRACE_PERIOD_SECONDS", defaultAppResyncPeriod*time.Second, 0, math.MaxInt64).Seconds()), "Grace period in seconds for ignoring consecutive errors while communicating with repo server.")
command.Flags().StringVar(&repoServerAddress, "repo-server", env.StringFromEnv("ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER", common.DefaultRepoServerAddr), "Repo server address.")
command.Flags().IntVar(&repoServerTimeoutSeconds, "repo-server-timeout-seconds", env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS", 60, 0, math.MaxInt64), "Repo server RPC call timeout seconds.")
command.Flags().IntVar(&statusProcessors, "status-processors", env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_STATUS_PROCESSORS", 20, 0, math.MaxInt32), "Number of application status processors")
@@ -196,32 +215,28 @@ func NewCommand() *cobra.Command {
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")
command.Flags().StringSliceVar(&metricsAplicationLabels, "metrics-application-labels", []string{}, "List of Application labels that will be added to the argocd_application_labels metric")
command.Flags().StringVar(&otlpAddress, "otlp-address", env.StringFromEnv("ARGOCD_APPLICATION_CONTROLLER_OTLP_ADDRESS", ""), "OpenTelemetry collector address to send traces to")
command.Flags().BoolVar(&otlpInsecure, "otlp-insecure", env.ParseBoolFromEnv("ARGOCD_APPLICATION_CONTROLLER_OTLP_INSECURE", true), "OpenTelemetry collector insecure mode")
command.Flags().StringToStringVar(&otlpHeaders, "otlp-headers", env.ParseStringToStringFromEnv("ARGOCD_APPLICATION_CONTROLLER_OTLP_HEADERS", map[string]string{}, ","), "List of OpenTelemetry collector extra headers sent with traces, headers are comma-separated key-value pairs(e.g. key1=value1,key2=value2)")
command.Flags().StringSliceVar(&otlpAttrs, "otlp-attrs", env.StringsFromEnv("ARGOCD_APPLICATION_CONTROLLER_OTLP_ATTRS", []string{}, ","), "List of OpenTelemetry collector extra attrs when send traces, each attribute is separated by a colon(e.g. key:value)")
command.Flags().StringSliceVar(&applicationNamespaces, "application-namespaces", env.StringsFromEnv("ARGOCD_APPLICATION_NAMESPACES", []string{}, ","), "List of additional namespaces that applications are allowed to be reconciled from")
command.Flags().BoolVar(&persistResourceHealth, "persist-resource-health", env.ParseBoolFromEnv("ARGOCD_APPLICATION_CONTROLLER_PERSIST_RESOURCE_HEALTH", true), "Enables storing the managed resources health in the Application CRD")
command.Flags().StringVar(&shardingAlgorithm, "sharding-method", env.StringFromEnv(common.EnvControllerShardingAlgorithm, common.DefaultShardingAlgorithm), "Enables choice of sharding method. Supported sharding methods are : [legacy, round-robin] ")
cacheSrc = appstatecache.AddCacheFlagsToCmd(&command, func(client *redis.Client) {
redisClient = client
// global queue rate limit config
command.Flags().Int64Var(&workqueueRateLimit.BucketSize, "wq-bucket-size", env.ParseInt64FromEnv("WORKQUEUE_BUCKET_SIZE", 500, 1, math.MaxInt64), "Set Workqueue Rate Limiter Bucket Size, default 500")
command.Flags().Float64Var(&workqueueRateLimit.BucketQPS, "wq-bucket-qps", env.ParseFloat64FromEnv("WORKQUEUE_BUCKET_QPS", math.MaxFloat64, 1, math.MaxFloat64), "Set Workqueue Rate Limiter Bucket QPS, default set to MaxFloat64 which disables the bucket limiter")
// individual item rate limit config
// when WORKQUEUE_FAILURE_COOLDOWN is 0 per item rate limiting is disabled(default)
command.Flags().DurationVar(&workqueueRateLimit.FailureCoolDown, "wq-cooldown-ns", time.Duration(env.ParseInt64FromEnv("WORKQUEUE_FAILURE_COOLDOWN_NS", 0, 0, (24*time.Hour).Nanoseconds())), "Set Workqueue Per Item Rate Limiter Cooldown duration in ns, default 0(per item rate limiter disabled)")
command.Flags().DurationVar(&workqueueRateLimit.BaseDelay, "wq-basedelay-ns", time.Duration(env.ParseInt64FromEnv("WORKQUEUE_BASE_DELAY_NS", time.Millisecond.Nanoseconds(), time.Nanosecond.Nanoseconds(), (24*time.Hour).Nanoseconds())), "Set Workqueue Per Item Rate Limiter Base Delay duration in nanoseconds, default 1000000 (1ms)")
command.Flags().DurationVar(&workqueueRateLimit.MaxDelay, "wq-maxdelay-ns", time.Duration(env.ParseInt64FromEnv("WORKQUEUE_MAX_DELAY_NS", time.Second.Nanoseconds(), 1*time.Millisecond.Nanoseconds(), (24*time.Hour).Nanoseconds())), "Set Workqueue Per Item Rate Limiter Max Delay duration in nanoseconds, default 1000000000 (1s)")
command.Flags().Float64Var(&workqueueRateLimit.BackoffFactor, "wq-backoff-factor", env.ParseFloat64FromEnv("WORKQUEUE_BACKOFF_FACTOR", 1.5, 0, math.MaxFloat64), "Set Workqueue Per Item Rate Limiter Backoff Factor, default is 1.5")
command.Flags().BoolVar(&enableDynamicClusterDistribution, "dynamic-cluster-distribution-enabled", env.ParseBoolFromEnv(common.EnvEnableDynamicClusterDistribution, false), "Enables dynamic cluster distribution.")
command.Flags().BoolVar(&serverSideDiff, "server-side-diff-enabled", env.ParseBoolFromEnv(common.EnvServerSideDiff, false), "Feature flag to enable ServerSide diff. Default (\"false\")")
command.Flags().DurationVar(&ignoreNormalizerOpts.JQExecutionTimeout, "ignore-normalizer-jq-execution-timeout-seconds", env.ParseDurationFromEnv("ARGOCD_IGNORE_NORMALIZER_JQ_TIMEOUT", 0*time.Second, 0, math.MaxInt64), "Set ignore normalizer JQ execution timeout")
cacheSource = appstatecache.AddCacheFlagsToCmd(&command, cacheutil.Options{
OnClientCreated: func(client *redis.Client) {
redisClient = client
},
})
return &command
}
func getClusterFilter(kubeClient *kubernetes.Clientset, settingsMgr *settings.SettingsManager, shardingAlgorithm string) sharding.ClusterFilterFunction {
replicas := env.ParseNumFromEnv(common.EnvControllerReplicas, 0, 0, math.MaxInt32)
shard := env.ParseNumFromEnv(common.EnvControllerShard, -1, -math.MaxInt32, math.MaxInt32)
var clusterFilter func(cluster *v1alpha1.Cluster) bool
if replicas > 1 {
if shard < 0 {
var err error
shard, err = sharding.InferShard()
errors.CheckError(err)
}
log.Infof("Processing clusters from shard %d", shard)
db := db.NewDB(settingsMgr.GetNamespace(), settingsMgr, kubeClient)
log.Infof("Using filter function: %s", shardingAlgorithm)
distributionFunction := sharding.GetDistributionFunction(db, shardingAlgorithm)
clusterFilter = sharding.GetClusterFilter(distributionFunction, shard)
} else {
log.Info("Processing all cluster shards")
}
return clusterFilter
}

View File

@@ -40,10 +40,7 @@ import (
argosettings "github.com/argoproj/argo-cd/v2/util/settings"
)
// TODO: load this using Cobra.
func getSubmoduleEnabled() bool {
return env.ParseBoolFromEnv(common.EnvGitSubmoduleEnabled, true)
}
var gitSubmoduleEnabled = env.ParseBoolFromEnv(common.EnvGitSubmoduleEnabled, true)
func NewCommand() *cobra.Command {
var (
@@ -64,6 +61,11 @@ func NewCommand() *cobra.Command {
repoServerStrictTLS bool
repoServerTimeoutSeconds int
maxConcurrentReconciliations int
scmRootCAPath string
allowedScmProviders []string
globalPreservedAnnotations []string
globalPreservedLabels []string
enableScmProviders bool
)
scheme := runtime.NewScheme()
_ = clientgoscheme.AddToScheme(scheme)
@@ -96,7 +98,7 @@ func NewCommand() *cobra.Command {
policyObj, exists := utils.Policies[policy]
if !exists {
log.Info("Policy value can be: sync, create-only, create-update, create-delete, default value: sync")
log.Error("Policy value can be: sync, create-only, create-update, create-delete, default value: sync")
os.Exit(1)
}
@@ -106,6 +108,9 @@ func NewCommand() *cobra.Command {
// If the applicationset-namespaces contains only one namespace it corresponds to the current namespace
if len(applicationSetNamespaces) == 1 {
watchedNamespace = (applicationSetNamespaces)[0]
} else if enableScmProviders && len(allowedScmProviders) == 0 {
log.Error("When enabling applicationset in any namespace using applicationset-namespaces, you must either set --enable-scm-providers=false or specify --allowed-scm-providers")
os.Exit(1)
}
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
@@ -151,16 +156,16 @@ func NewCommand() *cobra.Command {
}
repoClientset := apiclient.NewRepoServerClientset(argocdRepoServer, repoServerTimeoutSeconds, tlsConfig)
argoCDService, err := services.NewArgoCDService(argoCDDB, getSubmoduleEnabled(), repoClientset, enableNewGitFileGlobbing)
argoCDService, err := services.NewArgoCDService(argoCDDB, gitSubmoduleEnabled, repoClientset, enableNewGitFileGlobbing)
errors.CheckError(err)
terminalGenerators := map[string]generators.Generator{
"List": generators.NewListGenerator(),
"Clusters": generators.NewClusterGenerator(mgr.GetClient(), ctx, k8sClient, namespace),
"Git": generators.NewGitGenerator(argoCDService),
"SCMProvider": generators.NewSCMProviderGenerator(mgr.GetClient(), scmAuth),
"SCMProvider": generators.NewSCMProviderGenerator(mgr.GetClient(), scmAuth, scmRootCAPath, allowedScmProviders, enableScmProviders),
"ClusterDecisionResource": generators.NewDuckTypeGenerator(ctx, dynamicClient, k8sClient, namespace),
"PullRequest": generators.NewPullRequestGenerator(mgr.GetClient(), scmAuth),
"PullRequest": generators.NewPullRequestGenerator(mgr.GetClient(), scmAuth, scmRootCAPath, allowedScmProviders, enableScmProviders),
"Plugin": generators.NewPluginGenerator(mgr.GetClient(), ctx, k8sClient, namespace),
}
@@ -198,19 +203,23 @@ func NewCommand() *cobra.Command {
}
if err = (&controllers.ApplicationSetReconciler{
Generators: topLevelGenerators,
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
Recorder: mgr.GetEventRecorderFor("applicationset-controller"),
Renderer: &utils.Render{},
Policy: policyObj,
EnablePolicyOverride: enablePolicyOverride,
ArgoAppClientset: appSetConfig,
KubeClientset: k8sClient,
ArgoDB: argoCDDB,
ArgoCDNamespace: namespace,
ApplicationSetNamespaces: applicationSetNamespaces,
EnableProgressiveSyncs: enableProgressiveSyncs,
Generators: topLevelGenerators,
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
Recorder: mgr.GetEventRecorderFor("applicationset-controller"),
Renderer: &utils.Render{},
Policy: policyObj,
EnablePolicyOverride: enablePolicyOverride,
ArgoAppClientset: appSetConfig,
KubeClientset: k8sClient,
ArgoDB: argoCDDB,
ArgoCDNamespace: namespace,
ApplicationSetNamespaces: applicationSetNamespaces,
EnableProgressiveSyncs: enableProgressiveSyncs,
SCMRootCAPath: scmRootCAPath,
GlobalPreservedAnnotations: globalPreservedAnnotations,
GlobalPreservedLabels: globalPreservedLabels,
Cache: mgr.GetCache(),
}).SetupWithManager(mgr, enableProgressiveSyncs, maxConcurrentReconciliations); err != nil {
log.Error(err, "unable to create controller", "controller", "ApplicationSet")
os.Exit(1)
@@ -239,6 +248,8 @@ func NewCommand() *cobra.Command {
command.Flags().BoolVar(&debugLog, "debug", env.ParseBoolFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_DEBUG", false), "Print debug logs. Takes precedence over loglevel")
command.Flags().StringVar(&cmdutil.LogFormat, "logformat", env.StringFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_LOGFORMAT", "text"), "Set the logging format. One of: text|json")
command.Flags().StringVar(&cmdutil.LogLevel, "loglevel", env.StringFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_LOGLEVEL", "info"), "Set the logging level. One of: debug|info|warn|error")
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(&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.")
@@ -246,6 +257,9 @@ func NewCommand() *cobra.Command {
command.Flags().BoolVar(&repoServerStrictTLS, "repo-server-strict-tls", env.ParseBoolFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_STRICT_TLS", false), "Whether to use strict validation of the TLS cert presented by the repo server")
command.Flags().IntVar(&repoServerTimeoutSeconds, "repo-server-timeout-seconds", env.ParseNumFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS", 60, 0, math.MaxInt64), "Repo server RPC call timeout seconds.")
command.Flags().IntVar(&maxConcurrentReconciliations, "concurrent-reconciliations", env.ParseNumFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_CONCURRENT_RECONCILIATIONS", 10, 1, 100), "Max concurrent reconciliations limit for the controller")
command.Flags().StringVar(&scmRootCAPath, "scm-root-ca-path", env.StringFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_SCM_ROOT_CA_PATH", ""), "Provide Root CA Path for self-signed TLS Certificates")
command.Flags().StringSliceVar(&globalPreservedAnnotations, "preserved-annotations", env.StringsFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_GLOBAL_PRESERVED_ANNOTATIONS", []string{}, ","), "Sets global preserved field values for annotations")
command.Flags().StringSliceVar(&globalPreservedLabels, "preserved-labels", env.StringsFromEnv("ARGOCD_APPLICATIONSET_CONTROLLER_GLOBAL_PRESERVED_LABELS", []string{}, ","), "Sets global preserved field values for labels")
return &command
}

View File

@@ -26,6 +26,9 @@ func NewCommand() *cobra.Command {
var (
configFilePath string
otlpAddress string
otlpInsecure bool
otlpHeaders map[string]string
otlpAttrs []string
)
var command = cobra.Command{
Use: cliName,
@@ -55,7 +58,7 @@ func NewCommand() *cobra.Command {
if otlpAddress != "" {
var closer func()
var err error
closer, err = traceutil.InitTracer(ctx, "argocd-cmp-server", otlpAddress)
closer, err = traceutil.InitTracer(ctx, "argocd-cmp-server", otlpAddress, otlpInsecure, otlpHeaders, otlpAttrs)
if err != nil {
log.Fatalf("failed to initialize tracing: %v", err)
}
@@ -82,5 +85,8 @@ func NewCommand() *cobra.Command {
command.Flags().StringVar(&cmdutil.LogLevel, "loglevel", "info", "Set the logging level. One of: debug|info|warn|error")
command.Flags().StringVar(&configFilePath, "config-dir-path", common.DefaultPluginConfigFilePath, "Config management plugin configuration file location, Default is '/home/argocd/cmp-server/config/'")
command.Flags().StringVar(&otlpAddress, "otlp-address", env.StringFromEnv("ARGOCD_CMP_SERVER_OTLP_ADDRESS", ""), "OpenTelemetry collector address to send traces to")
command.Flags().BoolVar(&otlpInsecure, "otlp-insecure", env.ParseBoolFromEnv("ARGOCD_CMP_SERVER_OTLP_INSECURE", true), "OpenTelemetry collector insecure mode")
command.Flags().StringToStringVar(&otlpHeaders, "otlp-headers", env.ParseStringToStringFromEnv("ARGOCD_CMP_SERVER_OTLP_HEADERS", map[string]string{}, ","), "List of OpenTelemetry collector extra headers sent with traces, headers are comma-separated key-value pairs(e.g. key1=value1,key2=value2)")
command.Flags().StringSliceVar(&otlpAttrs, "otlp-attrs", env.StringsFromEnv("ARGOCD_CMP_SERVER_OTLP_ATTRS", []string{}, ","), "List of OpenTelemetry collector extra attrs when send traces, each attribute is separated by a colon(e.g. key:value)")
return &command
}

View File

@@ -20,6 +20,7 @@ func NewCommand() *cobra.Command {
command.AddCommand(newAWSCommand())
command.AddCommand(newGCPCommand())
command.AddCommand(newAzureCommand())
return command
}

View File

@@ -37,13 +37,14 @@ func newAWSCommand() *cobra.Command {
var (
clusterName string
roleARN string
profile string
)
var command = &cobra.Command{
Use: "aws",
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()
presignedURLString, err := getSignedRequestWithRetry(ctx, time.Minute, 5*time.Second, clusterName, roleARN, getSignedRequest)
presignedURLString, err := getSignedRequestWithRetry(ctx, time.Minute, 5*time.Second, clusterName, roleARN, profile, getSignedRequest)
errors.CheckError(err)
token := v1Prefix + base64.RawURLEncoding.EncodeToString([]byte(presignedURLString))
// Set token expiration to 1 minute before the presigned URL expires for some cushion
@@ -53,16 +54,17 @@ func newAWSCommand() *cobra.Command {
}
command.Flags().StringVar(&clusterName, "cluster-name", "", "AWS Cluster name")
command.Flags().StringVar(&roleARN, "role-arn", "", "AWS Role ARN")
command.Flags().StringVar(&profile, "profile", "", "AWS Profile")
return command
}
type getSignedRequestFunc func(clusterName, roleARN string) (string, error)
type getSignedRequestFunc func(clusterName, roleARN string, profile string) (string, error)
func getSignedRequestWithRetry(ctx context.Context, timeout, interval time.Duration, clusterName, roleARN string, fn getSignedRequestFunc) (string, error) {
func getSignedRequestWithRetry(ctx context.Context, timeout, interval time.Duration, clusterName, roleARN string, profile string, fn getSignedRequestFunc) (string, error) {
ctx, cancel := context.WithTimeout(ctx, timeout)
defer cancel()
for {
signed, err := fn(clusterName, roleARN)
signed, err := fn(clusterName, roleARN, profile)
if err == nil {
return signed, nil
}
@@ -74,8 +76,10 @@ func getSignedRequestWithRetry(ctx context.Context, timeout, interval time.Durat
}
}
func getSignedRequest(clusterName, roleARN string) (string, error) {
sess, err := session.NewSession()
func getSignedRequest(clusterName, roleARN string, profile string) (string, error) {
sess, err := session.NewSessionWithOptions(session.Options{
Profile: profile,
})
if err != nil {
return "", fmt.Errorf("error creating new AWS session: %s", err)
}

View File

@@ -22,7 +22,7 @@ func TestGetSignedRequestWithRetry(t *testing.T) {
}
// when
signed, err := getSignedRequestWithRetry(ctx, time.Second, time.Millisecond, "cluster-name", "", mock.getSignedRequestMock)
signed, err := getSignedRequestWithRetry(ctx, time.Second, time.Millisecond, "cluster-name", "", "", mock.getSignedRequestMock)
// then
assert.NoError(t, err)
@@ -41,7 +41,7 @@ func TestGetSignedRequestWithRetry(t *testing.T) {
}
// when
signed, err := getSignedRequestWithRetry(ctx, time.Second, time.Millisecond, "cluster-name", "", mock.getSignedRequestMock)
signed, err := getSignedRequestWithRetry(ctx, time.Second, time.Millisecond, "cluster-name", "", "", mock.getSignedRequestMock)
// then
assert.NoError(t, err)
@@ -57,7 +57,7 @@ func TestGetSignedRequestWithRetry(t *testing.T) {
}
// when
signed, err := getSignedRequestWithRetry(ctx, time.Second, time.Millisecond, "cluster-name", "", mock.getSignedRequestMock)
signed, err := getSignedRequestWithRetry(ctx, time.Second, time.Millisecond, "cluster-name", "", "", mock.getSignedRequestMock)
// then
assert.Error(t, err)
@@ -70,7 +70,7 @@ type signedRequestMock struct {
returnFunc func(m *signedRequestMock) (string, error)
}
func (m *signedRequestMock) getSignedRequestMock(clusterName, roleARN string) (string, error) {
func (m *signedRequestMock) getSignedRequestMock(clusterName, roleARN string, profile string) (string, error) {
m.getSignedRequestCalls++
return m.returnFunc(m)
}

View File

@@ -0,0 +1,43 @@
package commands
import (
"os"
"github.com/Azure/kubelogin/pkg/token"
"github.com/spf13/cobra"
"github.com/argoproj/argo-cd/v2/util/errors"
)
var (
envServerApplicationID = "AAD_SERVER_APPLICATION_ID"
envEnvironmentName = "AAD_ENVIRONMENT_NAME"
)
const (
DEFAULT_AAD_SERVER_APPLICATION_ID = "6dae42f8-4368-4678-94ff-3960e28e3630"
)
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
var command = &cobra.Command{
Use: "azure",
Run: func(c *cobra.Command, args []string) {
o.UpdateFromEnv()
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)
errors.CheckError(err)
err = plugin.Do()
errors.CheckError(err)
},
}
return command
}

View File

@@ -43,18 +43,20 @@ func addK8SFlagsToCmd(cmd *cobra.Command) clientcmd.ClientConfig {
func NewCommand() *cobra.Command {
var (
clientConfig clientcmd.ClientConfig
processorsCount int
namespace string
appLabelSelector string
logLevel string
logFormat string
metricsPort int
argocdRepoServer string
argocdRepoServerPlaintext bool
argocdRepoServerStrictTLS bool
configMapName string
secretName string
clientConfig clientcmd.ClientConfig
processorsCount int
namespace string
appLabelSelector string
logLevel string
logFormat string
metricsPort int
argocdRepoServer string
argocdRepoServerPlaintext bool
argocdRepoServerStrictTLS bool
configMapName string
secretName string
applicationNamespaces []string
selfServiceNotificationEnabled bool
)
var command = cobra.Command{
Use: "controller",
@@ -74,26 +76,26 @@ func NewCommand() *cobra.Command {
restConfig, err := clientConfig.ClientConfig()
if err != nil {
return err
return fmt.Errorf("failed to create REST client config: %w", err)
}
restConfig.UserAgent = fmt.Sprintf("argocd-notifications-controller/%s (%s)", vers.Version, vers.Platform)
dynamicClient, err := dynamic.NewForConfig(restConfig)
if err != nil {
return err
return fmt.Errorf("failed to create dynamic client: %w", err)
}
k8sClient, err := kubernetes.NewForConfig(restConfig)
if err != nil {
return err
return fmt.Errorf("failed to create Kubernetes client: %w", err)
}
if namespace == "" {
namespace, _, err = clientConfig.Namespace()
if err != nil {
return err
return fmt.Errorf("failed to determine controller's host namespace: %w", err)
}
}
level, err := log.ParseLevel(logLevel)
if err != nil {
return err
return fmt.Errorf("failed to parse log level: %w", err)
}
log.SetLevel(level)
@@ -105,7 +107,7 @@ func NewCommand() *cobra.Command {
log.SetFormatter(&log.TextFormatter{ForceColors: true})
}
default:
return fmt.Errorf("Unknown log format '%s'", logFormat)
return fmt.Errorf("unknown log format '%s'", logFormat)
}
tlsConfig := apiclient.TLSConfiguration{
@@ -118,14 +120,14 @@ func NewCommand() *cobra.Command {
fmt.Sprintf("%s/reposerver/tls/ca.crt", env.StringFromEnv(common.EnvAppConfigPath, common.DefaultAppConfigPath)),
)
if err != nil {
return err
return fmt.Errorf("failed to load repo-server certificate pool: %w", err)
}
tlsConfig.Certificates = pool
}
repoClientset := apiclient.NewRepoServerClientset(argocdRepoServer, 5, tlsConfig)
argocdService, err := service.NewArgoCDService(k8sClient, namespace, repoClientset)
if err != nil {
return err
return fmt.Errorf("failed to initialize Argo CD service: %w", err)
}
defer argocdService.Close()
@@ -138,10 +140,10 @@ func NewCommand() *cobra.Command {
log.Infof("serving metrics on port %d", metricsPort)
log.Infof("loading configuration %d", metricsPort)
ctrl := notificationscontroller.NewController(k8sClient, dynamicClient, argocdService, namespace, appLabelSelector, registry, secretName, configMapName)
ctrl := notificationscontroller.NewController(k8sClient, dynamicClient, argocdService, namespace, applicationNamespaces, appLabelSelector, registry, secretName, configMapName, selfServiceNotificationEnabled)
err = ctrl.Init(ctx)
if err != nil {
return err
return fmt.Errorf("failed to initialize controller: %w", err)
}
go ctrl.Run(ctx, processorsCount)
@@ -161,5 +163,7 @@ func NewCommand() *cobra.Command {
command.Flags().BoolVar(&argocdRepoServerStrictTLS, "argocd-repo-server-strict-tls", false, "Perform strict validation of TLS certificates when connecting to repo server")
command.Flags().StringVar(&configMapName, "config-map-name", "argocd-notifications-cm", "Set notifications ConfigMap name")
command.Flags().StringVar(&secretName, "secret-name", "argocd-notifications-secret", "Set notifications Secret name")
command.Flags().StringSliceVar(&applicationNamespaces, "application-namespaces", env.StringsFromEnv("ARGOCD_APPLICATION_NAMESPACES", []string{}, ","), "List of additional namespaces that this controller should send notifications for")
command.Flags().BoolVar(&selfServiceNotificationEnabled, "self-service-notification-enabled", env.ParseBoolFromEnv("ARGOCD_NOTIFICATION_CONTROLLER_SELF_SERVICE_NOTIFICATION_ENABLED", false), "Allows the Argo CD notification controller to pull notification config from the namespace that the resource is in. This is useful for self-service notification.")
return &command
}

View File

@@ -5,7 +5,6 @@ import (
"math"
"net"
"net/http"
"os"
"time"
"github.com/argoproj/pkg/stats"
@@ -36,33 +35,16 @@ import (
const (
// CLIName is the name of the CLI
cliName = "argocd-repo-server"
gnuPGSourcePath = "/app/config/gpg/source"
defaultPauseGenerationAfterFailedGenerationAttempts = 3
defaultPauseGenerationOnFailureForMinutes = 60
defaultPauseGenerationOnFailureForRequests = 0
cliName = "argocd-repo-server"
)
func getGnuPGSourcePath() string {
return env.StringFromEnv(common.EnvGPGDataPath, gnuPGSourcePath)
}
func getPauseGenerationAfterFailedGenerationAttempts() int {
return env.ParseNumFromEnv(common.EnvPauseGenerationAfterFailedAttempts, defaultPauseGenerationAfterFailedGenerationAttempts, 0, math.MaxInt32)
}
func getPauseGenerationOnFailureForMinutes() int {
return env.ParseNumFromEnv(common.EnvPauseGenerationMinutes, defaultPauseGenerationOnFailureForMinutes, 0, math.MaxInt32)
}
func getPauseGenerationOnFailureForRequests() int {
return env.ParseNumFromEnv(common.EnvPauseGenerationRequests, defaultPauseGenerationOnFailureForRequests, 0, math.MaxInt32)
}
func getSubmoduleEnabled() bool {
return env.ParseBoolFromEnv(common.EnvGitSubmoduleEnabled, true)
}
var (
gnuPGSourcePath = env.StringFromEnv(common.EnvGPGDataPath, "/app/config/gpg/source")
pauseGenerationAfterFailedGenerationAttempts = env.ParseNumFromEnv(common.EnvPauseGenerationAfterFailedAttempts, 3, 0, math.MaxInt32)
pauseGenerationOnFailureForMinutes = env.ParseNumFromEnv(common.EnvPauseGenerationMinutes, 60, 0, math.MaxInt32)
pauseGenerationOnFailureForRequests = env.ParseNumFromEnv(common.EnvPauseGenerationRequests, 0, 0, math.MaxInt32)
gitSubmoduleEnabled = env.ParseBoolFromEnv(common.EnvGitSubmoduleEnabled, true)
)
func NewCommand() *cobra.Command {
var (
@@ -72,6 +54,9 @@ func NewCommand() *cobra.Command {
metricsPort int
metricsHost string
otlpAddress string
otlpInsecure bool
otlpHeaders map[string]string
otlpAttrs []string
cacheSrc func() (*reposervercache.Cache, error)
tlsConfigCustomizer tls.ConfigCustomizer
tlsConfigCustomizerSrc func() (tls.ConfigCustomizer, error)
@@ -82,6 +67,9 @@ func NewCommand() *cobra.Command {
allowOutOfBoundsSymlinks bool
streamedManifestMaxTarSize string
streamedManifestMaxExtractedSize string
helmManifestMaxExtractedSize string
helmRegistryMaxIndexSize string
disableManifestMaxExtractedSize bool
)
var command = cobra.Command{
Use: cliName,
@@ -120,27 +108,35 @@ func NewCommand() *cobra.Command {
streamedManifestMaxExtractedSizeQuantity, err := resource.ParseQuantity(streamedManifestMaxExtractedSize)
errors.CheckError(err)
helmManifestMaxExtractedSizeQuantity, err := resource.ParseQuantity(helmManifestMaxExtractedSize)
errors.CheckError(err)
helmRegistryMaxIndexSizeQuantity, err := resource.ParseQuantity(helmRegistryMaxIndexSize)
errors.CheckError(err)
askPassServer := askpass.NewServer()
metricsServer := metrics.NewMetricsServer()
cacheutil.CollectMetrics(redisClient, metricsServer)
server, err := reposerver.NewServer(metricsServer, cache, tlsConfigCustomizer, repository.RepoServerInitConstants{
ParallelismLimit: parallelismLimit,
PauseGenerationAfterFailedGenerationAttempts: getPauseGenerationAfterFailedGenerationAttempts(),
PauseGenerationOnFailureForMinutes: getPauseGenerationOnFailureForMinutes(),
PauseGenerationOnFailureForRequests: getPauseGenerationOnFailureForRequests(),
SubmoduleEnabled: getSubmoduleEnabled(),
PauseGenerationAfterFailedGenerationAttempts: pauseGenerationAfterFailedGenerationAttempts,
PauseGenerationOnFailureForMinutes: pauseGenerationOnFailureForMinutes,
PauseGenerationOnFailureForRequests: pauseGenerationOnFailureForRequests,
SubmoduleEnabled: gitSubmoduleEnabled,
MaxCombinedDirectoryManifestsSize: maxCombinedDirectoryManifestsQuantity,
CMPTarExcludedGlobs: cmpTarExcludedGlobs,
AllowOutOfBoundsSymlinks: allowOutOfBoundsSymlinks,
StreamedManifestMaxExtractedSize: streamedManifestMaxExtractedSizeQuantity.ToDec().Value(),
StreamedManifestMaxTarSize: streamedManifestMaxTarSizeQuantity.ToDec().Value(),
HelmManifestMaxExtractedSize: helmManifestMaxExtractedSizeQuantity.ToDec().Value(),
HelmRegistryMaxIndexSize: helmRegistryMaxIndexSizeQuantity.ToDec().Value(),
}, askPassServer)
errors.CheckError(err)
if otlpAddress != "" {
var closer func()
var err error
closer, err = traceutil.InitTracer(ctx, "argocd-repo-server", otlpAddress)
closer, err = traceutil.InitTracer(ctx, "argocd-repo-server", otlpAddress, otlpInsecure, otlpHeaders, otlpAttrs)
if err != nil {
log.Fatalf("failed to initialize tracing: %v", err)
}
@@ -182,12 +178,12 @@ func NewCommand() *cobra.Command {
err = gpg.InitializeGnuPG()
errors.CheckError(err)
log.Infof("Populating GnuPG keyring with keys from %s", getGnuPGSourcePath())
added, removed, err := gpg.SyncKeyRingFromDirectory(getGnuPGSourcePath())
log.Infof("Populating GnuPG keyring with keys from %s", gnuPGSourcePath)
added, removed, err := gpg.SyncKeyRingFromDirectory(gnuPGSourcePath)
errors.CheckError(err)
log.Infof("Loaded %d (and removed %d) keys from keyring", len(added), len(removed))
go func() { errors.CheckError(reposerver.StartGPGWatcher(getGnuPGSourcePath())) }()
go func() { errors.CheckError(reposerver.StartGPGWatcher(gnuPGSourcePath)) }()
}
log.Infof("argocd-repo-server is listening on %s", listener.Addr())
@@ -199,9 +195,6 @@ func NewCommand() *cobra.Command {
return nil
},
}
if cmdutil.LogFormat == "" {
cmdutil.LogFormat = os.Getenv("ARGOCD_REPO_SERVER_LOGLEVEL")
}
command.Flags().StringVar(&cmdutil.LogFormat, "logformat", env.StringFromEnv("ARGOCD_REPO_SERVER_LOGFORMAT", "text"), "Set the logging format. One of: text|json")
command.Flags().StringVar(&cmdutil.LogLevel, "loglevel", env.StringFromEnv("ARGOCD_REPO_SERVER_LOGLEVEL", "info"), "Set the logging level. One of: debug|info|warn|error")
command.Flags().Int64Var(&parallelismLimit, "parallelismlimit", int64(env.ParseNumFromEnv("ARGOCD_REPO_SERVER_PARALLELISM_LIMIT", 0, 0, math.MaxInt32)), "Limit on number of concurrent manifests generate requests. Any value less the 1 means no limit.")
@@ -210,15 +203,23 @@ func NewCommand() *cobra.Command {
command.Flags().StringVar(&metricsHost, "metrics-address", env.StringFromEnv("ARGOCD_REPO_SERVER_METRICS_LISTEN_ADDRESS", common.DefaultAddressRepoServerMetrics), "Listen on given address for metrics")
command.Flags().IntVar(&metricsPort, "metrics-port", common.DefaultPortRepoServerMetrics, "Start metrics server on given port")
command.Flags().StringVar(&otlpAddress, "otlp-address", env.StringFromEnv("ARGOCD_REPO_SERVER_OTLP_ADDRESS", ""), "OpenTelemetry collector address to send traces to")
command.Flags().BoolVar(&otlpInsecure, "otlp-insecure", env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_OTLP_INSECURE", true), "OpenTelemetry collector insecure mode")
command.Flags().StringToStringVar(&otlpHeaders, "otlp-headers", env.ParseStringToStringFromEnv("ARGOCD_REPO_OTLP_HEADERS", map[string]string{}, ","), "List of OpenTelemetry collector extra headers sent with traces, headers are comma-separated key-value pairs(e.g. key1=value1,key2=value2)")
command.Flags().StringSliceVar(&otlpAttrs, "otlp-attrs", env.StringsFromEnv("ARGOCD_REPO_SERVER_OTLP_ATTRS", []string{}, ","), "List of OpenTelemetry collector extra attrs when send traces, each attribute is separated by a colon(e.g. key:value)")
command.Flags().BoolVar(&disableTLS, "disable-tls", env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_DISABLE_TLS", false), "Disable TLS on the gRPC endpoint")
command.Flags().StringVar(&maxCombinedDirectoryManifestsSize, "max-combined-directory-manifests-size", env.StringFromEnv("ARGOCD_REPO_SERVER_MAX_COMBINED_DIRECTORY_MANIFESTS_SIZE", "10M"), "Max combined size of manifest files in a directory-type Application")
command.Flags().StringArrayVar(&cmpTarExcludedGlobs, "plugin-tar-exclude", env.StringsFromEnv("ARGOCD_REPO_SERVER_PLUGIN_TAR_EXCLUSIONS", []string{}, ";"), "Globs to filter when sending tarballs to plugins.")
command.Flags().BoolVar(&allowOutOfBoundsSymlinks, "allow-oob-symlinks", env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_ALLOW_OUT_OF_BOUNDS_SYMLINKS", false), "Allow out-of-bounds symlinks in repositories (not recommended)")
command.Flags().StringVar(&streamedManifestMaxTarSize, "streamed-manifest-max-tar-size", env.StringFromEnv("ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_TAR_SIZE", "100M"), "Maximum size of streamed manifest archives")
command.Flags().StringVar(&streamedManifestMaxExtractedSize, "streamed-manifest-max-extracted-size", env.StringFromEnv("ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_EXTRACTED_SIZE", "1G"), "Maximum size of streamed manifest archives when extracted")
command.Flags().StringVar(&helmManifestMaxExtractedSize, "helm-manifest-max-extracted-size", env.StringFromEnv("ARGOCD_REPO_SERVER_HELM_MANIFEST_MAX_EXTRACTED_SIZE", "1G"), "Maximum size of helm manifest archives when extracted")
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")
tlsConfigCustomizerSrc = tls.AddTLSFlagsToCmd(&command)
cacheSrc = reposervercache.AddCacheFlagsToCmd(&command, func(client *redis.Client) {
redisClient = client
cacheSrc = reposervercache.AddCacheFlagsToCmd(&command, cacheutil.Options{
OnClientCreated: func(client *redis.Client) {
redisClient = client
},
})
return &command
}

View File

@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"math"
"strings"
"time"
"github.com/argoproj/pkg/stats"
@@ -18,13 +19,16 @@ import (
"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/reposerver/apiclient"
reposervercache "github.com/argoproj/argo-cd/v2/reposerver/cache"
"github.com/argoproj/argo-cd/v2/server"
servercache "github.com/argoproj/argo-cd/v2/server/cache"
cacheutil "github.com/argoproj/argo-cd/v2/util/cache"
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/argoproj/argo-cd/v2/util/dex"
"github.com/argoproj/argo-cd/v2/util/env"
"github.com/argoproj/argo-cd/v2/util/errors"
"github.com/argoproj/argo-cd/v2/util/kube"
"github.com/argoproj/argo-cd/v2/util/templates"
"github.com/argoproj/argo-cd/v2/util/tls"
traceutil "github.com/argoproj/argo-cd/v2/util/trace"
)
@@ -35,15 +39,10 @@ const (
)
var (
failureRetryCount = 0
failureRetryPeriodMilliSeconds = 100
failureRetryCount = env.ParseNumFromEnv(failureRetryCountEnv, 0, 0, 10)
failureRetryPeriodMilliSeconds = env.ParseNumFromEnv(failureRetryPeriodMilliSecondsEnv, 100, 0, 1000)
)
func init() {
failureRetryCount = env.ParseNumFromEnv(failureRetryCountEnv, failureRetryCount, 0, 10)
failureRetryPeriodMilliSeconds = env.ParseNumFromEnv(failureRetryPeriodMilliSecondsEnv, failureRetryPeriodMilliSeconds, 0, 1000)
}
// NewCommand returns a new instance of an argocd command
func NewCommand() *cobra.Command {
var (
@@ -54,6 +53,9 @@ func NewCommand() *cobra.Command {
metricsHost string
metricsPort int
otlpAddress string
otlpInsecure bool
otlpHeaders map[string]string
otlpAttrs []string
glogLevel int
clientConfig clientcmd.ClientConfig
repoServerTimeoutSeconds int
@@ -62,9 +64,11 @@ func NewCommand() *cobra.Command {
repoServerAddress string
dexServerAddress string
disableAuth bool
contentTypes string
enableGZip bool
tlsConfigCustomizerSrc func() (tls.ConfigCustomizer, error)
cacheSrc func() (*servercache.Cache, error)
repoServerCacheSrc func() (*reposervercache.Cache, error)
frameOptions string
contentSecurityPolicy string
repoServerPlaintext bool
@@ -106,6 +110,8 @@ func NewCommand() *cobra.Command {
errors.CheckError(err)
cache, err := cacheSrc()
errors.CheckError(err)
repoServerCache, err := repoServerCacheSrc()
errors.CheckError(err)
kubeclientset := kubernetes.NewForConfigOrDie(config)
@@ -166,6 +172,11 @@ func NewCommand() *cobra.Command {
baseHRef = rootPath
}
var contentTypesList []string
if contentTypes != "" {
contentTypesList = strings.Split(contentTypes, ";")
}
argoCDOpts := server.ArgoCDServerOpts{
Insecure: insecure,
ListenPort: listenPort,
@@ -181,9 +192,11 @@ func NewCommand() *cobra.Command {
DexServerAddr: dexServerAddress,
DexTLSConfig: dexTlsConfig,
DisableAuth: disableAuth,
ContentTypes: contentTypesList,
EnableGZip: enableGZip,
TLSConfigCustomizer: tlsConfigCustomizer,
Cache: cache,
RepoServerCache: repoServerCache,
XFrameOptions: frameOptions,
ContentSecurityPolicy: contentSecurityPolicy,
RedisClient: redisClient,
@@ -203,7 +216,7 @@ func NewCommand() *cobra.Command {
var closer func()
ctx, cancel := context.WithCancel(ctx)
if otlpAddress != "" {
closer, err = traceutil.InitTracer(ctx, "argocd-server", otlpAddress)
closer, err = traceutil.InitTracer(ctx, "argocd-server", otlpAddress, otlpInsecure, otlpHeaders, otlpAttrs)
if err != nil {
log.Fatalf("failed to initialize tracing: %v", err)
}
@@ -215,6 +228,13 @@ func NewCommand() *cobra.Command {
}
}
},
Example: templates.Examples(`
# Start the Argo CD API server with default settings
$ argocd-server
# Start the Argo CD API server on a custom port and enable tracing
$ argocd-server --port 8888 --otlp-address localhost:4317
`),
}
clientConfig = cli.AddKubectlFlagsToCmd(command)
@@ -228,6 +248,7 @@ func NewCommand() *cobra.Command {
command.Flags().StringVar(&repoServerAddress, "repo-server", env.StringFromEnv("ARGOCD_SERVER_REPO_SERVER", common.DefaultRepoServerAddr), "Repo server address")
command.Flags().StringVar(&dexServerAddress, "dex-server", env.StringFromEnv("ARGOCD_SERVER_DEX_SERVER", common.DefaultDexServerAddr), "Dex server address")
command.Flags().BoolVar(&disableAuth, "disable-auth", env.ParseBoolFromEnv("ARGOCD_SERVER_DISABLE_AUTH", false), "Disable client authentication")
command.Flags().StringVar(&contentTypes, "api-content-types", env.StringFromEnv("ARGOCD_API_CONTENT_TYPES", "application/json", env.StringFromEnvOpts{AllowEmpty: true}), "Semicolon separated list of allowed content types for non GET api requests. Any content type is allowed if empty.")
command.Flags().BoolVar(&enableGZip, "enable-gzip", env.ParseBoolFromEnv("ARGOCD_SERVER_ENABLE_GZIP", true), "Enable GZIP compression")
command.AddCommand(cli.NewVersionCmd(cliName))
command.Flags().StringVar(&listenHost, "address", env.StringFromEnv("ARGOCD_SERVER_LISTEN_ADDRESS", common.DefaultAddressAPIServer), "Listen on given address")
@@ -235,6 +256,9 @@ func NewCommand() *cobra.Command {
command.Flags().StringVar(&metricsHost, env.StringFromEnv("ARGOCD_SERVER_METRICS_LISTEN_ADDRESS", "metrics-address"), common.DefaultAddressAPIServerMetrics, "Listen for metrics on given address")
command.Flags().IntVar(&metricsPort, "metrics-port", common.DefaultPortArgoCDAPIServerMetrics, "Start metrics on given port")
command.Flags().StringVar(&otlpAddress, "otlp-address", env.StringFromEnv("ARGOCD_SERVER_OTLP_ADDRESS", ""), "OpenTelemetry collector address to send traces to")
command.Flags().BoolVar(&otlpInsecure, "otlp-insecure", env.ParseBoolFromEnv("ARGOCD_SERVER_OTLP_INSECURE", true), "OpenTelemetry collector insecure mode")
command.Flags().StringToStringVar(&otlpHeaders, "otlp-headers", env.ParseStringToStringFromEnv("ARGOCD_SERVER_OTLP_HEADERS", map[string]string{}, ","), "List of OpenTelemetry collector extra headers sent with traces, headers are comma-separated key-value pairs(e.g. key1=value1,key2=value2)")
command.Flags().StringSliceVar(&otlpAttrs, "otlp-attrs", env.StringsFromEnv("ARGOCD_SERVER_OTLP_ATTRS", []string{}, ","), "List of OpenTelemetry collector extra attrs when send traces, each attribute is separated by a colon(e.g. key:value)")
command.Flags().IntVar(&repoServerTimeoutSeconds, "repo-server-timeout-seconds", env.ParseNumFromEnv("ARGOCD_SERVER_REPO_SERVER_TIMEOUT_SECONDS", 60, 0, math.MaxInt64), "Repo server RPC call timeout seconds.")
command.Flags().StringVar(&frameOptions, "x-frame-options", env.StringFromEnv("ARGOCD_SERVER_X_FRAME_OPTIONS", "sameorigin"), "Set X-Frame-Options header in HTTP responses to `value`. To disable, set to \"\".")
command.Flags().StringVar(&contentSecurityPolicy, "content-security-policy", env.StringFromEnv("ARGOCD_SERVER_CONTENT_SECURITY_POLICY", "frame-ancestors 'self';"), "Set Content-Security-Policy header in HTTP responses to `value`. To disable, set to \"\".")
@@ -245,8 +269,11 @@ func NewCommand() *cobra.Command {
command.Flags().StringSliceVar(&applicationNamespaces, "application-namespaces", env.StringsFromEnv("ARGOCD_APPLICATION_NAMESPACES", []string{}, ","), "List of additional namespaces where application resources can be managed in")
command.Flags().BoolVar(&enableProxyExtension, "enable-proxy-extension", env.ParseBoolFromEnv("ARGOCD_SERVER_ENABLE_PROXY_EXTENSION", false), "Enable Proxy Extension feature")
tlsConfigCustomizerSrc = tls.AddTLSFlagsToCmd(command)
cacheSrc = servercache.AddCacheFlagsToCmd(command, func(client *redis.Client) {
redisClient = client
cacheSrc = servercache.AddCacheFlagsToCmd(command, cacheutil.Options{
OnClientCreated: func(client *redis.Client) {
redisClient = client
},
})
repoServerCacheSrc = reposervercache.AddCacheFlagsToCmd(command, cacheutil.Options{FlagPrefix: "repo-server-"})
return command
}

View File

@@ -26,12 +26,26 @@ import (
"github.com/argoproj/argo-cd/v2/util/io"
"github.com/argoproj/argo-cd/v2/util/localconfig"
sessionutil "github.com/argoproj/argo-cd/v2/util/session"
"github.com/argoproj/argo-cd/v2/util/templates"
)
func NewAccountCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var command = &cobra.Command{
Use: "account",
Short: "Manage account settings",
Example: templates.Examples(`
# List accounts
argocd account list
# Update the current user's password
argocd account update-password
# Can I sync any app?
argocd account can-i sync applications '*'
# Get User information
argocd account get-user-info
`),
Run: func(c *cobra.Command, args []string) {
c.HelpFunc()(c, args)
os.Exit(1)
@@ -130,9 +144,9 @@ has appropriate RBAC permissions to change other accounts.
},
}
command.Flags().StringVar(&currentPassword, "current-password", "", "password of the currently logged on user")
command.Flags().StringVar(&newPassword, "new-password", "", "new password you want to update to")
command.Flags().StringVar(&account, "account", "", "an account name that should be updated. Defaults to current user account")
command.Flags().StringVar(&currentPassword, "current-password", "", "Password of the currently logged on user")
command.Flags().StringVar(&newPassword, "new-password", "", "New password you want to update to")
command.Flags().StringVar(&account, "account", "", "An account name that should be updated. Defaults to current user account")
return command
}
@@ -143,6 +157,13 @@ func NewAccountGetUserInfoCommand(clientOpts *argocdclient.ClientOptions) *cobra
var command = &cobra.Command{
Use: "get-user-info",
Short: "Get user info",
Example: templates.Examples(`
# Get User information for the currently logged-in user (see 'argocd login')
argocd account get-user-info
# Get User information in yaml format
argocd account get-user-info -o yaml
`),
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()

View File

@@ -15,6 +15,7 @@ import (
cmdutil "github.com/argoproj/argo-cd/v2/cmd/util"
"github.com/argoproj/argo-cd/v2/common"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
"github.com/argoproj/argo-cd/v2/util/errors"
"github.com/argoproj/argo-cd/v2/util/settings"
@@ -35,7 +36,7 @@ var (
)
// NewAdminCommand returns a new instance of an argocd command
func NewAdminCommand() *cobra.Command {
func NewAdminCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
pathOpts = clientcmd.NewDefaultPathOptions()
)
@@ -47,18 +48,25 @@ func NewAdminCommand() *cobra.Command {
Run: func(c *cobra.Command, args []string) {
c.HelpFunc()(c, args)
},
Example: `# Access the Argo CD web UI
$ argocd admin dashboard
# Reset the initial admin password
$ argocd admin initial-password reset
`,
}
command.AddCommand(NewClusterCommand(pathOpts))
command.AddCommand(NewClusterCommand(clientOpts, pathOpts))
command.AddCommand(NewProjectsCommand())
command.AddCommand(NewSettingsCommand())
command.AddCommand(NewAppCommand())
command.AddCommand(NewAppCommand(clientOpts))
command.AddCommand(NewRepoCommand())
command.AddCommand(NewImportCommand())
command.AddCommand(NewExportCommand())
command.AddCommand(NewDashboardCommand())
command.AddCommand(NewDashboardCommand(clientOpts))
command.AddCommand(NewNotificationsCommand())
command.AddCommand(NewInitialPasswordCommand())
command.AddCommand(NewRedisInitialPasswordCommand())
command.Flags().StringVar(&cmdutil.LogFormat, "logformat", "text", "Set the logging format. One of: text|json")
command.Flags().StringVar(&cmdutil.LogLevel, "loglevel", "info", "Set the logging level. One of: debug|info|warn|error")

View File

@@ -20,14 +20,18 @@ import (
"sigs.k8s.io/yaml"
cmdutil "github.com/argoproj/argo-cd/v2/cmd/util"
"github.com/argoproj/argo-cd/v2/common"
"github.com/argoproj/argo-cd/v2/controller"
"github.com/argoproj/argo-cd/v2/controller/cache"
"github.com/argoproj/argo-cd/v2/controller/metrics"
"github.com/argoproj/argo-cd/v2/controller/sharding"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
appclientset "github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned"
appinformers "github.com/argoproj/argo-cd/v2/pkg/client/informers/externalversions"
argocdclient "github.com/argoproj/argo-cd/v2/reposerver/apiclient"
reposerverclient "github.com/argoproj/argo-cd/v2/reposerver/apiclient"
"github.com/argoproj/argo-cd/v2/util/argo"
"github.com/argoproj/argo-cd/v2/util/argo/normalizers"
cacheutil "github.com/argoproj/argo-cd/v2/util/cache"
appstatecache "github.com/argoproj/argo-cd/v2/util/cache/appstate"
"github.com/argoproj/argo-cd/v2/util/cli"
@@ -39,17 +43,27 @@ import (
"github.com/argoproj/argo-cd/v2/util/settings"
)
func NewAppCommand() *cobra.Command {
func NewAppCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var command = &cobra.Command{
Use: "app",
Short: "Manage applications configuration",
Example: `
# Compare results of two reconciliations and print diff
argocd admin app diff-reconcile-results APPNAME [flags]
# Generate declarative config for an application
argocd admin app generate-spec APPNAME
# Reconcile all applications and store reconciliation summary in the specified file
argocd admin app get-reconcile-results APPNAME
`,
Run: func(c *cobra.Command, args []string) {
c.HelpFunc()(c, args)
},
}
command.AddCommand(NewGenAppSpecCommand())
command.AddCommand(NewReconcileCommand())
command.AddCommand(NewReconcileCommand(clientOpts))
command.AddCommand(NewDiffReconcileResults())
return command
}
@@ -193,14 +207,14 @@ func diffReconcileResults(res1 reconcileResults, res2 reconcileResults) error {
for k, v := range resMap1 {
firstUn, err := toUnstructured(v)
if err != nil {
return err
return fmt.Errorf("error converting first resource to unstructured: %w", err)
}
var secondUn *unstructured.Unstructured
second, ok := resMap2[k]
if ok {
secondUn, err = toUnstructured(second)
if err != nil {
return err
return fmt.Errorf("error converting second resource to unstructured: %w", err)
}
delete(resMap2, k)
}
@@ -224,13 +238,15 @@ func diffReconcileResults(res1 reconcileResults, res2 reconcileResults) error {
return nil
}
func NewReconcileCommand() *cobra.Command {
func NewReconcileCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
clientConfig clientcmd.ClientConfig
selector string
repoServerAddress string
outputFormat string
refresh bool
clientConfig clientcmd.ClientConfig
selector string
repoServerAddress string
outputFormat string
refresh bool
serverSideDiff bool
ignoreNormalizerOpts normalizers.IgnoreNormalizerOpts
)
var command = &cobra.Command{
@@ -256,18 +272,27 @@ func NewReconcileCommand() *cobra.Command {
var result []appReconcileResult
if refresh {
appClientset := appclientset.NewForConfigOrDie(cfg)
kubeClientset := kubernetes.NewForConfigOrDie(cfg)
if repoServerAddress == "" {
printLine("Repo server is not provided, trying to port-forward to argocd-repo-server pod.")
overrides := clientcmd.ConfigOverrides{}
repoServerPort, err := kubeutil.PortForward(8081, namespace, &overrides, "app.kubernetes.io/name=argocd-repo-server")
repoServerName := clientOpts.RepoServerName
repoServerServiceLabelSelector := common.LabelKeyComponentRepoServer + "=" + common.LabelValueComponentRepoServer
repoServerServices, err := kubeClientset.CoreV1().Services(namespace).List(context.Background(), v1.ListOptions{LabelSelector: repoServerServiceLabelSelector})
errors.CheckError(err)
if len(repoServerServices.Items) > 0 {
if repoServerServicelabel, ok := repoServerServices.Items[0].Labels[common.LabelKeyAppName]; ok && repoServerServicelabel != "" {
repoServerName = repoServerServicelabel
}
}
repoServerPodLabelSelector := common.LabelKeyAppName + "=" + repoServerName
repoServerPort, err := kubeutil.PortForward(8081, namespace, &overrides, repoServerPodLabelSelector)
errors.CheckError(err)
repoServerAddress = fmt.Sprintf("localhost:%d", repoServerPort)
}
repoServerClient := argocdclient.NewRepoServerClientset(repoServerAddress, 60, argocdclient.TLSConfiguration{DisableTLS: false, StrictValidation: false})
appClientset := appclientset.NewForConfigOrDie(cfg)
kubeClientset := kubernetes.NewForConfigOrDie(cfg)
result, err = reconcileApplications(ctx, kubeClientset, appClientset, namespace, repoServerClient, selector, newLiveStateCache)
repoServerClient := reposerverclient.NewRepoServerClientset(repoServerAddress, 60, reposerverclient.TLSConfiguration{DisableTLS: false, StrictValidation: false})
result, err = reconcileApplications(ctx, kubeClientset, appClientset, namespace, repoServerClient, selector, newLiveStateCache, serverSideDiff, ignoreNormalizerOpts)
errors.CheckError(err)
} else {
appClientset := appclientset.NewForConfigOrDie(cfg)
@@ -282,7 +307,8 @@ func NewReconcileCommand() *cobra.Command {
command.Flags().StringVar(&selector, "l", "", "Label selector")
command.Flags().StringVar(&outputFormat, "o", "yaml", "Output format (yaml|json)")
command.Flags().BoolVar(&refresh, "refresh", false, "If set to true then recalculates apps reconciliation")
command.Flags().BoolVar(&serverSideDiff, "server-side-diff", false, "If set to \"true\" will use server-side diff while comparing resources. Default (\"false\")")
command.Flags().DurationVar(&ignoreNormalizerOpts.JQExecutionTimeout, "ignore-normalizer-jq-execution-timeout", normalizers.DefaultJQExecutionTimeout, "Set ignore normalizer JQ execution timeout")
return command
}
@@ -328,9 +354,11 @@ func reconcileApplications(
kubeClientset kubernetes.Interface,
appClientset appclientset.Interface,
namespace string,
repoServerClient argocdclient.Clientset,
repoServerClient reposerverclient.Clientset,
selector string,
createLiveStateCache func(argoDB db.ArgoDB, appInformer kubecache.SharedIndexInformer, settingsMgr *settings.SettingsManager, server *metrics.MetricsServer) cache.LiveStateCache,
serverSideDiff bool,
ignoreNormalizerOpts normalizers.IgnoreNormalizerOpts,
) ([]appReconcileResult, error) {
settingsMgr := settings.NewSettingsManager(ctx, kubeClientset, namespace)
argoDB := db.NewDB(namespace, settingsMgr, kubeClientset)
@@ -371,7 +399,7 @@ func reconcileApplications(
)
appStateManager := controller.NewAppStateManager(
argoDB, appClientset, repoServerClient, namespace, kubeutil.NewKubectl(), settingsMgr, stateCache, projInformer, server, cache, time.Second, argo.NewResourceTracking(), false)
argoDB, appClientset, repoServerClient, namespace, kubeutil.NewKubectl(), settingsMgr, stateCache, projInformer, server, cache, time.Second, argo.NewResourceTracking(), false, 0, serverSideDiff, ignoreNormalizerOpts)
appsList, err := appClientset.ArgoprojV1alpha1().Applications(namespace).List(ctx, v1.ListOptions{LabelSelector: selector})
if err != nil {
@@ -406,7 +434,10 @@ func reconcileApplications(
sources = append(sources, app.Spec.GetSource())
revisions = append(revisions, app.Spec.GetSource().TargetRevision)
res := appStateManager.CompareAppState(&app, proj, revisions, sources, false, false, nil, false)
res, err := appStateManager.CompareAppState(&app, proj, revisions, sources, false, false, nil, false)
if err != nil {
return nil, err
}
items = append(items, appReconcileResult{
Name: app.Name,
Conditions: app.Status.Conditions,
@@ -418,5 +449,5 @@ func reconcileApplications(
}
func newLiveStateCache(argoDB db.ArgoDB, appInformer kubecache.SharedIndexInformer, settingsMgr *settings.SettingsManager, server *metrics.MetricsServer) cache.LiveStateCache {
return cache.NewLiveStateCache(argoDB, appInformer, settingsMgr, kubeutil.NewKubectl(), server, func(managedByApp map[string]bool, ref apiv1.ObjectReference) {}, nil, argo.NewResourceTracking())
return cache.NewLiveStateCache(argoDB, appInformer, settingsMgr, kubeutil.NewKubectl(), server, func(managedByApp map[string]bool, ref apiv1.ObjectReference) {}, &sharding.ClusterSharding{}, argo.NewResourceTracking())
}

View File

@@ -23,6 +23,7 @@ import (
argocdclient "github.com/argoproj/argo-cd/v2/reposerver/apiclient"
"github.com/argoproj/argo-cd/v2/reposerver/apiclient/mocks"
"github.com/argoproj/argo-cd/v2/test"
"github.com/argoproj/argo-cd/v2/util/argo/normalizers"
"github.com/argoproj/argo-cd/v2/util/db"
"github.com/argoproj/argo-cd/v2/util/settings"
)
@@ -113,6 +114,8 @@ func TestGetReconcileResults_Refresh(t *testing.T) {
func(argoDB db.ArgoDB, appInformer cache.SharedIndexInformer, settingsMgr *settings.SettingsManager, server *metrics.MetricsServer) statecache.LiveStateCache {
return &liveStateCache
},
false,
normalizers.IgnoreNormalizerOpts{},
)
if !assert.NoError(t, err) {

View File

@@ -24,7 +24,8 @@ import (
cmdutil "github.com/argoproj/argo-cd/v2/cmd/util"
"github.com/argoproj/argo-cd/v2/common"
"github.com/argoproj/argo-cd/v2/controller/sharding"
argoappv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned"
"github.com/argoproj/argo-cd/v2/util/argo"
cacheutil "github.com/argoproj/argo-cd/v2/util/cache"
@@ -39,10 +40,19 @@ import (
"github.com/argoproj/argo-cd/v2/util/text/label"
)
func NewClusterCommand(pathOpts *clientcmd.PathOptions) *cobra.Command {
func NewClusterCommand(clientOpts *argocdclient.ClientOptions, pathOpts *clientcmd.PathOptions) *cobra.Command {
var command = &cobra.Command{
Use: "cluster",
Short: "Manage clusters configuration",
Example: `
#Generate declarative config for a cluster
argocd admin cluster generate-spec my-cluster -o yaml
#Generate a kubeconfig for a cluster named "my-cluster" and display it in the console
argocd admin cluster kubeconfig my-cluster
#Print information namespaces which Argo CD manages in each cluster
argocd admin cluster namespaces my-cluster `,
Run: func(c *cobra.Command, args []string) {
c.HelpFunc()(c, args)
},
@@ -50,8 +60,8 @@ func NewClusterCommand(pathOpts *clientcmd.PathOptions) *cobra.Command {
command.AddCommand(NewClusterConfig())
command.AddCommand(NewGenClusterConfigCommand(pathOpts))
command.AddCommand(NewClusterStatsCommand())
command.AddCommand(NewClusterShardsCommand())
command.AddCommand(NewClusterStatsCommand(clientOpts))
command.AddCommand(NewClusterShardsCommand(clientOpts))
namespacesCommand := NewClusterNamespacesCommand()
namespacesCommand.AddCommand(NewClusterEnableNamespacedMode())
namespacesCommand.AddCommand(NewClusterDisableNamespacedMode())
@@ -61,14 +71,14 @@ func NewClusterCommand(pathOpts *clientcmd.PathOptions) *cobra.Command {
}
type ClusterWithInfo struct {
argoappv1.Cluster
v1alpha1.Cluster
// Shard holds controller shard number that handles the cluster
Shard int
// Namespaces holds list of namespaces managed by Argo CD in the cluster
Namespaces []string
}
func loadClusters(ctx context.Context, kubeClient *kubernetes.Clientset, appClient *versioned.Clientset, replicas int, namespace string, portForwardRedis bool, cacheSrc func() (*appstatecache.Cache, error), shard int) ([]ClusterWithInfo, error) {
func loadClusters(ctx context.Context, kubeClient *kubernetes.Clientset, appClient *versioned.Clientset, replicas int, shardingAlgorithm string, namespace string, portForwardRedis bool, cacheSrc func() (*appstatecache.Cache, error), shard int, redisName string, redisHaProxyName string, redisCompressionStr string) ([]ClusterWithInfo, error) {
settingsMgr := settings.NewSettingsManager(ctx, kubeClient, namespace)
argoDB := db.NewDB(namespace, settingsMgr, kubeClient)
@@ -76,16 +86,30 @@ func loadClusters(ctx context.Context, kubeClient *kubernetes.Clientset, appClie
if err != nil {
return nil, err
}
appItems, err := appClient.ArgoprojV1alpha1().Applications(namespace).List(ctx, v1.ListOptions{})
if err != nil {
return nil, err
}
clusterShardingCache := sharding.NewClusterSharding(argoDB, shard, replicas, shardingAlgorithm)
clusterShardingCache.Init(clustersList, appItems)
clusterShards := clusterShardingCache.GetDistribution()
var cache *appstatecache.Cache
if portForwardRedis {
overrides := clientcmd.ConfigOverrides{}
redisHaProxyPodLabelSelector := common.LabelKeyAppName + "=" + redisHaProxyName
redisPodLabelSelector := common.LabelKeyAppName + "=" + redisName
port, err := kubeutil.PortForward(6379, namespace, &overrides,
"app.kubernetes.io/name=argocd-redis-ha-haproxy", "app.kubernetes.io/name=argocd-redis")
redisHaProxyPodLabelSelector, redisPodLabelSelector)
if err != nil {
return nil, err
}
client := redis.NewClient(&redis.Options{Addr: fmt.Sprintf("localhost:%d", port)})
cache = appstatecache.NewCache(cacheutil.NewCache(cacheutil.NewRedisCache(client, time.Hour, cacheutil.RedisCompressionNone)), time.Hour)
compressionType, err := cacheutil.CompressionTypeFromString(redisCompressionStr)
if err != nil {
return nil, err
}
cache = appstatecache.NewCache(cacheutil.NewCache(cacheutil.NewRedisCache(client, time.Hour, compressionType)), time.Hour)
} else {
cache, err = cacheSrc()
if err != nil {
@@ -93,10 +117,6 @@ func loadClusters(ctx context.Context, kubeClient *kubernetes.Clientset, appClie
}
}
appItems, err := appClient.ArgoprojV1alpha1().Applications(namespace).List(ctx, v1.ListOptions{})
if err != nil {
return nil, err
}
apps := appItems.Items
for i, app := range apps {
err := argo.ValidateDestination(ctx, &app.Spec.Destination, argoDB)
@@ -106,6 +126,7 @@ func loadClusters(ctx context.Context, kubeClient *kubernetes.Clientset, appClie
apps[i] = app
}
clusters := make([]ClusterWithInfo, len(clustersList.Items))
batchSize := 10
batchesCount := int(math.Ceil(float64(len(clusters)) / float64(batchSize)))
for batchNum := 0; batchNum < batchesCount; batchNum++ {
@@ -119,12 +140,10 @@ func loadClusters(ctx context.Context, kubeClient *kubernetes.Clientset, appClie
clusterShard := 0
cluster := batch[i]
if replicas > 0 {
distributionFunction := sharding.GetDistributionFunction(argoDB, common.DefaultShardingAlgorithm)
distributionFunction(&cluster)
cluster.Shard = pointer.Int64Ptr(int64(clusterShard))
clusterShard = clusterShards[cluster.Server]
cluster.Shard = pointer.Int64(int64(clusterShard))
log.Infof("Cluster with uid: %s will be processed by shard %d", cluster.ID, clusterShard)
}
if shard != -1 && clusterShard != shard {
return nil
}
@@ -146,26 +165,29 @@ func loadClusters(ctx context.Context, kubeClient *kubernetes.Clientset, appClie
return clusters, nil
}
func getControllerReplicas(ctx context.Context, kubeClient *kubernetes.Clientset, namespace string) (int, error) {
func getControllerReplicas(ctx context.Context, kubeClient *kubernetes.Clientset, namespace string, appControllerName string) (int, error) {
appControllerPodLabelSelector := common.LabelKeyAppName + "=" + appControllerName
controllerPods, err := kubeClient.CoreV1().Pods(namespace).List(ctx, v1.ListOptions{
LabelSelector: "app.kubernetes.io/name=argocd-application-controller"})
LabelSelector: appControllerPodLabelSelector})
if err != nil {
return 0, err
}
return len(controllerPods.Items), nil
}
func NewClusterShardsCommand() *cobra.Command {
func NewClusterShardsCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
shard int
replicas int
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
)
var command = cobra.Command{
Use: "shards",
Short: "Print information about each controller shard and portion of Kubernetes resources it is responsible for.",
Short: "Print information about each controller shard and the estimated portion of Kubernetes resources it is responsible for.",
Run: func(cmd *cobra.Command, args []string) {
ctx := cmd.Context()
@@ -179,14 +201,13 @@ func NewClusterShardsCommand() *cobra.Command {
appClient := versioned.NewForConfigOrDie(clientCfg)
if replicas == 0 {
replicas, err = getControllerReplicas(ctx, kubeClient, namespace)
replicas, err = getControllerReplicas(ctx, kubeClient, namespace, clientOpts.AppControllerName)
errors.CheckError(err)
}
if replicas == 0 {
return
}
clusters, err := loadClusters(ctx, kubeClient, appClient, replicas, namespace, portForwardRedis, cacheSrc, shard)
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
@@ -198,8 +219,16 @@ func NewClusterShardsCommand() *cobra.Command {
clientConfig = cli.AddKubectlFlagsToCmd(&command)
command.Flags().IntVar(&shard, "shard", -1, "Cluster shard filter")
command.Flags().IntVar(&replicas, "replicas", 0, "Application controller replicas count. Inferred from number of running controller pods if not specified")
command.Flags().StringVar(&shardingAlgorithm, "sharding-method", common.DefaultShardingAlgorithm, "Sharding method. Defaults: legacy. Supported sharding methods are : [legacy, round-robin] ")
command.Flags().BoolVar(&portForwardRedis, "port-forward-redis", true, "Automatically port-forward ha proxy redis from current namespace?")
cacheSrc = appstatecache.AddCacheFlagsToCmd(&command)
// parse all added flags so far to get the redis-compression flag that was added by AddCacheFlagsToCmd() above
// 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
}
@@ -433,17 +462,28 @@ func NewClusterDisableNamespacedMode() *cobra.Command {
return &command
}
func NewClusterStatsCommand() *cobra.Command {
func NewClusterStatsCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
shard int
replicas int
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
)
var command = cobra.Command{
Use: "stats",
Short: "Prints information cluster statistics and inferred shard number",
Example: `
#Display stats and shards for clusters
argocd admin cluster stats
#Display Cluster Statistics for a Specific Shard
argocd admin cluster stats --shard=1
#In a multi-cluster environment to print stats for a specific cluster say(target-cluster)
argocd admin cluster stats target-cluster`,
Run: func(cmd *cobra.Command, args []string) {
ctx := cmd.Context()
@@ -457,10 +497,10 @@ func NewClusterStatsCommand() *cobra.Command {
kubeClient := kubernetes.NewForConfigOrDie(clientCfg)
appClient := versioned.NewForConfigOrDie(clientCfg)
if replicas == 0 {
replicas, err = getControllerReplicas(ctx, kubeClient, namespace)
replicas, err = getControllerReplicas(ctx, kubeClient, namespace, clientOpts.AppControllerName)
errors.CheckError(err)
}
clusters, err := loadClusters(ctx, kubeClient, appClient, replicas, namespace, portForwardRedis, cacheSrc, shard)
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)
@@ -474,8 +514,15 @@ func NewClusterStatsCommand() *cobra.Command {
clientConfig = cli.AddKubectlFlagsToCmd(&command)
command.Flags().IntVar(&shard, "shard", -1, "Cluster shard filter")
command.Flags().IntVar(&replicas, "replicas", 0, "Application controller replicas count. Inferred from number of running controller pods if not specified")
command.Flags().StringVar(&shardingAlgorithm, "sharding-method", common.DefaultShardingAlgorithm, "Sharding method. Defaults: legacy. Supported sharding methods are : [legacy, round-robin] ")
command.Flags().BoolVar(&portForwardRedis, "port-forward-redis", true, "Automatically port-forward ha proxy redis from current namespace?")
cacheSrc = appstatecache.AddCacheFlagsToCmd(&command)
// parse all added flags so far to get the redis-compression flag that was added by AddCacheFlagsToCmd() above
// 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
}
@@ -488,6 +535,18 @@ func NewClusterConfig() *cobra.Command {
Use: "kubeconfig CLUSTER_URL OUTPUT_PATH",
Short: "Generates kubeconfig for the specified cluster",
DisableAutoGenTag: true,
Example: `
#Generate a kubeconfig for a cluster named "my-cluster" on console
argocd admin cluster kubeconfig my-cluster
#Listing available kubeconfigs for clusters managed by argocd
argocd admin cluster kubeconfig
#Removing a specific kubeconfig file
argocd admin cluster kubeconfig my-cluster --delete
#Generate a Kubeconfig for a Cluster with TLS Verification Disabled
argocd admin cluster kubeconfig https://cluster-api-url:6443 /path/to/output/kubeconfig.yaml --insecure-skip-tls-verify`,
Run: func(c *cobra.Command, args []string) {
ctx := c.Context()
@@ -558,15 +617,16 @@ func NewGenClusterConfigCommand(pathOpts *clientcmd.PathOptions) *cobra.Command
errors.CheckError(err)
kubeClientset := fake.NewSimpleClientset()
var awsAuthConf *argoappv1.AWSAuthConfig
var execProviderConf *argoappv1.ExecProviderConfig
var awsAuthConf *v1alpha1.AWSAuthConfig
var execProviderConf *v1alpha1.ExecProviderConfig
if clusterOpts.AwsClusterName != "" {
awsAuthConf = &argoappv1.AWSAuthConfig{
awsAuthConf = &v1alpha1.AWSAuthConfig{
ClusterName: clusterOpts.AwsClusterName,
RoleARN: clusterOpts.AwsRoleArn,
Profile: clusterOpts.AwsProfile,
}
} else if clusterOpts.ExecProviderCommand != "" {
execProviderConf = &argoappv1.ExecProviderConfig{
execProviderConf = &v1alpha1.ExecProviderConfig{
Command: clusterOpts.ExecProviderCommand,
Args: clusterOpts.ExecProviderArgs,
Env: clusterOpts.ExecProviderEnv,
@@ -590,7 +650,7 @@ func NewGenClusterConfigCommand(pathOpts *clientcmd.PathOptions) *cobra.Command
clst := cmdutil.NewCluster(contextName, clusterOpts.Namespaces, clusterOpts.ClusterResources, conf, bearerToken, awsAuthConf, execProviderConf, labelsMap, annotationsMap)
if clusterOpts.InClusterEndpoint() {
clst.Server = argoappv1.KubernetesInternalAPIServerAddr
clst.Server = v1alpha1.KubernetesInternalAPIServerAddr
}
if clusterOpts.ClusterEndpoint == string(cmdutil.KubePublicEndpoint) {
// Ignore `kube-public` cluster endpoints, since this command is intended to run without invoking any network connections.

View File

@@ -3,7 +3,9 @@ package admin
import (
"fmt"
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/spf13/cobra"
"k8s.io/client-go/tools/clientcmd"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/headless"
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/initialize"
@@ -14,11 +16,12 @@ import (
"github.com/argoproj/argo-cd/v2/util/errors"
)
func NewDashboardCommand() *cobra.Command {
func NewDashboardCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
var (
port int
address string
compressionStr string
clientConfig clientcmd.ClientConfig
)
cmd := &cobra.Command{
Use: "dashboard",
@@ -28,12 +31,22 @@ func NewDashboardCommand() *cobra.Command {
compression, err := cache.CompressionTypeFromString(compressionStr)
errors.CheckError(err)
errors.CheckError(headless.StartLocalServer(ctx, &argocdclient.ClientOptions{Core: true}, initialize.RetrieveContextIfChanged(cmd.Flag("context")), &port, &address, compression))
clientOpts.Core = true
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()
},
Example: `# Start the Argo CD Web UI locally on the default port and address
$ argocd admin dashboard
# Start the Argo CD Web UI locally on a custom port and address
$ argocd admin dashboard --port 8080 --address 127.0.0.1
# Start the Argo CD Web UI with GZip compression
$ argocd admin dashboard --redis-compress gzip
`,
}
initialize.InitCommand(cmd)
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)")

View File

@@ -36,7 +36,7 @@ func NewNotificationsCommand() *cobra.Command {
"notifications",
"argocd admin notifications",
applications,
settings.GetFactorySettings(argocdService, "argocd-notifications-secret", "argocd-notifications-cm"), func(clientConfig clientcmd.ClientConfig) {
settings.GetFactorySettings(argocdService, "argocd-notifications-secret", "argocd-notifications-cm", false), func(clientConfig clientcmd.ClientConfig) {
k8sCfg, err := clientConfig.ClientConfig()
if err != nil {
log.Fatalf("Failed to parse k8s config: %v", err)

View File

@@ -14,6 +14,7 @@ import (
"github.com/argoproj/argo-cd/v2/util/cli"
"github.com/argoproj/argo-cd/v2/util/errors"
"github.com/argoproj/argo-cd/v2/util/io"
"github.com/argoproj/argo-cd/v2/util/templates"
"github.com/argoproj/gitops-engine/pkg/utils/kube"
"github.com/spf13/cobra"
@@ -47,6 +48,17 @@ func NewGenProjectSpecCommand() *cobra.Command {
var command = &cobra.Command{
Use: "generate-spec PROJECT",
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
# 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
# Generate a YAML configuration for a project named "someproject" and write it back to the input file
argocd admin projects generate-spec someproject --inline
`),
Run: func(c *cobra.Command, args []string) {
proj, err := cmdutil.ConstructAppProj(fileURL, args, opts, c)
errors.CheckError(err)

View File

@@ -41,6 +41,8 @@ func NewProjectAllowListGenCommand() *cobra.Command {
var command = &cobra.Command{
Use: "generate-allow-list CLUSTERROLE_PATH PROJ_NAME",
Short: "Generates project allow list from the specified clusterRole file",
Example: `# Generates project allow list from the specified clusterRole file
argocd admin proj generate-allow-list /path/to/clusterrole.yaml my-project`,
Run: func(c *cobra.Command, args []string) {
if len(args) != 2 {
c.HelpFunc()(c, args)

View File

@@ -0,0 +1,98 @@
package admin
import (
"context"
"crypto/rand"
"fmt"
"math/big"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/util/cli"
apierr "k8s.io/apimachinery/pkg/api/errors"
"github.com/argoproj/argo-cd/v2/util/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"github.com/spf13/cobra"
corev1 "k8s.io/api/core/v1"
)
const defaulRedisInitialPasswordSecretName = "argocd-redis"
const defaultResisInitialPasswordKey = "auth"
func generateRandomPassword() (string, error) {
const initialPasswordLength = 16
const letters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-"
randBytes := make([]byte, initialPasswordLength)
for i := 0; i < initialPasswordLength; i++ {
num, err := rand.Int(rand.Reader, big.NewInt(int64(len(letters))))
if err != nil {
return "", err
}
randBytes[i] = letters[num.Int64()]
}
initialPassword := string(randBytes)
return initialPassword, nil
}
// NewRedisInitialPasswordCommand defines a new command to ensure Argo CD Redis password secret exists.
func NewRedisInitialPasswordCommand() *cobra.Command {
var (
clientConfig clientcmd.ClientConfig
)
var command = cobra.Command{
Use: "redis-initial-password",
Short: "Ensure the Redis password exists, creating a new one if necessary.",
Run: func(c *cobra.Command, args []string) {
namespace, _, err := clientConfig.Namespace()
errors.CheckError(err)
redisInitialPasswordSecretName := defaulRedisInitialPasswordSecretName
redisInitialPasswordKey := defaultResisInitialPasswordKey
fmt.Printf("Checking for initial Redis password in secret %s/%s at key %s. \n", namespace, redisInitialPasswordSecretName, redisInitialPasswordKey)
config, err := clientConfig.ClientConfig()
errors.CheckError(err)
errors.CheckError(v1alpha1.SetK8SConfigDefaults(config))
kubeClientset := kubernetes.NewForConfigOrDie(config)
randomPassword, err := generateRandomPassword()
errors.CheckError(err)
data := map[string][]byte{
redisInitialPasswordKey: []byte(randomPassword),
}
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: redisInitialPasswordSecretName,
Namespace: namespace,
},
Data: data,
Type: corev1.SecretTypeOpaque,
}
_, err = kubeClientset.CoreV1().Secrets(namespace).Create(context.Background(), secret, metav1.CreateOptions{})
if err != nil && !apierr.IsAlreadyExists(err) {
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{})
errors.CheckError(err)
if _, ok := secret.Data[redisInitialPasswordKey]; ok {
fmt.Println("Password secret is configured properly.")
} else {
err := fmt.Errorf("key %s doesn't exist in secret %s. \n", redisInitialPasswordKey, redisInitialPasswordSecretName)
errors.CheckError(err)
}
},
}
clientConfig = cli.AddKubectlFlagsToCmd(&command)
return &command
}

View File

@@ -373,11 +373,7 @@ func executeResourceOverrideCommand(ctx context.Context, cmdCtx commandContext,
if gvk.Group != "" {
key = fmt.Sprintf("%s/%s", gvk.Group, gvk.Kind)
}
override, hasOverride := overrides[key]
if !hasOverride {
_, _ = fmt.Printf("No overrides configured for '%s/%s'\n", gvk.Group, gvk.Kind)
return
}
override := overrides[key]
callback(res, override, overrides)
}
@@ -432,7 +428,7 @@ argocd admin settings resource-overrides ignore-differences ./deploy.yaml --argo
// configurations. This requires access to live resources which is not the
// purpose of this command. This will just apply jsonPointers and
// jqPathExpressions configurations.
normalizer, err := normalizers.NewIgnoreNormalizer(nil, overrides)
normalizer, err := normalizers.NewIgnoreNormalizer(nil, overrides, normalizers.IgnoreNormalizerOpts{})
errors.CheckError(err)
normalizedRes := res.DeepCopy()
@@ -457,6 +453,9 @@ argocd admin settings resource-overrides ignore-differences ./deploy.yaml --argo
}
func NewResourceIgnoreResourceUpdatesCommand(cmdCtx commandContext) *cobra.Command {
var (
ignoreNormalizerOpts normalizers.IgnoreNormalizerOpts
)
var command = &cobra.Command{
Use: "ignore-resource-updates RESOURCE_YAML_PATH",
Short: "Renders fields excluded from resource updates",
@@ -478,7 +477,7 @@ argocd admin settings resource-overrides ignore-resource-updates ./deploy.yaml -
return
}
normalizer, err := normalizers.NewIgnoreNormalizer(nil, overrides)
normalizer, err := normalizers.NewIgnoreNormalizer(nil, overrides, ignoreNormalizerOpts)
errors.CheckError(err)
normalizedRes := res.DeepCopy()
@@ -499,6 +498,7 @@ argocd admin settings resource-overrides ignore-resource-updates ./deploy.yaml -
})
},
}
command.Flags().DurationVar(&ignoreNormalizerOpts.JQExecutionTimeout, "ignore-normalizer-jq-execution-timeout", normalizers.DefaultJQExecutionTimeout, "Set ignore normalizer JQ execution timeout")
return command
}
@@ -519,16 +519,16 @@ argocd admin settings resource-overrides health ./deploy.yaml --argocd-cm-path .
executeResourceOverrideCommand(ctx, cmdCtx, args, func(res unstructured.Unstructured, override v1alpha1.ResourceOverride, overrides map[string]v1alpha1.ResourceOverride) {
gvk := res.GroupVersionKind()
if override.HealthLua == "" {
_, _ = fmt.Printf("Health script is not configured for '%s/%s'\n", gvk.Group, gvk.Kind)
return
}
resHealth, err := healthutil.GetResourceHealth(&res, lua.ResourceHealthOverrides(overrides))
errors.CheckError(err)
_, _ = fmt.Printf("STATUS: %s\n", resHealth.Status)
_, _ = fmt.Printf("MESSAGE: %s\n", resHealth.Message)
if err != nil {
errors.CheckError(err)
} else if resHealth == nil {
fmt.Printf("Health script is not configured for '%s/%s'\n", gvk.Group, gvk.Kind)
} else {
_, _ = fmt.Printf("STATUS: %s\n", resHealth.Status)
_, _ = fmt.Printf("MESSAGE: %s\n", resHealth.Message)
}
})
},
}
@@ -568,7 +568,7 @@ argocd admin settings resource-overrides action list /tmp/deploy.yaml --argocd-c
})
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
_, _ = fmt.Fprintf(w, "NAME\tENABLED\n")
_, _ = fmt.Fprintf(w, "NAME\tDISABLED\n")
for _, action := range availableActions {
_, _ = fmt.Fprintf(w, "%s\t%s\n", action.Name, strconv.FormatBool(action.Disabled))
}

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