Compare commits

...

661 Commits

Author SHA1 Message Date
github-actions[bot]
560953c37b Bump version to 2.12.2 (#19657)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: crenshaw-dev <350466+crenshaw-dev@users.noreply.github.com>
2024-08-22 23:29:03 -04:00
rumstead
7244c2d5e5 fix(appset): remove cache references (#19652)
Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-08-22 18:09:56 -04:00
gcp-cherry-pick-bot[bot]
b068220503 fix(appset): informer is not a kubernetes informer (#18905) (#19618) (#19636)
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-08-21 20:17:21 -08:00
gcp-cherry-pick-bot[bot]
c873d5c68a fix: Floating title content incorrect for multi-sources (#17274) (#19623) (#19627)
Signed-off-by: Keith Chong <kykchong@redhat.com>
Co-authored-by: Keith Chong <kykchong@redhat.com>
2024-08-21 19:31:48 -04:00
gcp-cherry-pick-bot[bot]
88f85daf52 fix: Parse hostname correctly from repoURL to fetch correct CA cert (#19488) (#19602)
Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>
Co-authored-by: Siddhesh Ghadi <61187612+svghadi@users.noreply.github.com>
Co-authored-by: Jann Fischer <jann@mistrust.net>
2024-08-21 00:48:58 -04:00
github-actions[bot]
26b2039a55 Bump version to 2.12.1 (#19568)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: ishitasequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-08-16 12:39:58 -04:00
Ishita Sequeira
952838cdde fix(appset): cherry-pick - fix appset-in-any-namespace issue with git generators (#19558)
* fix appset-in-any-namespace issue with git generators

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

* fix lint issue

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

---------

Signed-off-by: Ishita Sequeira <ishiseq29@gmail.com>
2024-08-15 17:14:05 -04:00
gcp-cherry-pick-bot[bot]
7af4526666 fix: appset gpg limitation for templated project fields (#19492) (#19534)
* document templating project field while using applicationset git generator and signature verification



* revert changes to generated mocks



* Add check for templated project field and add limitation to the docs



* optimize checks and rephrase documentation



* remove unwanted variable declaration



* Add unit tests



---------

Signed-off-by: Ishita Sequeira <ishiseq29@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-08-14 12:27:32 -04:00
gcp-cherry-pick-bot[bot]
b156b61e22 fix(appset): missing permissions for cluster install (#19059) (#19430) (#19435)
Signed-off-by: Dmitry Khodorov <el1191@woyd.ru>
Co-authored-by: Dmitry Khodorov <el1191@woyd.ru>
2024-08-08 00:35:24 -04:00
Jae Ryong Song
fd478450e6 fix: docs version regex changed (#18756) (#19352)
Signed-off-by: jasong <jasong@student.42seoul.kr>
2024-08-07 20:36:13 -04:00
github-actions[bot]
ec30a48bce Bump version to 2.12.0 (#19383)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: ishitasequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-08-05 09:24:37 -04:00
gcp-cherry-pick-bot[bot]
57e61b2d8a feat: Add custom health check for cluster-api AWSManagedControlPlane (#19304) (#19360)
* add custom health check for awsmanagedcontrolplane



* chore(deps): bump github.com/aws/aws-sdk-go from 1.55.3 to 1.55.4 (#19295)

Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.55.3 to 1.55.4.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.55.3...v1.55.4)

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





* add new line at the end of health_test.yaml file



---------

Signed-off-by: Iulian Taiatu <itaiatu@adobe.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: itaiatu <140485521+itaiatu@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-02 10:55:46 -07:00
github-actions[bot]
6f2ae0dd46 Bump version to 2.12.0-rc5 (#19349)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: ishitasequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-08-01 19:24:32 -04:00
gcp-cherry-pick-bot[bot]
3e31ce9470 fix: ArgoCD 2.11 - Loop of PATCH calls to Application objects (#19340) (#19343)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-08-01 16:11:47 -04:00
gcp-cherry-pick-bot[bot]
dee59f3002 feat(rbac): allow validation of fine-grained policy in project (#19338) (#19339)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-08-01 10:37:55 -04:00
pasha-codefresh
d6c37aab88 Merge commit from fork (#19330) 2024-08-01 01:11:15 +03:00
pasha-codefresh
eaa1972e69 feat: webhook ddos -2.12 (#19329) 2024-08-01 00:53:59 +03:00
gcp-cherry-pick-bot[bot]
004cabba47 fix(applicationset): ensure that older applicationStatus is updated with new required values (#19165) (#19216)
Signed-off-by: wparr-circle <william.parr@circle.com>
Co-authored-by: William Parr <william.parr@circle.com>
2024-07-25 10:12:31 -04:00
gcp-cherry-pick-bot[bot]
d9263101fc chore: revert "feat: removed legacy app tracking label (#13203)" (cherry-pick #19196)
This reverts commit 4d8436b7e1.

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-07-24 16:31:36 -04:00
Blake Pettersson
cec8504df2 fix: cherry-pick #18761 (v2.12) (#19109)
* fix(applicationset): use requeue after if generate app errors out (#18761)

The `GenerateApplications` can call to external resources like Github
API for instance which might be rate limited or fail. If those requests
somehow fail we should requeue them after some time like (same
reason as e98d3b2a87/applicationset/controllers/applicationset_controller.go (L154)).

For instance, in our environments we were rate limited by Github and the ArgoCD
applicationset controller was logging the following error about every
second or less for every application set using the pull request generator
that we have:
```
time="2024-06-21T14:17:15Z" level=error msg="error generating params" error="error listing repos: error listing pull requests for LedgerHQ/xxx: GET https://api.github.com/repos/LedgerHQ/xxx/pulls?per_page=100: 403 API rate limit exceeded for installation ID xxx. If you reach out to GitHub Support for help, please include the request ID xxx and timestamp 2024-06-xx xxx UTC. [rate reset in 8m18s]" generator="&{0xc000d652c0 0x289a100 {0xc00087bdd0}  [] true}"
time="2024-06-21T14:17:15Z" level=error msg="error generating application from params" applicationset=argocd/xxx error="error listing repos: error listing pull requests for LedgerHQ/xxxx: GET https://api.github.com/repos/LedgerHQ/xxx/pulls?per_page=100: 403 API rate limit exceeded for installation ID xxx. If you reach out to GitHub Support for help, please include the request ID xxx and timestamp 2024-06-xx xxx UTC. [rate reset in 8m18s]" generator="{nil nil nil nil nil &PullRequestGenerator{Github:&PullRequestGeneratorGithub{Owner:LedgerHQ,Repo:xxx,API:,TokenRef:nil,AppSecretName:xxxx,Labels:[argocd/preview],},GitLab:nil,Gitea:nil,BitbucketServer:nil,Filters:[]PullRequestGeneratorFilter{},RequeueAfterSeconds:*1800,Template:ApplicationSetTemplate{ApplicationSetTemplateMeta:ApplicationSetTemplateMeta{Name:,Namespace:,Labels:map[string]string{},Annotations:map[string]string{},Finalizers:[],},Spec:ApplicationSpec{Source:nil,Destination:ApplicationDestination{Server:,Namespace:,Name:,},Project:,SyncPolicy:nil,IgnoreDifferences:[]ResourceIgnoreDifferences{},Info:[]Info{},RevisionHistoryLimit:nil,Sources:[]ApplicationSource{},},},Bitbucket:nil,AzureDevOps:nil,} nil nil nil nil}"
```

Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@ledger.fr>

* test: cherry-pick fixes

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

* chore: please the linter

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

---------

Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@ledger.fr>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@ledger.fr>
2024-07-18 22:31:40 -04:00
github-actions[bot]
0704aa6506 Bump version to 2.12.0-rc4 (#19060)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: crenshaw-dev <350466+crenshaw-dev@users.noreply.github.com>
2024-07-15 13:28:20 -04:00
Alexandre Gaudreault
511d6e371c chore: bump gitops-engine (#19056)
Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-07-15 12:08:15 -04:00
gcp-cherry-pick-bot[bot]
065f8494cf fix(cli): Get Redis password from secret in loadClusters() (#18951) (#18955)
* Get Redis password from secret in `loadClusters()`



* feat: support redis password in admin stats command



* Simplify code



---------

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Co-authored-by: david-wu-octopus <155603967+david-wu-octopus@users.noreply.github.com>
Co-authored-by: pashakostohrys <pavel@codefresh.io>
2024-07-05 11:12:24 -04:00
gcp-cherry-pick-bot[bot]
beacacc43d fix(appset): missing permissions (#18829) (#18943) (#18944) 2024-07-04 10:44:58 -04:00
gcp-cherry-pick-bot[bot]
81d454215d remove unwanted updating of source-position in app set command (#18887) (#18897)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-07-02 13:14:21 -04:00
github-actions[bot]
1237d4ea17 Bump version to 2.12.0-rc3 (#18893)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: crenshaw-dev <350466+crenshaw-dev@users.noreply.github.com>
2024-07-02 13:04:14 -04:00
Michael Crenshaw
b211d3e038 chore: bump gitops-engine (#18871)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-07-01 13:22:54 -04:00
gcp-cherry-pick-bot[bot]
50c32b53f0 docs: Fix .path to .path.segments go template (#18872) (#18873)
Signed-off-by: Jaeseok Lee <devsunb@gmail.com>
Co-authored-by: Jaeseok Lee <devsunb@gmail.com>
2024-07-01 10:52:36 -04:00
gcp-cherry-pick-bot[bot]
444d332d0a fix: Handle nil health check in post-delete hooks (#18270) (#18767) (#18828)
* fix: Handle nil health check in post-delete hooks



* test: Validate deletion of RBAC resources for post-delete hook



* Update appcontroller_test.go



---------

Signed-off-by: Yonatan Sasson <yonatanxd7@gmail.com>
Signed-off-by: Yonatan Sasson <107778824+Yuni-sa@users.noreply.github.com>
Co-authored-by: Yonatan Sasson <107778824+Yuni-sa@users.noreply.github.com>
2024-06-26 17:21:19 +03:00
gcp-cherry-pick-bot[bot]
573c771d2b fix(webhook): bitbucket and azure not triggering refresh (#18289) (#18765) (#18818)
* 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:16 -04:00
Michael Crenshaw
e616dff2d1 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:33:59 -04:00
gcp-cherry-pick-bot[bot]
e36e19de4e chore(deps): bump github.com/hashicorp/go-retryablehttp (#18805) (#18811)
Bumps [github.com/hashicorp/go-retryablehttp](https://github.com/hashicorp/go-retryablehttp) from 0.7.4 to 0.7.7.
- [Changelog](https://github.com/hashicorp/go-retryablehttp/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/go-retryablehttp/compare/v0.7.4...v0.7.7)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/go-retryablehttp
  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-06-25 11:29:12 -04:00
github-actions[bot]
bbfa79ad9e Bump version to 2.12.0-rc2 (#18802)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: crenshaw-dev <350466+crenshaw-dev@users.noreply.github.com>
2024-06-24 16:31:31 -04:00
gcp-cherry-pick-bot[bot]
00fc93b8b2 fix: Bug in edit support in Sources tab; Input to loader (#17588) (#18800) (#18801)
Co-authored-by: Keith Chong <kykchong@redhat.com>
2024-06-24 14:02:06 -04:00
gcp-cherry-pick-bot[bot]
16c20a84b8 fix(server): could not find source for metadata revision (#18744) (#18763) (#18782)
* fix(server): could not find source for metadata revision (#18744)



* lint



* the linter behaves poorly



* fix test



* share logic with chart endpoint



* more intuitive check



* remove debug line



---------

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-06-24 09:55:56 -04:00
gcp-cherry-pick-bot[bot]
2a9a62eeb7 fix(ui): set project to empty string if undefined (#18732) (#18733)
There are some situations where the project will be `undefined`. When
that happens, attempting to delete a repo won't be possible, since
the backend will be looking for a project with the literal name
`undefined`. To fix this, set an empty string for `undefined|null`
values.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-06-20 12:00:39 +03:00
github-actions[bot]
fe60670885 Bump version to 2.12.0-rc1 (#18716)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: ishitasequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-06-18 09:09:23 -04:00
dependabot[bot]
029b5acd54 chore(deps): bump ws from 8.17.0 to 8.17.1 in /ui-test (#18711)
Bumps [ws](https://github.com/websockets/ws) from 8.17.0 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.17.0...8.17.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 14:13:52 +03:00
dependabot[bot]
3f0d8d5629 chore(deps): bump ws from 8.17.0 to 8.17.1 in /ui (#18712)
Bumps [ws](https://github.com/websockets/ws) from 8.17.0 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.17.0...8.17.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 14:13:32 +03:00
dependabot[bot]
fe965ed14d chore(deps): bump library/redis in /test/container (#18707)
Bumps library/redis from `f5ef9e2` to `e422889`.

---
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-06-18 10:46:24 +03:00
dependabot[bot]
e5eddc3b46 chore(deps): bump library/golang in /test/container (#18706)
Bumps library/golang from `4950c1c` to `c2010b9`.

---
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-06-18 10:44:42 +03:00
dependabot[bot]
3fb9d9551d chore(deps-dev): bump @types/node from 20.14.2 to 20.14.4 in /ui-test (#18705)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.14.2 to 20.14.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 10:44:07 +03:00
dependabot[bot]
50f889c8b2 chore(deps): bump library/golang from 4950c1c to c2010b9 (#18704)
Bumps library/golang from `4950c1c` to `c2010b9`.

---
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-06-18 10:43:27 +03:00
Yonatan Sasson
f8e2ca717c fix: JSON unmarshaling error handling and nil return (#18700)
* fix: JSON unmarshaling error handling and nil return in ExecuteHealthLua function

Signed-off-by: Yonatan Sasson <yonatanxd7@gmail.com>

* Update util/lua/lua.go

Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Yonatan Sasson <yonatanxd7@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>
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-06-18 02:41:51 +00:00
yyzxw
9f0d2a8fb4 fix: docs site version selector broken (#18378)
Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>
Signed-off-by: root <root@daocloud.io>
2024-06-17 21:52:08 -04:00
Matthieu MOREL
8f281996c6 chore: enable require-error from testifylint on cmpserver and reposerver folders (#18702)
* chore: enable require-error from testifylint on cmpserver and reposerver folders

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

* Update app_k8s_events_test.go

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

---------

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-17 21:35:35 -04:00
Siddhesh Ghadi
4c6ad9dcc1 feat: Add labels on Application's k8s events (#11381) (#18160)
* Add labels on Application's k8s events

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

* Fix typo

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

* Add new cm keys & doc

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

* Fix typo

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

* correct rebase changes

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

* Fix linting

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

---------

Signed-off-by: Siddhesh Ghadi <sghadi1203@gmail.com>
2024-06-17 13:27:54 -04:00
Matthieu MOREL
d7fc1bf2d7 chore: enable require-error rule from errorlint linter on controller folder (#18690)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Signed-off-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-06-17 13:05:27 +00:00
Matthieu MOREL
4494fe5d3d chore: enable require-error rule from errorlint linter on applicationset folder (#18689)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Signed-off-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-06-17 09:51:06 +00:00
Matthieu MOREL
89a0cc33c5 chore: enable require-error rule from errorlint linter on pkg folder (#18691)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-17 11:54:22 +03:00
dependabot[bot]
e5c0526de4 chore(deps): bump library/golang from 0f76912 to a1dc408 (#18655)
Bumps library/golang from `0f76912` to `a1dc408`.

---
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-06-17 10:29:27 +03:00
dependabot[bot]
af6021542a chore(deps): bump library/golang in /test/container (#18653)
Bumps library/golang from `0f76912` to `a1dc408`.

---
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-06-17 10:29:00 +03:00
dependabot[bot]
1fd2f627e4 chore(deps): bump library/redis in /test/container (#18652)
Bumps library/redis from `01afb31` to `2cf43d9`.

---
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-06-17 09:53:54 +03:00
dependabot[bot]
d57800fbae chore(deps): bump chromedriver from 126.0.0 to 126.0.1 in /ui-test (#18699)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 126.0.0 to 126.0.1.
- [Commits](https://github.com/giggio/node-chromedriver/compare/126.0.0...126.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 09:53:00 +03:00
Matthieu MOREL
130c0f4f2e chore: missing qtar in go exclusions (#18698)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-16 23:21:45 +00:00
dependabot[bot]
52b1b434a3 chore(deps): bump tj-actions/changed-files from 42.0.2 to 44.5.2 (#18461)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 42.0.2 to 44.5.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](90a06d6ba9...d6babd6899)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  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-06-15 21:26:20 -04:00
github-actions[bot]
b3b090b086 [Bot] docs: Update Snyk reports (#18692)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-06-16 00:31:59 +00:00
Matthieu MOREL
c556cf7ea5 chore: enable require-error rule from errorlint linter on server folder (#18687)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-15 19:13:40 -04:00
Michael Crenshaw
2aefa9c4b2 chore(deps): bump gitops engine (#18679)
* chore(deps): bump gitops engine

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

* switch back to upstream

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-06-15 19:54:55 +00:00
Shady Rafehi
336cc29f14 feat(reposerver): Skip calling git fetch if commit to checkout exists locally (#18657)
* Skip fetch if revision to check out exists locally

Signed-off-by: Shady Rafehi <shady@canva.com>

* Test reposerver/repository.checkoutRevision

Signed-off-by: Shady Rafehi <shady@canva.com>

* Test client.IsRevisionPresent

Signed-off-by: Shady Rafehi <shady@canva.com>

* Signoff

Signed-off-by: Shady Rafehi <shady@canva.com>

* Update reposerver/repository/repository.go

Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Shady Rafehi <shady@canva.com>

---------

Signed-off-by: Shady Rafehi <shady@canva.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-15 15:10:13 -04:00
Michael Crenshaw
dbb9bc8f92 chore: add codecov config to CI approvers (#18686)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-15 18:57:39 +00:00
Michael Crenshaw
1ecd39741f chore: ignore mocks in codecov (#18685)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-15 18:54:26 +00:00
Matthieu MOREL
f770a2a73a chore: enable require-error rule from errorlint linter on test folder (#18684)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-15 18:54:09 +00:00
Michael Crenshaw
ad461c2fe1 chore(deps): bump Kustomize from 3.14.4 to 3.15.2 (#18680)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-15 14:47:19 -04:00
Matthieu MOREL
38d6db6e69 chore: enable require-error rule from errorlint linter on cmd folder (#18683)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-15 13:52:21 -04:00
Matthieu MOREL
eac08dcf79 chore: extend require-error rule from testifylint (#18681)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-15 13:51:18 -04:00
Michael Crenshaw
e3fa52dd83 chore: bump version (#18677)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-15 00:44:19 +00:00
Michael Crenshaw
cc700df89b chore(ci): only test four latest k8s versions (#18676)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-14 23:42:37 +00:00
Matthieu MOREL
0d1d1a1b18 chore: extend require-error rule from testifylint (#18675)
* chore: extend require-error rule from testifylint

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

* Update helm_test.go

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

---------

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-14 17:40:33 -04:00
Michael Crenshaw
2c0cc027c2 docs(cli): remove docs for non-existing argocd app set flags (#18671) (#18673)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-14 17:35:58 -04:00
Michael Crenshaw
170d5431d3 chore(deps): bump library/golang from 0f76912 to a1dc408 (#18674)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-14 17:29:42 -04:00
dependabot[bot]
57965576f0 chore(deps): bump library/node in /test/container (#18651)
Bumps library/node from `f73cc32` to `5e4044f`.

---
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-06-14 14:16:02 -04:00
dependabot[bot]
57ee536f5f chore(deps): bump library/node from f73cc32 to 5e4044f (#18654)
Bumps library/node from `f73cc32` to `5e4044f`.

---
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-06-14 14:15:51 -04:00
dependabot[bot]
1405413ac9 chore(deps): bump library/node from f73cc32 to 5e4044f in /ui-test (#18656)
Bumps library/node from `f73cc32` to `5e4044f`.

---
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-06-14 14:15:41 -04:00
Suraj yadav
2d5c59c94e fix(ui): dropdown-fixed in logs (#18470)
* dropdown-fixed

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

* removed-extra-css

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

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-06-14 12:37:46 -04:00
Josh Soref
48eb7f3608 docs: Improve the FAQ (#12039) (#18645)
* docs: Fix whitespace around after open paren in FAQ

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

* docs: Fix trailing whitespace

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

* docs: Fix grammar in FAQ wrt redis auth

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

* docs: Fix FAQ markdown for turning off redis auth

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

* docs: Start talking about manifest generation

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

---------

Signed-off-by: Josh Soref <jsoref@gmail.com>
2024-06-14 14:18:21 +00:00
Ishita Sequeira
03e6f8ae3f chore: update docs and skip gpg tests on appset (#18637)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-06-14 14:11:52 +00:00
Blake Pettersson
e02519467c fix: minor ui fixes for repositories (#18648)
* minor fixes

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

* fix: remove double import

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

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-06-14 09:20:54 -04:00
Matthieu MOREL
c9ea5b13d2 chore: extend require-error rule from testifylint (#18658)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-14 09:15:31 -04:00
dependabot[bot]
f8557d2586 chore(deps): bump codecov/codecov-action from 4.4.1 to 4.5.0 (#18650)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.4.1 to 4.5.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](125fc84a9a...e28ff129e5)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-14 09:13:25 -04:00
dependabot[bot]
1757b7e285 chore(deps): bump SonarSource/sonarqube-scan-action from 2.1.0 to 2.2 (#18649)
Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 2.1.0 to 2.2.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](86fe817756...540792c588)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-14 09:12:40 -04:00
Ishita Sequeira
7efde25890 docs: update multiple sources docs (#18662)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-06-14 09:04:16 -04:00
Keith Chong
ae61752c29 feat: Provide Edit support in Sources tab for multi-source app (#17588) (#17890)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-06-14 08:46:22 -04:00
Matthieu MOREL
9f1e2e8453 chore: enable gocritic linter (#18633)
* chore: enable gocritic linter

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

* Update settings.go

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

* Update app.go

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

* Update grpcproxy.go

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

* Update grpcproxy.go

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

* Update util.go

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

* Update server.go

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

* Update app_management_ns_test.go

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

* Update app_management_test.go

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

* Update path_traversal.go

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

* Update sessionmanager.go

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

* Update .golangci.yaml

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

---------

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-13 15:10:00 -04:00
rumstead
9592b84bcb feat: adding gocover to e2e tests (#18130) (#18537)
* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* feat: adding go coverage to e2e tests

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

* try putting profiles in different directories

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

* does this upload the whole directory?

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

* create directories and only run one test

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

* shut everything down before uploading coverage

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

* don't fail on goreman failure

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

* sleep 30

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

* always upload server output

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

* fix: implement graceful shutdown for api server

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

* Shutdown servers in parallel

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

* add noop shutdown function on api server constructor

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

* fix waitgroup

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

* more attempts to gracefully shut down

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

* more tests

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

* cleanup

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

* revert graceful shutdown work, needs more work

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

* more graceful shutdown cleanup

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

* lint

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

* feat: adding go coverage to e2e tests

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

---------

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-06-13 14:17:07 -04:00
dependabot[bot]
5efa404843 chore(deps): bump library/golang in /test/container (#18625)
Bumps library/golang from `969349b` to `0f76912`.

---
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-06-13 10:22:04 -07:00
Raghavi
2040bd6871 fix: Correction in Rocket.chat documentation (#18498)
* Replaced email to SAMAccountName

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

* Replaced email to SAMAccountName

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

* Updated go.mod

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

* Revert "Updated go.mod"

This reverts commit a6466530041cb541fca020024c77047dcfed2ba5.

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

* Updated go.mod

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

* Fixed failing CI

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

* Fixed failing CI

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

* Fixed failing CI

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

* Fixed failing CI

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

---------

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>
Signed-off-by: Raghavi Shirur <raghaviss11@gmail.com>
2024-06-13 12:58:01 -04:00
Keith Chong
9bc1578055 feat: Support Rollback multi-source apps; Follow-up to PR 14124 (#18615)
* feat: Support Rollback multi-source apps; Follow-up to PR 14124

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

* Common up code

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

---------

Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-06-13 12:53:24 -04:00
Blake Pettersson
7adec6efb2 ci: updated yarn version (#18631)
With the Dependabot Node bump in #18610, the test container no longer
builds due to a change in Yarn version.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-06-13 10:20:24 -04:00
dependabot[bot]
6f76e7130f chore(deps): bump chromedriver from 125.0.3 to 126.0.0 in /ui-test (#18627)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 125.0.3 to 126.0.0.
- [Commits](https://github.com/giggio/node-chromedriver/compare/125.0.3...126.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-13 10:42:32 +03:00
dependabot[bot]
6232d73c45 chore(deps): bump bitnami/kubectl in /test/container (#18626)
Bumps bitnami/kubectl from `cdca6c1` to `e704ebf`.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-13 10:30:29 +03:00
dependabot[bot]
fba3c2eac3 chore(deps): bump library/golang from 969349b to 0f76912 (#18628)
Bumps library/golang from `969349b` to `0f76912`.

---
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-06-13 10:29:35 +03:00
Matthieu MOREL
f7341ae652 chore: enable errorlint linter on cmpserver and reposerver folders (#18629)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-13 10:29:03 +03:00
Matthieu MOREL
311c0599d9 chore: enable require-error rule from testifylint linter (#18621)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-12 21:53:29 -04:00
Matthieu MOREL
f1848f5455 chore: enable errorlint linter on server folder (#18624)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-12 19:43:25 -04:00
Matthieu MOREL
204176a06b chore: enable errorlint linter on applicationset folder (#18618)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-12 16:29:03 -04:00
Suraj yadav
74a420dc61 fix(ui): pod log view dark mode toggle (#18424)
* moon-button-fixed

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

* reverted

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

* as it is

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

---------

Signed-off-by: Surajyadav <harrypotter1108@gmail.com>
2024-06-12 08:49:39 -04:00
dependabot[bot]
8f280cfdc6 chore(deps): bump braces from 3.0.2 to 3.0.3 in /ui-test (#18584)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-12 11:21:19 +03:00
dependabot[bot]
33df5acd5c chore(deps): bump library/node from 22.2.0 to 22.3.0 (#18611)
Bumps library/node from 22.2.0 to 22.3.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-06-12 11:17:57 +03:00
dependabot[bot]
6c1f0f8cff chore(deps): bump library/node from 22.2.0 to 22.3.0 in /test/container (#18610)
Bumps library/node from 22.2.0 to 22.3.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-06-12 11:15:03 +03:00
dependabot[bot]
2c532580b3 chore(deps): bump library/node from 22.2.0 to 22.3.0 in /ui-test (#18609)
Bumps library/node from 22.2.0 to 22.3.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-06-12 11:14:49 +03:00
Ishita Sequeira
48bdf949a5 feat(appset): appset git generator verifies GPG signatures (#18545)
* feat(appset): appset git generator verifies GPG signatures

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

* fix unit tests

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

* fix generated code

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

* add check for signatures in project and fix tests

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

* fix tests

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

* add e2e tests

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

* address golang ci lint issue

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

* fix golangci lint

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

* Address comments

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

* rebase and resolve conflicts

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

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-06-12 07:57:25 +00:00
janiskemper
3e2cfb1387 docs: Add Syself to USERS.md (#18593)
Signed-off-by: janiskemper <janis.kemper@syself.com>
2024-06-11 15:33:45 -04:00
Matthieu MOREL
140f17255a chore: enable errorlint linter on controller folder (#18596)
* chore: enable errorlint linter on controller folder

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

* Update cache.go

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

* Update cache.go

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

---------

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-11 15:33:22 -04:00
Matthieu MOREL
3160369469 chore: enable compare and nil-compare rules from testifylint linter (#18581)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-11 16:38:35 +00:00
Matthieu MOREL
7cf5ed06d4 chore: enable gofumpt and whitespace linters (#18567)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-11 15:41:55 +00:00
Matthieu MOREL
d7e99224d4 chore: enable errorlint linter on util folder (#18588)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-11 10:42:32 -04:00
dependabot[bot]
355ec75bed chore(deps): bump docker/build-push-action from 5.3.0 to 5.4.0 (#18583)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](2cdde995de...ca052bb54a)

---
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-06-11 04:43:07 +00:00
Jorge Turrado Ferrero
0e531c956e feat(application-controller): Add support for rollback multi-source applications (#14124)
* feat(application-controller): Add support for rollback multi-source applications

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* regenerate codegen after rebase

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* fix tests

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* fix front linting

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* update test

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* update codegen

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* Update server/application/application.go

Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Signed-off-by: Jorge Turrado Ferrero <Jorge_turrado@hotmail.es>

* apply feedback

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* fix errors

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* add support for switching between single and multi

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* fix dereference issue

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* remove unnecesary code

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* Rebase master

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>

* fix style

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* fix reference

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* add a comment

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>

---------

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>
Signed-off-by: Jorge Turrado Ferrero <Jorge_turrado@hotmail.es>
Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-06-10 17:54:07 -04:00
Michael Crenshaw
d8c8300f30 chore: add sonar-project.properties to cd in CODEOWNERS (#18577)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-10 21:41:17 +00:00
Matthieu MOREL
4a01f8a69a chore: enable expected-actual rule from testifylint linter (#18575)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-10 20:33:00 +00:00
Matthieu MOREL
772c31680b chore: enable errorlint linter on cmd folder (#18578)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-10 20:32:45 +00:00
Michael Crenshaw
879cc60c7b chore(ci): ignore test files from sonar monitoring (#18573)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-10 15:36:30 -04:00
Justin Marquis
020881af84 chore(deps): upgrade haproxy to 2.6.17-alpine (#18574)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-06-10 19:06:22 +00:00
bmopuri
45d68422da fix: InferenceService healthy condition change (#18340)
* fix: InferenceService healthy condition change

With Kerver upgrade to v12.0, Inference graphs and Inference Services can be deployed in raw mode that reduces overall resources that gets created.
Several knative resource dependency has been reduced. There by reduces the number of conditions in the status field as well.

Signed-off-by: Mopuri, Bharath <bharath_mopuri@intuit.com>

* fix: addressed code review comments

Protected new changes with a specific kserve v12 onwards Rawdeployment mode while keeping the existing resource checks as is.

Signed-off-by: Mopuri, Bharath <bharath_mopuri@intuit.com>

* Update resource_customizations/serving.kserve.io/InferenceService/health.lua

Co-authored-by: Rachit Chauhan <rachitchauhan43@gmail.com>
Signed-off-by: bmopuri <bharath.mopuri@gmail.com>

---------

Signed-off-by: Mopuri, Bharath <bharath_mopuri@intuit.com>
Signed-off-by: bmopuri <bharath.mopuri@gmail.com>
Co-authored-by: Mopuri, Bharath <bharath_mopuri@intuit.com>
Co-authored-by: Rachit Chauhan <rachitchauhan43@gmail.com>
2024-06-10 18:25:44 +00:00
rumstead
2547abc82d fix: sonar scanner #18513 (#18559)
* fix: sonar scanning

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

* updating action to use sha

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

---------

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-10 16:38:32 +00:00
Matthieu MOREL
32519c70a5 chore: enable error-nil rule from testifylint linter (#18544)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-10 10:38:55 -04:00
Matthieu MOREL
0d153ef253 chore: enable errorlint linter on pkg folder (#18563)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-10 09:20:23 -04:00
Matthieu MOREL
33df2ce698 chore: enable goimports linter (#18564)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-10 09:18:12 -04:00
github-actions[bot]
1d83e65e43 [Bot] docs: Update Snyk reports (#18561)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-06-10 10:02:05 +03:00
Blake Pettersson
4fd478b271 feat: project-scoped repository credential improvements (#18388)
* feat: project-scoped repo cred improvements

Implementation of #18290

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

* fix: missed a test

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

* wip project key changes

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

* test: update mocks

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

* test: fix tests

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

* fix: equivalence even if project is empty

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

* fix: wip delete

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

* refactor: remove repositorydb

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

* chore: improve logging

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

* fix: pass project to getrepository

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

* test: fix failing test

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

* fix: compare with project secret instead of app secret

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

* fix: get repository needs same logic as delete

Need to update the spec accordingly.

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

* feat: add project flag to repo rm command

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

* docs: make codegen

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

* test: fix failing test

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

* test: more failing tests

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

* chore: minor cleanups

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

* chore: propagate project from ui

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

* test: add new test cases

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

* chore: code review, improve formulation

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

* refactor: address cr feedback

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

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-06-07 18:47:55 -07:00
Matthieu MOREL
44b8dc1a4c chore: enable len and empty rules from testifylint linter (#18516)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-07 15:12:50 -04:00
Justin Marquis
50745f08e6 chore(deps): upgrade helm to 5.4.2 (#18556)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-06-07 11:10:42 -07:00
Michael Crenshaw
c4756c53e1 fix(ci): run codegen for docs changes (#18536)
* fix(ci): run codegen for docs changes

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

* test docs change

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

* revert test change

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: Blake Pettersson <blake.pettersson@gmail.com>
2024-06-07 12:09:50 +00:00
Justin Marquis
37238ab7c3 chore: bump go version to 1.22.4 (#18539)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-06-07 13:37:06 +02:00
Justin Marquis
d2fddb862f fix: github.com/cloudflare/circl High CVE (#18538)
Signed-off-by: Justin Marquis <justin@akuity.io>
2024-06-07 13:27:07 +02:00
Michael Crenshaw
2077688828 test: fix e2e tests after GHSA-3cqf-953p-h5cp (#18543) 2024-06-06 19:23:15 -04:00
William Parr
8107303398 fix(applicationset): prevent applicationset progressive sync from stalling in pending (#17296)
* fix(applicationset): prevent applicationset progressive sync from stalling in pending

Signed-off-by: wparr-circle <william.parr@circle.com>

* chore: remove out of date misleading comment

Signed-off-by: William Parr <william.parr@circle.com>

* chore: add reflect package removed by merge

Signed-off-by: wparr-circle <william.parr@circle.com>

---------

Signed-off-by: wparr-circle <william.parr@circle.com>
Signed-off-by: William Parr <william.parr@circle.com>
2024-06-06 16:29:15 -04:00
pasha-codefresh
c2647055c2 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>

* 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>

* 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
256d90178b 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
Nicholas Hawkes
60cdd7dde2 docs: update notifications troubleshooting-errors doc with custom secret (#18490)
* Update troubleshooting-errors with custom secret 

Adding section for a custom secret

Signed-off-by: Nicholas Hawkes <hawkesn@gmail.com>

* Update troubleshooting-errors.md

Signed-off-by: Nicholas Hawkes <hawkesn@gmail.com>

---------

Signed-off-by: Nicholas Hawkes <hawkesn@gmail.com>
2024-06-06 10:45:51 +03:00
dependabot[bot]
362b82123e chore(deps): bump bitnami/kubectl in /test/container (#18517)
Bumps bitnami/kubectl from `0aef4af` to `cdca6c1`.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 10:44:58 +03:00
dependabot[bot]
240c008ef5 chore(deps-dev): bump @types/node from 20.14.1 to 20.14.2 in /ui-test (#18519)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.14.1 to 20.14.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 10:44:37 +03:00
Paul Larsen
92b22fd70b Move code around to fix commit attribution. (#18515)
Signed-off-by: Paul Larsen <pnvlarsen@gmail.com>
2024-06-06 00:35:06 +00:00
Pablo Aguilar
e54e45e1fd feat: changes git client to resolve semantic versioning tags (#17566)
* feat: changes git client to resolve semantic versioning tags

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>

* docs: update documentation

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>

* feat: simplify `resolveSemverRevision` method

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>

* chore: add two more test cases

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>

* chore: update `resolveSemverRevision` behavior

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>

* chore: add end to end test

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>

* chore: fix end to end test

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>

* chore: improve semver constraint e2e testing

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>

---------

Signed-off-by: Pablo Aguilar <pablo.aguilar@outlook.com.br>
2024-06-05 20:25:06 -04:00
Blake Pettersson
175d7eecf0 docs: proposal for enhancing scoped repository credentials (#18290)
* docs: proposal for enhancing scoped repository credentials

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

* docs: flesh out section on project matching

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

* docs: scope down proposal

For the sake of time and simplicity, we will not do any modifications
of `repo-creds` secrets for this proposal.

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

* docs: added feedback

Feedback from contributors' meeting, part one.

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

* docs: modification date

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

* docs: remove use cases

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

* docs: spec update

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

* docs: clarify backward-compatability

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

* chore: further clarification of backwards compatibility

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

* Update docs/proposals/project-scoped-repository-enhancements.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* Update docs/proposals/project-scoped-repository-enhancements.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

* Update docs/proposals/project-scoped-repository-enhancements.md

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

* chore: behavior in line with current impl

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

* docs: add reviewers

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

* Update docs/proposals/project-scoped-repository-enhancements.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>

---------

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-06-05 12:58:38 -10:00
Matthieu MOREL
71e1f30741 fix: enable bool-compare rule from testifylint linter (#18414) 2024-06-05 18:13:45 -04:00
Akram Ben Aissi
75cd97d6d4 feat: Consistent hashing with bounded loads algorithm for sharding (#16564)
* Adds consistent hashing with bound loads sharding algorithm

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

* Make the assignement consistent accross all clusters
- The assignment or running of the algorithm has to be consistent across all the clusters. Changed the function to return a map where the consistent hash will be used to build the map

- Modifications to the createConsistentHashsingWithBoundLoads function. This will create the map for cluster to shard. Note that the list must be consistent across all shards so that is why the cluster list must be sorted before going through the consistent hash algorithm

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

* Extracting constant and simplifying boolean expression

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

* Update docs: consistent-hashing sharding algorithm

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

---------

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>
2024-06-05 18:28:19 +00:00
bhargav joshi
ea909fe820 Update ingress.md (#18491)
https://github.com/argoproj/argo-cd/issues/16611

Signed-off-by: bhargav joshi <bhargav.joshi@gmail.com>
2024-06-05 18:25:43 +00:00
dependabot[bot]
05576fdcd7 chore(deps): bump goreleaser/goreleaser-action from 5.1.0 to 6.0.0 (#18504)
* chore(deps): bump goreleaser/goreleaser-action from 5.1.0 to 6.0.0

Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 5.1.0 to 6.0.0.
- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)
- [Commits](5742e2a039...286f3b13b1)

---
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>

* bump goreleaser version

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

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-05 13:42:48 -04:00
Zadkiel AHARONIAN
69e82ccbd6 chore: allow override of default e2e test args (#18415)
Signed-off-by: Zadkiel AHARONIAN <hello@zadkiel.fr>
2024-06-04 22:45:53 -04:00
yyzxw
3703a1ee7d fix: prevent preview changes sync (#18400)
Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>
2024-06-04 22:19:19 -04:00
Sn0rt
c99fd49ab2 feat: argocd cli support fish completion (#18484)
* feat: argocd cli support fish completion

Signed-off-by: Sn0rt <wangguohao.2009@gmail.com>

* fix: update user doc for argocd fish completion

Signed-off-by: Sn0rt <wangguohao.2009@gmail.com>

---------

Signed-off-by: Sn0rt <wangguohao.2009@gmail.com>
2024-06-04 17:15:58 -04:00
github-actions[bot]
f19825e79a [Bot] docs: Update Snyk reports (#18471)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-06-04 15:30:07 +03:00
dependabot[bot]
6f43b68aff chore(deps): bump chromedriver from 125.0.2 to 125.0.3 in /ui-test (#18477)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 125.0.2 to 125.0.3.
- [Commits](https://github.com/giggio/node-chromedriver/compare/125.0.2...125.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-04 15:26:35 +03:00
dependabot[bot]
c1960b5b87 chore(deps): bump @types/selenium-webdriver in /ui-test (#18476)
Bumps [@types/selenium-webdriver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/selenium-webdriver) from 4.1.22 to 4.1.23.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/selenium-webdriver)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-04 15:25:59 +03:00
dependabot[bot]
d959a68450 chore(deps-dev): bump @types/node from 20.12.13 to 20.14.1 in /ui-test (#18493)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.12.13 to 20.14.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-04 15:25:26 +03:00
Mathieu Parent
d90cfafd21 docs: fix indentation (#18494)
Signed-off-by: Mathieu Parent <math.parent@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-06-04 15:24:32 +03:00
dependabot[bot]
1f0c658e3f chore(deps): bump library/busybox in /test/e2e/multiarch-container (#18492)
Bumps library/busybox from `5eef5ed` to `9ae97d3`.

---
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-06-04 13:51:22 +03:00
Michael Crenshaw
2639c59bc6 chore: use redis secret when running locally (#18489)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-06-03 16:29:27 -04:00
Keith Chong
85ed1b96ea fix: Update braces package to 3.0.3 (#18459)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-06-02 10:51:41 +03:00
dependabot[bot]
4fda009ea3 chore(deps): bump foundation-sites from 6.7.5 to 6.8.1 in /ui (#18462)
Bumps [foundation-sites](https://github.com/foundation/foundation-sites) from 6.7.5 to 6.8.1.
- [Release notes](https://github.com/foundation/foundation-sites/releases)
- [Commits](https://github.com/foundation/foundation-sites/compare/v6.7.5...v6.8.1)

---
updated-dependencies:
- dependency-name: foundation-sites
  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-05-31 17:47:14 +03:00
Jann Fischer
ef37b39754 Revert "feat(server): log app Spec along with event (#16416)" (#18458)
This reverts commit 820f4d861a.

Signed-off-by: jannfis <jann@mistrust.net>
2024-05-30 20:03:34 +03:00
Tim Collins
1450f1031c chore: add pipekit to argocd USERS (#18457)
* chore: add pipekit to argocd USERS

Signed-off-by: Tim Collins <tim@thecollins.team>

* Trigger Build

Signed-off-by: Tim Collins <tim@thecollins.team>

---------

Signed-off-by: Tim Collins <tim@thecollins.team>
2024-05-30 13:35:48 +00:00
Tim Collins
7acd9f0659 docs: remove the recommendation to optionally auth redis for secrets mgmnt (#18455)
Signed-off-by: Tim Collins <tim@thecollins.team>
2024-05-30 16:34:12 +03:00
Nabil BENDAFI
7ccf826721 feat: Kyriba is using ArgoCD (#18456)
Signed-off-by: Nabil BENDAFI <nabilbendafi@users.noreply.github.com>
2024-05-30 03:18:20 -10:00
Miguel de Barros
1e2f5987d2 feat(issue/#17003): implement camel.apache.org/Integration CRD health checks (#17004)
* feat: implement camel.apache.org/Integration CRD health checks

Added custom health checks for Camel-K Integration CRDs

Signed-off-by: mdebarros <migueld@debarros.me>

* chore: cleanup up main health.lua

Signed-off-by: mdebarros <miguel@debarros.me>

---------

Signed-off-by: mdebarros <migueld@debarros.me>
Signed-off-by: mdebarros <miguel@debarros.me>
Co-authored-by: mdebarros <migueld@debarros.me>
2024-05-30 14:35:19 +03:00
Soumya Ghosh Dastidar
4d8436b7e1 feat: removed legacy app tracking label (#13203)
* feat: removed legacy app tracking label

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

* feat: refactor SetAppInstanceLabel func

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

* feat: refactor SetAppInstance func

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

* feat: refactor SetAppInstanceAnnotation func

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

* feat: refactored SetAppInstance() func

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

---------

Signed-off-by: Soumya Ghosh Dastidar <gdsoumya@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-05-30 11:50:20 +03:00
dependabot[bot]
e3dff07163 chore(deps-dev): bump monaco-editor-webpack-plugin in /ui (#18450)
Bumps [monaco-editor-webpack-plugin](https://github.com/microsoft/monaco-editor) from 7.0.1 to 7.1.0.
- [Release notes](https://github.com/microsoft/monaco-editor/releases)
- [Changelog](https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/microsoft/monaco-editor/commits)

---
updated-dependencies:
- dependency-name: monaco-editor-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-30 10:37:24 +03:00
dependabot[bot]
ced9a4aa62 chore(deps-dev): bump @types/node from 20.12.12 to 20.12.13 in /ui-test (#18449)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.12.12 to 20.12.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-30 10:34:39 +03:00
dependabot[bot]
807754ce41 chore(deps-dev): bump sass-loader from 12.6.0 to 14.2.1 in /ui (#18451)
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 12.6.0 to 14.2.1.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v12.6.0...v14.2.1)

---
updated-dependencies:
- dependency-name: sass-loader
  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>
2024-05-30 10:34:21 +03:00
Huseyin Caliskan
2d2fb087ab Update ingress.md (#17766)
Replace argocd-redis-ha-haproxy in the istio documentation with argocd-redis.

Signed-off-by: Huseyin Caliskan <14217365+sakirma@users.noreply.github.com>
2024-05-29 21:12:47 -06:00
dependabot[bot]
55416adfcf chore(deps): bump @fortawesome/fontawesome-free in /ui (#18397)
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 6.4.0 to 6.5.2.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.4.0...6.5.2)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  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-05-29 18:04:28 +03:00
Alexandre Gaudreault
ef9de40afa feat(ui): list dependent resources in delete popup (#18116)
* add icon in app table view

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

* use defaut menu in tree-grouped

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

* use default menu in pod views

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

* fix custom delete actions

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

* menu item in list

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

* fix pod wrongly identified as root in network graph

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

* update docs error

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

* call delete pod action if kind is pod

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

* add logs action to pods

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

* delete in app details

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

* use managed instead of root for menu items

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

* lint fix

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

* fix lint again

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

* feat(ui): list dependent resources in delete popup

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

* linting

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

* childs to children

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

* update ui dep

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

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-05-29 10:53:08 -04:00
Philipp Erbelding
a36f50fce8 docs: Fix "core" link in getting started (#18437)
Signed-off-by: Philipp Erbelding <philipp@copythat.de>
Signed-off-by: Philipp Erbelding <philipp.erbelding@cleverbridge.com>
2024-05-29 09:44:55 +03:00
dependabot[bot]
21b1514465 chore(deps): bump docker/login-action from 3.1.0 to 3.2.0 (#18440)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](e92390c5fb...0d4c9c5ea7)

---
updated-dependencies:
- dependency-name: docker/login-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-05-29 09:01:30 +03:00
BarAshkenazi
dd3bb2bad4 fix: repo-server should allow not to skip hidden directories (#17957)
* Update repository.go

Signed-off-by: BarAshkenazi <barashkenazi2@gmail.com>
Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* support hidden directories in repo server

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* support hidden directories in repo server

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* add dir exclusion pattern

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* support hidden directories

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* support hidden directories in repo server

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* support hidden directories in repo server

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* support hidden directories in repo server

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* support hidden directories in repo server

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

* support hidden directories in repo server

Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>

---------

Signed-off-by: BarAshkenazi <barashkenazi2@gmail.com>
Signed-off-by: Bar <bar.ashkenazi@appsflyer.com>
Co-authored-by: Bar <bar.ashkenazi@appsflyer.com>
2024-05-28 14:25:23 -04:00
Matthieu MOREL
9fe1dbfcad fix: enable misspell linter (#18412)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-05-28 12:51:04 +03:00
dependabot[bot]
8a28279921 chore(deps): bump library/redis in /test/container (#18421)
Bumps library/redis from `b32ea6e` to `01afb31`.

---
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-05-27 10:17:39 +03:00
github-actions[bot]
8f02ec1c3e [Bot] docs: Update Snyk reports (#18413)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-05-27 10:16:28 +03:00
Matthieu MOREL
cd3c478a7a ci(lint): create .golangci.yaml (#18410)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-05-25 18:27:25 -04:00
Ishita Sequeira
d871b7f0c2 fix source ordering issue in manifest generation for multi-source app while using manifests and diff commands (#18395) 2024-05-24 16:50:56 -04:00
dependabot[bot]
1432f11bd9 chore(deps): bump chromedriver from 125.0.1 to 125.0.2 in /ui-test (#18399)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 125.0.1 to 125.0.2.
- [Commits](https://github.com/giggio/node-chromedriver/compare/125.0.1...125.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-24 13:38:51 +03:00
Rafael Broseghini
97648eeb60 fixes list generator cluster element (#18389)
Signed-off-by: Dan Garfield <dan@codefresh.io>
2024-05-23 14:32:07 -06:00
dependabot[bot]
a95d595394 chore(deps): bump goreleaser/goreleaser-action from 5.0.0 to 5.1.0 (#18376)
Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)
- [Commits](7ec5c2b0c6...5742e2a039)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-23 11:48:00 -04:00
dependabot[bot]
45832ce1ab chore(deps): bump @types/superagent from 4.1.21 to 8.1.6 in /ui (#17606)
Bumps [@types/superagent](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/superagent) from 4.1.21 to 8.1.6.
- [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-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-05-23 13:53:05 +03:00
dependabot[bot]
781261aab4 chore(deps-dev): bump @types/react-autocomplete in /ui (#18374)
Bumps [@types/react-autocomplete](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-autocomplete) from 1.8.6 to 1.8.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-autocomplete)

---
updated-dependencies:
- dependency-name: "@types/react-autocomplete"
  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-05-23 13:06:45 +03:00
dependabot[bot]
5452bf1250 chore(deps): bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (#18182)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](e1523de757...59acb6260d)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-23 11:33:21 +03:00
Blake Pettersson
049900e646 chore: automate mock generation v2 (#18371)
* Add go:generate statements for mockery

Signed-off-by: Will Roden <will@roden.cc>

* revert whitespace change

Signed-off-by: Will Roden <will@roden.cc>

* go generate everything

Signed-off-by: Will Roden <will@roden.cc>

* make gogen

Signed-off-by: Will Roden <will@roden.cc>

* chore: upgrade to mockery v2.40.2

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

---------

Signed-off-by: Will Roden <will@roden.cc>
Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
Co-authored-by: Will Roden <will@roden.cc>
2024-05-23 11:15:15 +03:00
dependabot[bot]
9f27197da6 chore(deps): bump chromedriver from 125.0.0 to 125.0.1 in /ui-test (#18375)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 125.0.0 to 125.0.1.
- [Commits](https://github.com/giggio/node-chromedriver/compare/125.0.0...125.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-23 11:13:19 +03:00
dependabot[bot]
37900ee774 chore(deps-dev): bump @types/react-paginate from 6.2.1 to 7.1.4 in /ui (#18373)
Bumps [@types/react-paginate](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-paginate) from 6.2.1 to 7.1.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-paginate)

---
updated-dependencies:
- dependency-name: "@types/react-paginate"
  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>
2024-05-22 23:50:52 -04:00
Nikhil Vaidyar
600737abe4 feat: Added the comment to support CLI message to get extended output (#18253)
* feat: Added the comment to support CLI message to get extended output #18226

Signed-off-by: nikzayn <nikhilvaidyar1997@gmail.com>

* feat: Updated proto and swagger #18226

Signed-off-by: nikzayn <nikhilvaidyar1997@gmail.com>

* feat: Updated manifest files

Signed-off-by: nikzayn <nikhilvaidyar1997@gmail.com>

---------

Signed-off-by: nikzayn <nikhilvaidyar1997@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-05-23 01:35:51 +00:00
May Zhang
d73eb8f7fd fix: remove Egress NetworkPolicy for argocd-redis and argocd-redis-ha-haproxy (#18367)
* fix: runing local failed

Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>

* fix: Redis egress removal

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

---------

Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>
Signed-off-by: May Zhang <may_zhang@intuit.com>
Co-authored-by: yyzxw <1020938856@qq.com>
2024-05-22 19:47:09 -04:00
github-actions[bot]
52acbd55a7 [Bot] docs: Update Snyk reports (#18365)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-05-22 10:24:50 -07:00
dependabot[bot]
8776cc1a69 --- (#18362)
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-05-22 16:08:43 +00:00
Dan Garfield
22a3a68fbb docs: Remove special characters from update doc (#18363)
* Remove special characters from update doc

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

* remove extra line

* remove additional line

---------

Signed-off-by: Dan Garfield <dan@codefresh.io>
2024-05-22 09:44:50 -06:00
rkriplani76
cd1435608d removing strikeout as it was populating special character issue #14139 (#14823)
Signed-off-by: Rajesh Kriplani <rajesh.kriplani@gmail.com>
2024-05-22 18:26:03 +03:00
Michael Chen
00672a8ff5 docs: Clarify how Argo CD detects and uses Kustomize (#11417)
* Add an example similar to the Helm topic

This topic is missing a simple example like the next topic "Helm" to show how to define a Kustomize based application.
https://argo-cd.readthedocs.io/en/stable/user-guide/helm/

Signed-off-by: Michael Chen <4326639+mcgitty@users.noreply.github.com>

* Clarify how Argo CD detects and use Kustomize

This description seems trivial to the designer of Argo CD, but it is a critical information for people learning Argo CD.

Signed-off-by: Michael Chen <4326639+mcgitty@users.noreply.github.com>

* Also mention 'path' in spec.source

Signed-off-by: Michael Chen <4326639+mcgitty@users.noreply.github.com>

* Update docs/user-guide/kustomize.md

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

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

* Update docs/user-guide/kustomize.md

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

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

---------

Signed-off-by: Michael Chen <4326639+mcgitty@users.noreply.github.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-05-22 15:13:11 +00:00
Cayde6
ee9b38fe5c feat: add ls-remote request fail metric (#18250)
Added argocd_git_lsremote_fail_total metric.
Increment this metric if a git ls-remote request fails.

Signed-off-by: Jack-R-lantern <tjdfkr2421@gmail.com>
2024-05-22 17:37:22 +03:00
Zack Robinson
59ce337d32 fix: app names with non-alphanumeric characters in position 63 break syncs (issue #18237) (#18256)
* Ensure truncated app label does not end in a special character

Signed-off-by: Zack Robinson <robinsoz@arcesium.com>

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

Signed-off-by: Zack Robinson <robinsoz@arcesium.com>

* Add test for out-of-bounds check

Signed-off-by: Zack Robinson <robinsoz@arcesium.com>

---------

Signed-off-by: Zack Robinson <robinsoz@arcesium.com>
2024-05-22 08:30:54 -06:00
dependabot[bot]
4606476adb --- (#18313)
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/selenium-webdriver"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-22 15:03:58 +03:00
dependabot[bot]
6a68b95dfc --- (#18352)
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-22 14:16:19 +03:00
Michael Crenshaw
bd671e8473 chore(deps): bump golang.org/x/net from v0.21.0 to v0.25.0 (#18176)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-22 14:15:24 +03:00
dependabot[bot]
96c2a95503 --- (#18346)
updated-dependencies:
- dependency-name: assert
  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-05-22 12:36:50 +03:00
dependabot[bot]
cef69c3bb1 --- (#18345)
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>
2024-05-22 12:29:25 +03:00
dependabot[bot]
0ec7f82fa4 --- (#18349)
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-22 12:26:28 +03:00
dependabot[bot]
4aa62699da --- (#18353)
updated-dependencies:
- dependency-name: actions/setup-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>
2024-05-22 12:25:19 +03:00
Mark Tallentire
6110581e97 Update docs for azure workload identity cluster setup (#18357)
Adds a missing step to the docs for declarative setup of an AKS cluster using workload identity for adding annotations to the service accounts.

Signed-off-by: Mark Tallentire <lonelycooler@googlemail.com>
2024-05-22 12:00:53 +03:00
david-wu-octopus
462c9ecd11 fix(ui): Fix jumpy "Source" panel when typing (issue #15961) (#18227)
* Debounce `props.onAppChanged()` with a wait time of 500ms

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

* Increase debounce wait time to 800ms

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

* Fix linting error

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

---------

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>
2024-05-22 11:59:39 +03:00
Michael Crenshaw
bc53266591 chore(deps): bump golangci/golangci-lint-action from v3.7.0 to 6.0.1 (#18148)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-21 18:06:03 -04:00
Michael Crenshaw
1453dc4c34 fix(ci): codecov (#18335)
* fix(ci): codecov

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

* build UI for frontend or backend

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

* use token, fail ci on error

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-05-21 21:09:09 +00:00
Michael Crenshaw
78e0fc4b7d docs: redis-ha registry change (#18329)
* docs: redis-ha registry change

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

* update language

Co-Authored-By: Avo Sepp <68659218+avo-sepp@users.noreply.github.com>
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: Avo Sepp <68659218+avo-sepp@users.noreply.github.com>
2024-05-21 19:30:26 +00:00
May Zhang
8dff209cba 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: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Co-authored-by: pashakostohrys <pavel@codefresh.io>
2024-05-21 16:23:09 +03:00
May Zhang
13d5803e75 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: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
Co-authored-by: pashakostohrys <pavel@codefresh.io>
2024-05-21 16:22:43 +03:00
dependabot[bot]
2dd5cd8b9a --- (#18318)
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 13:52:50 +03:00
lenglet-k
f13861740c feat: Implement KafkaConnector,KafkaBridge CRD health checks (#18316) 2024-05-21 12:10:53 +03:00
dependabot[bot]
e0968177e0 --- (#18314)
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-major
- dependency-name: "@types/mocha"
  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>
2024-05-21 11:46:22 +03:00
A S Rakesh Krishna
43cb8003d1 add fullscreen prop (#18309)
Signed-off-by: Fluder-Paradyne <121793617+Fluder-Paradyne@users.noreply.github.com>
2024-05-21 11:16:11 +03:00
dependabot[bot]
441367ff52 --- (#18307)
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-05-21 11:01:02 +03:00
dependabot[bot]
fda368b6bb chore(deps-dev): bump @types/node from 14.14.14 to 20.12.12 in /ui-test (#18301)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.14 to 20.12.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 10:35:30 +03:00
dependabot[bot]
e34aa2f4b4 --- (#18315)
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>
2024-05-21 10:34:32 +03:00
dependabot[bot]
63743315a6 --- (#18311) 2024-05-21 09:37:12 +03:00
dependabot[bot]
36b8ff51d7 --- (#18312) 2024-05-21 09:36:40 +03:00
Brice Burgess
4c754c8ad4 docs(webhook): include installation instructions on Triggers and Templates page (#18304) 2024-05-21 09:07:05 +03:00
dependabot[bot]
d1135c133b chore(deps-dev): bump dotenv from 8.2.0 to 16.4.5 in /ui-test (#18298) 2024-05-21 09:04:07 +03:00
dependabot[bot]
5d31b03d7d chore(deps): bump gitpod/workspace-full from 511cecd to f569b00 (#17565) 2024-05-21 09:03:37 +03:00
dependabot[bot]
b447dccde8 chore(deps): bump chromedriver from 94.0.0 to 125.0.0 in /ui-test (#18303)
Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 94.0.0 to 125.0.0.
- [Commits](https://github.com/giggio/node-chromedriver/compare/94.0.0...125.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-20 23:09:47 +03:00
pasha-codefresh
aa7f1c5c2e chore: update jest version (#18295)
* update jest version in order to resolve
https://github.com/argoproj/argo-cd/pull/14585/files

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

* update jest version in order to resolve
https://github.com/argoproj/argo-cd/pull/14585/files

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

* update ts jest

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

* update ts jest

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-05-20 23:06:40 +03:00
dependabot[bot]
ddc85238f4 chore(deps): bump library/node from 21.7.0 to 22.2.0 (#18297)
Bumps library/node from 21.7.0 to 22.2.0.

---
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>
2024-05-20 22:20:35 +03:00
dependabot[bot]
90df1e6d5d chore(deps-dev): bump prettier from 1.19.1 to 2.8.8 in /ui-test (#18302)
Bumps [prettier](https://github.com/prettier/prettier) from 1.19.1 to 2.8.8.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.19.1...2.8.8)

---
updated-dependencies:
- dependency-name: prettier
  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>
2024-05-20 22:18:52 +03:00
dependabot[bot]
3c19fdbdc7 chore(deps-dev): bump typescript from 4.1.3 to 5.4.5 in /ui-test (#18300)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.1.3 to 5.4.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.1.3...v5.4.5)

---
updated-dependencies:
- dependency-name: typescript
  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>
2024-05-20 22:18:35 +03:00
Justin Marquis
95d37dc87d fix(deps): upgrade otel dependency (#18285)
Signed-off-by: Justin Marquis <justin@akuity.io>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2024-05-20 13:35:29 -04:00
Cheng Fang
4f6666940b chore(ci): add /ui-test/ directory to dependabot.yml (#16235)
Signed-off-by: Cheng Fang <cfang@redhat.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-05-20 15:17:08 +00:00
dependabot[bot]
8480f5cd87 chore(deps): bump library/node from 21.6.2 to 21.7.0 (#17446)
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-05-20 16:53:51 +03:00
Nikhil Vaidyar
9c8d652471 feat: Adding the domain_hint as an optional field in OIDC configuration (#18214)
* [18066] - Added DomainHint key in OIDCConfig struct

Signed-off-by: nikzayn <nikhilvaidyar1997@gmail.com>

* [18066] - Added DomainHint in options for grantType

Signed-off-by: nikzayn <nikhilvaidyar1997@gmail.com>

* [18066] - Auth0 readme.md --updated

Signed-off-by: nikzayn <nikhilvaidyar1997@gmail.com>

---------

Signed-off-by: nikzayn <nikhilvaidyar1997@gmail.com>
2024-05-20 12:08:28 +03:00
happyso
4d61974d58 fix(ui): Add title for full content without clicking (issue #17600) (#18243)
* fix: Add title for full content without clicking

Signed-off-by: sunyeongchoi <suoung0716@gmail.com>

* fix: apply ui lint

Signed-off-by: sunyeongchoi <suoung0716@gmail.com>

* fix: apply argo-ui Tooltip and define local variable

Signed-off-by: sunyeongchoi <suoung0716@gmail.com>

---------

Signed-off-by: sunyeongchoi <suoung0716@gmail.com>
2024-05-20 11:18:19 +03:00
condaatje
257b242efd add apiVersion so yaml applies properly in-cluster (#18282)
Signed-off-by: condaatje <condaatje@users.noreply.github.com>
2024-05-20 09:53:20 +02:00
david-wu-octopus
22993deb86 fix(ui): Fix excessive padding on system level extension pages (issue #17929) (#18207)
* Remove CSS class `.cd-layout--extension`

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

* Remove all usages of CSS class `.cd-layout--extension`

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

* Remove unused prop `isExtension` from `<Layout />`

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

* Remove unused property `extension` from type `Routes`

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

* Fix linting error

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

---------

Signed-off-by: David Wu <155603967+david-wu-octopus@users.noreply.github.com>
2024-05-19 21:29:52 -04:00
github-actions[bot]
8cf3e05fd4 [Bot] docs: Update Snyk reports (#18276) 2024-05-19 18:54:12 +03:00
Tomáš Novák
210f26ae83 fix(reposerver): fix OCI repository matching (#17955)
Signed-off-by: Tomáš Novák <tomas.novak@bcas.cz>
2024-05-17 22:41:23 +03:00
Justin Marquis
2e43af50da chore(deps): upgrade helm to 3.14.4 (#18255)
* chore(deps): upgrade helm to 3.14.4

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

* place checksums where they belong

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

---------

Signed-off-by: Justin Marquis <justin@akuity.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-05-17 13:58:22 +03:00
dependabot[bot]
e6ea861561 chore(deps): bump bitnami/kubectl in /test/container (#18262)
Bumps bitnami/kubectl from `09c66fb` to `0aef4af`.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-17 13:55:59 +03:00
dependabot[bot]
cd21752d25 chore(deps): bump library/node from 22.1.0 to 22.2.0 in /test/container (#18261)
Bumps library/node from 22.1.0 to 22.2.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-05-17 13:55:42 +03:00
dependabot[bot]
800cc5e2dc chore(deps): bump library/node from 22.1.0 to 22.2.0 in /ui-test (#18260)
Bumps library/node from 22.1.0 to 22.2.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-05-17 13:55:20 +03:00
Isaac Gaskin
fe02d884fd docs: update workflows readme (#18263)
Signed-off-by: Isaac Gaskin <isaac.gaskin@circle.com>
2024-05-17 13:54:46 +03:00
Nicholas Morey
c9c3c1de24 docs: expand appset post selector examples (#18257)
Signed-off-by: Nicholas Morey <nicholas@morey.tech>
2024-05-16 14:46:27 -06:00
dependabot[bot]
5e6ca70904 chore(deps): bump bitnami/kubectl in /test/container (#18224)
Bumps bitnami/kubectl from `5129237` to `09c66fb`.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-16 13:52:05 +03:00
Malte Hviid-Magnussen
5e58bac61b Add proper spacing (#18244)
Signed-off-by: Malte Hviid-Magnussen <maltehviidmagnussen@gmail.com>
2024-05-16 13:51:42 +03:00
hanzala1234
2c5b9738ea Bump gitops-engine-version (#18233)
Signed-off-by: hanzala <muhammadhanzala12@gmail.com>
2024-05-15 18:40:46 +03:00
dependabot[bot]
2b89d6c222 chore(deps): bump library/node in /test/container (#18225) 2024-05-15 09:17:01 +03:00
dependabot[bot]
3862aecc06 chore(deps): bump library/node from f9b4b4b to 5a254b7 in /ui-test (#18222) 2024-05-15 09:16:38 +03:00
Arata Furukawa
36ff5cf1e1 fix: copy visited map #11699 (#12667)
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: Blake Pettersson <blake.pettersson@gmail.com>
2024-05-14 15:37:20 -07:00
dependabot[bot]
346ae95587 chore(deps): bump bitnami/kubectl in /test/container (#18186)
Bumps bitnami/kubectl from `aa73edb` to `5129237`.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 22:04:27 +03:00
Leonardo Luz Almeida
5ae342a6de chore: fix unit-tests (#18215)
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-05-14 13:30:57 -04:00
Michael Crenshaw
2abfafd025 chore(deps): bump github/codeql-action bundle to v2.17.2 (#18150)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-14 08:56:59 -04:00
dependabot[bot]
f9f674953d chore(deps): bump library/node from 64c46a6 to f9b4b4b in /ui-test (#18206)
Bumps library/node from `64c46a6` to `f9b4b4b`.

---
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-05-14 14:55:06 +03:00
dependabot[bot]
5729c61421 chore(deps): bump library/node in /test/container (#18204)
Bumps library/node from `64c46a6` to `f9b4b4b`.

---
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-05-14 14:54:47 +03:00
dependabot[bot]
52e94fdd0f chore(deps): bump actions/download-artifact from 4.1.5 to 4.1.7 (#18185)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.5 to 4.1.7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](8caf195ad4...65a9edc588)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-13 21:20:49 -07:00
dependabot[bot]
2162aaf727 chore(deps): bump ossf/scorecard-action from 2.3.1 to 2.3.3 (#18183)
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.3.1 to 2.3.3.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](0864cf1902...dc50aa9510)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-13 17:17:05 -07:00
Ishita Sequeira
710bb76107 update resolveRevision to use the correct source for multi-source app (#18194) 2024-05-13 23:42:14 +03:00
Andrii Korotkov
532f5a8a43 chore: Add Verkada to ArgoCD users (#18199)
Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-05-13 22:08:51 +02:00
Andrii Korotkov
4faad946f0 chore: Improve appcontroller logs further - Closes [#18113] (#18174)
* chore: Improve appcontroller logs further - Closes [#18113]

Add application fully qualified name as a logrus field to several places that were missing it.
Remove appNamespace field and replace application name with a fully qualified name in a few places for consistency.
Add app project to the log fields.

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

* chore: Switch to using separate field for application name and qualified name, add a common function for app log entry - Closes[#18113]

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

---------

Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2024-05-13 16:07:24 -04:00
Alexandre Gaudreault
49059113c2 feat(rbac): fine-grained update/delete for application resources (#18124)
* feat(rbac): fine-grained update/delete for application resources

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

* rewrite rbac (draft)

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

* add other stuff

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

* spellcheck

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

* update map

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

* spell check

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

* linter not happy about deprecated claims

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

* not happy about claims at all

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

* generated

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

* fix list syntax

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

* use same link pattern

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

* rewrite permissions to policy when it applies

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

* Update docs/operator-manual/rbac.md

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

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-05-13 15:04:18 -04:00
onee-only
8a0757efc5 Fix logging hash with multiple sources (#18189)
Signed-off-by: onee-only <kimww0306@gmail.com>
2024-05-13 09:22:17 -04:00
github-actions[bot]
c3b89ca015 [Bot] docs: Update Snyk reports (#18171)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-05-11 22:12:34 -04:00
dependabot[bot]
971fc3ef12 chore(deps): bump tar from 6.1.11 to 6.2.1 in /ui (#17791)
Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.11 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.1.11...v6.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-11 22:03:09 -04:00
dependabot[bot]
df3bb3e753 chore(deps): bump js-yaml and @types/js-yaml in /ui (#18168)
* chore(deps): bump js-yaml and @types/js-yaml in /ui

Bumps [js-yaml](https://github.com/nodeca/js-yaml) and [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/js-yaml). These dependencies needed to be updated together.

Updates `js-yaml` from 3.14.1 to 4.1.0
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...4.1.0)

Updates `@types/js-yaml` from 3.12.1 to 4.0.9
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/js-yaml)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: "@types/js-yaml"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

* use new function names

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

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-11 21:57:02 -04:00
Ha Van
f4fd97d659 fix: BanzaiCloud KafkaCluster healthcheck to return Progressing during rolling update (#17994)
* Update ClusterRollingUpgrading state to always be in Progressing state regardless of broker status

Signed-off-by: Ha Van <musubi7726@gmail.com>

* Retrigger CI pipeline

Signed-off-by: Ha Van <musubi7726@gmail.com>

---------

Signed-off-by: Ha Van <musubi7726@gmail.com>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-05-11 15:36:33 -04:00
Michael Crenshaw
5849a0650f chore(deps): bump actions/cache from v3.3.2 to 4.0.2 (#18146)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-11 15:24:12 -04:00
raweber
653fc8da1f docs: replace image to one which includes ca-certificates (#18068)
* Replace image to include ca-certificates

Signed-off-by: raweber <99535319+raweber42@users.noreply.github.com>

* Update comment

Signed-off-by: raweber <99535319+raweber42@users.noreply.github.com>

* Update docs/operator-manual/config-management-plugins.md

Co-authored-by: Dan Garfield <dan@codefresh.io>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* Update docs/operator-manual/config-management-plugins.md

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

---------

Signed-off-by: raweber <99535319+raweber42@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>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-05-10 08:22:17 -06:00
Erik Frederiksen
968dc1ad53 docs: add Andgo Systems to users list (#18157)
Signed-off-by: Erik Frederiksen <rik.the.vik@gmail.com>
2024-05-09 15:12:33 -06:00
Alexander Matyushentsev
5bb3c87370 fix: Argo CD app is out of sync right after sync (#18155)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-05-09 12:52:11 -07:00
Leonardo Luz Almeida
62d9838076 fix: handle nil ParseableType from GVKParser (#18154)
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-05-09 15:03:38 -04:00
Michael Crenshaw
e0e9dcfc5a chore(deps): bump softprops/action-gh-release from v0.1.15 to 2.0.5 (#18149)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-09 18:01:26 +00:00
Michael Crenshaw
13c7434645 chore(deps): bump docker/setup-qeum-action from v2.2.0 to 3.0.0 (#18145)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-09 17:17:12 +00:00
Michael Crenshaw
408295fb4f chore(deps): bump actions/setup-go from 4.x to 5.0.1 (#18144)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-09 12:57:32 -04:00
Alexandre Gaudreault
a89e3589b4 fix(ui): consistent resource menu across views (#18060) (#18069)
* add icon in app table view

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

* use defaut menu in tree-grouped

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

* use default menu in pod views

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

* fix custom delete actions

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

* menu item in list

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

* fix pod wrongly identified as root in network graph

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

* update docs error

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

* call delete pod action if kind is pod

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

* add logs action to pods

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

* delete in app details

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

* use managed instead of root for menu items

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

* lint fix

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

* fix lint again

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

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-05-09 09:16:50 -06:00
Blake Pettersson
ebb92d8c3b fix: add endpointslice replace (#18141)
Since #17491 I got a bunch of weird errors in Goland, along with the
error message below:

```
go: k8s.io/endpointslice@v0.0.0: invalid version: unknown revision v0.0.0
```

Adding an endpointslice alias fixes that.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-05-09 08:52:49 -04:00
dependabot[bot]
f65399af14 chore(deps): bump library/node from 22.0.0 to 22.1.0 in /test/container (#18136)
Bumps library/node from 22.0.0 to 22.1.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>
2024-05-09 12:05:25 +03:00
dependabot[bot]
bab0ee0821 chore(deps): bump bitnami/kubectl in /test/container (#18135)
Bumps bitnami/kubectl from `b330450` to `aa73edb`.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-09 10:49:50 +03:00
dependabot[bot]
0a408a6e30 chore(deps): bump library/busybox in /test/e2e/multiarch-container (#18134)
Bumps library/busybox from `6776a33` to `5eef5ed`.

---
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-05-09 10:49:29 +03:00
Michael Crenshaw
2605a9845b chore(ci): fix release notes (#18132)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-08 16:50:09 -06:00
dependabot[bot]
0ca4f74155 chore(deps): bump library/node from 22.0.0 to 22.1.0 in /ui-test (#18063)
Bumps library/node from 22.0.0 to 22.1.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-05-08 21:22:24 +03:00
dependabot[bot]
247055207d chore(deps): bump bitnami/kubectl in /test/container (#18085)
Bumps bitnami/kubectl from `b909f3a` to `b330450`.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-08 21:18:08 +03:00
Mikael Sennerholm
440fbac12b feat(health): Implement k8s.mariadb.com CRD health checks (#17995)
* Copied MariaDB from old name and change to new name
Adding Backup, SqlJobs, Grant, Database and User

Signed-off-by: Mikael Sennerholm <mikael@sennerholm.net>

* Set progressing as default

Signed-off-by: Mikael Sennerholm <mikael@sennerholm.net>

---------

Signed-off-by: Mikael Sennerholm <mikael@sennerholm.net>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-05-08 19:22:05 +03:00
Togie Mcdogie
1cd6fcac4f feat(health): Added Humio Operator Healthchecks (#11628)
* Added Humio Operator Healthchecks

Signed-off-by: togie6 <22466611+togie6@users.noreply.github.com>

* Retrigger CI pipeline

Signed-off-by: togie6 <22466611+togie6@users.noreply.github.com>

* Removed duplicate if statement from HumioView

Signed-off-by: togie6 <22466611+togie6@users.noreply.github.com>

* Add HumioCluster Health Check

Signed-off-by: togie6 <22466611+togie6@users.noreply.github.com>

---------

Signed-off-by: togie6 <22466611+togie6@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-05-08 19:21:56 +03:00
Parvesh Mourya
9bc9ff9c7a feat: implement keda health-checks (#16715)
Signed-off-by: parmou <parveshmourya96@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-05-08 15:47:14 +00:00
Mayursinh Sarvaiya
7945b26d95 chore(ui-dev): migrate tslint to eslint (#11652) (#18079)
* feat(ui): setup eslint

Signed-off-by: Mayursinh Sarvaiya <marvinduff97@gmail.com>

* chore(ui): update `lint:fix` command

Signed-off-by: Mayursinh Sarvaiya <marvinduff97@gmail.com>

* fix(ui-lint): run `yarn lint:fix`

> solve remaining manually

Signed-off-by: Mayursinh Sarvaiya <marvinduff97@gmail.com>

* chore(ui): remove tslint from `ui`

Signed-off-by: Mayursinh Sarvaiya <marvinduff97@gmail.com>

* chore(docs-ui): add docs for VSCode configuration eslint

Signed-off-by: Mayursinh Sarvaiya <marvinduff97@gmail.com>

* chore(ui): prettier set `trailingComma` to `none`

> prettier config default is changed after version bump - https://prettier.io/docs/en/options.html#trailing-commas

Signed-off-by: Mayursinh Sarvaiya <marvinduff97@gmail.com>

---------

Signed-off-by: Mayursinh Sarvaiya <marvinduff97@gmail.com>
2024-05-08 11:30:58 -04:00
sivchari
ef96dec5b2 chore: Bump Kubernetes 1.29.2 (#17491)
* run: go mod tidy

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* change interface of Broadcaster

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* modify some logic due to updating controller-runtime version

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* modify some logic due to updating controller-runtime version

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* fix args of GetInformer

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* fix signature for mock

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* update mock

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* use ptr instead of pointer

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* use recommended function instead of deprecated it in wait package

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* run make codegen

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* re-run codegen

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* fix codegen tasks to pass the codegen

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* replace pointer package with ptr package

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* add option to manage subresource

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* fix len args

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* fix: error message for updating lib-version

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* use poll

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* add cache opt

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* use ptr instead of pointer

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* add status subresource

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* use latest commit

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* fix watch namespace

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* use latest gitops-engine

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* delete unnecessary polling

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* revert changes in Makefile

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* re-add openapi-gen

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

* codegen w/ correct versions

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

* revert

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* extend timeout

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* break loop even if service account does not have secrets

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* fix review points

Signed-off-by: sivchari <shibuuuu5@gmail.com>

* replace gitops-engine

Signed-off-by: sivchari <shibuuuu5@gmail.com>

---------

Signed-off-by: sivchari <shibuuuu5@gmail.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-08 11:16:18 -04:00
Daan Verstraten
2727aec4b7 docs(update): Adding an example for deeplinks in using property that contains - or / (#18119)
* Extending deeplinks documentation with examples for labels or annotations that use / or - 

Signed-off-by: Daan Verstraten <104772968+DaanQ42@users.noreply.github.com>

* Fixing double quotes

Signed-off-by: Daan Verstraten <104772968+DaanQ42@users.noreply.github.com>

* Update docs/operator-manual/deep_links.md

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

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

---------

Signed-off-by: Daan Verstraten <104772968+DaanQ42@users.noreply.github.com>
Signed-off-by: Dan Garfield <dan@codefresh.io>
Co-authored-by: Dan Garfield <dan@codefresh.io>
2024-05-08 14:52:05 +00:00
pgumpoldsberger
20fada8364 Update ingress.md to work wirth traefik 3.0 (#18103)
Signed-off-by: pgumpoldsberger <60177408+pgumpoldsberger@users.noreply.github.com>
2024-05-07 13:31:23 -06:00
Dan Garfield
82db16664e Docs: Clarify that we don't actually follow semver (#18111)
Signed-off-by: Dan Garfield <dan@codefresh.io>
2024-05-07 14:49:05 -04:00
Michael Crenshaw
c1787cff4a docs: document go-based health checks (#18117)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-07 14:47:51 -04:00
Michael Crenshaw
fe6bcc1cb9 docs: clarify local user/SSO scope RBAC ambiguity (#18059)
* docs: clarify local user/SSO scope RBAC ambiguity

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

* better phrasing

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-05-07 12:04:20 -06:00
João Estrela
05d10c870e typo on Cluster Generator doc (#18110)
Signed-off-by: João Estrela <jestrela@barracuda.com>
2024-05-07 18:51:47 +03:00
Michael Crenshaw
414be63696 chore(deps): bump Ubuntu from 22.04 to 24.04 (#17973) (#18093)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-05-07 09:35:58 -04:00
Yoshitaka Fujii
13506ad5c8 doca: Update argocd_architecture image (#18073)
Signed-off-by: ystkfujii <ystk.fujii0731@gmail.com>
2024-05-07 09:06:03 -04:00
Michael Crenshaw
b0a3433d00 docs: fix 404 styling (#18094)
* docs: fix 404 styling

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

* hack around custom tag destruction

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-05-07 09:03:34 -04:00
daftping
e5c0e09651 fix(ui): respect Application destination.name in cluster summary calculation (#18081)
Signed-off-by: daftping <21245083+daftping@users.noreply.github.com>
2024-05-07 09:02:22 -04:00
github-actions[bot]
5c175e38c5 [Bot] docs: Update Snyk reports (#18080)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-05-07 12:57:43 +00:00
Lawrence Aiello
37c813bd82 docs: add rogo to users.md (#18074)
* chore: add Rogo to users

Signed-off-by: aiell0 <lawrence@rogodata.com>

* sign off

Signed-off-by: aiell0 <lawrence@rogodata.com>

---------

Signed-off-by: aiell0 <lawrence@rogodata.com>
2024-05-06 23:22:48 -10:00
dependabot[bot]
8aa88b6731 chore(deps): bump jinja2 from 3.0.3 to 3.1.4 in /docs (#18091)
Bumps [jinja2](https://github.com/pallets/jinja) from 3.0.3 to 3.1.4.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.0.3...3.1.4)

---
updated-dependencies:
- dependency-name: jinja2
  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-05-06 14:36:14 -04:00
Andrew Jeffree
a2a0360cd8 feat(paths): Add support for glob patterns (#18055)
as per https://github.com/argoproj/argo-cd/issues/17825

Signed-off-by: Andrew Jeffree <andrew@jeffree.id.au>
2024-05-03 14:31:11 -04:00
Alexander Matyushentsev
ec09937fe0 fix: status.sync.comparedTo should use replace patch strategy (#18061)
* fix: status.sync.comparedTo should use replace patch strategy

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

* add e2e tests

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

---------

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-05-03 11:03:50 -04:00
David Costa
8e66b3e4f2 Update kustomize.md (#18065)
typo in docs: managment -> management

Signed-off-by: David Costa <david@zarel.net>
2024-05-03 00:02:17 -10:00
Joe Bowbeer
4c096ed2cb docs: use compliant name in Generators-List.md (#18062)
Signed-off-by: Joe Bowbeer <joe.bowbeer@gmail.com>
2024-05-02 15:56:02 -04:00
Michael Haigh
220dee0200 Adding astra.netapp.io CRD health checks (#17999) 2024-05-01 19:22:23 +03:00
Rodolfo Martínez Vega
50027733db docs: Update Getting started documentation (#17975)
This PR adds some sentences to explain the process of "Syncing via UI" screenshots to have a good understanding of the process on the UI.

Signed-off-by: Rodolfo Martínez Vega <rodomar@outlook.com>
2024-05-01 08:28:06 -06:00
Max Gautier
b738f1fec4 docs: add soft documentation for ignoreMissingValueFiles (#17996)
The Helm source has the ability to ignore missing values files since
99d1dcad0 (feat: added a new Helm option ignoreMissingValueFiles,
2022-01-03).
This is however not obvious from reading the user guide on Helm.

Document the parameters along with a reference to the use case which
motivated it.

Signed-off-by: Max Gautier <mg@max.gautier.name>
2024-05-01 08:11:41 -06:00
dependabot[bot]
3ab8e266b4 chore(deps): bump library/registry in /test/container (#18040)
Bumps library/registry from `fb9c9ae` to `4fac7a8`.

---
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-05-01 10:45:01 +03:00
dependabot[bot]
ca75b60692 chore(deps): bump library/busybox in /test/e2e/multiarch-container (#18039)
Bumps library/busybox from `bb02074` to `6776a33`.

---
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-05-01 10:44:31 +03:00
Marc Arndt
a63068d06f fix: enable sha256 and sha512 for git ssh (#18028)
* fix: bumping the knownhosts to v1.2.2 since this contains a fix that allows for sha256 and sha512 algorithms when using git ssh

Signed-off-by: Marc Arndt <marc@marcarndt.com>
Signed-off-by: Marc Arndt <m.arndt@evana.de>

* chore: remove older version of module from go sum

Signed-off-by: Marc Arndt <m.arndt@evana.de>

---------

Signed-off-by: Marc Arndt <marc@marcarndt.com>
Signed-off-by: Marc Arndt <m.arndt@evana.de>
Co-authored-by: Marc Arndt <m.arndt@evana.de>
2024-04-30 09:12:52 -04:00
dependabot[bot]
1e6ca4d7af chore(deps): bump library/node from 21.7.3 to 22.0.0 in /test/container (#18022)
Bumps library/node from 21.7.3 to 22.0.0.

---
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-04-30 12:32:30 +03:00
Daniel R. Dagfinrud
ba2ea258c6 docs: update wording in diffing.md (#18027)
* docs: update wording in diffing.md

The wording in "If you have a slash / in your pointer path, you can use the ~1 character" is inaccurate. The ~1 character is mandatory if you have a slash.

Signed-off-by: Daniel R. Dagfinrud <danieldagfinrud@gmail.com>

* docs: update wording in docs/user-guide/diffing.md

Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
Signed-off-by: Daniel R. Dagfinrud <danieldagfinrud@gmail.com>

---------

Signed-off-by: Daniel R. Dagfinrud <danieldagfinrud@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-04-29 23:27:03 -10:00
dependabot[bot]
7003d06dc4 chore(deps): bump library/busybox in /test/e2e/multiarch-container (#18023)
Bumps library/busybox from `c3839dd` to `bb02074`.

---
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-04-30 10:47:58 +03:00
dependabot[bot]
737f7428a1 chore(deps): bump library/node from 21.7.3 to 22.0.0 in /ui-test (#18024)
Bumps library/node from 21.7.3 to 22.0.0.

---
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>
2024-04-30 10:27:22 +03:00
Radon Rosborough
ba15569322 Document units for argocd_app_reconcile (#18018)
Signed-off-by: Radon Rosborough <rrosborough@plaid.com>
2024-04-29 20:47:50 -04:00
dependabot[bot]
c38c8a9aa3 chore(deps): bump library/ubuntu from 22.04 to 24.04 in /test/container (#17976)
Bumps library/ubuntu from 22.04 to 24.04.

---
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-04-29 22:43:30 +03:00
Alex Ellis
2a05ae02ab Add health status for OpenFaaS functions (#18015)
Adds test-case for Progressing, Degraded, Healthy and
Suspended, to avoid users having to update their Argo ConfigMaps
by hand.

Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
2024-04-29 14:19:12 -04:00
dependabot[bot]
17cca81c09 chore(deps): bump bitnami/kubectl from 1.27 to 1.30 in /test/container (#18012)
Bumps bitnami/kubectl from 1.27 to 1.30.

---
updated-dependencies:
- dependency-name: bitnami/kubectl
  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-04-29 15:14:58 +03:00
github-actions[bot]
7581c20e92 [Bot] docs: Update Snyk reports (#18008)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-29 11:26:54 +03:00
Ishita Sequeira
c204f247d3 feat(cli): add support for multiple sources to sync command (#17808)
* 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>

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-04-29 11:23:49 +03:00
Takumi Sue
e6200cae12 fix(appset): add debug logs around deleting ownerReferences and add warning docs about policy behavior (#18006)
* chore(appset): add logs for debug

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

* fix(appset): remove finalizer regardless with deleteAllowed

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

* docs: update about appset policy

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

* fix: wrong log message

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

* fix: log messages

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

* fix: log message

Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
Signed-off-by: Takumi Sue <23391543+mikutas@users.noreply.github.com>

* docs: add explanation

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

---------

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>
Signed-off-by: Takumi Sue <23391543+mikutas@users.noreply.github.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-04-28 19:26:12 -04:00
Lukas Aldershaab
5baba93721 chore: update notifications-engine to f4856710 (#17971)
* update notifications-engine

Signed-off-by: Lukas Peter Aldershaab <lukas.aldershaab@lego.com>

* Fix build of conflicting git-urls libraries

Signed-off-by: Lukas Peter Aldershaab <lukas.aldershaab@lego.com>

* align telegrom dependency with notifications-engine

Signed-off-by: Lukas Peter Aldershaab <lukas.aldershaab@lego.com>

* fix: codegen

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

---------

Signed-off-by: Lukas Peter Aldershaab <lukas.aldershaab@lego.com>
Signed-off-by: pashakostohrys <pavel@codefresh.io>
Co-authored-by: pashakostohrys <pavel@codefresh.io>
2024-04-28 09:20:16 +00:00
Joe Bowbeer
575575a78a Fix post-delete finalizer in appset (#18003)
Signed-off-by: Joe Bowbeer <joe.bowbeer@gmail.com>
2024-04-26 16:41:32 -07:00
pasha-codefresh
96e796edff chore: fix codegen after security fix (#17982) 2024-04-26 07:44:39 -04:00
pasha-codefresh
57431b2177 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
e23060540f 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
yyzxw
334d5c5607 chore:change file name for readthedocs compatibility (#17978)
Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>
2024-04-26 12:20:39 +03:00
Cyril Houdellier
badac51530 feat: Add width change and full revision display for badge (#17502)
Signed-off-by: Cyril Houdellier <cyril.houdellier@amadeus.com>
2024-04-26 10:28:06 +05:30
Doug Goldstein
0f11dfb596 docs: document helm fileParameters / helm-set-file (#17822)
Added documentation for fileParameters in a helm source Application or
the --helm-set-file cli option from #2751. Added a note about #13220 so
users are aware. #17941 aims to remove this limitation so the warning
will be adjusted to mention the version that lands that support.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2024-04-25 11:12:21 -04:00
dependabot[bot]
6d3abb36c2 chore(deps): bump library/node in /test/container (#17959)
Bumps library/node from `c384290` to `bda5312`.

---
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-04-25 00:11:51 -04:00
dependabot[bot]
b19a0d0f76 chore(deps): bump library/node in /test/container (#17946)
Bumps library/node from `162d92c` to `c384290`.

---
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-04-24 21:54:36 -04:00
g1franc
2dbe5c17d1 Update sync-kubectl.md - Correct indentation for a sample (#17953)
Correct indentation for a sample as "hook" element is supposed to be a child of syncStrategy

Signed-off-by: g1franc <guillaume.francois55@gmail.com>
2024-04-24 06:09:38 -07:00
Bulat Saifullin
fcdaee9857 fix: jwtTokens are reset when creating new tokens for new role (#17298)
* fix: jwtTokens are reset when creating new tokens for new role

Signed-off-by: Bulat Saifullin <bulat@saifullin.ru>

* add back NormalizeJWTTokens

Signed-off-by: Bulat Saifullin <bulat@saifullin.ru>

* add tests

Signed-off-by: BulatSaif <bulat@parity.io>

* add fix

Signed-off-by: BulatSaif <bulat@parity.io>

---------

Signed-off-by: Bulat Saifullin <bulat@saifullin.ru>
Signed-off-by: BulatSaif <bulat@parity.io>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2024-04-24 17:16:09 +05:30
rumstead
1eec8eb777 fix: use cmp vs reflect.DeepEqual for comparing Applications (#17861) (#17940)
* fix(compare): appset compare the child apps with cmp vs reflect

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

* remove debug lines

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

* remove debug lines

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

---------

Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-04-23 20:50:11 +00:00
Keith Chong
719dc83497 fix: Add Sources tab to show all sources of a multi-source app (#17939)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-04-23 16:34:01 -04:00
Jakub Ciolek
56b796dc1c docs: Add AlphaSense to USERS.md (#17942)
Mention AlphaSense as a user.

Signed-off-by: Jakub Ciolek <jakub@ciolek.dev>
2024-04-23 15:54:17 -04:00
ChristianCiach
634645f32c docs: Mention configmap to enable new git file globbing by name (#17936)
Signed-off-by: Christian Ciach <christian.ciach@gmail.com>
2024-04-23 09:39:57 -04:00
dependabot[bot]
4f40c3e3e2 chore(deps): bump jlumbroso/free-disk-space (#17932)
Bumps [jlumbroso/free-disk-space](https://github.com/jlumbroso/free-disk-space) from 4d9e71b726748f254fe64fa44d273194bd18ec91 to 54081f138730dfa15788a46383842cd2f914a1be.
- [Release notes](https://github.com/jlumbroso/free-disk-space/releases)
- [Commits](4d9e71b726...54081f1387)

---
updated-dependencies:
- dependency-name: jlumbroso/free-disk-space
  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-04-23 09:38:44 -04:00
dependabot[bot]
dec655c712 chore(deps): bump peter-evans/create-pull-request from 5.0.2 to 6.0.4 (#17931)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5.0.2 to 6.0.4.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](153407881e...9153d834b6)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  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-04-23 09:38:02 -04:00
dependabot[bot]
589da837d6 chore(deps): bump thehanimo/pr-title-checker from 1.4.0 to 1.4.2 (#17933)
Bumps [thehanimo/pr-title-checker](https://github.com/thehanimo/pr-title-checker) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/thehanimo/pr-title-checker/releases)
- [Commits](0cf5902181...1d8cd483a2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-23 09:35:45 -04:00
dependabot[bot]
56a0da8575 chore(deps): bump slsa-framework/slsa-github-generator (#17934)
Bumps [slsa-framework/slsa-github-generator](https://github.com/slsa-framework/slsa-github-generator) from 1.10.0 to 2.0.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.10.0...v2.0.0)

---
updated-dependencies:
- dependency-name: slsa-framework/slsa-github-generator
  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-04-23 09:35:16 -04:00
Alexy Mantha
77c27c3c10 feat(appset): implement ResourceTree for ApplicationSets (#15741)
* update types

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

* Update generated code

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

* wip

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

* add resource tree

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

* Update generated code

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

* fix

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

* cleanup

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

* format

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

* fix lint

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

* Update generated code

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

* fmt

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

* add tests

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

* cleanup

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

* fmt

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

* fix conflicts

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

* codegen

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

* regen

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

* fix codegen

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

---------

Signed-off-by: Alexy Mantha <alexy@mantha.dev>
2024-04-23 09:32:26 -04:00
Nolan Emirot
67e6c6cf94 docs: fix typp (#17927)
Signed-off-by: emirot <nolan.emirot@workday.com>
Co-authored-by: emirot <nolan.emirot@workday.com>
2024-04-22 21:57:50 +02:00
dependabot[bot]
50cec22d10 chore(deps): bump actions/upload-artifact from 4.3.2 to 4.3.3 (#17926)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](1746f4ab65...65462800fd)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 17:40:09 +00:00
Michael Crenshaw
f3f55ddd87 chore(deps): bump actions/*-artifact (#17923)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-22 12:32:28 -04:00
Michael Crenshaw
85e04f5bd4 docs(cli): remove docs for non-existing argocd admin commands (#17924) 2024-04-22 15:44:42 +00:00
github-actions[bot]
3e4d12c6c2 [Bot] docs: Update Snyk reports (#17912)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
2024-04-22 14:32:44 +00:00
dependabot[bot]
cb32a140e0 chore(deps): bump golang.org/x/net from 0.21.0 to 0.23.0 (#17901)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.21.0 to 0.23.0.
- [Commits](https://github.com/golang/net/compare/v0.21.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  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-04-19 14:32:59 -04:00
Michael Crenshaw
ba2e6acb01 chore: bump go version to 1.22.1 (#17895)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-19 11:57:48 +00:00
Ishita Sequeira
4f6a8dce80 remove mention of beta state from apps-in-any-namespace doc (#17896)
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-04-19 10:52:07 +03:00
Michael Crenshaw
33f5714c83 chore: upgrade controller-gen from 0.4.1 to 0.14.0 (#17893)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-18 18:31:14 -04:00
Reed Palmer
3a46e8c1c7 Update USERS.md (#17891)
Signed-off-by: Reed Palmer <81371878+Palmer-Reed-bah@users.noreply.github.com>
2024-04-18 23:08:36 +03:00
dependabot[bot]
73d341a5a9 chore(deps): bump library/ubuntu in /test/container (#17879)
Bumps library/ubuntu from `77906da` to `1b8d8ff`.

---
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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-18 21:52:45 +03:00
Alexander Matyushentsev
b8b4b51545 fix: UI Error caused by missing RBAC Permission (#10955)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-18 11:55:03 -04:00
Michael Crenshaw
1e35e685b2 chore: improve codegen error output (#17873)
* chore: improve codegen error output

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

* remove accidental 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>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-18 15:14:18 +00:00
dependabot[bot]
1f8acf4a30 chore(deps): bump code.gitea.io/sdk/gitea from 0.15.1 to 0.18.0 (#17880)
Bumps code.gitea.io/sdk/gitea from 0.15.1 to 0.18.0.

---
updated-dependencies:
- dependency-name: code.gitea.io/sdk/gitea
  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-04-18 10:30:08 -04:00
Michał Małyska
1cffa15f0d add argocd-secret-replacer (#10494)
Adding new tool that can replace secret from sops. 
It replaces specific string with encrypted values also It provides ability to encode values to base64.
It is different from ksops in a way that it is not dependent on kustomize to generate secrets.

Signed-off-by: Michał Małyska <999598+mmalyska@users.noreply.github.com>
2024-04-18 11:50:15 +03:00
Ragnar Paide
ee020273c0 Update USERS.md (#17881)
Add Pipedrive.

Signed-off-by: Ragnar Paide <16119863+ragnarpa@users.noreply.github.com>
2024-04-18 10:47:30 +03:00
Michael Crenshaw
852f744265 fix(api): respect all allowed audiences, regardless of check order (#17876)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-17 20:42:58 -04:00
Alexander Matyushentsev
f91179f07e fix: invalid revision in re-used manifest cache (#17874)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-04-17 22:00:38 +00:00
Josh Wolf
b867c9ea66 fix: remove deprecated default cipher for golang >=1.22 (#17569)
* remove deprecated default cipher

Signed-off-by: Josh Wolf <josh@wolfs.io>

* regenerate CLI docs

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

---------

Signed-off-by: Josh Wolf <josh@wolfs.io>
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Jann Fischer <jann@mistrust.net>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2024-04-17 19:38:03 +00:00
Kota Kimura
db615ed1c5 chore: update gitops engine for force sync option (#5882) (#17866)
* chore: update gitops engine version

Signed-off-by: kkk777-7 <kota.kimura0725@gmail.com>

* add: e2e and docs for force sync options

Signed-off-by: kkk777-7 <kota.kimura0725@gmail.com>

* docs: Add warning description of force sync options

Signed-off-by: kkk777-7 <kota.kimura0725@gmail.com>

---------

Signed-off-by: kkk777-7 <kota.kimura0725@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-17 16:31:12 +00:00
Daco
1c6b6eb837 docs: fix metrics labels name in notification monitoring (#17869)
Signed-off-by: philippe.dacosta <philippe.dacosta@adevinta.com>
Co-authored-by: philippe.dacosta <philippe.dacosta@adevinta.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-17 17:39:14 +03:00
Matt Hughes
2031a07a51 fix: Pass logger to differ in diff command (#17871)
So that log messages are propagated up, this caused issues for me when
trying to diagnose an issue linked to issue #17811. I've just copied the
approach used e.g. in `controller/appcontroller.go` when calling
`argodiff.NewDiffConfigBuilder`.

Sample output before this change:

    $ argocd --loglevel debug --server argocd-system.dev.aws.uw.systems app diff dev-enablement/dev-enablement

    ===== apps/Deployment dev-enablement/go-docs ======
    272c272
    <             cpu: "0"
    ---
    >             cpu: 0m
    275c275
    <             cpu: "0"
    ---
    >             cpu: 0m

Output with this change:

    $ argocd --loglevel debug --server argocd-system.dev.aws.uw.systems app diff dev-enablement/dev-enablement
    INFO[0000] Could not unmarshal to object of type apps/v1, Kind=Deployment: json: unknown field "restartPolicy"
    INFO[0000] Could not unmarshal to object of type apps/v1, Kind=Deployment: json: unknown field "restartPolicy"

    ===== apps/Deployment dev-enablement/go-docs ======
    272c272
    <             cpu: "0"
    ---
    >             cpu: 0m
    275c275
    <             cpu: "0"
    ---
    >             cpu: 0m
    INFO[0000] Could not create new object of type argoproj.io/v1alpha1, Kind=Application: no kind "Application" is registered for version "argoproj.io/v1alpha1" in scheme "pkg/runtime/scheme.go:100"
    INFO[0000] Could not create new object of type argoproj.io/v1alpha1, Kind=Application: no kind "Application" is registered for version "argoproj.io/v1alpha1" in scheme "pkg/runtime/scheme.go:100"
    INFO[0000] Could not create new object of type traefik.containo.us/v1alpha1, Kind=IngressRoute: no kind "IngressRoute" is registered for version "traefik.containo.us/v1alpha1" in scheme "pkg/runtime/scheme.go:100"
    INFO[0000] Could not create new object of type traefik.containo.us/v1alpha1, Kind=IngressRoute: no kind "IngressRoute" is registered for version "traefik.containo.us/v1alpha1" in scheme "pkg/runtime/scheme.go:100"
    INFO[0000] Could not create new object of type traefik.containo.us/v1alpha1, Kind=IngressRoute: no kind "IngressRoute" is registered for version "traefik.containo.us/v1alpha1" in scheme "pkg/runtime/scheme.go:100"
    INFO[0000] Could not create new object of type traefik.containo.us/v1alpha1, Kind=IngressRoute: no kind "IngressRoute" is registered for version "traefik.containo.us/v1alpha1" in scheme "pkg/runtime/scheme.go:100"

Signed-off-by: Matt Hughes <mhughes@uw.co.uk>
2024-04-17 17:24:56 +03:00
isihu
60f3332568 document possibility to specify request timeout in plugin generator (#17872)
Signed-off-by: isihu <62214125+isihu@users.noreply.github.com>
2024-04-17 17:22:14 +03:00
dependabot[bot]
74805d55f6 chore(deps): bump library/golang in /test/container (#17865)
Bumps library/golang from `7d0dcbe` to `81811f8`.

---
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-17 09:16:50 +03:00
Keith Chong
f819870313 feat: Add Sources tab to show all sources of a multi-source app (#17274) (#17275)
* feat: Add Sources tab to show all sources of a multi-source app (#17274)

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

* Update ui/src/app/applications/components/resource-details/resource-details.tsx

Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Signed-off-by: Keith Chong <kykchong@redhat.com>

* Remove getAppSources

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

* Add address Ishita's comments. Add missing Ref field

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

* Use single quotes

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

---------

Signed-off-by: Keith Chong <kykchong@redhat.com>
Co-authored-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-04-16 17:40:01 -04:00
pasha-codefresh
a1472aed6b chore: add Octopus Deploy to USERS.md (#17858)
Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-04-16 17:34:16 -04:00
pasha-codefresh
48b636e32b chore: native client mock should be generated with go gen (#17864)
* fix: native client mock should be generated with go gen

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

* fix: native client mock should be generated with go gen

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

* fix: native client mock should be generated with go gen

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

* adopt repository_test.go to new helm mock client

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-04-16 17:33:47 -04:00
Adrian Berger
e12fae8a5a fix: Excessive HTTP requests when navigating in list view (#17757)
Signed-off-by: Adrian Berger <adria.berger94@gmail.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-16 13:35:14 +03:00
Tais P. Hansen
4d527f8705 chore: upgrade redis to 7.0.15 (#17665)
Upgrade to latest stable 7.0.x version to fix CVEs:

CVE-2023-41056

Signed-off-by: Tais P. Hansen <taishansen@gmail.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2024-04-16 11:39:59 +03:00
dependabot[bot]
27b592e2a3 chore(deps): bump library/golang from 7d0dcbe to ff6cfbd (#17794)
Bumps library/golang from `7d0dcbe` to `ff6cfbd`.

---
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-16 10:37:43 +03:00
dependabot[bot]
a8b3663087 chore(deps): bump library/node from 21.7.1 to 21.7.3 in /ui-test (#17815)
Bumps library/node from 21.7.1 to 21.7.3.

---
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-04-16 10:34:37 +03:00
dependabot[bot]
6263604dcd chore(deps): bump library/node from 21.7.1 to 21.7.3 in /test/container (#17816)
Bumps library/node from 21.7.1 to 21.7.3.

---
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-04-16 10:32:53 +03:00
Soumya Ghosh Dastidar
957170edc8 fix: run codegen check in ci for docs (#17853) 2024-04-15 20:37:15 +00:00
Jann Fischer
c740412639 chore: Add rerunreport.txt to .gitignore (#17848)
Signed-off-by: jannfis <jann@mistrust.net>
2024-04-15 16:07:42 +00:00
github-actions[bot]
831bfc355c [Bot] docs: Update Snyk reports (#17829)
Signed-off-by: CI <ci@argoproj.com>
Co-authored-by: CI <ci@argoproj.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-15 17:56:37 +03:00
pullmerge
cbbb99d348 Fix some comments (#17830)
Signed-off-by: pullmerge <watchmessi@outlook.com>
Co-authored-by: pasha-codefresh <pavel@codefresh.io>
2024-04-15 17:19:01 +03:00
pasha-codefresh
44894e9e43 fix: docker build fails due to 'http://deb.debian.org/debian buster-backports Release' does not have a Release file. (#17836)
* fix: docker build fails due to "The repository 'http://deb.debian.org/debian buster-backports Release' does not have a Release file."

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

* fix: linter issue

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

* fix codegen issue

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

* fix e2e tests

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

* fix linter

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

---------

Signed-off-by: pashakostohrys <pavel@codefresh.io>
2024-04-15 08:50:06 -04:00
pasha-codefresh
6646c6b102 Merge pull request from GHSA-2gvw-w6fj-7m3c
* 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>

sec: validate project before execute 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>
Co-authored-by: suhas-chikkanna <162577490+suhas-chikkanna@users.noreply.github.com>
2024-04-15 10:20:07 +03:00
Juho Syrjänen
659f426b72 docs: Add Metacore Games to USERS.md (#17827)
This PR adds Metacore Games to USERS.md. Metacore Games uses ArgoCD as part of our Kubernetes Platform and IDP.

Signed-off-by: Juho Syrjänen <juho.syrjanen@metacoregames.com>
2024-04-13 09:25:53 +02:00
Ishita Sequeira
922abefc81 fix(api): use arrays instead of map to display ApplicationManifetQuery fields in swagger (#17804)
* use arrays instead of map to display ApplicationManifetQuery fields in swagger

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

* fix equality conditions for souce-position check

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

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-04-12 16:07:31 -04:00
Jonathan West
5ac8d05201 fix: prevent leak of files to /dev/shm in corner cases (#17658) (#17659)
Signed-off-by: Jonathan West <jonwest@redhat.com>
2024-04-11 11:47:38 +00:00
Anton Hörnquist
0cf6fdb9ee docs: Add IFS to USERS.md (#17806)
Signed-off-by: Anton Hörnquist <anton.hornquist@gmail.com>
2024-04-11 09:37:46 +02:00
rumstead
4e433c6d86 fix(snyk): use version sort (#17798)
Signed-off-by: rumstead <37445536+rumstead@users.noreply.github.com>
2024-04-10 15:39:14 +00:00
Bryce Lowe
c2dfab5560 fix: update rbac validation to support applications in different namespaces (#17777)
* fix: policies in namespaces

The introduction of applications in any namespace doesn't appear to include support for specifying namespaces in rbac policy objects.  This causes valid rbac objects (like `some-project/some-namespace/some-application`) to fail when they are really valid.  Update the regex to include the ability to specify a namespace.

Signed-off-by: Bryce Lowe <blowe@patreon.com>

* fix: update verbiage of failing test

Signed-off-by: Bryce Lowe <blowe@patreon.com>

* feedback: test for policy and project

Signed-off-by: Bryce Lowe <blowe@patreon.com>

* fix: update test name

Signed-off-by: Bryce Lowe <blowe@patreon.com>

---------

Signed-off-by: Bryce Lowe <blowe@patreon.com>
2024-04-09 21:52:54 -04:00
Blake Pettersson
ebe4804974 chore: bump protobuf (#17788)
Similar to #17419, with the difference that this builds.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
2024-04-09 18:09:15 -04:00
Keith Chong
4abc992928 docs: Proposal to support multi-source apps in the UI (#17106) (#17108)
* docs: Proposal to support multi-source apps in the UI (#17106)

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

* Update docs/proposals/multiple-sources-for-applications-ui.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Keith Chong <kykchong@redhat.com>

* Update docs/proposals/multiple-sources-for-applications-ui.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Keith Chong <kykchong@redhat.com>

* Update docs/proposals/multiple-sources-for-applications-ui.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Keith Chong <kykchong@redhat.com>

* Update docs/proposals/multiple-sources-for-applications-ui.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Keith Chong <kykchong@redhat.com>

* Update docs/proposals/multiple-sources-for-applications-ui.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Keith Chong <kykchong@redhat.com>

* Update docs/proposals/multiple-sources-for-applications-ui.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Keith Chong <kykchong@redhat.com>

* Update docs/proposals/multiple-sources-for-applications-ui.md

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Signed-off-by: Keith Chong <kykchong@redhat.com>

* Minor edits

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

---------

Signed-off-by: Keith Chong <kykchong@redhat.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2024-04-08 09:57:48 -04:00
Serg Shalavin
1d13dc2ea2 docs: Add CloudGeometry to USERS.md (#17774)
Signed-off-by: Serg Shalavin <sshalavin@cloudgeometry.io>
2024-04-08 07:27:39 -04:00
Alexy Mantha
a539f95597 chore: cleanup follow up for enforce manifest generate path (#15636) (#17761)
* cleanup

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

* update docs

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

---------

Signed-off-by: Alexy Mantha <alexy@mantha.dev>
2024-04-07 13:26:33 -04:00
pasha-codefresh
cbafc13bdd feat: support grpc message size as env (#17728) 2024-04-06 04:19:05 +03:00
Young-Zen
496ac5e294 fix(cli): ARGOCD_OPTS supports --header and other parameters (#17553)
Signed-off-by: yanghaojia <2453883990@qq.com>
2024-04-05 09:37:16 -07:00
Ishita Sequeira
35deccb486 chore: rename source-indexes to source-positions (#17746)
* chore: rename source-indexes to source-positions

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

* update documentation

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

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
2024-04-05 09:36:43 -04: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
1152 changed files with 96405 additions and 65653 deletions

View File

@@ -8,6 +8,7 @@ ignore:
- "pkg/client/.*"
- "vendor/.*"
- "test/.*"
- "**/mocks/*"
coverage:
status:
# we've found this not to be useful

View File

@@ -17,6 +17,11 @@ updates:
schedule:
interval: "daily"
- package-ecosystem: "npm"
directory: "/ui-test/"
schedule:
interval: "daily"
- package-ecosystem: "docker"
directory: "/"
schedule:

View File

@@ -6,9 +6,10 @@
| codeql.yaml | CodeQL analysis |
| image-reuse.yaml | Build, push, and Sign container images |
| image.yaml | Build container image for PR's & publish for push events |
| pr-title-check.yaml| Lint PR for semantic information |
| init-release.yaml | Build manifests and version then create a PR for release branch|
| pr-title-check.yaml| Lint PR for semantic information |
| release.yaml | Build images, cli-binaries, provenances, and post actions |
| scorecard.yaml | Generate scorecard for supply-chain security |
| update-snyk.yaml | Scheduled snyk reports |
# Reusable workflows

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.21'
GOLANG_VERSION: '1.22'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -23,36 +23,65 @@ permissions:
contents: read
jobs:
changes:
runs-on: ubuntu-latest
outputs:
backend: ${{ steps.filter.outputs.backend_any_changed }}
frontend: ${{ steps.filter.outputs.frontend_any_changed }}
docs: ${{ steps.filter.outputs.docs_any_changed }}
steps:
- uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- uses: tj-actions/changed-files@d6babd6899969df1a11d14c368283ea4436bca78 # v44.5.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
docs:
- 'docs/**'
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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Restore go build cache
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
@@ -67,37 +96,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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Run golangci-lint
uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0
uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64 # v6.0.1
with:
version: v1.54.0
args: --enable gofmt --timeout 10m --exclude SA5011 --verbose --max-issues-per-linter 0 --max-same-issues 0
version: v1.58.2
args: --verbose
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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
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@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Install required packages
@@ -117,7 +151,7 @@ jobs:
run: |
echo "/usr/local/bin" >> $GITHUB_PATH
- name: Restore go build cache
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
@@ -137,34 +171,31 @@ jobs:
go mod download
- name: Run all unit tests
run: make test-local
- name: Generate code coverage artifacts
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: code-coverage
path: coverage.out
- name: Generate test results artifacts
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
with:
name: test-results
path: 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
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@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Install required packages
@@ -184,7 +215,7 @@ jobs:
run: |
echo "/usr/local/bin" >> $GITHUB_PATH
- name: Restore go build cache
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
@@ -205,19 +236,22 @@ jobs:
- name: Run all unit tests
run: make test-race-local
- name: Generate test results artifacts
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
with:
name: race-results
path: test-results/
codegen:
name: Check changes to generated code
if: ${{ needs.changes.outputs.backend == 'true' || needs.changes.outputs.docs == 'true'}}
runs-on: ubuntu-22.04
needs:
- changes
steps:
- name: Checkout code
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Create symlink in GOPATH
@@ -260,17 +294,21 @@ jobs:
build-ui:
name: Build, test & lint UI code
# We run UI logic for backend changes so that we have a complete set of coverage documents to send to codecov.
if: ${{ needs.changes.outputs.backend == 'true' || needs.changes.outputs.frontend == 'true' }}
runs-on: ubuntu-22.04
needs:
- changes
steps:
- name: Checkout code
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup NodeJS
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: '20.7.0'
node-version: '21.6.1'
- name: Restore node dependency cache
id: cache-dependencies
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ui/node_modules
key: ${{ runner.os }}-node-dep-v2-${{ hashFiles('**/yarn.lock') }}
@@ -292,79 +330,78 @@ 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
- test-e2e
env:
sonar_secret: ${{ secrets.SONAR_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
- name: Restore node dependency cache
id: cache-dependencies
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ui/node_modules
key: ${{ runner.os }}-node-dep-v2-${{ hashFiles('**/yarn.lock') }}
- name: Remove other node_modules directory
run: |
rm -rf ui/node_modules/argo-ui/node_modules
- name: Create test-results directory
run: |
mkdir -p test-results
- name: Get code coverage artifiact
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- name: Get e2e code coverage
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
with:
name: code-coverage
- name: Get test result artifact
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
name: e2e-code-coverage
path: e2e-code-coverage
- name: Get unit test code coverage
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
with:
name: test-results
path: test-results
- name: combine-go-coverage
# We generate coverage reports for all Argo CD components, but only the applicationset-controller report
# contains coverage data. The other components currently don't shut down gracefully, so no coverage data is
# produced. Once those components are fixed, we can add references to their coverage output directories.
run: |
go tool covdata percent -i=test-results,e2e-code-coverage/applicationset-controller -o test-results/full-coverage.out
- name: Upload code coverage information to codecov.io
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
with:
file: coverage.out
file: test-results/full-coverage.out
fail_ci_if_error: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Perform static code analysis using SonarCloud
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SCANNER_VERSION: 4.2.0.1873
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
uses: SonarSource/sonarqube-scan-action@540792c588b5c2740ad2bb4667db5cd46ae678f2 # v2.2
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.28.2, v1.27.6, v1.26.9, v1.25.14]
needs:
k3s:
- version: v1.29.1
# We designate the latest version because we only collect code coverage for that version.
latest: true
- version: v1.28.6
latest: false
- version: v1.27.10
latest: false
- version: v1.26.13
latest: false
needs:
- build-go
- changes
env:
GOPATH: /home/runner/go
ARGOCD_FAKE_IN_CLUSTER: "true"
@@ -377,12 +414,12 @@ jobs:
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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
- name: Setup Golang
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: GH actions workaround - Kill XSP4 process
@@ -390,7 +427,7 @@ jobs:
sudo pkill mono || true
- name: Install K3S
env:
INSTALL_K3S_VERSION: ${{ matrix.k3s-version }}+k3s1
INSTALL_K3S_VERSION: ${{ matrix.k3s.version }}+k3s1
run: |
set -x
curl -sfL https://get.k3s.io | sh -
@@ -401,7 +438,7 @@ jobs:
sudo chmod go-r $HOME/.kube/config
kubectl version
- name: Restore go build cache
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
@@ -427,9 +464,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.37.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.14-alpine
docker pull redis:7.0.15-alpine
- name: Create target directory for binaries in the build-process
run: |
mkdir -p dist
@@ -442,7 +479,7 @@ jobs:
# port 8080 which is not visible in netstat -tulpen, but still there
# with a HTTP listener. We have API server listening on port 8088
# instead.
make start-e2e-local 2>&1 | sed -r "s/[[:cntrl:]]\[[0-9]{1,3}m//g" > /tmp/e2e-server.log &
make start-e2e-local COVERAGE_ENABLED=true 2>&1 | sed -r "s/[[:cntrl:]]\[[0-9]{1,3}m//g" > /tmp/e2e-server.log &
count=1
until curl -f http://127.0.0.1:8088/healthz; do
sleep 10;
@@ -456,9 +493,40 @@ jobs:
run: |
set -x
make test-e2e-local
- name: Upload e2e-server logs
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
goreman run stop-all || echo "goreman trouble"
sleep 30
- name: Upload e2e coverage report
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
with:
name: e2e-server-k8s${{ matrix.k3s-version }}.log
name: e2e-code-coverage
path: /tmp/coverage
if: ${{ matrix.k3s.latest }}
- name: Upload e2e-server logs
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.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

@@ -29,17 +29,17 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
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
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version-file: go.mod
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@8aff97f12c99086bdb92ff62ae06dbbcdf07941b # v2.1.33
uses: github/codeql-action/init@8fcfedf57053e09257688fce7a0beeb18b1b9ae3 # v2.17.2
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
@@ -47,7 +47,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@8aff97f12c99086bdb92ff62ae06dbbcdf07941b # v2.1.33
uses: github/codeql-action/autobuild@8fcfedf57053e09257688fce7a0beeb18b1b9ae3 # v2.17.2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -61,4 +61,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@8aff97f12c99086bdb92ff62ae06dbbcdf07941b # v2.1.33
uses: github/codeql-action/analyze@8fcfedf57053e09257688fce7a0beeb18b1b9ae3 # v2.17.2

View File

@@ -58,27 +58,25 @@ jobs:
image-digest: ${{ steps.image.outputs.digest }}
steps:
- name: Checkout code
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
if: ${{ github.ref_type != 'tag'}}
- name: Setup Golang
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ inputs.go-version }}
- name: Install cosign
uses: sigstore/cosign-installer@1fc5bd396d372bee37d608f955b336615edf79c8 # v3.2.0
with:
cosign-release: 'v2.2.1'
uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # v3.5.0
- uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2.2.0
- uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0
- uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
- name: Setup tags for container image as a CSV type
@@ -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@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.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@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.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@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0
with:
username: ${{ secrets.docker_username }}
password: ${{ secrets.docker_password }}
@@ -136,7 +134,7 @@ jobs:
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
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be
with:
large-packages: false
docker-images: false
@@ -145,7 +143,7 @@ jobs:
- name: Build and push container image
id: image
uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 #v5.1.0
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 #v5.4.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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- 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.21
go-version: 1.22
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.21
go-version: 1.22
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@v2.0.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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
@@ -64,7 +64,7 @@ jobs:
git stash pop
- name: Create pull request
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v5.0.2
uses: peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e # v6.0.5
with:
commit-message: "Bump version to ${{ inputs.TARGET_VERSION }}"
title: "Bump version to ${{ inputs.TARGET_VERSION }} on ${{ inputs.TARGET_BRANCH }} branch"

View File

@@ -23,7 +23,7 @@ jobs:
name: Validate PR Title
runs-on: ubuntu-latest
steps:
- uses: thehanimo/pr-title-checker@0cf5902181e78341bb97bb06646396e5bd354b3f # v1.4.0
- uses: thehanimo/pr-title-checker@1d8cd483a2b73118406a187f54dca8a9415f1375 # v1.4.2
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
configuration_path: ".github/pr-title-checker-config.json"

View File

@@ -10,7 +10,7 @@ on:
permissions: {}
env:
GOLANG_VERSION: '1.21' # Note: go-version must also be set in job argocd-image.with.go-version
GOLANG_VERSION: '1.22' # 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.21
go-version: 1.22
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.9.0
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.0.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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
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@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.0.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
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@54081f138730dfa15788a46383842cd2f914a1be
with:
large-packages: false
docker-images: false
swap-storage: false
tool-cache: false
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0
uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0
id: run-goreleaser
with:
version: latest
@@ -120,7 +128,7 @@ 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.9.0
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0
with:
base64-subjects: "${{ needs.goreleaser.outputs.hashes }}"
provenance-name: "argocd-cli.intoto.jsonl"
@@ -139,13 +147,13 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Golang
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ env.GOLANG_VERSION }}
@@ -189,7 +197,7 @@ jobs:
echo "hashes=$(sha256sum /tmp/sbom.tar.gz | base64 -w0)" >> "$GITHUB_OUTPUT"
- name: Upload SBOM
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15
uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v2.0.5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
@@ -204,7 +212,7 @@ 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.9.0
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0
with:
base64-subjects: "${{ needs.generate-sbom.outputs.hashes }}"
provenance-name: "argocd-sbom.intoto.jsonl"
@@ -222,7 +230,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
@@ -287,7 +295,7 @@ jobs:
if: ${{ env.UPDATE_VERSION == 'true' }}
- name: Create PR to update VERSION on master branch
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v5.0.2
uses: peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e # v6.0.5
with:
commit-message: Bump version in master
title: "chore: Bump version in master"

View File

@@ -30,12 +30,12 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
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@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3
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@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
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@8fcfedf57053e09257688fce7a0beeb18b1b9ae3 # v2.17.2
with:
sarif_file: results.sarif

View File

@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Build reports

1
.gitignore vendored
View File

@@ -19,6 +19,7 @@ node_modules/
./test/cmp/*.sock
.envrc.remote
.*.swp
rerunreport.txt
# ignore built binaries
cmd/argocd/argocd

2
.gitpod.Dockerfile vendored
View File

@@ -1,4 +1,4 @@
FROM gitpod/workspace-full@sha256:511cecde4dc129ca9eb4cc4c479d61f95e5485ebe320a07f5b902f11899956a3
FROM gitpod/workspace-full@sha256:8dd34e72ae5b9e6f60d267dd6287befc2cf5ad1a11c64e9d93daa60c952a2154
USER root

43
.golangci.yaml Normal file
View File

@@ -0,0 +1,43 @@
issues:
exclude:
- SA1019
- SA5011
max-issues-per-linter: 0
max-same-issues: 0
linters:
enable:
- errcheck
- errorlint
- gocritic
- gofumpt
- goimports
- gosimple
- govet
- ineffassign
- misspell
- staticcheck
- testifylint
- unused
- whitespace
linters-settings:
gocritic:
disabled-checks:
- appendAssign
- assignOp # Keep it disabled for readability
- badCond
- commentFormatting
- exitAfterDefer
- ifElseChain
- mapKey
- singleCaseSwitch
- typeSwitchVar
goimports:
local-prefixes: github.com/argoproj/argo-cd/v2
testifylint:
enable-all: true
disable:
- error-is-as
- float-compare
- go-require
run:
timeout: 50m

View File

@@ -1,3 +1,5 @@
version: 2
project_name: argocd
before:
@@ -114,7 +116,7 @@ changelog:
exclude:
- '^test:'
- '^.*?Bump(\([[:word:]]+\))?.+$'
- '^.*?[Bot](\([[:word:]]+\))?.+$'
- '^.*?\[Bot\](\([[:word:]]+\))?.+$'
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json

View File

@@ -2,10 +2,13 @@
** @argoproj/argocd-approvers
# Docs
/docs/** @argoproj/argocd-approvers @argoproj/argocd-approvers-docs
/USERS.md @argoproj/argocd-approvers @argoproj/argocd-approvers-docs
/mkdocs.yml @argoproj/argocd-approvers @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
/.codecov.yml @argoproj/argocd-approvers @argoproj/argocd-approvers-ci
/.github/** @argoproj/argocd-approvers @argoproj/argocd-approvers-ci
/.goreleaser.yaml @argoproj/argocd-approvers @argoproj/argocd-approvers-ci
/sonar-project.properties @argoproj/argocd-approvers @argoproj/argocd-approvers-ci

View File

@@ -1,12 +1,12 @@
ARG BASE_IMAGE=docker.io/library/ubuntu:22.04@sha256:0bced47fffa3361afa981854fcabcd4577cd43cebbb808cea2b1f33a3dd7f508
ARG BASE_IMAGE=docker.io/library/ubuntu:24.04@sha256:3f85b7caad41a95462cf5b787d8a04604c8262cdcdf9a472b8c52ef83375fe15
####################################################################################################
# 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.21.3@sha256:02d7116222536a5cf0fcf631f90b507758b669648e0f20186d2dc94a9b419a9b AS builder
FROM docker.io/library/golang:1.22.4@sha256:c2010b9c2342431a24a2e64e33d9eb2e484af49e72c820e200d332d214d5e61f 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.6.1@sha256:14bd39208dbc0eb171cbfb26ccb9ac09fa1b2eba04ccd528ab5d12983fd9ee24 AS argocd-ui
FROM --platform=$BUILDPLATFORM docker.io/library/node:22.3.0@sha256:5e4044ff6001d06e7748e35bfa4f80c73cf5f5a7360a1b782995e038a01b0585 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.21.3@sha256:02d7116222536a5cf0fcf631f90b507758b669648e0f20186d2dc94a9b419a9b AS argocd-build
FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.22.4@sha256:c2010b9c2342431a24a2e64e33d9eb2e484af49e72c820e200d332d214d5e61f AS argocd-build
WORKDIR /go/src/github.com/argoproj/argo-cd

131
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?=60m
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
@@ -143,6 +153,13 @@ DEV_IMAGE?=false
ARGOCD_GPG_ENABLED?=true
ARGOCD_E2E_APISERVER_PORT?=8080
ifeq (${COVERAGE_ENABLED}, true)
# We use this in the cli-local target to enable code coverage for e2e tests.
COVERAGE_FLAG=-cover
else
COVERAGE_FLAG=
endif
override LDFLAGS += \
-X ${PACKAGE}.version=${VERSION} \
-X ${PACKAGE}.buildDate=${BUILD_DATE} \
@@ -175,29 +192,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/...
go generate ./...
.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 +221,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 +247,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 $(COVERAGE_FLAG) -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 +266,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 +281,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 +308,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 +364,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 --enable gofmt --fix --verbose --timeout 3000s --max-issues-per-linter 0 --max-same-issues 0
GOGC=$(ARGOCD_LINT_GOGC) GOMAXPROCS=2 golangci-lint run --fix --verbose
.PHONY: lint-ui
lint-ui: test-tools-image
@@ -386,9 +398,9 @@ test: test-tools-image
.PHONY: test-local
test-local:
if test "$(TEST_MODULE)" = ""; then \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES=`go list ./... | grep -v 'test/e2e'` ./hack/test.sh -coverprofile=coverage.out; \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES=`go list ./... | grep -v 'test/e2e'` ./hack/test.sh -args -test.gocoverdir="$(PWD)/test-results"; \
else \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES="$(TEST_MODULE)" ./hack/test.sh -coverprofile=coverage.out "$(TEST_MODULE)"; \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES="$(TEST_MODULE)" ./hack/test.sh -args -test.gocoverdir="$(PWD)/test-results" "$(TEST_MODULE)"; \
fi
.PHONY: test-race
@@ -400,9 +412,9 @@ test-race: test-tools-image
.PHONY: test-race-local
test-race-local:
if test "$(TEST_MODULE)" = ""; then \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES=`go list ./... | grep -v 'test/e2e'` ./hack/test.sh -race -coverprofile=coverage.out; \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES=`go list ./... | grep -v 'test/e2e'` ./hack/test.sh -race -args -test.gocoverdir="$(PWD)/test-results"; \
else \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES="$(TEST_MODULE)" ./hack/test.sh -race -coverprofile=coverage.out; \
DIST_DIR=${DIST_DIR} RERUN_FAILS=0 PACKAGES="$(TEST_MODULE)" ./hack/test.sh -race -args -test.gocoverdir="$(PWD)/test-results"; \
fi
# Run the E2E test suite. E2E test servers (see start-e2e target) must be
@@ -416,7 +428,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
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
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 -args -test.gocoverdir="$(PWD)/test-results"
# Spawns a shell in the test server container for debugging purposes
debug-test-server: test-tools-image
@@ -429,7 +441,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)
@@ -447,6 +459,12 @@ start-e2e-local: mod-vendor-local dep-ui-local cli-local
mkdir -p /tmp/argo-e2e/app/config/gpg/keys && chmod 0700 /tmp/argo-e2e/app/config/gpg/keys
mkdir -p /tmp/argo-e2e/app/config/gpg/source && chmod 0700 /tmp/argo-e2e/app/config/gpg/source
mkdir -p /tmp/argo-e2e/app/config/plugin && chmod 0700 /tmp/argo-e2e/app/config/plugin
# create folders to hold go coverage results for each component
mkdir -p /tmp/coverage/app-controller
mkdir -p /tmp/coverage/api-server
mkdir -p /tmp/coverage/repo-server
mkdir -p /tmp/coverage/applicationset-controller
mkdir -p /tmp/coverage/notification
# set paths for locally managed ssh known hosts and tls certs data
ARGOCD_SSH_DATA_PATH=/tmp/argo-e2e/app/config/ssh \
ARGOCD_TLS_DATA_PATH=/tmp/argo-e2e/app/config/tls \
@@ -464,6 +482,7 @@ start-e2e-local: mod-vendor-local dep-ui-local cli-local
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}
ls -lrt /tmp/coverage
# Cleans VSCode debug.test files from sub-dirs to prevent them from being included in by golang embed
.PHONY: clean-debug
@@ -476,7 +495,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
@@ -489,6 +508,7 @@ start-local: mod-vendor-local dep-ui-local cli-local
mkdir -p /tmp/argocd-local
mkdir -p /tmp/argocd-local/gpg/keys && chmod 0700 /tmp/argocd-local/gpg/keys
mkdir -p /tmp/argocd-local/gpg/source
REDIS_PASSWORD=$(shell kubectl get secret argocd-redis -o jsonpath='{.data.auth}' | base64 -d) \
ARGOCD_ZJWT_FEATURE_FLAG=always \
ARGOCD_IN_CI=false \
ARGOCD_GPG_ENABLED=$(ARGOCD_GPG_ENABLED) \
@@ -526,7 +546,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:
@@ -534,8 +554,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
@@ -558,7 +577,7 @@ 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)
@@ -587,7 +606,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:

View File

@@ -1,13 +1,12 @@
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:-''} --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:-''}"
controller: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/app-controller} HOSTNAME=testappcontroller-1 FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-application-controller $COMMAND --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081} --otlp-address=${ARGOCD_OTLP_ADDRESS} --application-namespaces=${ARGOCD_APPLICATION_NAMESPACES:-''} --server-side-diff-enabled=${ARGOCD_APPLICATION_CONTROLLER_SERVER_SIDE_DIFF:-'false'}"
api-server: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/api-server} FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-server $COMMAND --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --disable-auth=${ARGOCD_E2E_DISABLE_AUTH:-'true'} --insecure --dex-server http://localhost:${ARGOCD_E2E_DEX_PORT:-5556} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081} --port ${ARGOCD_E2E_APISERVER_PORT:-8080} --otlp-address=${ARGOCD_OTLP_ADDRESS} --application-namespaces=${ARGOCD_APPLICATION_NAMESPACES:-''}"
dex: sh -c "ARGOCD_BINARY_NAME=argocd-dex go run github.com/argoproj/argo-cd/v2/cmd gendexcfg -o `pwd`/dist/dex.yaml && (test -f dist/dex.yaml || { echo 'Failed to generate dex configuration'; exit 1; }) && docker run --rm -p ${ARGOCD_E2E_DEX_PORT:-5556}:${ARGOCD_E2E_DEX_PORT:-5556} -v `pwd`/dist/dex.yaml:/dex.yaml ghcr.io/dexidp/dex:$(grep "image: ghcr.io/dexidp/dex" manifests/base/dex/argocd-dex-server-deployment.yaml | cut -d':' -f3) dex serve /dex.yaml"
redis: bash -c "if [ \"$ARGOCD_REDIS_LOCAL\" = 'true' ]; then redis-server --save '' --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}; else docker run --rm --name argocd-redis -i -p ${ARGOCD_E2E_REDIS_PORT:-6379}:${ARGOCD_E2E_REDIS_PORT:-6379} docker.io/library/redis:$(grep "image: redis" manifests/base/redis/argocd-redis-deployment.yaml | cut -d':' -f3) --save '' --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}; fi"
repo-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_GNUPGHOME=${ARGOCD_GNUPGHOME:-/tmp/argocd-local/gpg/keys} ARGOCD_PLUGINSOCKFILEPATH=${ARGOCD_PLUGINSOCKFILEPATH:-./test/cmp} ARGOCD_GPG_DATA_PATH=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source} ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-repo-server ARGOCD_GPG_ENABLED=${ARGOCD_GPG_ENABLED:-false} $COMMAND --loglevel debug --port ${ARGOCD_E2E_REPOSERVER_PORT:-8081} --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --otlp-address=${ARGOCD_OTLP_ADDRESS}"
repo-server: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/repo-server} FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_GNUPGHOME=${ARGOCD_GNUPGHOME:-/tmp/argocd-local/gpg/keys} ARGOCD_PLUGINSOCKFILEPATH=${ARGOCD_PLUGINSOCKFILEPATH:-./test/cmp} ARGOCD_GPG_DATA_PATH=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source} ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-repo-server ARGOCD_GPG_ENABLED=${ARGOCD_GPG_ENABLED:-false} $COMMAND --loglevel debug --port ${ARGOCD_E2E_REPOSERVER_PORT:-8081} --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --otlp-address=${ARGOCD_OTLP_ADDRESS}"
cmp-server: [ "$ARGOCD_E2E_TEST" = 'true' ] && exit 0 || [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_BINARY_NAME=argocd-cmp-server ARGOCD_PLUGINSOCKFILEPATH=${ARGOCD_PLUGINSOCKFILEPATH:-./test/cmp} $COMMAND --config-dir-path ./test/cmp --loglevel debug --otlp-address=${ARGOCD_OTLP_ADDRESS}"
ui: sh -c 'cd ui && ${ARGOCD_E2E_YARN_CMD:-yarn} start'
git-server: test/fixture/testrepos/start-git.sh
helm-registry: test/fixture/testrepos/start-helm-registry.sh
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 --application-namespaces=${ARGOCD_APPLICATION_NAMESPACES:-''} --self-service-notification-enabled=${ARGOCD_NOTIFICATION_CONTROLLER_SELF_SERVICE_NOTIFICATION_ENABLED:-'false'}"
applicationset-controller: [ "$BIN_MODE" = 'true' ] && COMMAND=./dist/argocd || COMMAND='go run ./cmd/main.go' && sh -c "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/applicationset-controller} 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 "GOCOVERDIR=${ARGOCD_COVERAGE_DIR:-/tmp/coverage/notification} 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
@@ -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/)

View File

@@ -18,12 +18,16 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Albert Heijn](https://ah.nl/)
1. [Alibaba Group](https://www.alibabagroup.com/)
1. [Allianz Direct](https://www.allianzdirect.de/)
1. [AlphaSense](https://www.alpha-sense.com/)
1. [Amadeus IT Group](https://amadeus.com/)
1. [Ambassador Labs](https://www.getambassador.io/)
1. [Ancestry](https://www.ancestry.com/)
1. [Andgo Systems](https://www.andgosystems.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)
@@ -33,34 +37,39 @@ Currently, the following organizations are **officially** using Argo CD:
1. [BCDevExchange DevOps Platform](https://bcdevexchange.org/DevOpsPlatform)
1. [Beat](https://thebeat.co/en/)
1. [Beez Innovation Labs](https://www.beezlabs.com/)
1. [Bedag Informatik AG](https://www.bedag.ch/)
1. [Beleza Na Web](https://www.belezanaweb.com.br/)
1. [BigPanda](https://bigpanda.io)
1. [BioBox Analytics](https://biobox.io)
1. [BMW Group](https://www.bmwgroup.com/)
1. [Boozt](https://www.booztgroup.com/)
1. [Boticario](https://www.boticario.com.br/)
1. [Broker Consulting, a.s.](https://www.bcas.cz/en/)
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/)
1. [Cloud Scale](https://cloudscaleinc.com/)
1. [CloudGeometry](https://www.cloudgeometry.io/)
1. [Cloudmate](https://cloudmt.co.kr/)
1. [Cloudogu](https://cloudogu.com/)
1. [Cobalt](https://www.cobalt.io/)
1. [Codefresh](https://www.codefresh.io/)
1. [Codility](https://www.codility.com/)
1. [Commonbond](https://commonbond.co/)
1. [Contlo](https://contlo.com/)
1. [Coralogix](https://coralogix.com/)
1. [Crédit Agricole CIB](https://www.ca-cib.com)
1. [CROZ d.o.o.](https://croz.net/)
@@ -93,6 +102,7 @@ Currently, the following organizations are **officially** using Argo CD:
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/)
@@ -111,8 +121,8 @@ Currently, the following organizations are **officially** using Argo CD:
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)
@@ -125,9 +135,12 @@ 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. [IFS](https://www.ifs.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/)
@@ -153,6 +166,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [KubeSphere](https://github.com/kubesphere)
1. [Kurly](https://www.kurly.com/)
1. [Kvist](https://kvistsolutions.com)
1. [Kyriba](https://www.kyriba.com/)
1. [LexisNexis](https://www.lexisnexis.com/)
1. [Lian Chu Securities](https://lczq.com)
1. [Liatrio](https://www.liatrio.com)
@@ -173,6 +187,7 @@ Currently, the following organizations are **officially** using Argo CD:
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. [Metacore Games](https://metacoregames.com/)
1. [Metanet](http://www.metanet.co.kr/en/)
1. [MindSpore](https://mindspore.cn)
1. [Mirantis](https://mirantis.com/)
@@ -185,6 +200,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)
@@ -192,9 +208,11 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Objective](https://www.objective.com.br/)
1. [OCCMundial](https://occ.com.mx)
1. [Octadesk](https://octadesk.com)
1. [Octopus Deploy](https://octopus.com)
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)
@@ -211,13 +229,17 @@ Currently, the following organizations are **officially** using Argo CD:
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. [Pipedrive](https://www.pipedrive.com/)
1. [Pipefy](https://www.pipefy.com/)
1. [Pipekit](https://pipekit.io/)
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)
@@ -233,15 +255,18 @@ 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. [Recreation.gov](https://www.recreation.gov/)
1. [rebuy](https://www.rebuy.de/)
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. [Rogo](https://rogodata.com)
1. [Rubin Observatory](https://www.lsst.org)
1. [Saildrone](https://www.saildrone.com/)
1. [Salad Technologies](https://salad.com/)
@@ -252,6 +277,7 @@ Currently, the following organizations are **officially** using Argo CD:
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/)
@@ -267,6 +293,7 @@ Currently, the following organizations are **officially** using Argo CD:
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/)
@@ -275,11 +302,13 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Swisscom](https://www.swisscom.ch)
1. [Swissquote](https://github.com/swissquote)
1. [Syncier](https://syncier.com/)
1. [Syself](https://syself.com)
1. [TableCheck](https://tablecheck.com/)
1. [Tailor Brands](https://www.tailorbrands.com)
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/)
@@ -303,6 +332,7 @@ Currently, the following organizations are **officially** using Argo CD:
1. [Urbantz](https://urbantz.com/)
1. [Vectra](https://www.vectra.ai)
1. [Veepee](https://www.veepee.com)
1. [Verkada](https://www.verkada.com)
1. [Viaduct](https://www.viaduct.ai/)
1. [VietMoney](https://vietmoney.vn/)
1. [Vinted](https://vinted.com/)

View File

@@ -1 +1 @@
2.9.0
2.12.2

View File

@@ -18,8 +18,11 @@ 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,18 +31,15 @@ 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"
"sigs.k8s.io/controller-runtime/pkg/event"
"sigs.k8s.io/controller-runtime/pkg/handler"
"sigs.k8s.io/controller-runtime/pkg/predicate"
"sigs.k8s.io/controller-runtime/pkg/source"
"github.com/argoproj/argo-cd/v2/applicationset/generators"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
@@ -50,6 +50,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"
)
@@ -62,12 +63,10 @@ const (
ReconcileRequeueOnValidationError = time.Minute * 3
)
var (
defaultPreservedAnnotations = []string{
NotifiedAnnotationKey,
argov1alpha1.AnnotationKeyRefresh,
}
)
var defaultPreservedAnnotations = []string{
NotifiedAnnotationKey,
argov1alpha1.AnnotationKeyRefresh,
}
// ApplicationSetReconciler reconciles a ApplicationSet object
type ApplicationSetReconciler struct {
@@ -87,7 +86,6 @@ type ApplicationSetReconciler struct {
SCMRootCAPath string
GlobalPreservedAnnotations []string
GlobalPreservedLabels []string
Cache cache.Cache
}
// +kubebuilder:rbac:groups=argoproj.io,resources=applicationsets,verbs=get;list;watch;create;update;patch;delete
@@ -108,19 +106,28 @@ 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 {
appsetName := applicationSetInfo.ObjectMeta.Name
logCtx.Debugf("DeletionTimestamp is set on %s", appsetName)
deleteAllowed := utils.DefaultPolicy(applicationSetInfo.Spec.SyncPolicy, r.Policy, r.EnablePolicyOverride).AllowDelete()
if !deleteAllowed {
logCtx.Debugf("ApplicationSet policy does not allow to delete")
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
}
logCtx.Debugf("ownerReferences referring %s is deleted from generated applications", appsetName)
}
controllerutil.RemoveFinalizer(&applicationSetInfo, argov1alpha1.ResourcesFinalizerName)
if err := r.Update(ctx, &applicationSetInfo); err != nil {
return ctrl.Result{}, err
}
return ctrl.Result{}, nil
}
if err := r.migrateStatus(ctx, &applicationSetInfo); err != nil {
logCtx.Errorf("failed to migrate status subresource %v", err)
return ctrl.Result{}, err
}
// 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.
@@ -135,7 +142,7 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
Status: argov1alpha1.ApplicationSetConditionStatusTrue,
}, parametersGenerated,
)
return ctrl.Result{}, err
return ctrl.Result{RequeueAfter: ReconcileRequeueOnValidationError}, err
}
parametersGenerated = true
@@ -163,6 +170,16 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
return ctrl.Result{RequeueAfter: ReconcileRequeueOnValidationError}, nil
}
currentApplications, err := r.getCurrentApplications(ctx, applicationSetInfo)
if err != nil {
return ctrl.Result{}, fmt.Errorf("failed to get current applications for application set: %w", err)
}
err = r.updateResourcesStatus(ctx, logCtx, &applicationSetInfo, currentApplications)
if err != nil {
return ctrl.Result{}, fmt.Errorf("failed to get update resources status for application set: %w", err)
}
// appMap is a name->app collection of Applications in this ApplicationSet.
appMap := map[string]argov1alpha1.Application{}
// appSyncMap tracks which apps will be synced during this reconciliation.
@@ -179,16 +196,11 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
}
} 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)
}
for _, app := range applications {
for _, app := range currentApplications {
appMap[app.Name] = app
}
appSyncMap, err = r.performProgressiveSyncs(ctx, logCtx, applicationSetInfo, applications, desiredApplications, appMap)
appSyncMap, err = r.performProgressiveSyncs(ctx, logCtx, applicationSetInfo, currentApplications, desiredApplications, appMap)
if err != nil {
return ctrl.Result{}, fmt.Errorf("failed to perform progressive sync reconciliation for application set: %w", err)
}
@@ -227,7 +239,6 @@ func (r *ApplicationSetReconciler) Reconcile(ctx context.Context, req ctrl.Reque
// trigger appropriate application syncs if RollingSync strategy is enabled
if progressiveSyncsStrategyEnabled(&applicationSetInfo, "RollingSync") {
validApps, err = r.syncValidApplications(logCtx, &applicationSetInfo, appSyncMap, appMap, validApps)
if err != nil {
_ = r.setApplicationSetStatusCondition(ctx,
&applicationSetInfo,
@@ -418,7 +429,7 @@ func (r *ApplicationSetReconciler) setApplicationSetStatusCondition(ctx context.
if client.IgnoreNotFound(err) != nil {
return nil
}
return fmt.Errorf("error fetching updated application set: %v", err)
return fmt.Errorf("error fetching updated application set: %w", err)
}
applicationSet.Status.SetConditions(
@@ -428,7 +439,7 @@ func (r *ApplicationSetReconciler) setApplicationSetStatusCondition(ctx context.
// Update the newly fetched object with new set of conditions
err := r.Client.Status().Update(ctx, applicationSet)
if err != nil && !apierr.IsNotFound(err) {
return fmt.Errorf("unable to set application set condition: %v", err)
return fmt.Errorf("unable to set application set condition: %w", err)
}
}
@@ -441,7 +452,6 @@ func (r *ApplicationSetReconciler) validateGeneratedApplications(ctx context.Con
errorsByIndex := map[int]error{}
namesSet := map[string]bool{}
for i, app := range desiredApplications {
if !namesSet[app.Name] {
namesSet[app.Name] = true
} else {
@@ -461,7 +471,6 @@ func (r *ApplicationSetReconciler) validateGeneratedApplications(ctx context.Con
errorsByIndex[i] = fmt.Errorf("application destination spec is invalid: %s", err.Error())
continue
}
}
return errorsByIndex, nil
@@ -470,7 +479,6 @@ func (r *ApplicationSetReconciler) validateGeneratedApplications(ctx context.Con
func (r *ApplicationSetReconciler) getMinRequeueAfter(applicationSetInfo *argov1alpha1.ApplicationSet) time.Duration {
var res time.Duration
for _, requestedGenerator := range applicationSetInfo.Spec.Generators {
relevantGenerators := generators.GetRelevantGenerators(&requestedGenerator, r.Generators)
for _, g := range relevantGenerators {
@@ -506,7 +514,7 @@ func (r *ApplicationSetReconciler) generateApplications(logCtx *log.Entry, appli
var applicationSetReason argov1alpha1.ApplicationSetReasonType
for _, requestedGenerator := range applicationSetInfo.Spec.Generators {
t, err := generators.Transform(requestedGenerator, r.Generators, applicationSetInfo.Spec.Template, &applicationSetInfo, map[string]interface{}{})
t, err := generators.Transform(requestedGenerator, r.Generators, applicationSetInfo.Spec.Template, &applicationSetInfo, map[string]interface{}{}, r.Client)
if err != nil {
logCtx.WithError(err).WithField("generator", requestedGenerator).
Error("error generating application from params")
@@ -522,7 +530,6 @@ func (r *ApplicationSetReconciler) generateApplications(logCtx *log.Entry, appli
for _, p := range a.Params {
app, err := r.Renderer.RenderTemplateParams(tmplApplication, applicationSetInfo.Spec.SyncPolicy, p, applicationSetInfo.Spec.GoTemplate, applicationSetInfo.Spec.GoTemplateOptions)
if err != nil {
logCtx.WithError(err).WithField("params", a.Params).WithField("generator", requestedGenerator).
Error("error generating application from params")
@@ -536,7 +543,6 @@ func (r *ApplicationSetReconciler) generateApplications(logCtx *log.Entry, appli
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")
@@ -564,7 +570,6 @@ func (r *ApplicationSetReconciler) generateApplications(logCtx *log.Entry, appli
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)
}
@@ -609,7 +614,7 @@ func (r *ApplicationSetReconciler) SetupWithManager(mgr ctrl.Manager, enableProg
Owns(&argov1alpha1.Application{}, builder.WithPredicates(ownsHandler)).
WithEventFilter(ignoreNotAllowedNamespaces(r.ApplicationSetNamespaces)).
Watches(
&source.Kind{Type: &corev1.Secret{}},
&corev1.Secret{},
&clusterSecretEventHandler{
Client: mgr.GetClient(),
Log: log.WithField("type", "createSecretEventHandler"),
@@ -618,31 +623,11 @@ 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, logCtx *log.Entry, applicationSet argov1alpha1.ApplicationSet, desiredApplications []argov1alpha1.Application) error {
var firstError error
// Creates or updates the application in appList
for _, generatedApp := range desiredApplications {
@@ -666,7 +651,7 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
},
}
action, err := utils.CreateOrUpdate(ctx, appLog, r.Client, applicationSet.Spec.IgnoreApplicationDifferences, 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
@@ -714,6 +699,17 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
}
}
// 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
@@ -721,7 +717,6 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
return controllerutil.SetControllerReference(&applicationSet, found, r.Scheme)
})
if err != nil {
appLog.WithError(err).WithField("action", action).Errorf("failed to %s Application", action)
if firstError == nil {
@@ -729,7 +724,6 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
}
continue
}
r.updateCache(ctx, found, appLog)
if action != controllerutil.OperationResultNone {
// Don't pollute etcd with "unchanged Application" events
@@ -747,7 +741,6 @@ func (r *ApplicationSetReconciler) createOrUpdateInCluster(ctx context.Context,
// 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, logCtx *log.Entry, applicationSet argov1alpha1.ApplicationSet, desiredApplications []argov1alpha1.Application) error {
var createApps []argov1alpha1.Application
current, err := r.getCurrentApplications(ctx, applicationSet)
if err != nil {
@@ -775,7 +768,6 @@ func (r *ApplicationSetReconciler) createInCluster(ctx context.Context, logCtx *
func (r *ApplicationSetReconciler) getCurrentApplications(ctx context.Context, applicationSet argov1alpha1.ApplicationSet) ([]argov1alpha1.Application, error) {
var current argov1alpha1.ApplicationList
err := r.Client.List(ctx, &current, client.MatchingFields{".metadata.controller": applicationSet.Name}, client.InNamespace(applicationSet.Namespace))
if err != nil {
return nil, fmt.Errorf("error retrieving applications: %w", err)
}
@@ -813,7 +805,6 @@ func (r *ApplicationSetReconciler) deleteInCluster(ctx context.Context, logCtx *
_, 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, logCtx)
if err != nil {
@@ -841,7 +832,6 @@ func (r *ApplicationSetReconciler) deleteInCluster(ctx context.Context, logCtx *
// removeFinalizerOnInvalidDestination removes the Argo CD resources finalizer if the application contains an invalid target (eg missing cluster)
func (r *ApplicationSetReconciler) removeFinalizerOnInvalidDestination(ctx context.Context, applicationSet argov1alpha1.ApplicationSet, app *argov1alpha1.Application, clusterList *argov1alpha1.ClusterList, appLog *log.Entry) error {
// Only check if the finalizers need to be removed IF there are finalizers to remove
if len(app.Finalizers) == 0 {
return nil
@@ -854,12 +844,10 @@ func (r *ApplicationSetReconciler) removeFinalizerOnInvalidDestination(ctx conte
appLog.Warnf("The destination cluster for %s couldn't be found: %v", app.Name, err)
validDestination = false
} else {
// Detect if the destination's server field does not match an existing cluster
matchingCluster := false
for _, cluster := range clusterList.Items {
// Server fields must match. Note that ValidateDestination ensures that the server field is set, if applicable.
if app.Spec.Destination.Server != cluster.Server {
continue
@@ -883,7 +871,6 @@ func (r *ApplicationSetReconciler) removeFinalizerOnInvalidDestination(ctx conte
// If the destination is invalid (for example the cluster is no longer defined), then remove
// the application finalizers to avoid triggering Argo CD bug #5817
if !validDestination {
// Filter out the Argo CD finalizer from the finalizer list
var newFinalizers []string
for _, existingFinalizer := range app.Finalizers {
@@ -903,7 +890,6 @@ func (r *ApplicationSetReconciler) removeFinalizerOnInvalidDestination(ctx conte
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)
@@ -933,7 +919,6 @@ func (r *ApplicationSetReconciler) removeOwnerReferencesOnDeleteAppSet(ctx conte
}
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)
@@ -971,7 +956,6 @@ func (r *ApplicationSetReconciler) performProgressiveSyncs(ctx context.Context,
// this list tracks which Applications belong to each RollingUpdate step
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
}
@@ -991,11 +975,9 @@ func (r *ApplicationSetReconciler) buildAppDependencyList(logCtx *log.Entry, app
// use applicationLabelSelectors to filter generated Applications into steps and status by name
for _, app := range applications {
for i, step := range steps {
selected := true // default to true, assuming the current Application is a match for the given step matchExpression
for _, matchExpression := range step.MatchExpressions {
if val, ok := app.Labels[matchExpression.Key]; ok {
valueMatched := labelMatchedExpression(logCtx, val, matchExpression)
@@ -1059,7 +1041,6 @@ func (r *ApplicationSetReconciler) buildAppSyncMap(ctx context.Context, applicat
// detect if we need to halt before progressing to the next step
for _, appName := range appDependencyList[i] {
idx := findApplicationStatusIndex(applicationSet.Status.ApplicationStatus, appName)
if idx == -1 {
// no Application status found, likely because the Application is being newly created
@@ -1070,7 +1051,6 @@ func (r *ApplicationSetReconciler) buildAppSyncMap(ctx context.Context, applicat
appStatus := applicationSet.Status.ApplicationStatus[idx]
if app, ok := appMap[appName]; ok {
syncEnabled = appSyncEnabledForNextStep(&applicationSet, app, appStatus)
if !syncEnabled {
break
@@ -1087,7 +1067,6 @@ func (r *ApplicationSetReconciler) buildAppSyncMap(ctx context.Context, applicat
}
func appSyncEnabledForNextStep(appset *argov1alpha1.ApplicationSet, app argov1alpha1.Application, appStatus argov1alpha1.ApplicationSetApplicationStatus) bool {
if progressiveSyncsStrategyEnabled(appset, "RollingSync") {
// we still need to complete the current step if the Application is not yet Healthy or there are still pending Application changes
return isApplicationHealthy(app) && appStatus.Status == "Healthy"
@@ -1130,12 +1109,10 @@ 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, 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))
for _, app := range applications {
healthStatusString, syncStatusString, operationPhaseString := statusStrings(app)
idx := findApplicationStatusIndex(applicationSet.Status.ApplicationStatus, app.Name)
@@ -1150,10 +1127,18 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
Message: "No Application status found, defaulting status to Waiting.",
Status: "Waiting",
Step: fmt.Sprint(appStepMap[app.Name] + 1),
TargetRevisions: app.Status.GetRevisions(),
}
} else {
// we have an existing AppStatus
currentAppStatus = applicationSet.Status.ApplicationStatus[idx]
// upgrade any existing AppStatus that might have been set by an older argo-cd version
// note: currentAppStatus.TargetRevisions may be set to empty list earlier during migrations,
// to prevent other usage of r.Client.Status().Update to fail before reaching here.
if currentAppStatus.TargetRevisions == nil || len(currentAppStatus.TargetRevisions) == 0 {
currentAppStatus.TargetRevisions = app.Status.GetRevisions()
}
}
appOutdated := false
@@ -1167,20 +1152,25 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatus(ctx con
currentAppStatus.Status = "Waiting"
currentAppStatus.Message = "Application has pending changes, setting status to Waiting."
currentAppStatus.Step = fmt.Sprint(appStepMap[currentAppStatus.Application] + 1)
currentAppStatus.TargetRevisions = app.Status.GetRevisions()
}
if currentAppStatus.Status == "Pending" {
// check for successful syncs started less than 10s before the Application transitioned to Pending
// 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) {
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)
if operationPhaseString == "Succeeded" {
revisions := []string{}
if len(app.Status.OperationState.SyncResult.Revisions) > 0 {
revisions = app.Status.OperationState.SyncResult.Revisions
} else if app.Status.OperationState.SyncResult.Revision != "" {
revisions = append(revisions, app.Status.OperationState.SyncResult.Revision)
}
if reflect.DeepEqual(currentAppStatus.TargetRevisions, revisions) {
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)
}
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" {
logCtx.Infof("Application %v has entered Progressing status, updating its ApplicationSet status to Progressing", app.Name)
currentAppStatus.LastTransitionTime = &now
@@ -1249,7 +1239,6 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress
}
for _, appStatus := range applicationSet.Status.ApplicationStatus {
maxUpdateAllowed := true
maxUpdate := &intstr.IntOrString{}
if progressiveSyncsStrategyEnabled(applicationSet, "RollingSync") {
@@ -1272,7 +1261,6 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress
maxUpdateAllowed = false
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 {
@@ -1298,7 +1286,6 @@ func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusProgress
}
func (r *ApplicationSetReconciler) updateApplicationSetApplicationStatusConditions(ctx context.Context, applicationSet *argov1alpha1.ApplicationSet) ([]argov1alpha1.ApplicationSetCondition, error) {
appSetProgressing := false
for _, appStatus := range applicationSet.Status.ApplicationStatus {
if appStatus.Status != "Healthy" {
@@ -1349,7 +1336,107 @@ func findApplicationStatusIndex(appStatuses []argov1alpha1.ApplicationSetApplica
return -1
}
// setApplicationSetApplicationStatus updates the ApplicatonSet's status field
// migrateStatus run migrations on the status subresource of ApplicationSet early during the run of ApplicationSetReconciler.Reconcile
// this handles any defaulting of values - which would otherwise cause the references to r.Client.Status().Update to fail given missing required fields.
func (r *ApplicationSetReconciler) migrateStatus(ctx context.Context, appset *argov1alpha1.ApplicationSet) error {
update := false
if statusList := appset.Status.ApplicationStatus; statusList != nil {
for idx := range statusList {
if statusList[idx].TargetRevisions == nil {
statusList[idx].TargetRevisions = []string{}
update = true
}
}
}
if update {
if err := r.Client.Status().Update(ctx, appset); err != nil {
return fmt.Errorf("unable to set application set status: %w", err)
}
}
return nil
}
func (r *ApplicationSetReconciler) updateResourcesStatus(ctx context.Context, logCtx *log.Entry, appset *argov1alpha1.ApplicationSet, apps []argov1alpha1.Application) error {
statusMap := getResourceStatusMap(appset)
statusMap = buildResourceStatus(statusMap, apps)
statuses := []argov1alpha1.ResourceStatus{}
for _, status := range statusMap {
statuses = append(statuses, status)
}
appset.Status.Resources = statuses
namespacedName := types.NamespacedName{Namespace: appset.Namespace, Name: appset.Name}
err := r.Client.Status().Update(ctx, appset)
if err != nil {
logCtx.Errorf("unable to set application set status: %v", err)
return fmt.Errorf("unable to set application set status: %w", err)
}
if err := r.Get(ctx, namespacedName, appset); err != nil {
if client.IgnoreNotFound(err) != nil {
return nil
}
return fmt.Errorf("error fetching updated application set: %w", err)
}
return nil
}
func buildResourceStatus(statusMap map[string]argov1alpha1.ResourceStatus, apps []argov1alpha1.Application) map[string]argov1alpha1.ResourceStatus {
appMap := map[string]argov1alpha1.Application{}
for _, app := range apps {
appCopy := app
appMap[app.Name] = app
gvk := app.GroupVersionKind()
// Create status if it does not exist
status, ok := statusMap[app.Name]
if !ok {
status = argov1alpha1.ResourceStatus{
Group: gvk.Group,
Version: gvk.Version,
Kind: gvk.Kind,
Name: app.Name,
Namespace: app.Namespace,
Status: app.Status.Sync.Status,
Health: &appCopy.Status.Health,
}
}
status.Group = gvk.Group
status.Version = gvk.Version
status.Kind = gvk.Kind
status.Name = app.Name
status.Namespace = app.Namespace
status.Status = app.Status.Sync.Status
status.Health = &appCopy.Status.Health
statusMap[app.Name] = status
}
cleanupDeletedApplicationStatuses(statusMap, appMap)
return statusMap
}
func getResourceStatusMap(appset *argov1alpha1.ApplicationSet) map[string]argov1alpha1.ResourceStatus {
statusMap := map[string]argov1alpha1.ResourceStatus{}
for _, status := range appset.Status.Resources {
statusMap[status.Name] = status
}
return statusMap
}
func cleanupDeletedApplicationStatuses(statusMap map[string]argov1alpha1.ResourceStatus, apps map[string]argov1alpha1.Application) {
for name := range statusMap {
if _, ok := apps[name]; !ok {
delete(statusMap, name)
}
}
}
// setApplicationSetApplicationStatus updates the ApplicationSet's status field
// with any new/changed Application statuses.
func (r *ApplicationSetReconciler) setAppSetApplicationStatus(ctx context.Context, logCtx *log.Entry, applicationSet *argov1alpha1.ApplicationSet, applicationStatuses []argov1alpha1.ApplicationSetApplicationStatus) error {
needToUpdateStatus := false
@@ -1384,16 +1471,15 @@ func (r *ApplicationSetReconciler) setAppSetApplicationStatus(ctx context.Contex
// Update the newly fetched object with new set of ApplicationStatus
err := r.Client.Status().Update(ctx, applicationSet)
if err != nil {
logCtx.Errorf("unable to set application set status: %v", err)
return fmt.Errorf("unable to set application set status: %v", err)
return fmt.Errorf("unable to set application set status: %w", err)
}
if err := r.Get(ctx, namespacedName, applicationSet); err != nil {
if client.IgnoreNotFound(err) != nil {
return nil
}
return fmt.Errorf("error fetching updated application set: %v", err)
return fmt.Errorf("error fetching updated application set: %w", err)
}
}
@@ -1430,7 +1516,6 @@ func (r *ApplicationSetReconciler) syncValidApplications(logCtx *log.Entry, appl
// used by the RollingSync Progressive Sync strategy to trigger a sync of a particular Application resource
func syncApplication(application argov1alpha1.Application, prune bool) (argov1alpha1.Application, error) {
operation := argov1alpha1.Operation{
InitiatedBy: argov1alpha1.OperationInitiator{
Username: "applicationset-controller",
@@ -1526,10 +1611,13 @@ 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 comparison
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

@@ -19,25 +19,25 @@ import (
// clusterSecretEventHandler is used when watching Secrets to check if they are ArgoCD Cluster Secrets, and if so
// requeue any related ApplicationSets.
type clusterSecretEventHandler struct {
//handler.EnqueueRequestForOwner
// handler.EnqueueRequestForOwner
Log log.FieldLogger
Client client.Client
}
func (h *clusterSecretEventHandler) Create(e event.CreateEvent, q workqueue.RateLimitingInterface) {
h.queueRelatedAppGenerators(q, e.Object)
func (h *clusterSecretEventHandler) Create(ctx context.Context, e event.CreateEvent, q workqueue.RateLimitingInterface) {
h.queueRelatedAppGenerators(ctx, q, e.Object)
}
func (h *clusterSecretEventHandler) Update(e event.UpdateEvent, q workqueue.RateLimitingInterface) {
h.queueRelatedAppGenerators(q, e.ObjectNew)
func (h *clusterSecretEventHandler) Update(ctx context.Context, e event.UpdateEvent, q workqueue.RateLimitingInterface) {
h.queueRelatedAppGenerators(ctx, q, e.ObjectNew)
}
func (h *clusterSecretEventHandler) Delete(e event.DeleteEvent, q workqueue.RateLimitingInterface) {
h.queueRelatedAppGenerators(q, e.Object)
func (h *clusterSecretEventHandler) Delete(ctx context.Context, e event.DeleteEvent, q workqueue.RateLimitingInterface) {
h.queueRelatedAppGenerators(ctx, q, e.Object)
}
func (h *clusterSecretEventHandler) Generic(e event.GenericEvent, q workqueue.RateLimitingInterface) {
h.queueRelatedAppGenerators(q, e.Object)
func (h *clusterSecretEventHandler) Generic(ctx context.Context, e event.GenericEvent, q workqueue.RateLimitingInterface) {
h.queueRelatedAppGenerators(ctx, q, e.Object)
}
// addRateLimitingInterface defines the Add method of workqueue.RateLimitingInterface, allow us to easily mock
@@ -46,7 +46,7 @@ type addRateLimitingInterface interface {
Add(item interface{})
}
func (h *clusterSecretEventHandler) queueRelatedAppGenerators(q addRateLimitingInterface, object client.Object) {
func (h *clusterSecretEventHandler) queueRelatedAppGenerators(ctx context.Context, q addRateLimitingInterface, object client.Object) {
// Check for label, lookup all ApplicationSets that might match the cluster, queue them all
if object.GetLabels()[generators.ArgoCDSecretTypeLabel] != generators.ArgoCDSecretTypeCluster {
return
@@ -58,7 +58,7 @@ func (h *clusterSecretEventHandler) queueRelatedAppGenerators(q addRateLimitingI
}).Info("processing event for cluster secret")
appSetList := &argoprojiov1alpha1.ApplicationSetList{}
err := h.Client.List(context.Background(), appSetList)
err := h.Client.List(ctx, appSetList)
if err != nil {
h.Log.WithError(err).Error("unable to list ApplicationSets")
return
@@ -66,7 +66,6 @@ func (h *clusterSecretEventHandler) queueRelatedAppGenerators(q addRateLimitingI
h.Log.WithField("count", len(appSetList.Items)).Info("listed ApplicationSets")
for _, appSet := range appSetList.Items {
foundClusterGenerator := false
for _, generator := range appSet.Spec.Generators {
if generator.Clusters != nil {
@@ -109,7 +108,6 @@ func (h *clusterSecretEventHandler) queueRelatedAppGenerators(q addRateLimitingI
}
}
if foundClusterGenerator {
// TODO: only queue the AppGenerator if the labels match this cluster
req := ctrl.Request{NamespacedName: types.NamespacedName{Namespace: appSet.Namespace, Name: appSet.Name}}
q.Add(req)

View File

@@ -1,10 +1,12 @@
package controllers
import (
"context"
"testing"
log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -19,13 +21,12 @@ import (
)
func TestClusterEventHandler(t *testing.T) {
scheme := runtime.NewScheme()
err := argov1alpha1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
err = argov1alpha1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
tests := []struct {
name string
@@ -534,9 +535,7 @@ func TestClusterEventHandler(t *testing.T) {
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
appSetList := argov1alpha1.ApplicationSetList{
Items: test.items,
}
@@ -550,14 +549,12 @@ func TestClusterEventHandler(t *testing.T) {
mockAddRateLimitingInterface := mockAddRateLimitingInterface{}
handler.queueRelatedAppGenerators(&mockAddRateLimitingInterface, &test.secret)
handler.queueRelatedAppGenerators(context.Background(), &mockAddRateLimitingInterface, &test.secret)
assert.False(t, mockAddRateLimitingInterface.errorOccurred)
assert.ElementsMatch(t, mockAddRateLimitingInterface.addedItems, test.expectedRequests)
})
}
}
// Add checks the type, and adds it to the internal list of received additions
@@ -581,7 +578,7 @@ func TestNestedGeneratorHasClusterGenerator_NestedClusterGenerator(t *testing.T)
hasClusterGenerator, err := nestedGeneratorHasClusterGenerator(nested)
assert.Nil(t, err)
require.NoError(t, err)
assert.True(t, hasClusterGenerator)
}
@@ -608,7 +605,7 @@ func TestNestedGeneratorHasClusterGenerator_NestedMergeGenerator(t *testing.T) {
hasClusterGenerator, err := nestedGeneratorHasClusterGenerator(nested)
assert.Nil(t, err)
require.NoError(t, err)
assert.True(t, hasClusterGenerator)
}
@@ -635,6 +632,6 @@ func TestNestedGeneratorHasClusterGenerator_NestedMergeGeneratorWithInvalidJSON(
hasClusterGenerator, err := nestedGeneratorHasClusterGenerator(nested)
assert.NotNil(t, err)
require.Error(t, err)
assert.False(t, hasClusterGenerator)
}

View File

@@ -6,6 +6,7 @@ import (
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
@@ -25,7 +26,7 @@ func TestRequeueAfter(t *testing.T) {
ctx := context.Background()
scheme := runtime.NewScheme()
err := argov1alpha1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
gvrToListKind := map[schema.GroupVersionResource]string{{
Group: "mallard.io",
Version: "v1",
@@ -59,7 +60,7 @@ func TestRequeueAfter(t *testing.T) {
terminalGenerators := map[string]generators.Generator{
"List": generators.NewListGenerator(),
"Clusters": generators.NewClusterGenerator(k8sClient, ctx, appClientset, "argocd"),
"Git": generators.NewGitGenerator(mockServer),
"Git": generators.NewGitGenerator(mockServer, "namespace"),
"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{}, "", []string{""}, true),

View File

@@ -11,14 +11,12 @@ import (
)
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)
}
@@ -28,7 +26,6 @@ func applyTemplatePatch(app *appv1.Application, templatePatch string) (*appv1.Ap
}
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)
}

View File

@@ -38,7 +38,6 @@ type ClusterGenerator struct {
var render = &utils.Render{}
func NewClusterGenerator(c client.Client, ctx context.Context, clientset kubernetes.Interface, namespace string) Generator {
settingsManager := settings.NewSettingsManager(ctx, clientset, namespace)
g := &ClusterGenerator{
@@ -61,8 +60,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, _ client.Client) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -95,12 +93,10 @@ func (g *ClusterGenerator) GenerateParams(appSetGenerator *argoappsetv1alpha1.Ap
secretsFound := []corev1.Secret{}
for _, cluster := range clustersFromArgoCD.Items {
// If there is a secret for this cluster, then it's a non-local cluster, so it will be
// handled by the next step.
if secretForCluster, exists := clusterSecrets[cluster.Name]; exists {
secretsFound = append(secretsFound, secretForCluster)
} else if !ignoreLocalClusters {
// If there is no secret for the cluster, it's the local cluster, so handle it here.
params := map[string]interface{}{}
@@ -185,5 +181,4 @@ func (g *ClusterGenerator) getSecretsByClusterName(appSetGenerator *argoappsetv1
}
return res, nil
}

View File

@@ -17,6 +17,7 @@ import (
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
type possiblyErroringFakeCtrlRuntimeClient struct {
@@ -104,11 +105,15 @@ func TestGenerateParams(t *testing.T) {
"aaa": "{{ server }}",
"no-op": "{{ this-does-not-exist }}",
}, expected: []map[string]interface{}{
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "production", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "production", "values.aaa": "https://production-01.example.com", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production"},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "production", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "production", "values.aaa": "https://production-01.example.com", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production",
},
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "staging", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "staging", "values.aaa": "https://staging-01.example.com", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging"},
{
"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "staging", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "staging", "values.aaa": "https://staging-01.example.com", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging",
},
{"values.lol1": "lol", "values.lol2": "{{values.lol1}}{{values.lol1}}", "values.lol3": "{{values.lol2}}{{values.lol2}}{{values.lol2}}", "values.foo": "bar", "values.bar": "{{ metadata.annotations.foo.argoproj.io }}", "values.no-op": "{{ this-does-not-exist }}", "values.bat": "{{ metadata.labels.environment }}", "values.aaa": "https://kubernetes.default.svc", "nameNormalized": "in-cluster", "name": "in-cluster", "server": "https://kubernetes.default.svc"},
},
@@ -124,11 +129,15 @@ func TestGenerateParams(t *testing.T) {
},
values: nil,
expected: []map[string]interface{}{
{"name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production"},
{
"name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production",
},
{"name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging"},
{
"name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging",
},
},
clientError: false,
expectedError: nil,
@@ -144,8 +153,10 @@ func TestGenerateParams(t *testing.T) {
"foo": "bar",
},
expected: []map[string]interface{}{
{"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production"},
{
"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production",
},
},
clientError: false,
expectedError: nil,
@@ -168,10 +179,14 @@ func TestGenerateParams(t *testing.T) {
"foo": "bar",
},
expected: []map[string]interface{}{
{"values.foo": "bar", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging"},
{"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production"},
{
"values.foo": "bar", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging",
},
{
"values.foo": "bar", "name": "production_01/west", "nameNormalized": "production-01-west", "server": "https://production-01.example.com", "metadata.labels.environment": "production", "metadata.labels.org": "bar",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "production",
},
},
clientError: false,
expectedError: nil,
@@ -197,8 +212,10 @@ func TestGenerateParams(t *testing.T) {
"name": "baz",
},
expected: []map[string]interface{}{
{"values.name": "baz", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging"},
{
"values.name": "baz", "name": "staging-01", "nameNormalized": "staging-01", "server": "https://staging-01.example.com", "metadata.labels.environment": "staging", "metadata.labels.org": "foo",
"metadata.labels.argocd.argoproj.io/secret-type": "cluster", "metadata.annotations.foo.argoproj.io": "staging",
},
},
clientError: false,
expectedError: nil,
@@ -220,9 +237,7 @@ func TestGenerateParams(t *testing.T) {
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
appClientset := kubefake.NewSimpleClientset(runtimeClusters...)
fakeClient := fake.NewClientBuilder().WithObjects(clusters...).Build()
@@ -231,7 +246,7 @@ func TestGenerateParams(t *testing.T) {
testCase.clientError,
}
var clusterGenerator = NewClusterGenerator(cl, context.Background(), appClientset, "namespace")
clusterGenerator := NewClusterGenerator(cl, context.Background(), appClientset, "namespace")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -245,15 +260,14 @@ func TestGenerateParams(t *testing.T) {
Selector: testCase.selector,
Values: testCase.values,
},
}, &applicationSetInfo)
}, &applicationSetInfo, nil)
if testCase.expectedError != nil {
assert.EqualError(t, err, testCase.expectedError.Error())
require.EqualError(t, err, testCase.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, got)
}
})
}
}
@@ -594,9 +608,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
appClientset := kubefake.NewSimpleClientset(runtimeClusters...)
fakeClient := fake.NewClientBuilder().WithObjects(clusters...).Build()
@@ -605,7 +617,7 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
testCase.clientError,
}
var clusterGenerator = NewClusterGenerator(cl, context.Background(), appClientset, "namespace")
clusterGenerator := NewClusterGenerator(cl, context.Background(), appClientset, "namespace")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -621,15 +633,14 @@ func TestGenerateParamsGoTemplate(t *testing.T) {
Selector: testCase.selector,
Values: testCase.values,
},
}, &applicationSetInfo)
}, &applicationSetInfo, nil)
if testCase.expectedError != nil {
assert.EqualError(t, err, testCase.expectedError.Error())
require.EqualError(t, err, testCase.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, got)
}
})
}
}

View File

@@ -7,6 +7,7 @@ import (
"time"
log "github.com/sirupsen/logrus"
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/argoproj/argo-cd/v2/util/settings"
@@ -32,7 +33,6 @@ type DuckTypeGenerator struct {
}
func NewDuckTypeGenerator(ctx context.Context, dynClient dynamic.Interface, clientset kubernetes.Interface, namespace string) Generator {
settingsManager := settings.NewSettingsManager(ctx, clientset, namespace)
g := &DuckTypeGenerator{
@@ -46,7 +46,6 @@ func NewDuckTypeGenerator(ctx context.Context, dynClient dynamic.Interface, clie
}
func (g *DuckTypeGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) time.Duration {
// Return a requeue default of 3 minutes, if no override is specified.
if appSetGenerator.ClusterDecisionResource.RequeueAfterSeconds != nil {
@@ -60,8 +59,7 @@ func (g *DuckTypeGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.Appl
return &appSetGenerator.ClusterDecisionResource.Template
}
func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet, _ client.Client) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -83,7 +81,6 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
// Read the configMapRef
cm, err := g.clientset.CoreV1().ConfigMaps(g.namespace).Get(g.ctx, appSetGenerator.ClusterDecisionResource.ConfigMapRef, metav1.GetOptions{})
if err != nil {
return nil, fmt.Errorf("error reading configMapRef: %w", err)
}
@@ -104,7 +101,6 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
if (resourceName == "" && labelSelector.MatchLabels == nil && labelSelector.MatchExpressions == nil) ||
(resourceName != "" && (labelSelector.MatchExpressions != nil || labelSelector.MatchLabels != nil)) {
log.Warningf("You must choose either resourceName=%v, labelSelector.matchLabels=%v or labelSelect.matchExpressions=%v", resourceName, labelSelector.MatchLabels, labelSelector.MatchExpressions)
return nil, fmt.Errorf("There is a problem with the definition of the ClusterDecisionResource generator")
}
@@ -122,12 +118,11 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
log.WithField("listOptions.LabelSelector", listOptions.LabelSelector).Info("selection type")
} else {
listOptions.FieldSelector = fields.OneTermEqualSelector("metadata.name", resourceName).String()
//metav1.Convert_fields_Selector_To_string(fields.).Sprintf("metadata.name=%s", resourceName)
// metav1.Convert_fields_Selector_To_string(fields.).Sprintf("metadata.name=%s", resourceName)
log.WithField("listOptions.FieldSelector", listOptions.FieldSelector).Info("selection type")
}
duckResources, err := g.dynClient.Resource(duckGVR).Namespace(g.namespace).List(g.ctx, listOptions)
if err != nil {
log.WithField("GVK", duckGVR).Warning("resources were not found")
return nil, err
@@ -149,7 +144,6 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
if matchKey == "" {
log.WithField("matchKey", matchKey).Warning("matchKey not found in " + cm.Name)
return nil, nil
}
res := []map[string]interface{}{}
@@ -167,7 +161,6 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
log.WithField("duckResourceStatus", duckResource.Object["status"]).Debug("found resource")
clusterDecisions = append(clusterDecisions, duckResource.Object["status"].(map[string]interface{})[statusListKey].([]interface{})...)
}
log.Infof("Number of decisions found: %v", len(clusterDecisions))
@@ -176,7 +169,6 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
if len(clusterDecisions) > 0 {
for _, cluster := range clusterDecisions {
// generated instance of cluster params
params := map[string]interface{}{}
@@ -194,7 +186,6 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
for _, argoCluster := range argoClusters {
if argoCluster.Name == strMatchValue {
log.WithField(matchKey, argoCluster.Name).Info("matched cluster in ArgoCD")
params["name"] = argoCluster.Name
params["server"] = argoCluster.Server
@@ -202,7 +193,6 @@ func (g *DuckTypeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A
found = true
break // Stop looking
}
}
if !found {

View File

@@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -18,9 +19,11 @@ import (
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
const resourceApiVersion = "mallard.io/v1"
const resourceKind = "ducks"
const resourceName = "quak"
const (
resourceApiVersion = "mallard.io/v1"
resourceKind = "ducks"
resourceName = "quak"
)
func TestGenerateParamsForDuckType(t *testing.T) {
clusters := []client.Object{
@@ -279,9 +282,7 @@ func TestGenerateParamsForDuckType(t *testing.T) {
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
appClientset := kubefake.NewSimpleClientset(append(runtimeClusters, configMap)...)
gvrToListKind := map[schema.GroupVersionResource]string{{
@@ -292,7 +293,7 @@ func TestGenerateParamsForDuckType(t *testing.T) {
fakeDynClient := dynfake.NewSimpleDynamicClientWithCustomListKinds(runtime.NewScheme(), gvrToListKind, testCase.resource)
var duckTypeGenerator = NewDuckTypeGenerator(context.Background(), fakeDynClient, appClientset, "namespace")
duckTypeGenerator := NewDuckTypeGenerator(context.Background(), fakeDynClient, appClientset, "namespace")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -308,12 +309,12 @@ func TestGenerateParamsForDuckType(t *testing.T) {
LabelSelector: testCase.labelSelector,
Values: testCase.values,
},
}, &applicationSetInfo)
}, &applicationSetInfo, nil)
if testCase.expectedError != nil {
assert.EqualError(t, err, testCase.expectedError.Error())
require.EqualError(t, err, testCase.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, got)
}
})
@@ -577,9 +578,7 @@ func TestGenerateParamsForDuckTypeGoTemplate(t *testing.T) {
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
appClientset := kubefake.NewSimpleClientset(append(runtimeClusters, configMap)...)
gvrToListKind := map[schema.GroupVersionResource]string{{
@@ -590,7 +589,7 @@ func TestGenerateParamsForDuckTypeGoTemplate(t *testing.T) {
fakeDynClient := dynfake.NewSimpleDynamicClientWithCustomListKinds(runtime.NewScheme(), gvrToListKind, testCase.resource)
var duckTypeGenerator = NewDuckTypeGenerator(context.Background(), fakeDynClient, appClientset, "namespace")
duckTypeGenerator := NewDuckTypeGenerator(context.Background(), fakeDynClient, appClientset, "namespace")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -608,12 +607,12 @@ func TestGenerateParamsForDuckTypeGoTemplate(t *testing.T) {
LabelSelector: testCase.labelSelector,
Values: testCase.values,
},
}, &applicationSetInfo)
}, &applicationSetInfo, nil)
if testCase.expectedError != nil {
assert.EqualError(t, err, testCase.expectedError.Error())
require.EqualError(t, err, testCase.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, got)
}
})

View File

@@ -5,6 +5,7 @@ import (
"reflect"
"github.com/jeremywohl/flatten"
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
@@ -26,7 +27,7 @@ type TransformResult struct {
}
// Transform a spec generator to list of paramSets and a template
func Transform(requestedGenerator argoprojiov1alpha1.ApplicationSetGenerator, allGenerators map[string]Generator, baseTemplate argoprojiov1alpha1.ApplicationSetTemplate, appSet *argoprojiov1alpha1.ApplicationSet, genParams map[string]interface{}) ([]TransformResult, error) {
func Transform(requestedGenerator argoprojiov1alpha1.ApplicationSetGenerator, allGenerators map[string]Generator, baseTemplate argoprojiov1alpha1.ApplicationSetTemplate, appSet *argoprojiov1alpha1.ApplicationSet, genParams map[string]interface{}, client client.Client) ([]TransformResult, error) {
// This is a custom version of the `LabelSelectorAsSelector` that is in k8s.io/apimachinery. This has been copied
// verbatim from that package, with the difference that we do not have any restrictions on label values. This is done
// so that, among other things, we can match on cluster urls.
@@ -64,7 +65,7 @@ func Transform(requestedGenerator argoprojiov1alpha1.ApplicationSetGenerator, al
continue
}
}
params, err = g.GenerateParams(interpolatedGenerator, appSet)
params, err = g.GenerateParams(interpolatedGenerator, appSet, client)
if err != nil {
log.WithError(err).WithField("generator", g).
Error("error generating params")

View File

@@ -65,8 +65,8 @@ func TestMatchValues(t *testing.T) {
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
var listGenerator = NewListGenerator()
var data = map[string]Generator{
listGenerator := NewListGenerator()
data := map[string]Generator{
"List": listGenerator,
}
@@ -84,12 +84,13 @@ func TestMatchValues(t *testing.T) {
List: &argov1alpha1.ListGenerator{
Elements: testCase.elements,
Template: emptyTemplate(),
}},
},
},
data,
emptyTemplate(),
&applicationSetInfo, nil)
&applicationSetInfo, nil, nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, results[0].Params)
})
}
@@ -148,8 +149,8 @@ func TestMatchValuesGoTemplate(t *testing.T) {
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
var listGenerator = NewListGenerator()
var data = map[string]Generator{
listGenerator := NewListGenerator()
data := map[string]Generator{
"List": listGenerator,
}
@@ -167,12 +168,13 @@ func TestMatchValuesGoTemplate(t *testing.T) {
List: &argov1alpha1.ListGenerator{
Elements: testCase.elements,
Template: emptyTemplate(),
}},
},
},
data,
emptyTemplate(),
&applicationSetInfo, nil)
&applicationSetInfo, nil, nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, results[0].Params)
})
}
@@ -236,12 +238,13 @@ func TestTransForm(t *testing.T) {
Selector: metav1.LabelSelector{},
Template: argov1alpha1.ApplicationSetTemplate{},
Values: nil,
}},
},
},
testGenerators,
emptyTemplate(),
&applicationSetInfo, nil)
&applicationSetInfo, nil, nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, results[0].Params)
})
}
@@ -343,12 +346,11 @@ func getMockClusterGenerator() Generator {
func getMockGitGenerator() Generator {
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything).Return([]string{"app1", "app2", "app_3", "p1/app4"}, nil)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)
gitGenerator := NewGitGenerator(&argoCDServiceMock, "namespace")
return gitGenerator
}
func TestGetRelevantGenerators(t *testing.T) {
testGenerators := map[string]Generator{
"Clusters": getMockClusterGenerator(),
"Git": getMockGitGenerator(),
@@ -361,7 +363,8 @@ func TestGetRelevantGenerators(t *testing.T) {
requestedGenerator := &argov1alpha1.ApplicationSetGenerator{
List: &argov1alpha1.ListGenerator{
Elements: []apiextensionsv1.JSON{{Raw: []byte(`{"cluster": "cluster","url": "url","values":{"foo":"bar"}}`)}},
}}
},
}
relevantGenerators := GetRelevantGenerators(requestedGenerator, testGenerators)
assert.Len(t, relevantGenerators, 1)
@@ -404,7 +407,8 @@ func TestInterpolateGenerator(t *testing.T) {
"path-basename": "{{path.basename}}",
"path-zero": "{{path[0]}}",
"path-full": "{{path}}",
}},
},
},
},
}
gitGeneratorParams := map[string]interface{}{
@@ -458,7 +462,8 @@ func TestInterpolateGenerator_go(t *testing.T) {
"path-zero": "{{index .path.segments 0}}",
"path-full": "{{.path.path}}",
"kubernetes.io/environment": `{{default "foo" .my_label}}`,
}},
},
},
},
}
gitGeneratorParams := map[string]interface{}{
@@ -550,7 +555,7 @@ func TestInterpolateGeneratorError(t *testing.T) {
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)
require.EqualError(t, err, tt.expectedErrStr)
} else {
require.NoError(t, err)
}

View File

@@ -11,23 +11,29 @@ import (
"github.com/jeremywohl/flatten"
log "github.com/sirupsen/logrus"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/yaml"
"github.com/argoproj/argo-cd/v2/applicationset/services"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/util/gpg"
)
var _ Generator = (*GitGenerator)(nil)
type GitGenerator struct {
repos services.Repos
repos services.Repos
namespace string
}
func NewGitGenerator(repos services.Repos) Generator {
func NewGitGenerator(repos services.Repos, namespace string) Generator {
g := &GitGenerator{
repos: repos,
repos: repos,
namespace: namespace,
}
return g
}
@@ -36,7 +42,6 @@ func (g *GitGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.Applicati
}
func (g *GitGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) time.Duration {
// Return a requeue default of 3 minutes, if no default is specified.
if appSetGenerator.Git.RequeueAfterSeconds != nil {
@@ -46,8 +51,7 @@ func (g *GitGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.Appli
return DefaultRequeueAfterSeconds
}
func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet, client client.Client) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -58,12 +62,31 @@ func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Applic
noRevisionCache := appSet.RefreshRequired()
verifyCommit := false
// When the project field is templated, the contents of the git repo are required to run the git generator and get the templated value,
// but git generator cannot be called without verifying the commit signature.
// In this case, we skip the signature verification.
if !strings.Contains(appSet.Spec.Template.Spec.Project, "{{") {
project := appSet.Spec.Template.Spec.Project
appProject := &argoprojiov1alpha1.AppProject{}
namespace := g.namespace
if namespace == "" {
namespace = appSet.Namespace
}
if err := client.Get(context.TODO(), types.NamespacedName{Name: project, Namespace: namespace}, appProject); err != nil {
return nil, fmt.Errorf("error getting project %s: %w", project, err)
}
// we need to verify the signature on the Git revision if GPG is enabled
verifyCommit = appProject.Spec.SignatureKeys != nil && len(appProject.Spec.SignatureKeys) > 0 && gpg.IsGPGEnabled()
}
var err error
var res []map[string]interface{}
if len(appSetGenerator.Git.Directories) != 0 {
res, err = g.generateParamsForGitDirectories(appSetGenerator, noRevisionCache, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
res, err = g.generateParamsForGitDirectories(appSetGenerator, noRevisionCache, verifyCommit, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
} else if len(appSetGenerator.Git.Files) != 0 {
res, err = g.generateParamsForGitFiles(appSetGenerator, noRevisionCache, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
res, err = g.generateParamsForGitFiles(appSetGenerator, noRevisionCache, verifyCommit, appSet.Spec.GoTemplate, appSet.Spec.GoTemplateOptions)
} else {
return nil, EmptyAppSetGeneratorError
}
@@ -74,10 +97,9 @@ func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Applic
return res, nil
}
func (g *GitGenerator) generateParamsForGitDirectories(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, noRevisionCache bool, useGoTemplate bool, goTemplateOptions []string) ([]map[string]interface{}, error) {
func (g *GitGenerator) generateParamsForGitDirectories(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, noRevisionCache, verifyCommit 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, noRevisionCache)
allPaths, err := g.repos.GetDirectories(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, noRevisionCache, verifyCommit)
if err != nil {
return nil, fmt.Errorf("error getting directories from repo: %w", err)
}
@@ -100,12 +122,11 @@ func (g *GitGenerator) generateParamsForGitDirectories(appSetGenerator *argoproj
return res, nil
}
func (g *GitGenerator) generateParamsForGitFiles(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, noRevisionCache bool, useGoTemplate bool, goTemplateOptions []string) ([]map[string]interface{}, error) {
func (g *GitGenerator) generateParamsForGitFiles(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, noRevisionCache, verifyCommit 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, noRevisionCache)
files, err := g.repos.GetFiles(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, requestedPath.Path, noRevisionCache, verifyCommit)
if err != nil {
return nil, err
}
@@ -125,11 +146,10 @@ func (g *GitGenerator) generateParamsForGitFiles(appSetGenerator *argoprojiov1al
// Generate params from each path, and return
res := []map[string]interface{}{}
for _, path := range allPaths {
// A JSON / YAML file path can contain multiple sets of parameters (ie it is an array)
paramsArray, err := g.generateParamsFromGitFile(path, allFiles[path], appSetGenerator.Git.Values, useGoTemplate, goTemplateOptions, appSetGenerator.Git.PathParamPrefix)
if err != nil {
return nil, fmt.Errorf("unable to process file '%s': %v", path, err)
return nil, fmt.Errorf("unable to process file '%s': %w", path, err)
}
res = append(res, paramsArray...)
@@ -147,7 +167,7 @@ func (g *GitGenerator) generateParamsFromGitFile(filePath string, fileContent []
singleObj := make(map[string]interface{})
err = yaml.Unmarshal(fileContent, &singleObj)
if err != nil {
return nil, fmt.Errorf("unable to parse file: %v", err)
return nil, fmt.Errorf("unable to parse file: %w", err)
}
objectsFound = append(objectsFound, singleObj)
} else if len(objectsFound) == 0 {
@@ -158,7 +178,6 @@ func (g *GitGenerator) generateParamsFromGitFile(filePath string, fileContent []
res := []map[string]interface{}{}
for _, objectFound := range objectsFound {
params := map[string]interface{}{}
if useGoTemplate {
@@ -214,13 +233,13 @@ func (g *GitGenerator) generateParamsFromGitFile(filePath string, fileContent []
return res, nil
}
func (g *GitGenerator) filterApps(Directories []argoprojiov1alpha1.GitDirectoryGeneratorItem, allPaths []string) []string {
func (g *GitGenerator) filterApps(directories []argoprojiov1alpha1.GitDirectoryGeneratorItem, allPaths []string) []string {
res := []string{}
for _, appPath := range allPaths {
appInclude := false
appExclude := false
// Iterating over each appPath and check whether directories object has requestedPath that matches the appPath
for _, requestedPath := range Directories {
for _, requestedPath := range directories {
match, err := path.Match(requestedPath.Path, appPath)
if err != nil {
log.WithError(err).WithField("requestedPath", requestedPath).
@@ -245,7 +264,6 @@ func (g *GitGenerator) filterApps(Directories []argoprojiov1alpha1.GitDirectoryG
func (g *GitGenerator) generateParamsFromApps(requestedApps []string, appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, useGoTemplate bool, goTemplateOptions []string) ([]map[string]interface{}, error) {
res := make([]map[string]interface{}, len(requestedApps))
for i, a := range requestedApps {
params := make(map[string]interface{}, 5)
if useGoTemplate {

View File

@@ -4,11 +4,16 @@ 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"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"github.com/argoproj/argo-cd/v2/applicationset/services/mocks"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func Test_generateParamsFromGitFile(t *testing.T) {
@@ -174,7 +179,6 @@ foo:
}
func TestGitGenerateParamsFromDirectories(t *testing.T) {
cases := []struct {
name string
directories []argoprojiov1alpha1.GitDirectoryGeneratorItem
@@ -317,9 +321,9 @@ func TestGitGenerateParamsFromDirectories(t *testing.T) {
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError)
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)
gitGenerator := NewGitGenerator(&argoCDServiceMock, "")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
@@ -337,12 +341,19 @@ func TestGitGenerateParamsFromDirectories(t *testing.T) {
},
}
got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
appProject := argoprojiov1alpha1.AppProject{}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appProject).Build()
got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, client)
if testCaseCopy.expectedError != nil {
assert.EqualError(t, err, testCaseCopy.expectedError.Error())
require.EqualError(t, err, testCaseCopy.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
@@ -352,7 +363,6 @@ func TestGitGenerateParamsFromDirectories(t *testing.T) {
}
func TestGitGenerateParamsFromDirectoriesGoTemplate(t *testing.T) {
cases := []struct {
name string
directories []argoprojiov1alpha1.GitDirectoryGeneratorItem
@@ -552,7 +562,6 @@ func TestGitGenerateParamsFromDirectoriesGoTemplate(t *testing.T) {
},
repoError: nil,
expected: []map[string]interface{}{
{
"path": map[string]interface{}{
"path": "app1",
@@ -613,9 +622,9 @@ func TestGitGenerateParamsFromDirectoriesGoTemplate(t *testing.T) {
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError)
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)
gitGenerator := NewGitGenerator(&argoCDServiceMock, "")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
@@ -633,23 +642,28 @@ func TestGitGenerateParamsFromDirectoriesGoTemplate(t *testing.T) {
},
}
got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
appProject := argoprojiov1alpha1.AppProject{}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appProject).Build()
got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, client)
if testCaseCopy.expectedError != nil {
assert.EqualError(t, err, testCaseCopy.expectedError.Error())
require.EqualError(t, err, testCaseCopy.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
argoCDServiceMock.AssertExpectations(t)
})
}
}
func TestGitGenerateParamsFromFiles(t *testing.T) {
cases := []struct {
name string
// files is the list of paths/globs to match
@@ -972,10 +986,10 @@ cluster:
t.Parallel()
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).
argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).
Return(testCaseCopy.repoFileContents, testCaseCopy.repoPathsError)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)
gitGenerator := NewGitGenerator(&argoCDServiceMock, "")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
@@ -992,13 +1006,20 @@ cluster:
},
}
got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
appProject := argoprojiov1alpha1.AppProject{}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appProject).Build()
got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, client)
fmt.Println(got, err)
if testCaseCopy.expectedError != nil {
assert.EqualError(t, err, testCaseCopy.expectedError.Error())
require.EqualError(t, err, testCaseCopy.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCaseCopy.expected, got)
}
@@ -1008,7 +1029,6 @@ cluster:
}
func TestGitGenerateParamsFromFilesGoTemplate(t *testing.T) {
cases := []struct {
name string
// files is the list of paths/globs to match
@@ -1322,10 +1342,10 @@ cluster:
t.Parallel()
argoCDServiceMock := mocks.Repos{}
argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).
argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).
Return(testCaseCopy.repoFileContents, testCaseCopy.repoPathsError)
var gitGenerator = NewGitGenerator(&argoCDServiceMock)
gitGenerator := NewGitGenerator(&argoCDServiceMock, "")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
@@ -1342,13 +1362,20 @@ cluster:
},
}
got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
appProject := argoprojiov1alpha1.AppProject{}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appProject).Build()
got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, client)
fmt.Println(got, err)
if testCaseCopy.expectedError != nil {
assert.EqualError(t, err, testCaseCopy.expectedError.Error())
require.EqualError(t, err, testCaseCopy.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCaseCopy.expected, got)
}
@@ -1356,3 +1383,114 @@ cluster:
})
}
}
func TestGitGenerator_GenerateParams(t *testing.T) {
cases := []struct {
name string
directories []argoprojiov1alpha1.GitDirectoryGeneratorItem
pathParamPrefix string
repoApps []string
repoPathsError error
repoFileContents map[string][]byte
values map[string]string
expected []map[string]interface{}
expectedError error
appset argoprojiov1alpha1.ApplicationSet
callGetDirectories bool
}{
{
name: "Signature Verification - ignores templated project field",
repoApps: []string{
"app1",
},
repoPathsError: nil,
appset: argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
Namespace: "namespace",
},
Spec: argoprojiov1alpha1.ApplicationSetSpec{
Generators: []argoprojiov1alpha1.ApplicationSetGenerator{{
Git: &argoprojiov1alpha1.GitGenerator{
RepoURL: "RepoURL",
Revision: "Revision",
Directories: []argoprojiov1alpha1.GitDirectoryGeneratorItem{{Path: "*"}},
PathParamPrefix: "",
Values: map[string]string{
"foo": "bar",
},
},
}},
Template: argoprojiov1alpha1.ApplicationSetTemplate{
Spec: argoprojiov1alpha1.ApplicationSpec{
Project: "{{.project}}",
},
},
},
},
callGetDirectories: true,
expected: []map[string]interface{}{{"path": "app1", "path.basename": "app1", "path.basenameNormalized": "app1", "path[0]": "app1", "values.foo": "bar"}},
expectedError: nil,
},
{
name: "Signature Verification - Checks for non-templated project field",
repoApps: []string{
"app1",
},
repoPathsError: nil,
appset: argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
Name: "set",
Namespace: "namespace",
},
Spec: argoprojiov1alpha1.ApplicationSetSpec{
Generators: []argoprojiov1alpha1.ApplicationSetGenerator{{
Git: &argoprojiov1alpha1.GitGenerator{
RepoURL: "RepoURL",
Revision: "Revision",
Directories: []argoprojiov1alpha1.GitDirectoryGeneratorItem{{Path: "*"}},
PathParamPrefix: "",
Values: map[string]string{
"foo": "bar",
},
},
}},
Template: argoprojiov1alpha1.ApplicationSetTemplate{
Spec: argoprojiov1alpha1.ApplicationSpec{
Project: "project",
},
},
},
},
callGetDirectories: false,
expected: []map[string]interface{}{{"path": "app1", "path.basename": "app1", "path.basenameNormalized": "app1", "path[0]": "app1", "values.foo": "bar"}},
expectedError: fmt.Errorf("error getting project project: appprojects.argoproj.io \"project\" not found"),
},
}
for _, testCase := range cases {
argoCDServiceMock := mocks.Repos{}
if testCase.callGetDirectories {
argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCase.repoApps, testCase.repoPathsError)
}
gitGenerator := NewGitGenerator(&argoCDServiceMock, "namespace")
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
appProject := argoprojiov1alpha1.AppProject{}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appProject).Build()
got, err := gitGenerator.GenerateParams(&testCase.appset.Spec.Generators[0], &testCase.appset, client)
if testCase.expectedError != nil {
require.EqualError(t, err, testCase.expectedError.Error())
} else {
require.NoError(t, err)
assert.Equal(t, testCase.expected, got)
}
argoCDServiceMock.AssertExpectations(t)
}
}

View File

@@ -4,15 +4,19 @@ import (
"fmt"
"time"
"sigs.k8s.io/controller-runtime/pkg/client"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
//go:generate go run github.com/vektra/mockery/v2@v2.40.2 --name=Generator
// Generator defines the interface implemented by all ApplicationSet generators.
type Generator interface {
// GenerateParams interprets the ApplicationSet and generates all relevant parameters for the application template.
// The expected / desired list of parameters is returned, it then will be render and reconciled
// against the current state of the Applications in the cluster.
GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error)
GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet, client client.Client) ([]map[string]interface{}, error)
// GetRequeueAfter is the generator can controller the next reconciled loop
// In case there is more then one generator the time will be the minimum of the times.
@@ -23,8 +27,10 @@ type Generator interface {
GetTemplate(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) *argoprojiov1alpha1.ApplicationSetTemplate
}
var EmptyAppSetGeneratorError = fmt.Errorf("ApplicationSet is empty")
var NoRequeueAfter time.Duration
var (
EmptyAppSetGeneratorError = fmt.Errorf("ApplicationSet is empty")
NoRequeueAfter time.Duration
)
// DefaultRequeueAfterSeconds is used when GetRequeueAfter is not specified, it is the default time to wait before the next reconcile loop
const (

View File

@@ -5,6 +5,7 @@ import (
"fmt"
"time"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/yaml"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -12,8 +13,7 @@ import (
var _ Generator = (*ListGenerator)(nil)
type ListGenerator struct {
}
type ListGenerator struct{}
func NewListGenerator() Generator {
g := &ListGenerator{}
@@ -28,7 +28,7 @@ func (g *ListGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.Applicat
return &appSetGenerator.List.Template
}
func (g *ListGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *ListGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet, _ client.Client) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -44,7 +44,7 @@ func (g *ListGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appli
var element map[string]interface{}
err := json.Unmarshal(tmpItem.Raw, &element)
if err != nil {
return nil, fmt.Errorf("error unmarshling list element %v", err)
return nil, fmt.Errorf("error unmarshling list element %w", err)
}
if appSet.Spec.GoTemplate {
@@ -59,14 +59,14 @@ func (g *ListGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appli
for k, v := range values {
value, ok := v.(string)
if !ok {
return nil, fmt.Errorf("error parsing value as string %v", err)
return nil, fmt.Errorf("error parsing value as string %w", err)
}
params[fmt.Sprintf("values.%s", k)] = value
}
} else {
v, ok := value.(string)
if !ok {
return nil, fmt.Errorf("error parsing value as string %v", err)
return nil, fmt.Errorf("error parsing value as string %w", err)
}
params[key] = v
}
@@ -77,11 +77,10 @@ func (g *ListGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appli
// Append elements from ElementsYaml to the response
if len(appSetGenerator.List.ElementsYaml) > 0 {
var yamlElements []map[string]interface{}
err := yaml.Unmarshal([]byte(appSetGenerator.List.ElementsYaml), &yamlElements)
if err != nil {
return nil, fmt.Errorf("error unmarshling decoded ElementsYaml %v", err)
return nil, fmt.Errorf("error unmarshling decoded ElementsYaml %w", err)
}
res = append(res, yamlElements...)
}

View File

@@ -4,6 +4,7 @@ import (
"testing"
"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"
@@ -25,8 +26,7 @@ func TestGenerateListParams(t *testing.T) {
}
for _, testCase := range testCases {
var listGenerator = NewListGenerator()
listGenerator := NewListGenerator()
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -38,11 +38,11 @@ func TestGenerateListParams(t *testing.T) {
got, err := listGenerator.GenerateParams(&argoprojiov1alpha1.ApplicationSetGenerator{
List: &argoprojiov1alpha1.ListGenerator{
Elements: testCase.elements,
}}, &applicationSetInfo)
},
}, &applicationSetInfo, nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, got)
}
}
@@ -61,8 +61,7 @@ func TestGenerateListParamsGoTemplate(t *testing.T) {
}
for _, testCase := range testCases {
var listGenerator = NewListGenerator()
listGenerator := NewListGenerator()
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -76,9 +75,10 @@ func TestGenerateListParamsGoTemplate(t *testing.T) {
got, err := listGenerator.GenerateParams(&argoprojiov1alpha1.ApplicationSetGenerator{
List: &argoprojiov1alpha1.ListGenerator{
Elements: testCase.elements,
}}, &applicationSetInfo)
},
}, &applicationSetInfo, nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, testCase.expected, got)
}
}

View File

@@ -5,6 +5,7 @@ import (
"time"
"github.com/imdario/mergo"
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -32,8 +33,7 @@ func NewMatrixGenerator(supportedGenerators map[string]Generator) Generator {
return m
}
func (m *MatrixGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (m *MatrixGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet, client client.Client) ([]map[string]interface{}, error) {
if appSetGenerator.Matrix == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -48,17 +48,16 @@ func (m *MatrixGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.App
res := []map[string]interface{}{}
g0, err := m.getParams(appSetGenerator.Matrix.Generators[0], appSet, nil)
g0, err := m.getParams(appSetGenerator.Matrix.Generators[0], appSet, nil, client)
if err != nil {
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)
g1, err := m.getParams(appSetGenerator.Matrix.Generators[1], appSet, a, client)
if err != nil {
return nil, fmt.Errorf("failed to get params for second generator in the matrix generator: %w", err)
}
for _, b := range g1 {
if appSet.Spec.GoTemplate {
tmp := map[string]interface{}{}
if err := mergo.Merge(&tmp, b, mergo.WithOverride); err != nil {
@@ -81,7 +80,7 @@ func (m *MatrixGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.App
return res, nil
}
func (m *MatrixGenerator) getParams(appSetBaseGenerator argoprojiov1alpha1.ApplicationSetNestedGenerator, appSet *argoprojiov1alpha1.ApplicationSet, params map[string]interface{}) ([]map[string]interface{}, error) {
func (m *MatrixGenerator) getParams(appSetBaseGenerator argoprojiov1alpha1.ApplicationSetNestedGenerator, appSet *argoprojiov1alpha1.ApplicationSet, params map[string]interface{}, client client.Client) ([]map[string]interface{}, error) {
matrixGen, err := getMatrixGenerator(appSetBaseGenerator)
if err != nil {
return nil, err
@@ -119,10 +118,10 @@ func (m *MatrixGenerator) getParams(appSetBaseGenerator argoprojiov1alpha1.Appli
m.supportedGenerators,
argoprojiov1alpha1.ApplicationSetTemplate{},
appSet,
params)
params,
client)
if err != nil {
return nil, fmt.Errorf("child generator returned an error on parameter generation: %v", err)
return nil, fmt.Errorf("child generator returned an error on parameter generation: %w", err)
}
if len(t) == 0 {
@@ -172,7 +171,6 @@ func (m *MatrixGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.Ap
} else {
return NoRequeueAfter
}
}
func getMatrixGenerator(r argoprojiov1alpha1.ApplicationSetNestedGenerator) (*argoprojiov1alpha1.MatrixGenerator, error) {

View File

@@ -19,11 +19,11 @@ import (
"github.com/stretchr/testify/mock"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func TestMatrixGenerate(t *testing.T) {
gitGenerator := &argoprojiov1alpha1.GitGenerator{
RepoURL: "RepoURL",
Revision: "Revision",
@@ -147,12 +147,11 @@ func TestMatrixGenerate(t *testing.T) {
}
for _, g := range testCaseCopy.baseGenerators {
gitGeneratorSpec := argoprojiov1alpha1.ApplicationSetGenerator{
Git: g.Git,
List: g.List,
}
genMock.On("GenerateParams", mock.AnythingOfType("*v1alpha1.ApplicationSetGenerator"), appSet).Return([]map[string]interface{}{
genMock.On("GenerateParams", mock.AnythingOfType("*v1alpha1.ApplicationSetGenerator"), appSet, mock.Anything).Return([]map[string]interface{}{
{
"path": "app1",
"path.basename": "app1",
@@ -169,7 +168,7 @@ func TestMatrixGenerate(t *testing.T) {
Return(&argoprojiov1alpha1.ApplicationSetTemplate{})
}
var matrixGenerator = NewMatrixGenerator(
matrixGenerator := NewMatrixGenerator(
map[string]Generator{
"Git": genMock,
"List": &ListGenerator{},
@@ -181,22 +180,19 @@ func TestMatrixGenerate(t *testing.T) {
Generators: testCaseCopy.baseGenerators,
Template: argoprojiov1alpha1.ApplicationSetTemplate{},
},
}, appSet)
}, appSet, nil)
if testCaseCopy.expectedErr != nil {
assert.ErrorIs(t, err, testCaseCopy.expectedErr)
require.ErrorIs(t, err, testCaseCopy.expectedErr)
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
})
}
}
func TestMatrixGenerateGoTemplate(t *testing.T) {
gitGenerator := &argoprojiov1alpha1.GitGenerator{
RepoURL: "RepoURL",
Revision: "Revision",
@@ -360,12 +356,11 @@ func TestMatrixGenerateGoTemplate(t *testing.T) {
}
for _, g := range testCaseCopy.baseGenerators {
gitGeneratorSpec := argoprojiov1alpha1.ApplicationSetGenerator{
Git: g.Git,
List: g.List,
}
genMock.On("GenerateParams", mock.AnythingOfType("*v1alpha1.ApplicationSetGenerator"), appSet).Return([]map[string]interface{}{
genMock.On("GenerateParams", mock.AnythingOfType("*v1alpha1.ApplicationSetGenerator"), appSet, mock.Anything).Return([]map[string]interface{}{
{
"path": map[string]string{
"path": "app1",
@@ -386,7 +381,7 @@ func TestMatrixGenerateGoTemplate(t *testing.T) {
Return(&argoprojiov1alpha1.ApplicationSetTemplate{})
}
var matrixGenerator = NewMatrixGenerator(
matrixGenerator := NewMatrixGenerator(
map[string]Generator{
"Git": genMock,
"List": &ListGenerator{},
@@ -398,22 +393,19 @@ func TestMatrixGenerateGoTemplate(t *testing.T) {
Generators: testCaseCopy.baseGenerators,
Template: argoprojiov1alpha1.ApplicationSetTemplate{},
},
}, appSet)
}, appSet, nil)
if testCaseCopy.expectedErr != nil {
assert.ErrorIs(t, err, testCaseCopy.expectedErr)
require.ErrorIs(t, err, testCaseCopy.expectedErr)
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
})
}
}
func TestMatrixGetRequeueAfter(t *testing.T) {
gitGenerator := &argoprojiov1alpha1.GitGenerator{
RepoURL: "RepoURL",
Revision: "Revision",
@@ -530,7 +522,7 @@ func TestMatrixGetRequeueAfter(t *testing.T) {
mock.On("GetRequeueAfter", &gitGeneratorSpec).Return(testCaseCopy.gitGetRequeueAfter, nil)
}
var matrixGenerator = NewMatrixGenerator(
matrixGenerator := NewMatrixGenerator(
map[string]Generator{
"Git": mock,
"List": &ListGenerator{},
@@ -548,9 +540,7 @@ func TestMatrixGetRequeueAfter(t *testing.T) {
})
assert.Equal(t, testCaseCopy.expected, got)
})
}
}
@@ -655,10 +645,9 @@ func TestInterpolatedMatrixGenerate(t *testing.T) {
fakeClient,
testCase.clientError,
}
var clusterGenerator = NewClusterGenerator(cl, context.Background(), appClientset, "namespace")
clusterGenerator := NewClusterGenerator(cl, context.Background(), appClientset, "namespace")
for _, g := range testCaseCopy.baseGenerators {
gitGeneratorSpec := argoprojiov1alpha1.ApplicationSetGenerator{
Git: g.Git,
Clusters: g.Clusters,
@@ -678,7 +667,7 @@ func TestInterpolatedMatrixGenerate(t *testing.T) {
genMock.On("GetTemplate", &gitGeneratorSpec).
Return(&argoprojiov1alpha1.ApplicationSetTemplate{})
}
var matrixGenerator = NewMatrixGenerator(
matrixGenerator := NewMatrixGenerator(
map[string]Generator{
"Git": genMock,
"Clusters": clusterGenerator,
@@ -690,15 +679,14 @@ func TestInterpolatedMatrixGenerate(t *testing.T) {
Generators: testCaseCopy.baseGenerators,
Template: argoprojiov1alpha1.ApplicationSetTemplate{},
},
}, appSet)
}, appSet, nil)
if testCaseCopy.expectedErr != nil {
assert.ErrorIs(t, err, testCaseCopy.expectedErr)
require.ErrorIs(t, err, testCaseCopy.expectedErr)
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
})
}
}
@@ -838,16 +826,14 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
fakeClient,
testCase.clientError,
}
var clusterGenerator = NewClusterGenerator(cl, context.Background(), appClientset, "namespace")
clusterGenerator := NewClusterGenerator(cl, context.Background(), appClientset, "namespace")
for _, g := range testCaseCopy.baseGenerators {
gitGeneratorSpec := argoprojiov1alpha1.ApplicationSetGenerator{
Git: g.Git,
Clusters: g.Clusters,
}
genMock.On("GenerateParams", mock.AnythingOfType("*v1alpha1.ApplicationSetGenerator"), appSet).Return([]map[string]interface{}{
{
"path": map[string]string{
"path": "examples/git-generator-files-discovery/cluster-config/dev/config.json",
@@ -866,7 +852,7 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
genMock.On("GetTemplate", &gitGeneratorSpec).
Return(&argoprojiov1alpha1.ApplicationSetTemplate{})
}
var matrixGenerator = NewMatrixGenerator(
matrixGenerator := NewMatrixGenerator(
map[string]Generator{
"Git": genMock,
"Clusters": clusterGenerator,
@@ -878,22 +864,19 @@ func TestInterpolatedMatrixGenerateGoTemplate(t *testing.T) {
Generators: testCaseCopy.baseGenerators,
Template: argoprojiov1alpha1.ApplicationSetTemplate{},
},
}, appSet)
}, appSet, nil)
if testCaseCopy.expectedErr != nil {
assert.ErrorIs(t, err, testCaseCopy.expectedErr)
require.ErrorIs(t, err, testCaseCopy.expectedErr)
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
})
}
}
func TestMatrixGenerateListElementsYaml(t *testing.T) {
gitGenerator := &argoprojiov1alpha1.GitGenerator{
RepoURL: "RepoURL",
Revision: "Revision",
@@ -997,7 +980,6 @@ func TestMatrixGenerateListElementsYaml(t *testing.T) {
}
for _, g := range testCaseCopy.baseGenerators {
gitGeneratorSpec := argoprojiov1alpha1.ApplicationSetGenerator{
Git: g.Git,
List: g.List,
@@ -1029,10 +1011,9 @@ func TestMatrixGenerateListElementsYaml(t *testing.T) {
}}, nil)
genMock.On("GetTemplate", &gitGeneratorSpec).
Return(&argoprojiov1alpha1.ApplicationSetTemplate{})
}
var matrixGenerator = NewMatrixGenerator(
matrixGenerator := NewMatrixGenerator(
map[string]Generator{
"Git": genMock,
"List": &ListGenerator{},
@@ -1044,17 +1025,15 @@ func TestMatrixGenerateListElementsYaml(t *testing.T) {
Generators: testCaseCopy.baseGenerators,
Template: argoprojiov1alpha1.ApplicationSetTemplate{},
},
}, appSet)
}, appSet, nil)
if testCaseCopy.expectedErr != nil {
assert.ErrorIs(t, err, testCaseCopy.expectedErr)
require.ErrorIs(t, err, testCaseCopy.expectedErr)
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
})
}
}
@@ -1068,7 +1047,7 @@ func (g *generatorMock) GetTemplate(appSetGenerator *argoprojiov1alpha1.Applicat
return args.Get(0).(*argoprojiov1alpha1.ApplicationSetTemplate)
}
func (g *generatorMock) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *generatorMock) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet, _ client.Client) ([]map[string]interface{}, error) {
args := g.Called(appSetGenerator, appSet)
return args.Get(0).([]map[string]interface{}), args.Error(1)
@@ -1078,7 +1057,6 @@ func (g *generatorMock) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.Appl
args := g.Called(appSetGenerator)
return args.Get(0).(time.Duration)
}
func TestGitGenerator_GenerateParams_list_x_git_matrix_generator(t *testing.T) {
@@ -1108,10 +1086,10 @@ 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, mock.Anything).Return(map[string][]byte{
repoServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(map[string][]byte{
"some/path.json": []byte("test: content"),
}, nil)
gitGenerator := NewGitGenerator(repoServiceMock)
gitGenerator := NewGitGenerator(repoServiceMock, "")
matrixGenerator := NewMatrixGenerator(map[string]Generator{
"List": listGeneratorMock,
@@ -1134,9 +1112,17 @@ func TestGitGenerator_GenerateParams_list_x_git_matrix_generator(t *testing.T) {
},
},
}
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
require.NoError(t, err)
appProject := argoprojiov1alpha1.AppProject{}
client := fake.NewClientBuilder().WithScheme(scheme).WithObjects(&appProject).Build()
params, err := matrixGenerator.GenerateParams(&argoprojiov1alpha1.ApplicationSetGenerator{
Matrix: matrixGeneratorSpec,
}, &argoprojiov1alpha1.ApplicationSet{})
}, &argoprojiov1alpha1.ApplicationSet{}, client)
require.NoError(t, err)
assert.Equal(t, []map[string]interface{}{{
"path": "some",

View File

@@ -6,6 +6,7 @@ import (
"time"
"github.com/imdario/mergo"
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -36,10 +37,10 @@ func NewMergeGenerator(supportedGenerators map[string]Generator) Generator {
// getParamSetsForAllGenerators generates params for each child generator in a MergeGenerator. Param sets are returned
// 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) {
func (m *MergeGenerator) getParamSetsForAllGenerators(generators []argoprojiov1alpha1.ApplicationSetNestedGenerator, appSet *argoprojiov1alpha1.ApplicationSet, client client.Client) ([][]map[string]interface{}, error) {
var paramSets [][]map[string]interface{}
for i, generator := range generators {
generatorParamSets, err := m.getParams(generator, appSet)
generatorParamSets, err := m.getParams(generator, appSet, client)
if err != nil {
return nil, fmt.Errorf("error getting params from generator %d of %d: %w", i+1, len(generators), err)
}
@@ -50,7 +51,7 @@ func (m *MergeGenerator) getParamSetsForAllGenerators(generators []argoprojiov1a
}
// GenerateParams gets the params produced by the MergeGenerator.
func (m *MergeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (m *MergeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, appSet *argoprojiov1alpha1.ApplicationSet, client client.Client) ([]map[string]interface{}, error) {
if appSetGenerator.Merge == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -59,7 +60,7 @@ func (m *MergeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appl
return nil, ErrLessThanTwoGeneratorsInMerge
}
paramSetsFromGenerators, err := m.getParamSetsForAllGenerators(appSetGenerator.Merge.Generators, appSet)
paramSetsFromGenerators, err := m.getParamSetsForAllGenerators(appSetGenerator.Merge.Generators, appSet, client)
if err != nil {
return nil, fmt.Errorf("error getting param sets from generators: %w", err)
}
@@ -77,7 +78,6 @@ func (m *MergeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appl
for mergeKeyValue, baseParamSet := range baseParamSetsByMergeKey {
if overrideParamSet, exists := paramSetsByMergeKey[mergeKeyValue]; exists {
if appSet.Spec.GoTemplate {
if err := mergo.Merge(&baseParamSet, overrideParamSet, mergo.WithOverride); err != nil {
return nil, fmt.Errorf("error merging base param set with override param set: %w", err)
@@ -95,7 +95,7 @@ func (m *MergeGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Appl
}
mergedParamSets := make([]map[string]interface{}, len(baseParamSetsByMergeKey))
var i = 0
i := 0
for _, mergedParamSet := range baseParamSetsByMergeKey {
mergedParamSets[i] = mergedParamSet
i += 1
@@ -138,7 +138,7 @@ func getParamSetsByMergeKey(mergeKeys []string, paramSets []map[string]interface
}
// getParams get the parameters generated by this generator.
func (m *MergeGenerator) getParams(appSetBaseGenerator argoprojiov1alpha1.ApplicationSetNestedGenerator, appSet *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (m *MergeGenerator) getParams(appSetBaseGenerator argoprojiov1alpha1.ApplicationSetNestedGenerator, appSet *argoprojiov1alpha1.ApplicationSet, client client.Client) ([]map[string]interface{}, error) {
matrixGen, err := getMatrixGenerator(appSetBaseGenerator)
if err != nil {
return nil, err
@@ -176,10 +176,9 @@ func (m *MergeGenerator) getParams(appSetBaseGenerator argoprojiov1alpha1.Applic
m.supportedGenerators,
argoprojiov1alpha1.ApplicationSetTemplate{},
appSet,
map[string]interface{}{})
map[string]interface{}{}, client)
if err != nil {
return nil, fmt.Errorf("child generator returned an error on parameter generation: %v", err)
return nil, fmt.Errorf("child generator returned an error on parameter generation: %w", err)
}
if len(t) == 0 {
@@ -227,7 +226,6 @@ func (m *MergeGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.App
} else {
return NoRequeueAfter
}
}
func getMergeGenerator(r argoprojiov1alpha1.ApplicationSetNestedGenerator) (*argoprojiov1alpha1.MergeGenerator, error) {

View File

@@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -49,7 +50,6 @@ func listOfMapsToSet(maps []map[string]interface{}) (map[string]bool, error) {
}
func TestMergeGenerate(t *testing.T) {
testCases := []struct {
name string
baseGenerators []argoprojiov1alpha1.ApplicationSetNestedGenerator
@@ -156,7 +156,7 @@ func TestMergeGenerate(t *testing.T) {
appSet := &argoprojiov1alpha1.ApplicationSet{}
var mergeGenerator = NewMergeGenerator(
mergeGenerator := NewMergeGenerator(
map[string]Generator{
"List": &ListGenerator{},
"Matrix": &MatrixGenerator{
@@ -178,18 +178,18 @@ func TestMergeGenerate(t *testing.T) {
MergeKeys: testCaseCopy.mergeKeys,
Template: argoprojiov1alpha1.ApplicationSetTemplate{},
},
}, appSet)
}, appSet, nil)
if testCaseCopy.expectedErr != nil {
assert.EqualError(t, err, testCaseCopy.expectedErr.Error())
require.EqualError(t, err, testCaseCopy.expectedErr.Error())
} else {
expectedSet, err := listOfMapsToSet(testCaseCopy.expected)
assert.NoError(t, err)
require.NoError(t, err)
actualSet, err := listOfMapsToSet(got)
assert.NoError(t, err)
require.NoError(t, err)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, expectedSet, actualSet)
}
})
@@ -197,7 +197,6 @@ func TestMergeGenerate(t *testing.T) {
}
func toAPIExtensionsJSON(t *testing.T, g interface{}) *apiextensionsv1.JSON {
resVal, err := json.Marshal(g)
if err != nil {
t.Error("unable to unmarshal json", g)
@@ -339,13 +338,11 @@ func TestParamSetsAreUniqueByMergeKeys(t *testing.T) {
got, err := getParamSetsByMergeKey(testCaseCopy.mergeKeys, testCaseCopy.paramSets)
if testCaseCopy.expectedErr != nil {
assert.EqualError(t, err, testCaseCopy.expectedErr.Error())
require.EqualError(t, err, testCaseCopy.expectedErr.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
})
}
}

View File

@@ -0,0 +1,100 @@
// Code generated by mockery v2.40.2. DO NOT EDIT.
package mocks
import (
client "sigs.k8s.io/controller-runtime/pkg/client"
mock "github.com/stretchr/testify/mock"
time "time"
v1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
// Generator is an autogenerated mock type for the Generator type
type Generator struct {
mock.Mock
}
// GenerateParams provides a mock function with given fields: appSetGenerator, applicationSetInfo, _a2
func (_m *Generator) GenerateParams(appSetGenerator *v1alpha1.ApplicationSetGenerator, applicationSetInfo *v1alpha1.ApplicationSet, _a2 client.Client) ([]map[string]interface{}, error) {
ret := _m.Called(appSetGenerator, applicationSetInfo, _a2)
if len(ret) == 0 {
panic("no return value specified for GenerateParams")
}
var r0 []map[string]interface{}
var r1 error
if rf, ok := ret.Get(0).(func(*v1alpha1.ApplicationSetGenerator, *v1alpha1.ApplicationSet, client.Client) ([]map[string]interface{}, error)); ok {
return rf(appSetGenerator, applicationSetInfo, _a2)
}
if rf, ok := ret.Get(0).(func(*v1alpha1.ApplicationSetGenerator, *v1alpha1.ApplicationSet, client.Client) []map[string]interface{}); ok {
r0 = rf(appSetGenerator, applicationSetInfo, _a2)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]map[string]interface{})
}
}
if rf, ok := ret.Get(1).(func(*v1alpha1.ApplicationSetGenerator, *v1alpha1.ApplicationSet, client.Client) error); ok {
r1 = rf(appSetGenerator, applicationSetInfo, _a2)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// GetRequeueAfter provides a mock function with given fields: appSetGenerator
func (_m *Generator) GetRequeueAfter(appSetGenerator *v1alpha1.ApplicationSetGenerator) time.Duration {
ret := _m.Called(appSetGenerator)
if len(ret) == 0 {
panic("no return value specified for GetRequeueAfter")
}
var r0 time.Duration
if rf, ok := ret.Get(0).(func(*v1alpha1.ApplicationSetGenerator) time.Duration); ok {
r0 = rf(appSetGenerator)
} else {
r0 = ret.Get(0).(time.Duration)
}
return r0
}
// GetTemplate provides a mock function with given fields: appSetGenerator
func (_m *Generator) GetTemplate(appSetGenerator *v1alpha1.ApplicationSetGenerator) *v1alpha1.ApplicationSetTemplate {
ret := _m.Called(appSetGenerator)
if len(ret) == 0 {
panic("no return value specified for GetTemplate")
}
var r0 *v1alpha1.ApplicationSetTemplate
if rf, ok := ret.Get(0).(func(*v1alpha1.ApplicationSetGenerator) *v1alpha1.ApplicationSetTemplate); ok {
r0 = rf(appSetGenerator)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1alpha1.ApplicationSetTemplate)
}
}
return r0
}
// NewGenerator creates a new instance of Generator. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewGenerator(t interface {
mock.TestingT
Cleanup(func())
}) *Generator {
mock := &Generator{}
mock.Mock.Test(t)
t.Cleanup(func() { mock.AssertExpectations(t) })
return mock
}

View File

@@ -55,8 +55,7 @@ func (g *PluginGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.Applic
return &appSetGenerator.Plugin.Template
}
func (g *PluginGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *PluginGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet, _ client.Client) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -94,7 +93,7 @@ func (g *PluginGenerator) getPluginFromGenerator(ctx context.Context, appSetName
}
token, err := g.getToken(ctx, cm["token"])
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
var requestTimeout int
@@ -117,7 +116,6 @@ func (g *PluginGenerator) generateParams(appSetGenerator *argoprojiov1alpha1.App
res := []map[string]interface{}{}
for _, objectFound := range objectsFound {
params := map[string]interface{}{}
if useGoTemplate {
@@ -152,7 +150,6 @@ func (g *PluginGenerator) generateParams(appSetGenerator *argoprojiov1alpha1.App
}
func (g *PluginGenerator) getToken(ctx context.Context, tokenRef string) (string, error) {
if tokenRef == "" || !strings.HasPrefix(tokenRef, "$") {
return "", fmt.Errorf("token is empty, or does not reference a secret key starting with '$': %v", tokenRef)
}
@@ -167,9 +164,8 @@ func (g *PluginGenerator) getToken(ctx context.Context, tokenRef string) (string
Namespace: g.namespace,
},
secret)
if err != nil {
return "", fmt.Errorf("error fetching secret %s/%s: %v", g.namespace, secretName, err)
return "", fmt.Errorf("error fetching secret %s/%s: %w", g.namespace, secretName, err)
}
secretValues := make(map[string]string, len(secret.Data))
@@ -192,7 +188,6 @@ func (g *PluginGenerator) getConfigMap(ctx context.Context, configMapRef string)
Namespace: g.namespace,
},
cm)
if err != nil {
return nil, err
}

View File

@@ -631,9 +631,7 @@ func TestPluginGenerateParams(t *testing.T) {
ctx := context.Background()
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
generatorConfig := argoprojiov1alpha1.ApplicationSetGenerator{
Plugin: &argoprojiov1alpha1.PluginGenerator{
ConfigMapRef: argoprojiov1alpha1.PluginConfigMapRef{Name: testCase.configmap.Name},
@@ -645,10 +643,9 @@ func TestPluginGenerateParams(t *testing.T) {
}
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
authHeader := r.Header.Get("Authorization")
_, tokenKey := plugin.ParseSecretKey(testCase.configmap.Data["token"])
expectedToken := testCase.secret.Data[strings.Replace(tokenKey, "$", "", -1)]
expectedToken := testCase.secret.Data[strings.ReplaceAll(tokenKey, "$", "")]
if authHeader != "Bearer "+string(expectedToken) {
w.WriteHeader(http.StatusUnauthorized)
return
@@ -657,7 +654,7 @@ func TestPluginGenerateParams(t *testing.T) {
w.Header().Set("Content-Type", "application/json")
_, err := w.Write(testCase.content)
if err != nil {
assert.NoError(t, fmt.Errorf("Error Write %v", err))
require.NoError(t, fmt.Errorf("Error Write %w", err))
}
})
@@ -673,7 +670,7 @@ func TestPluginGenerateParams(t *testing.T) {
fakeClientWithCache := fake.NewClientBuilder().WithObjects([]client.Object{testCase.configmap, testCase.secret}...).Build()
var pluginGenerator = NewPluginGenerator(fakeClientWithCache, ctx, fakeClient, "default")
pluginGenerator := NewPluginGenerator(fakeClientWithCache, ctx, fakeClient, "default")
applicationSetInfo := argoprojiov1alpha1.ApplicationSet{
ObjectMeta: metav1.ObjectMeta{
@@ -684,16 +681,15 @@ func TestPluginGenerateParams(t *testing.T) {
},
}
got, err := pluginGenerator.GenerateParams(&generatorConfig, &applicationSetInfo)
got, err := pluginGenerator.GenerateParams(&generatorConfig, &applicationSetInfo, nil)
if err != nil {
fmt.Println(err)
}
if testCase.expectedError != nil {
assert.EqualError(t, err, testCase.expectedError.Error())
require.EqualError(t, err, testCase.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
expectedJson, err := json.Marshal(testCase.expected)
require.NoError(t, err)
gotJson, err := json.Marshal(got)

View File

@@ -56,7 +56,7 @@ func (g *PullRequestGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.A
return &appSetGenerator.PullRequest.Template
}
func (g *PullRequestGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *PullRequestGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet, _ client.Client) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -73,7 +73,7 @@ func (g *PullRequestGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
pulls, err := pullrequest.ListPullRequests(ctx, svc, appSetGenerator.PullRequest.Filters)
if err != nil {
return nil, fmt.Errorf("error listing repos: %v", err)
return nil, fmt.Errorf("error listing repos: %w", err)
}
params := make([]map[string]interface{}, 0, len(pulls))
@@ -137,7 +137,7 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
providerConfig := generatorConfig.GitLab
token, err := g.getSecretRef(ctx, providerConfig.TokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
return pullrequest.NewGitLabService(ctx, token, providerConfig.API, providerConfig.Project, providerConfig.Labels, providerConfig.PullRequestState, g.scmRootCAPath, providerConfig.Insecure)
}
@@ -145,7 +145,7 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
providerConfig := generatorConfig.Gitea
token, err := g.getSecretRef(ctx, providerConfig.TokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
return pullrequest.NewGiteaService(ctx, token, providerConfig.API, providerConfig.Owner, providerConfig.Repo, providerConfig.Insecure)
}
@@ -154,7 +154,7 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
if providerConfig.BasicAuth != nil {
password, err := g.getSecretRef(ctx, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
return pullrequest.NewBitbucketServiceBasicAuth(ctx, providerConfig.BasicAuth.Username, password, providerConfig.API, providerConfig.Project, providerConfig.Repo)
} else {
@@ -166,13 +166,13 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
if providerConfig.BearerToken != nil {
appToken, err := g.getSecretRef(ctx, providerConfig.BearerToken.TokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Secret Bearer token: %v", err)
return nil, fmt.Errorf("error fetching Secret Bearer token: %w", err)
}
return pullrequest.NewBitbucketCloudServiceBearerToken(providerConfig.API, appToken, providerConfig.Owner, providerConfig.Repo)
} else if providerConfig.BasicAuth != nil {
password, err := g.getSecretRef(ctx, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
return pullrequest.NewBitbucketCloudServiceBasicAuth(providerConfig.API, providerConfig.BasicAuth.Username, password, providerConfig.Owner, providerConfig.Repo)
} else {
@@ -183,7 +183,7 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera
providerConfig := generatorConfig.AzureDevOps
token, err := g.getSecretRef(ctx, providerConfig.TokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
return pullrequest.NewAzureDevOpsService(ctx, token, providerConfig.API, providerConfig.Organization, providerConfig.Project, providerConfig.Repo, providerConfig.Labels)
}
@@ -195,7 +195,7 @@ func (g *PullRequestGenerator) github(ctx context.Context, cfg *argoprojiov1alph
if cfg.AppSecretName != "" {
auth, err := g.auth.GitHubApps.GetAuthSecret(ctx, cfg.AppSecretName)
if err != nil {
return nil, fmt.Errorf("error getting GitHub App secret: %v", err)
return nil, fmt.Errorf("error getting GitHub App secret: %w", err)
}
return pullrequest.NewGithubAppService(*auth, cfg.API, cfg.Owner, cfg.Repo, cfg.Labels)
}
@@ -203,7 +203,7 @@ func (g *PullRequestGenerator) github(ctx context.Context, cfg *argoprojiov1alph
// always default to token, even if not set (public access)
token, err := g.getSecretRef(ctx, cfg.TokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
return pullrequest.NewGithubService(ctx, token, cfg.API, cfg.Owner, cfg.Repo, cfg.Labels)
}
@@ -223,7 +223,7 @@ func (g *PullRequestGenerator) getSecretRef(ctx context.Context, ref *argoprojio
},
secret)
if err != nil {
return "", fmt.Errorf("error fetching secret %s/%s: %v", namespace, ref.SecretName, err)
return "", fmt.Errorf("error fetching secret %s/%s: %w", namespace, ref.SecretName, err)
}
tokenBytes, ok := secret.Data[ref.Key]
if !ok {

View File

@@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
@@ -203,8 +204,12 @@ func TestPullRequestGithubGenerateParams(t *testing.T) {
PullRequest: &argoprojiov1alpha1.PullRequestGenerator{},
}
got, gotErr := gen.GenerateParams(&generatorConfig, &c.applicationSet)
assert.Equal(t, c.expectedErr, gotErr)
got, gotErr := gen.GenerateParams(&generatorConfig, &c.applicationSet, nil)
if c.expectedErr != nil {
assert.Equal(t, c.expectedErr.Error(), gotErr.Error())
} else {
require.NoError(t, gotErr)
}
assert.ElementsMatch(t, c.expected, got)
}
}
@@ -265,9 +270,9 @@ func TestPullRequestGetSecretRef(t *testing.T) {
t.Run(c.name, func(t *testing.T) {
token, err := gen.getSecretRef(ctx, c.ref, c.namespace)
if c.hasError {
assert.NotNil(t, err)
require.Error(t, err)
} else {
assert.Nil(t, err)
require.NoError(t, err)
}
assert.Equal(t, c.token, token)
})
@@ -343,9 +348,9 @@ func TestAllowedSCMProviderPullRequest(t *testing.T) {
},
}
_, err := pullRequestGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
_, err := pullRequestGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, nil)
assert.Error(t, err, "Must return an error")
require.Error(t, err, "Must return an error")
assert.ErrorAs(t, err, testCaseCopy.expectedError)
})
}
@@ -369,6 +374,6 @@ func TestSCMProviderDisabled_PRGenerator(t *testing.T) {
},
}
_, err := generator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
_, err := generator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, nil)
assert.ErrorIs(t, err, ErrSCMProvidersDisabled)
}

View File

@@ -108,7 +108,7 @@ func ScmProviderAllowed(applicationSetInfo *argoprojiov1alpha1.ApplicationSet, g
return NewErrDisallowedSCMProvider(url, allowedScmProviders)
}
func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet, _ client.Client) ([]map[string]interface{}, error) {
if appSetGenerator == nil {
return nil, EmptyAppSetGeneratorError
}
@@ -141,20 +141,20 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
} else if providerConfig.Gitlab != nil {
token, err := g.getSecretRef(ctx, providerConfig.Gitlab.TokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Gitlab token: %v", err)
return nil, fmt.Errorf("error fetching Gitlab token: %w", err)
}
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)
return nil, fmt.Errorf("error initializing Gitlab service: %w", err)
}
} else if providerConfig.Gitea != nil {
token, err := g.getSecretRef(ctx, providerConfig.Gitea.TokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Gitea token: %v", err)
return nil, fmt.Errorf("error fetching Gitea token: %w", err)
}
provider, err = scm_provider.NewGiteaProvider(ctx, providerConfig.Gitea.Owner, token, providerConfig.Gitea.API, providerConfig.Gitea.AllBranches, providerConfig.Gitea.Insecure)
if err != nil {
return nil, fmt.Errorf("error initializing Gitea service: %v", err)
return nil, fmt.Errorf("error initializing Gitea service: %w", err)
}
} else if providerConfig.BitbucketServer != nil {
providerConfig := providerConfig.BitbucketServer
@@ -162,38 +162,38 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
if providerConfig.BasicAuth != nil {
password, err := g.getSecretRef(ctx, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Secret token: %v", err)
return nil, fmt.Errorf("error fetching Secret token: %w", err)
}
provider, scmError = scm_provider.NewBitbucketServerProviderBasicAuth(ctx, providerConfig.BasicAuth.Username, password, providerConfig.API, providerConfig.Project, providerConfig.AllBranches)
} else {
provider, scmError = scm_provider.NewBitbucketServerProviderNoAuth(ctx, providerConfig.API, providerConfig.Project, providerConfig.AllBranches)
}
if scmError != nil {
return nil, fmt.Errorf("error initializing Bitbucket Server service: %v", scmError)
return nil, fmt.Errorf("error initializing Bitbucket Server service: %w", scmError)
}
} else if providerConfig.AzureDevOps != nil {
token, err := g.getSecretRef(ctx, providerConfig.AzureDevOps.AccessTokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Azure Devops access token: %v", err)
return nil, fmt.Errorf("error fetching Azure Devops access token: %w", err)
}
provider, err = scm_provider.NewAzureDevOpsProvider(ctx, token, providerConfig.AzureDevOps.Organization, providerConfig.AzureDevOps.API, providerConfig.AzureDevOps.TeamProject, providerConfig.AzureDevOps.AllBranches)
if err != nil {
return nil, fmt.Errorf("error initializing Azure Devops service: %v", err)
return nil, fmt.Errorf("error initializing Azure Devops service: %w", err)
}
} else if providerConfig.Bitbucket != nil {
appPassword, err := g.getSecretRef(ctx, providerConfig.Bitbucket.AppPasswordRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Bitbucket cloud appPassword: %v", err)
return nil, fmt.Errorf("error fetching Bitbucket cloud appPassword: %w", err)
}
provider, err = scm_provider.NewBitBucketCloudProvider(ctx, providerConfig.Bitbucket.Owner, providerConfig.Bitbucket.User, appPassword, providerConfig.Bitbucket.AllBranches)
if err != nil {
return nil, fmt.Errorf("error initializing Bitbucket cloud service: %v", err)
return nil, fmt.Errorf("error initializing Bitbucket cloud service: %w", err)
}
} else if providerConfig.AWSCodeCommit != nil {
var awsErr error
provider, awsErr = scm_provider.NewAWSCodeCommitProvider(ctx, providerConfig.AWSCodeCommit.TagFilters, providerConfig.AWSCodeCommit.Role, providerConfig.AWSCodeCommit.Region, providerConfig.AWSCodeCommit.AllBranches)
if awsErr != nil {
return nil, fmt.Errorf("error initializing AWS codecommit service: %v", awsErr)
return nil, fmt.Errorf("error initializing AWS codecommit service: %w", awsErr)
}
} else {
return nil, fmt.Errorf("no SCM provider implementation configured")
@@ -202,7 +202,7 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha
// Find all the available repos.
repos, err := scm_provider.ListRepos(ctx, provider, providerConfig.Filters, providerConfig.CloneProtocol)
if err != nil {
return nil, fmt.Errorf("error listing repos: %v", err)
return nil, fmt.Errorf("error listing repos: %w", err)
}
paramsArray := make([]map[string]interface{}, 0, len(repos))
var shortSHALength int
@@ -254,7 +254,7 @@ func (g *SCMProviderGenerator) getSecretRef(ctx context.Context, ref *argoprojio
},
secret)
if err != nil {
return "", fmt.Errorf("error fetching secret %s/%s: %v", namespace, ref.SecretName, err)
return "", fmt.Errorf("error fetching secret %s/%s: %w", namespace, ref.SecretName, err)
}
tokenBytes, ok := secret.Data[ref.Key]
if !ok {
@@ -267,7 +267,7 @@ func (g *SCMProviderGenerator) githubProvider(ctx context.Context, github *argop
if github.AppSecretName != "" {
auth, err := g.GitHubApps.GetAuthSecret(ctx, github.AppSecretName)
if err != nil {
return nil, fmt.Errorf("error fetching Github app secret: %v", err)
return nil, fmt.Errorf("error fetching Github app secret: %w", err)
}
return scm_provider.NewGithubAppProviderFor(
@@ -280,7 +280,7 @@ func (g *SCMProviderGenerator) githubProvider(ctx context.Context, github *argop
token, err := g.getSecretRef(ctx, github.TokenRef, applicationSetInfo.Namespace)
if err != nil {
return nil, fmt.Errorf("error fetching Github token: %v", err)
return nil, fmt.Errorf("error fetching Github token: %w", err)
}
return scm_provider.NewGithubProvider(ctx, github.Organization, token, github.API, github.AllBranches)
}

View File

@@ -5,6 +5,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
@@ -69,12 +70,11 @@ func TestSCMProviderGetSecretRef(t *testing.T) {
t.Run(c.name, func(t *testing.T) {
token, err := gen.getSecretRef(ctx, c.ref, c.namespace)
if c.hasError {
assert.NotNil(t, err)
require.Error(t, err)
} else {
assert.Nil(t, err)
require.NoError(t, err)
}
assert.Equal(t, c.token, token)
})
}
}
@@ -188,15 +188,14 @@ func TestSCMProviderGenerateParams(t *testing.T) {
},
}
got, err := scmGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
got, err := scmGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, nil)
if testCaseCopy.expectedError != nil {
assert.EqualError(t, err, testCaseCopy.expectedError.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
})
}
}
@@ -282,9 +281,9 @@ func TestAllowedSCMProvider(t *testing.T) {
},
}
_, err := scmGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
_, err := scmGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, nil)
assert.Error(t, err, "Must return an error")
require.Error(t, err, "Must return an error")
assert.ErrorAs(t, err, testCaseCopy.expectedError)
})
}
@@ -308,6 +307,6 @@ func TestSCMProviderDisabled_SCMGenerator(t *testing.T) {
},
}
_, err := generator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo)
_, err := generator.GenerateParams(&applicationSetInfo.Spec.Generators[0], &applicationSetInfo, nil)
assert.ErrorIs(t, err, ErrSCMProvidersDisabled)
}

View File

@@ -12,7 +12,6 @@ func appendTemplatedValues(values map[string]string, params map[string]interface
for key, value := range values {
result, err := replaceTemplatedString(value, params, useGoTemplate, goTemplateOptions)
if err != nil {
return fmt.Errorf("failed to replace templated string: %w", err)
}

View File

@@ -4,6 +4,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestValueInterpolation(t *testing.T) {
@@ -53,10 +54,9 @@ func TestValueInterpolation(t *testing.T) {
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
err := appendTemplatedValues(testCase.values, testCase.params, false, nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.EqualValues(t, testCase.expected, testCase.params)
})
}
@@ -115,10 +115,9 @@ func TestValueInterpolationWithGoTemplating(t *testing.T) {
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
err := appendTemplatedValues(testCase.values, testCase.params, true, nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.EqualValues(t, testCase.expected, testCase.params)
})
}

View File

@@ -66,7 +66,6 @@ func newClient(baseURL string, options ...ClientOptionFunc) (*Client, error) {
}
func (c *Client) NewRequest(method, path string, body interface{}, options []ClientOptionFunc) (*http.Request, error) {
// Make sure the given URL end with a slash
if !strings.HasSuffix(c.baseURL, "/") {
c.baseURL += "/"
@@ -135,14 +134,13 @@ func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*htt
// CheckResponse checks the API response for errors, and returns them if present.
func CheckResponse(resp *http.Response) error {
if c := resp.StatusCode; 200 <= c && c <= 299 {
return nil
}
data, err := io.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("API error with status code %d: %v", resp.StatusCode, err)
return fmt.Errorf("API error with status code %d: %w", resp.StatusCode, err)
}
var raw map[string]interface{}

View File

@@ -17,14 +17,13 @@ func TestClient(t *testing.T) {
w.WriteHeader(http.StatusOK)
_, err := w.Write([]byte("Hello, World!"))
if err != nil {
assert.NoError(t, fmt.Errorf("Error Write %v", err))
assert.NoError(t, fmt.Errorf("Error Write %w", err))
}
}))
defer server.Close()
var clientOptionFns []ClientOptionFunc
_, err := NewClient(server.URL, clientOptionFns...)
if err != nil {
t.Fatalf("Failed to create client: %v", err)
}
@@ -62,7 +61,7 @@ func TestClientDo(t *testing.T) {
"key3": 123
}]`))
if err != nil {
assert.NoError(t, fmt.Errorf("Error Write %v", err))
assert.NoError(t, fmt.Errorf("Error Write %w", err))
}
})),
clientOptionFns: nil,
@@ -105,7 +104,7 @@ func TestClientDo(t *testing.T) {
"key3": 123
}]`))
if err != nil {
assert.NoError(t, fmt.Errorf("Error Write %v", err))
assert.NoError(t, fmt.Errorf("Error Write %w", err))
}
})),
clientOptionFns: nil,
@@ -119,13 +118,11 @@ func TestClientDo(t *testing.T) {
defer cc.fakeServer.Close()
client, err := NewClient(cc.fakeServer.URL, cc.clientOptionFns...)
if err != nil {
t.Fatalf("NewClient returned unexpected error: %v", err)
}
req, err := client.NewRequest("POST", "", cc.params, nil)
if err != nil {
t.Fatalf("NewRequest returned unexpected error: %v", err)
}
@@ -137,8 +134,8 @@ func TestClientDo(t *testing.T) {
if cc.expectedError != nil {
assert.EqualError(t, err, cc.expectedError.Error())
} else {
assert.Equal(t, resp.StatusCode, cc.expectedCode)
assert.Equal(t, data, cc.expected)
assert.Equal(t, cc.expectedCode, resp.StatusCode)
assert.Equal(t, cc.expected, data)
assert.NoError(t, err)
}
})

View File

@@ -1,4 +1,4 @@
// Code generated by mockery v2.25.1. DO NOT EDIT.
// Code generated by mockery v2.40.2. DO NOT EDIT.
package mocks
@@ -13,25 +13,29 @@ type Repos struct {
mock.Mock
}
// 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)
// GetDirectories provides a mock function with given fields: ctx, repoURL, revision, noRevisionCache, verifyCommit
func (_m *Repos) GetDirectories(ctx context.Context, repoURL string, revision string, noRevisionCache bool, verifyCommit bool) ([]string, error) {
ret := _m.Called(ctx, repoURL, revision, noRevisionCache, verifyCommit)
if len(ret) == 0 {
panic("no return value specified for GetDirectories")
}
var r0 []string
var r1 error
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, bool, bool) ([]string, error)); ok {
return rf(ctx, repoURL, revision, noRevisionCache, verifyCommit)
}
if rf, ok := ret.Get(0).(func(context.Context, string, string, bool) []string); ok {
r0 = rf(ctx, repoURL, revision, noRevisionCache)
if rf, ok := ret.Get(0).(func(context.Context, string, string, bool, bool) []string); ok {
r0 = rf(ctx, repoURL, revision, noRevisionCache, verifyCommit)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]string)
}
}
if rf, ok := ret.Get(1).(func(context.Context, string, string, bool) error); ok {
r1 = rf(ctx, repoURL, revision, noRevisionCache)
if rf, ok := ret.Get(1).(func(context.Context, string, string, bool, bool) error); ok {
r1 = rf(ctx, repoURL, revision, noRevisionCache, verifyCommit)
} else {
r1 = ret.Error(1)
}
@@ -39,25 +43,29 @@ 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, 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)
// GetFiles provides a mock function with given fields: ctx, repoURL, revision, pattern, noRevisionCache, verifyCommit
func (_m *Repos) GetFiles(ctx context.Context, repoURL string, revision string, pattern string, noRevisionCache bool, verifyCommit bool) (map[string][]byte, error) {
ret := _m.Called(ctx, repoURL, revision, pattern, noRevisionCache, verifyCommit)
if len(ret) == 0 {
panic("no return value specified for GetFiles")
}
var r0 map[string][]byte
var r1 error
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, bool, bool) (map[string][]byte, error)); ok {
return rf(ctx, repoURL, revision, pattern, noRevisionCache, verifyCommit)
}
if rf, ok := ret.Get(0).(func(context.Context, string, string, string, bool) map[string][]byte); ok {
r0 = rf(ctx, repoURL, revision, pattern, noRevisionCache)
if rf, ok := ret.Get(0).(func(context.Context, string, string, string, bool, bool) map[string][]byte); ok {
r0 = rf(ctx, repoURL, revision, pattern, noRevisionCache, verifyCommit)
} 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, bool) error); ok {
r1 = rf(ctx, repoURL, revision, pattern, noRevisionCache)
if rf, ok := ret.Get(1).(func(context.Context, string, string, string, bool, bool) error); ok {
r1 = rf(ctx, repoURL, revision, pattern, noRevisionCache, verifyCommit)
} else {
r1 = ret.Error(1)
}
@@ -65,13 +73,12 @@ func (_m *Repos) GetFiles(ctx context.Context, repoURL string, revision string,
return r0, r1
}
type mockConstructorTestingTNewRepos interface {
// NewRepos creates a new instance of Repos. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewRepos(t interface {
mock.TestingT
Cleanup(func())
}
// NewRepos creates a new instance of Repos. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewRepos(t mockConstructorTestingTNewRepos) *Repos {
}) *Repos {
mock := &Repos{}
mock.Mock.Test(t)

View File

@@ -1,57 +0,0 @@
// Code generated by mockery v2.21.1. DO NOT EDIT.
package mocks
import (
context "context"
mock "github.com/stretchr/testify/mock"
v1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
// RepositoryDB is an autogenerated mock type for the RepositoryDB type
type RepositoryDB struct {
mock.Mock
}
// GetRepository provides a mock function with given fields: ctx, url
func (_m *RepositoryDB) GetRepository(ctx context.Context, url string) (*v1alpha1.Repository, error) {
ret := _m.Called(ctx, url)
var r0 *v1alpha1.Repository
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, string) (*v1alpha1.Repository, error)); ok {
return rf(ctx, url)
}
if rf, ok := ret.Get(0).(func(context.Context, string) *v1alpha1.Repository); ok {
r0 = rf(ctx, url)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1alpha1.Repository)
}
}
if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
r1 = rf(ctx, url)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
type mockConstructorTestingTNewRepositoryDB interface {
mock.TestingT
Cleanup(func())
}
// NewRepositoryDB creates a new instance of RepositoryDB. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewRepositoryDB(t mockConstructorTestingTNewRepositoryDB) *RepositoryDB {
mock := &RepositoryDB{}
mock.Mock.Test(t)
t.Cleanup(func() { mock.AssertExpectations(t) })
return mock
}

View File

@@ -45,7 +45,7 @@ func NewPluginService(ctx context.Context, appSetName string, baseURL string, to
client, err := internalhttp.NewClient(baseURL, clientOptionFns...)
if err != nil {
return nil, fmt.Errorf("error creating plugin client: %v", err)
return nil, fmt.Errorf("error creating plugin client: %w", err)
}
return &Service{
@@ -56,17 +56,15 @@ func NewPluginService(ctx context.Context, appSetName string, baseURL string, to
func (p *Service) List(ctx context.Context, parameters v1alpha1.PluginParameters) (*ServiceResponse, error) {
req, err := p.client.NewRequest(http.MethodPost, "api/v1/getparams.execute", ServiceRequest{ApplicationSetName: p.appSetName, Input: v1alpha1.PluginInput{Parameters: parameters}}, nil)
if err != nil {
return nil, fmt.Errorf("NewRequest returned unexpected error: %v", err)
return nil, fmt.Errorf("NewRequest returned unexpected error: %w", err)
}
var data ServiceResponse
_, err = p.client.Do(ctx, req, &data)
if err != nil {
return nil, fmt.Errorf("error get api '%s': %v", p.appSetName, err)
return nil, fmt.Errorf("error get api '%s': %w", p.appSetName, err)
}
return &data, err

View File

@@ -23,22 +23,19 @@ func TestPlugin(t *testing.T) {
return
}
_, err := w.Write([]byte(expectedJSON))
if err != nil {
assert.NoError(t, fmt.Errorf("Error Write %v", err))
assert.NoError(t, fmt.Errorf("Error Write %w", err))
}
})
ts := httptest.NewServer(handler)
defer ts.Close()
client, err := NewPluginService(context.Background(), "plugin-test", ts.URL, token, 0)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
data, err := client.List(context.Background(), nil)
if err != nil {
t.Errorf("unexpected error: %v", err)
}

View File

@@ -36,8 +36,10 @@ type AzureDevOpsService struct {
labels []string
}
var _ PullRequestService = (*AzureDevOpsService)(nil)
var _ AzureDevOpsClientFactory = &devopsFactoryImpl{}
var (
_ PullRequestService = (*AzureDevOpsService)(nil)
_ AzureDevOpsClientFactory = &devopsFactoryImpl{}
)
func NewAzureDevOpsService(ctx context.Context, token, url, organization, project, repo string, labels []string) (PullRequestService, error) {
organizationUrl := buildURL(url, organization)

View File

@@ -8,6 +8,7 @@ import (
git "github.com/microsoft/azure-devops-go-api/azuredevops/git"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
azureMock "github.com/argoproj/argo-cd/v2/applicationset/services/scm_provider/azure_devops/git/mocks"
)
@@ -90,8 +91,8 @@ func TestListPullRequest(t *testing.T) {
}
list, err := provider.List(ctx)
assert.NoError(t, err)
assert.Equal(t, 1, len(list))
require.NoError(t, err)
assert.Len(t, list, 1)
assert.Equal(t, "feature-branch", list[0].Branch)
assert.Equal(t, pr_head_sha, list[0].HeadSHA)
assert.Equal(t, pr_id, list[0].Number)
@@ -215,7 +216,7 @@ func TestBuildURL(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
result := buildURL(tc.url, tc.organization)
assert.Equal(t, result, tc.expected)
assert.Equal(t, tc.expected, result)
})
}
}

View File

@@ -60,7 +60,7 @@ func parseUrl(uri string) (*url.URL, error) {
func NewBitbucketCloudServiceBasicAuth(baseUrl, username, password, owner, repositorySlug string) (PullRequestService, error) {
url, err := parseUrl(baseUrl)
if err != nil {
return nil, fmt.Errorf("error parsing base url of %s for %s/%s: %v", baseUrl, owner, repositorySlug, err)
return nil, fmt.Errorf("error parsing base url of %s for %s/%s: %w", baseUrl, owner, repositorySlug, err)
}
bitbucketClient := bitbucket.NewBasicAuth(username, password)
@@ -76,7 +76,7 @@ func NewBitbucketCloudServiceBasicAuth(baseUrl, username, password, owner, repos
func NewBitbucketCloudServiceBearerToken(baseUrl, bearerToken, owner, repositorySlug string) (PullRequestService, error) {
url, err := parseUrl(baseUrl)
if err != nil {
return nil, fmt.Errorf("error parsing base url of %s for %s/%s: %v", baseUrl, owner, repositorySlug, err)
return nil, fmt.Errorf("error parsing base url of %s for %s/%s: %w", baseUrl, owner, repositorySlug, err)
}
bitbucketClient := bitbucket.NewOAuthbearerToken(bearerToken)
@@ -102,7 +102,7 @@ func (b *BitbucketCloudService) List(_ context.Context) ([]*PullRequest, error)
response, err := b.client.Repositories.PullRequests.Gets(opts)
if err != nil {
return nil, fmt.Errorf("error listing pull requests for %s/%s: %v", b.owner, b.repositorySlug, err)
return nil, fmt.Errorf("error listing pull requests for %s/%s: %w", b.owner, b.repositorySlug, err)
}
resp, ok := response.(map[string]interface{})
@@ -117,12 +117,12 @@ func (b *BitbucketCloudService) List(_ context.Context) ([]*PullRequest, error)
jsonStr, err := json.Marshal(repoArray)
if err != nil {
return nil, fmt.Errorf("error marshalling response body to json: %v", err)
return nil, fmt.Errorf("error marshalling response body to json: %w", err)
}
var pulls []BitbucketCloudPullRequest
if err := json.Unmarshal(jsonStr, &pulls); err != nil {
return nil, fmt.Errorf("error unmarshalling json to type '[]BitbucketCloudPullRequest': %v", err)
return nil, fmt.Errorf("error unmarshalling json to type '[]BitbucketCloudPullRequest': %w", err)
}
pullRequests := []*PullRequest{}

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -51,26 +52,26 @@ func TestParseUrlEmptyUrl(t *testing.T) {
url, err := parseUrl("")
bitbucketUrl, _ := url.Parse("https://api.bitbucket.org/2.0")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, bitbucketUrl, url)
}
func TestInvalidBaseUrlBasicAuthCloud(t *testing.T) {
_, err := NewBitbucketCloudServiceBasicAuth("http:// example.org", "user", "password", "OWNER", "REPO")
assert.Error(t, err)
require.Error(t, err)
}
func TestInvalidBaseUrlBearerTokenCloud(t *testing.T) {
_, err := NewBitbucketCloudServiceBearerToken("http:// example.org", "TOKEN", "OWNER", "REPO")
assert.Error(t, err)
require.Error(t, err)
}
func TestInvalidBaseUrlNoAuthCloud(t *testing.T) {
_, err := NewBitbucketCloudServiceNoAuth("http:// example.org", "OWNER", "REPO")
assert.Error(t, err)
require.Error(t, err)
}
func TestListPullRequestBearerTokenCloud(t *testing.T) {
@@ -80,10 +81,10 @@ func TestListPullRequestBearerTokenCloud(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketCloudServiceBearerToken(ts.URL, "TOKEN", "OWNER", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
assert.Equal(t, 1, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, 101, pullRequests[0].Number)
assert.Equal(t, "feature/foo-bar", pullRequests[0].Branch)
assert.Equal(t, "1a8dd249c04a", pullRequests[0].HeadSHA)
@@ -96,10 +97,10 @@ func TestListPullRequestNoAuthCloud(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
assert.Equal(t, 1, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, 101, pullRequests[0].Number)
assert.Equal(t, "feature/foo-bar", pullRequests[0].Branch)
assert.Equal(t, "1a8dd249c04a", pullRequests[0].HeadSHA)
@@ -112,10 +113,10 @@ func TestListPullRequestBasicAuthCloud(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketCloudServiceBasicAuth(ts.URL, "user", "password", "OWNER", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
assert.Equal(t, 1, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, 101, pullRequests[0].Number)
assert.Equal(t, "feature/foo-bar", pullRequests[0].Branch)
assert.Equal(t, "1a8dd249c04a", pullRequests[0].HeadSHA)
@@ -189,10 +190,10 @@ func TestListPullRequestPaginationCloud(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
assert.Equal(t, 3, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 3)
assert.Equal(t, PullRequest{
Number: 101,
Branch: "feature-101",
@@ -217,7 +218,7 @@ func TestListResponseErrorCloud(t *testing.T) {
defer ts.Close()
svc, _ := NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
_, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.Error(t, err)
require.Error(t, err)
}
func TestListResponseMalformedCloud(t *testing.T) {
@@ -241,7 +242,7 @@ func TestListResponseMalformedCloud(t *testing.T) {
defer ts.Close()
svc, _ := NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
_, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.Error(t, err)
require.Error(t, err)
}
func TestListResponseMalformedValuesCloud(t *testing.T) {
@@ -265,7 +266,7 @@ func TestListResponseMalformedValuesCloud(t *testing.T) {
defer ts.Close()
svc, _ := NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
_, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.Error(t, err)
require.Error(t, err)
}
func TestListResponseEmptyCloud(t *testing.T) {
@@ -288,9 +289,9 @@ func TestListResponseEmptyCloud(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, pullRequests)
}
@@ -363,14 +364,14 @@ func TestListPullRequestBranchMatchCloud(t *testing.T) {
defer ts.Close()
regexp := `feature-1[\d]{2}`
svc, err := NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{
{
BranchMatch: &regexp,
},
})
assert.NoError(t, err)
assert.Equal(t, 2, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 2)
assert.Equal(t, PullRequest{
Number: 101,
Branch: "feature-101",
@@ -384,14 +385,14 @@ func TestListPullRequestBranchMatchCloud(t *testing.T) {
regexp = `.*2$`
svc, err = NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err = ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{
{
BranchMatch: &regexp,
},
})
assert.NoError(t, err)
assert.Equal(t, 1, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, PullRequest{
Number: 102,
Branch: "feature-102",
@@ -400,11 +401,11 @@ func TestListPullRequestBranchMatchCloud(t *testing.T) {
regexp = `[\d{2}`
svc, err = NewBitbucketCloudServiceNoAuth(ts.URL, "OWNER", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
_, err = ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{
{
BranchMatch: &regexp,
},
})
assert.Error(t, err)
require.Error(t, err)
}

View File

@@ -4,9 +4,10 @@ import (
"context"
"fmt"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
bitbucketv1 "github.com/gfleury/go-bitbucket-v1"
log "github.com/sirupsen/logrus"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
)
type BitbucketService struct {
@@ -56,12 +57,12 @@ func (b *BitbucketService) List(_ context.Context) ([]*PullRequest, error) {
for {
response, err := b.client.DefaultApi.GetPullRequestsPage(b.projectKey, b.repositorySlug, paged)
if err != nil {
return nil, fmt.Errorf("error listing pull requests for %s/%s: %v", b.projectKey, b.repositorySlug, err)
return nil, fmt.Errorf("error listing pull requests for %s/%s: %w", b.projectKey, b.repositorySlug, err)
}
pulls, err := bitbucketv1.GetPullRequestsResponse(response)
if err != nil {
log.Errorf("error parsing pull request response '%v'", response.Values)
return nil, fmt.Errorf("error parsing pull request response for %s/%s: %v", b.projectKey, b.repositorySlug, err)
return nil, fmt.Errorf("error parsing pull request response for %s/%s: %w", b.projectKey, b.repositorySlug, err)
}
for _, pull := range pulls {

View File

@@ -7,8 +7,10 @@ import (
"net/http/httptest"
"testing"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func defaultHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
@@ -54,10 +56,10 @@ func TestListPullRequestNoAuth(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
assert.Equal(t, 1, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, 101, pullRequests[0].Number)
assert.Equal(t, "feature-ABC-123", pullRequests[0].Branch)
assert.Equal(t, "master", pullRequests[0].TargetBranch)
@@ -135,10 +137,10 @@ func TestListPullRequestPagination(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
assert.Equal(t, 3, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 3)
assert.Equal(t, PullRequest{
Number: 101,
Branch: "feature-101",
@@ -171,10 +173,10 @@ func TestListPullRequestBasicAuth(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketServiceBasicAuth(context.Background(), "user", "password", ts.URL, "PROJECT", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
assert.Equal(t, 1, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, 101, pullRequests[0].Number)
assert.Equal(t, "feature-ABC-123", pullRequests[0].Branch)
assert.Equal(t, "cb3cf2e4d1517c83e720d2585b9402dbef71f992", pullRequests[0].HeadSHA)
@@ -187,7 +189,7 @@ func TestListResponseError(t *testing.T) {
defer ts.Close()
svc, _ := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO")
_, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.Error(t, err)
require.Error(t, err)
}
func TestListResponseMalformed(t *testing.T) {
@@ -212,7 +214,7 @@ func TestListResponseMalformed(t *testing.T) {
defer ts.Close()
svc, _ := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO")
_, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.Error(t, err)
require.Error(t, err)
}
func TestListResponseEmpty(t *testing.T) {
@@ -236,9 +238,9 @@ func TestListResponseEmpty(t *testing.T) {
}))
defer ts.Close()
svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, pullRequests)
}
@@ -314,14 +316,14 @@ func TestListPullRequestBranchMatch(t *testing.T) {
defer ts.Close()
regexp := `feature-1[\d]{2}`
svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{
{
BranchMatch: &regexp,
},
})
assert.NoError(t, err)
assert.Equal(t, 2, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 2)
assert.Equal(t, PullRequest{
Number: 101,
Branch: "feature-101",
@@ -339,14 +341,14 @@ func TestListPullRequestBranchMatch(t *testing.T) {
regexp = `.*2$`
svc, err = NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
pullRequests, err = ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{
{
BranchMatch: &regexp,
},
})
assert.NoError(t, err)
assert.Equal(t, 1, len(pullRequests))
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, PullRequest{
Number: 102,
Branch: "feature-102",
@@ -357,11 +359,11 @@ func TestListPullRequestBranchMatch(t *testing.T) {
regexp = `[\d{2}`
svc, err = NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO")
assert.NoError(t, err)
require.NoError(t, err)
_, err = ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{
{
BranchMatch: &regexp,
},
})
assert.Error(t, err)
require.Error(t, err)
}

View File

@@ -10,6 +10,7 @@ import (
"code.gitea.io/sdk/gitea"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func giteaMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
@@ -250,14 +251,14 @@ func TestGiteaList(t *testing.T) {
giteaMockHandler(t)(w, r)
}))
host, err := NewGiteaService(context.Background(), "", ts.URL, "test-argocd", "pr-test", false)
assert.Nil(t, err)
require.NoError(t, err)
prs, err := host.List(context.Background())
assert.Nil(t, err)
assert.Equal(t, len(prs), 1)
assert.Equal(t, prs[0].Number, 1)
assert.Equal(t, prs[0].Branch, "test")
assert.Equal(t, prs[0].TargetBranch, "main")
assert.Equal(t, prs[0].HeadSHA, "7bbaf62d92ddfafd9cc8b340c619abaec32bc09f")
require.NoError(t, err)
assert.Len(t, prs, 1)
assert.Equal(t, 1, prs[0].Number)
assert.Equal(t, "test", prs[0].Branch)
assert.Equal(t, "main", prs[0].TargetBranch)
assert.Equal(t, "7bbaf62d92ddfafd9cc8b340c619abaec32bc09f", prs[0].HeadSHA)
}
func TestGetGiteaPRLabelNames(t *testing.T) {

View File

@@ -6,9 +6,10 @@ import (
"net/http"
"os"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
"github.com/hashicorp/go-retryablehttp"
gitlab "github.com/xanzy/go-gitlab"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
)
type GitLabService struct {
@@ -42,7 +43,7 @@ func NewGitLabService(ctx context.Context, token, url, project string, labels []
client, err := gitlab.NewClient(token, clientOptionFns...)
if err != nil {
return nil, fmt.Errorf("error creating Gitlab client: %v", err)
return nil, fmt.Errorf("error creating Gitlab client: %w", err)
}
return &GitLabService{
@@ -54,7 +55,6 @@ func NewGitLabService(ctx context.Context, token, url, project string, labels []
}
func (g *GitLabService) List(ctx context.Context) ([]*PullRequest, error) {
// Filter the merge requests on labels, if they are specified.
var labels *gitlab.Labels
if len(g.labels) > 0 {
@@ -76,7 +76,7 @@ func (g *GitLabService) List(ctx context.Context) ([]*PullRequest, error) {
for {
mrs, resp, err := g.client.MergeRequests.ListProjectMergeRequests(g.project, opts)
if err != nil {
return nil, fmt.Errorf("error listing merge requests for project '%s': %v", g.project, err)
return nil, fmt.Errorf("error listing merge requests for project '%s': %w", g.project, err)
}
for _, mr := range mrs {
pullRequests = append(pullRequests, &PullRequest{

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func writeMRListResponse(t *testing.T, w io.Writer) {
@@ -35,10 +36,10 @@ func TestGitLabServiceCustomBaseURL(t *testing.T) {
})
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", nil, "", "", false)
assert.NoError(t, err)
require.NoError(t, err)
_, err = svc.List(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
}
func TestGitLabServiceToken(t *testing.T) {
@@ -54,10 +55,10 @@ func TestGitLabServiceToken(t *testing.T) {
})
svc, err := NewGitLabService(context.Background(), "token-123", server.URL, "278964", nil, "", "", false)
assert.NoError(t, err)
require.NoError(t, err)
_, err = svc.List(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
}
func TestList(t *testing.T) {
@@ -73,15 +74,15 @@ func TestList(t *testing.T) {
})
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "", "", false)
assert.NoError(t, err)
require.NoError(t, err)
prs, err := svc.List(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, prs, 1)
assert.Equal(t, prs[0].Number, 15442)
assert.Equal(t, prs[0].Branch, "use-structured-logging-for-db-load-balancer")
assert.Equal(t, prs[0].TargetBranch, "master")
assert.Equal(t, prs[0].HeadSHA, "2fc4e8b972ff3208ec63b6143e34ad67ff343ad7")
assert.Equal(t, 15442, prs[0].Number)
assert.Equal(t, "use-structured-logging-for-db-load-balancer", prs[0].Branch)
assert.Equal(t, "master", prs[0].TargetBranch)
assert.Equal(t, "2fc4e8b972ff3208ec63b6143e34ad67ff343ad7", prs[0].HeadSHA)
}
func TestListWithLabels(t *testing.T) {
@@ -97,10 +98,10 @@ func TestListWithLabels(t *testing.T) {
})
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{"feature", "ready"}, "", "", false)
assert.NoError(t, err)
require.NoError(t, err)
_, err = svc.List(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
}
func TestListWithState(t *testing.T) {
@@ -116,8 +117,8 @@ func TestListWithState(t *testing.T) {
})
svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "opened", "", false)
assert.NoError(t, err)
require.NoError(t, err)
_, err = svc.List(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
}

View File

@@ -16,13 +16,13 @@ func compileFilters(filters []argoprojiov1alpha1.PullRequestGeneratorFilter) ([]
if filter.BranchMatch != nil {
outFilter.BranchMatch, err = regexp.Compile(*filter.BranchMatch)
if err != nil {
return nil, fmt.Errorf("error compiling BranchMatch regexp %q: %v", *filter.BranchMatch, err)
return nil, fmt.Errorf("error compiling BranchMatch regexp %q: %w", *filter.BranchMatch, err)
}
}
if filter.TargetBranchMatch != nil {
outFilter.TargetBranchMatch, err = regexp.Compile(*filter.TargetBranchMatch)
if err != nil {
return nil, fmt.Errorf("error compiling TargetBranchMatch regexp %q: %v", *filter.TargetBranchMatch, err)
return nil, fmt.Errorf("error compiling TargetBranchMatch regexp %q: %w", *filter.TargetBranchMatch, err)
}
}
outFilters = append(outFilters, outFilter)

View File

@@ -4,13 +4,16 @@ import (
"context"
"testing"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func strp(s string) *string {
return &s
}
func TestFilterBranchMatchBadRegexp(t *testing.T) {
provider, _ := NewFakeService(
context.Background(),
@@ -30,7 +33,7 @@ func TestFilterBranchMatchBadRegexp(t *testing.T) {
},
}
_, err := ListPullRequests(context.Background(), provider, filters)
assert.Error(t, err)
require.Error(t, err)
}
func TestFilterBranchMatch(t *testing.T) {
@@ -70,7 +73,7 @@ func TestFilterBranchMatch(t *testing.T) {
},
}
pullRequests, err := ListPullRequests(context.Background(), provider, filters)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, "two", pullRequests[0].Branch)
}
@@ -112,7 +115,7 @@ func TestFilterTargetBranchMatch(t *testing.T) {
},
}
pullRequests, err := ListPullRequests(context.Background(), provider, filters)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, pullRequests, 1)
assert.Equal(t, "two", pullRequests[0].Branch)
}
@@ -157,7 +160,7 @@ func TestMultiFilterOr(t *testing.T) {
},
}
pullRequests, err := ListPullRequests(context.Background(), provider, filters)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, pullRequests, 3)
assert.Equal(t, "two", pullRequests[0].Branch)
assert.Equal(t, "three", pullRequests[1].Branch)
@@ -206,7 +209,7 @@ func TestMultiFilterOrWithTargetBranchFilter(t *testing.T) {
},
}
pullRequests, err := ListPullRequests(context.Background(), provider, filters)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, pullRequests, 2)
assert.Equal(t, "two", pullRequests[0].Branch)
assert.Equal(t, "four", pullRequests[1].Branch)
@@ -233,7 +236,7 @@ func TestNoFilters(t *testing.T) {
)
filters := []argoprojiov1alpha1.PullRequestGeneratorFilter{}
repos, err := ListPullRequests(context.Background(), provider, filters)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, repos, 2)
assert.Equal(t, "one", repos[0].Branch)
assert.Equal(t, "two", repos[1].Branch)

View File

@@ -6,49 +6,39 @@ import (
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/reposerver/apiclient"
"github.com/argoproj/argo-cd/v2/util/db"
"github.com/argoproj/argo-cd/v2/util/git"
"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 {
GetRepository(ctx context.Context, url string) (*v1alpha1.Repository, error)
}
type argoCDService struct {
repositoriesDB RepositoryDB
getRepository func(ctx context.Context, url, project string) (*v1alpha1.Repository, error)
storecreds git.CredsStore
submoduleEnabled bool
repoServerClientSet apiclient.Clientset
newFileGlobbingEnabled bool
}
//go:generate go run github.com/vektra/mockery/v2@v2.25.1 --name=Repos
//go:generate go run github.com/vektra/mockery/v2@v2.40.2 --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, noRevisionCache bool) (map[string][]byte, error)
GetFiles(ctx context.Context, repoURL string, revision string, pattern string, noRevisionCache, verifyCommit 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, noRevisionCache bool) ([]string, error)
GetDirectories(ctx context.Context, repoURL string, revision string, noRevisionCache, verifyCommit bool) ([]string, error)
}
func NewArgoCDService(db db.ArgoDB, submoduleEnabled bool, repoClientset apiclient.Clientset, newFileGlobbingEnabled bool) (Repos, error) {
func NewArgoCDService(getRepository func(ctx context.Context, url, project string) (*v1alpha1.Repository, error), submoduleEnabled bool, repoClientset apiclient.Clientset, newFileGlobbingEnabled bool) (Repos, error) {
return &argoCDService{
repositoriesDB: db.(RepositoryDB),
getRepository: getRepository,
submoduleEnabled: submoduleEnabled,
repoServerClientSet: repoClientset,
newFileGlobbingEnabled: newFileGlobbingEnabled,
}, nil
}
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)
func (a *argoCDService) GetFiles(ctx context.Context, repoURL string, revision string, pattern string, noRevisionCache, verifyCommit bool) (map[string][]byte, error) {
repo, err := a.getRepository(ctx, repoURL, "")
if err != nil {
return nil, fmt.Errorf("error in GetRepository: %w", err)
}
@@ -60,6 +50,7 @@ func (a *argoCDService) GetFiles(ctx context.Context, repoURL string, revision s
Path: pattern,
NewGitFileGlobbingEnabled: a.newFileGlobbingEnabled,
NoRevisionCache: noRevisionCache,
VerifyCommit: verifyCommit,
}
closer, client, err := a.repoServerClientSet.NewRepoServerClient()
if err != nil {
@@ -74,8 +65,8 @@ func (a *argoCDService) GetFiles(ctx context.Context, repoURL string, revision s
return fileResponse.GetMap(), nil
}
func (a *argoCDService) GetDirectories(ctx context.Context, repoURL string, revision string, noRevisionCache bool) ([]string, error) {
repo, err := a.repositoriesDB.GetRepository(ctx, repoURL)
func (a *argoCDService) GetDirectories(ctx context.Context, repoURL string, revision string, noRevisionCache, verifyCommit bool) ([]string, error) {
repo, err := a.getRepository(ctx, repoURL, "")
if err != nil {
return nil, fmt.Errorf("error in GetRepository: %w", err)
}
@@ -85,6 +76,7 @@ func (a *argoCDService) GetDirectories(ctx context.Context, repoURL string, revi
SubmoduleEnabled: a.submoduleEnabled,
Revision: revision,
NoRevisionCache: noRevisionCache,
VerifyCommit: verifyCommit,
}
closer, client, err := a.repoServerClientSet.NewRepoServerClient()
@@ -98,5 +90,4 @@ func (a *argoCDService) GetDirectories(ctx context.Context, repoURL string, revi
return nil, fmt.Errorf("error retrieving Git Directories: %w", err)
}
return dirResponse.GetPaths(), nil
}

View File

@@ -5,23 +5,22 @@ import (
"fmt"
"testing"
"github.com/argoproj/argo-cd/v2/applicationset/services/mocks"
"github.com/argoproj/argo-cd/v2/reposerver/apiclient"
repo_mocks "github.com/argoproj/argo-cd/v2/reposerver/apiclient/mocks"
db_mocks "github.com/argoproj/argo-cd/v2/util/db/mocks"
"github.com/argoproj/argo-cd/v2/util/git"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/reposerver/apiclient"
repo_mocks "github.com/argoproj/argo-cd/v2/reposerver/apiclient/mocks"
"github.com/argoproj/argo-cd/v2/util/git"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
func TestGetDirectories(t *testing.T) {
type fields struct {
repositoriesDBFuncs []func(*mocks.RepositoryDB)
storecreds git.CredsStore
submoduleEnabled bool
getRepository func(ctx context.Context, url, project string) (*v1alpha1.Repository, error)
repoServerClientFuncs []func(*repo_mocks.RepoServerServiceClient)
}
type args struct {
@@ -29,6 +28,7 @@ func TestGetDirectories(t *testing.T) {
repoURL string
revision string
noRevisionCache bool
verifyCommit bool
}
tests := []struct {
name string
@@ -38,17 +38,13 @@ func TestGetDirectories(t *testing.T) {
wantErr assert.ErrorAssertionFunc
}{
{name: "ErrorGettingRepos", fields: fields{
repositoriesDBFuncs: []func(*mocks.RepositoryDB){
func(db *mocks.RepositoryDB) {
db.On("GetRepository", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("unable to get repos"))
},
getRepository: func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return nil, fmt.Errorf("unable to get repos")
},
}, args: args{}, want: nil, wantErr: assert.Error},
{name: "ErrorGettingDirs", fields: fields{
repositoriesDBFuncs: []func(*mocks.RepositoryDB){
func(db *mocks.RepositoryDB) {
db.On("GetRepository", mock.Anything, mock.Anything).Return(&v1alpha1.Repository{}, nil)
},
getRepository: func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return &v1alpha1.Repository{}, nil
},
repoServerClientFuncs: []func(*repo_mocks.RepoServerServiceClient){
func(client *repo_mocks.RepoServerServiceClient) {
@@ -57,10 +53,8 @@ func TestGetDirectories(t *testing.T) {
},
}, args: args{}, want: nil, wantErr: assert.Error},
{name: "HappyCase", fields: fields{
repositoriesDBFuncs: []func(*mocks.RepositoryDB){
func(db *mocks.RepositoryDB) {
db.On("GetRepository", mock.Anything, mock.Anything).Return(&v1alpha1.Repository{}, nil)
},
getRepository: func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return &v1alpha1.Repository{}, nil
},
repoServerClientFuncs: []func(*repo_mocks.RepoServerServiceClient){
func(client *repo_mocks.RepoServerServiceClient) {
@@ -70,26 +64,32 @@ func TestGetDirectories(t *testing.T) {
},
},
}, args: args{}, want: []string{"foo", "foo/bar", "bar/foo"}, wantErr: assert.NoError},
{name: "ErrorVerifyingCommit", fields: fields{
getRepository: func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return &v1alpha1.Repository{}, nil
},
repoServerClientFuncs: []func(*repo_mocks.RepoServerServiceClient){
func(client *repo_mocks.RepoServerServiceClient) {
client.On("GetGitDirectories", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("revision HEAD is not signed"))
},
},
}, args: args{}, want: nil, wantErr: assert.Error},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mockDb := &mocks.RepositoryDB{}
mockRepoClient := &repo_mocks.RepoServerServiceClient{}
// decorate the mocks
for i := range tt.fields.repositoriesDBFuncs {
tt.fields.repositoriesDBFuncs[i](mockDb)
}
for i := range tt.fields.repoServerClientFuncs {
tt.fields.repoServerClientFuncs[i](mockRepoClient)
}
a := &argoCDService{
repositoriesDB: mockDb,
getRepository: tt.fields.getRepository,
storecreds: tt.fields.storecreds,
submoduleEnabled: tt.fields.submoduleEnabled,
repoServerClientSet: &repo_mocks.Clientset{RepoServerServiceClient: mockRepoClient},
}
got, err := a.GetDirectories(tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.noRevisionCache)
got, err := a.GetDirectories(tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.noRevisionCache, tt.args.verifyCommit)
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
}
@@ -100,10 +100,10 @@ func TestGetDirectories(t *testing.T) {
func TestGetFiles(t *testing.T) {
type fields struct {
repositoriesDBFuncs []func(*mocks.RepositoryDB)
storecreds git.CredsStore
submoduleEnabled bool
repoServerClientFuncs []func(*repo_mocks.RepoServerServiceClient)
getRepository func(ctx context.Context, url, project string) (*v1alpha1.Repository, error)
}
type args struct {
ctx context.Context
@@ -111,6 +111,7 @@ func TestGetFiles(t *testing.T) {
revision string
pattern string
noRevisionCache bool
verifyCommit bool
}
tests := []struct {
name string
@@ -120,17 +121,13 @@ func TestGetFiles(t *testing.T) {
wantErr assert.ErrorAssertionFunc
}{
{name: "ErrorGettingRepos", fields: fields{
repositoriesDBFuncs: []func(*mocks.RepositoryDB){
func(db *mocks.RepositoryDB) {
db.On("GetRepository", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("unable to get repos"))
},
getRepository: func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return nil, fmt.Errorf("unable to get repos")
},
}, args: args{}, want: nil, wantErr: assert.Error},
{name: "ErrorGettingFiles", fields: fields{
repositoriesDBFuncs: []func(*mocks.RepositoryDB){
func(db *mocks.RepositoryDB) {
db.On("GetRepository", mock.Anything, mock.Anything).Return(&v1alpha1.Repository{}, nil)
},
getRepository: func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return &v1alpha1.Repository{}, nil
},
repoServerClientFuncs: []func(*repo_mocks.RepoServerServiceClient){
func(client *repo_mocks.RepoServerServiceClient) {
@@ -139,10 +136,8 @@ func TestGetFiles(t *testing.T) {
},
}, args: args{}, want: nil, wantErr: assert.Error},
{name: "HappyCase", fields: fields{
repositoriesDBFuncs: []func(*mocks.RepositoryDB){
func(db *mocks.RepositoryDB) {
db.On("GetRepository", mock.Anything, mock.Anything).Return(&v1alpha1.Repository{}, nil)
},
getRepository: func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return &v1alpha1.Repository{}, nil
},
repoServerClientFuncs: []func(*repo_mocks.RepoServerServiceClient){
func(client *repo_mocks.RepoServerServiceClient) {
@@ -158,26 +153,32 @@ func TestGetFiles(t *testing.T) {
"foo.json": []byte("hello: world!"),
"bar.yaml": []byte("yay: appsets"),
}, wantErr: assert.NoError},
{name: "ErrorVerifyingCommit", fields: fields{
getRepository: func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return &v1alpha1.Repository{}, nil
},
repoServerClientFuncs: []func(*repo_mocks.RepoServerServiceClient){
func(client *repo_mocks.RepoServerServiceClient) {
client.On("GetGitFiles", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("revision HEAD is not signed"))
},
},
}, args: args{}, want: nil, wantErr: assert.Error},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mockDb := &mocks.RepositoryDB{}
mockRepoClient := &repo_mocks.RepoServerServiceClient{}
// decorate the mocks
for i := range tt.fields.repositoriesDBFuncs {
tt.fields.repositoriesDBFuncs[i](mockDb)
}
for i := range tt.fields.repoServerClientFuncs {
tt.fields.repoServerClientFuncs[i](mockRepoClient)
}
a := &argoCDService{
repositoriesDB: mockDb,
getRepository: tt.fields.getRepository,
storecreds: tt.fields.storecreds,
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, tt.args.noRevisionCache)
got, err := a.GetFiles(tt.args.ctx, tt.args.repoURL, tt.args.revision, tt.args.pattern, tt.args.noRevisionCache, tt.args.verifyCommit)
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
}
@@ -187,7 +188,9 @@ func TestGetFiles(t *testing.T) {
}
func TestNewArgoCDService(t *testing.T) {
service, err := NewArgoCDService(&db_mocks.ArgoDB{}, false, &repo_mocks.Clientset{}, false)
assert.NoError(t, err, err)
service, err := NewArgoCDService(func(ctx context.Context, url, project string) (*v1alpha1.Repository, error) {
return &v1alpha1.Repository{}, nil
}, false, &repo_mocks.Clientset{}, false)
require.NoError(t, err, err)
assert.NotNil(t, service)
}

View File

@@ -2,13 +2,14 @@ package scm_provider
import (
"context"
"errors"
"fmt"
"github.com/aws/aws-sdk-go/aws/request"
pathpkg "path"
"path/filepath"
"strings"
application "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/arn"
"github.com/aws/aws-sdk-go/aws/awserr"
@@ -19,6 +20,8 @@ import (
log "github.com/sirupsen/logrus"
"golang.org/x/exp/maps"
"k8s.io/utils/strings/slices"
application "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
const (
@@ -325,7 +328,8 @@ func getCodeCommitFIPSEndpoint(repoUrl string) (string, error) {
}
func hasAwsError(err error, codes ...string) bool {
if awsErr, ok := err.(awserr.Error); ok {
var awsErr awserr.Error
if errors.As(err, &awsErr) {
return slices.Contains(codes, awsErr.Code())
}
return false
@@ -354,7 +358,7 @@ func createAWSDiscoveryClients(_ context.Context, role string, region string) (*
Credentials: assumeRoleCreds,
})
if err != nil {
return nil, nil, fmt.Errorf("error creating new AWS discovery session: %s", err)
return nil, nil, fmt.Errorf("error creating new AWS discovery session: %w", err)
}
} else {
log.Debugf("role is not provided for AWS CodeCommit discovery, using pod role")

View File

@@ -6,14 +6,15 @@ import (
"sort"
"testing"
"github.com/argoproj/argo-cd/v2/applicationset/services/scm_provider/aws_codecommit/mocks"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/codecommit"
"github.com/aws/aws-sdk-go/service/resourcegroupstaggingapi"
"github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/argoproj/argo-cd/v2/applicationset/services/scm_provider/aws_codecommit/mocks"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
type awsCodeCommitTestRepository struct {

View File

@@ -2,6 +2,7 @@ package scm_provider
import (
"context"
"errors"
"fmt"
netUrl "net/url"
"strings"
@@ -51,8 +52,10 @@ type AzureDevOpsProvider struct {
allBranches bool
}
var _ SCMProviderService = &AzureDevOpsProvider{}
var _ AzureDevOpsClientFactory = &devopsFactoryImpl{}
var (
_ SCMProviderService = &AzureDevOpsProvider{}
_ AzureDevOpsClientFactory = &devopsFactoryImpl{}
)
func NewAzureDevOpsProvider(ctx context.Context, accessToken string, org string, url string, project string, allBranches bool) (*AzureDevOpsProvider, error) {
if accessToken == "" {
@@ -60,7 +63,6 @@ func NewAzureDevOpsProvider(ctx context.Context, accessToken string, org string,
}
devOpsURL, err := getValidDevOpsURL(url, org)
if err != nil {
return nil, err
}
@@ -77,7 +79,6 @@ func (g *AzureDevOpsProvider) ListRepos(ctx context.Context, cloneProtocol strin
}
getRepoArgs := azureGit.GetRepositoriesArgs{Project: &g.teamProject}
azureRepos, err := gitClient.GetRepositories(ctx, getRepoArgs)
if err != nil {
return nil, err
}
@@ -106,7 +107,7 @@ func (g *AzureDevOpsProvider) RepoHasPath(ctx context.Context, repo *Repository,
}
var repoId string
if uuid, isUuid := repo.RepositoryId.(uuid.UUID); isUuid { //most likely an UUID, but do type-safe check anyway. Do %v fallback if not expected type.
if uuid, isUuid := repo.RepositoryId.(uuid.UUID); isUuid { // most likely an UUID, but do type-safe check anyway. Do %v fallback if not expected type.
repoId = uuid.String()
} else {
repoId = fmt.Sprintf("%v", repo.RepositoryId)
@@ -115,9 +116,9 @@ func (g *AzureDevOpsProvider) RepoHasPath(ctx context.Context, repo *Repository,
branchName := repo.Branch
getItemArgs := azureGit.GetItemArgs{RepositoryId: &repoId, Project: &g.teamProject, Path: &path, VersionDescriptor: &azureGit.GitVersionDescriptor{Version: &branchName}}
_, err = gitClient.GetItem(ctx, getItemArgs)
if err != nil {
if wrappedError, isWrappedError := err.(azuredevops.WrappedError); isWrappedError && wrappedError.TypeKey != nil {
var wrappedError azuredevops.WrappedError
if errors.As(err, &wrappedError) && wrappedError.TypeKey != nil {
if *wrappedError.TypeKey == AzureDevOpsErrorsTypeKeyValues.GitItemNotFound {
return false, nil
}
@@ -138,11 +139,12 @@ func (g *AzureDevOpsProvider) GetBranches(ctx context.Context, repo *Repository)
repos := []*Repository{}
if !g.allBranches {
defaultBranchName := strings.Replace(repo.Branch, "refs/heads/", "", 1) //Azure DevOps returns default branch info like 'refs/heads/main', but does not support branch lookup of this format.
defaultBranchName := strings.Replace(repo.Branch, "refs/heads/", "", 1) // Azure DevOps returns default branch info like 'refs/heads/main', but does not support branch lookup of this format.
getBranchArgs := azureGit.GetBranchArgs{RepositoryId: &repo.Repository, Project: &g.teamProject, Name: &defaultBranchName}
branchResult, err := gitClient.GetBranch(ctx, getBranchArgs)
if err != nil {
if wrappedError, isWrappedError := err.(azuredevops.WrappedError); isWrappedError && wrappedError.TypeKey != nil {
var wrappedError azuredevops.WrappedError
if errors.As(err, &wrappedError) && wrappedError.TypeKey != nil {
if *wrappedError.TypeKey == AzureDevOpsErrorsTypeKeyValues.GitRepositoryNotFound {
return repos, nil
}
@@ -170,7 +172,8 @@ func (g *AzureDevOpsProvider) GetBranches(ctx context.Context, repo *Repository)
getBranchesRequest := azureGit.GetBranchesArgs{RepositoryId: &repo.Repository, Project: &g.teamProject}
branches, err := gitClient.GetBranches(ctx, getBranchesRequest)
if err != nil {
if wrappedError, isWrappedError := err.(azuredevops.WrappedError); isWrappedError && wrappedError.TypeKey != nil {
var wrappedError azuredevops.WrappedError
if errors.As(err, &wrappedError) && wrappedError.TypeKey != nil {
if *wrappedError.TypeKey == AzureDevOpsErrorsTypeKeyValues.GitRepositoryNotFound {
return repos, nil
}
@@ -209,7 +212,6 @@ func getValidDevOpsURL(url string, org string) (string, error) {
devOpsURL := fmt.Sprintf("%s%s%s", url, separator, org)
urlCheck, err := netUrl.ParseRequestURI(devOpsURL)
if err != nil {
return "", fmt.Errorf("got an invalid URL for the Azure SCM generator: %w", err)
}

View File

@@ -8,15 +8,19 @@ import (
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"k8s.io/utils/pointer"
"github.com/stretchr/testify/require"
"k8s.io/utils/ptr"
azureMock "github.com/argoproj/argo-cd/v2/applicationset/services/scm_provider/azure_devops/git/mocks"
"github.com/microsoft/azure-devops-go-api/azuredevops"
azureGit "github.com/microsoft/azure-devops-go-api/azuredevops/git"
azureMock "github.com/argoproj/argo-cd/v2/applicationset/services/scm_provider/azure_devops/git/mocks"
)
//go:generate go run github.com/vektra/mockery/v2@v2.40.2 --srcpkg=github.com/microsoft/azure-devops-go-api/azuredevops/git --name=Client --output=azure_devops/git/mocks --outpkg=mocks
func s(input string) *string {
return pointer.String(input)
return ptr.To(input)
}
func TestAzureDevopsRepoHasPath(t *testing.T) {
@@ -89,26 +93,24 @@ func TestAzureDevopsRepoHasPath(t *testing.T) {
hasPath, err := provider.RepoHasPath(ctx, repo, path)
if testCase.clientError != nil {
assert.ErrorContains(t, err, testCase.clientError.Error())
require.ErrorContains(t, err, testCase.clientError.Error())
gitClientMock.AssertNotCalled(t, "GetItem", ctx, azureGit.GetItemArgs{Project: &teamProject, Path: &path, VersionDescriptor: &azureGit.GitVersionDescriptor{Version: &branchName}, RepositoryId: repoId})
return
}
if testCase.returnError {
assert.ErrorContains(t, err, testCase.errorMessage)
require.ErrorContains(t, err, testCase.errorMessage)
}
assert.Equal(t, testCase.pathFound, hasPath)
gitClientMock.AssertCalled(t, "GetItem", ctx, azureGit.GetItemArgs{Project: &teamProject, Path: &path, VersionDescriptor: &azureGit.GitVersionDescriptor{Version: &branchName}, RepositoryId: repoId})
})
}
}
func TestGetDefaultBranchOnDisabledRepo(t *testing.T) {
organization := "myorg"
teamProject := "myorg_project"
repoName := "myorg_project_repo"
@@ -155,9 +157,9 @@ func TestGetDefaultBranchOnDisabledRepo(t *testing.T) {
branches, err := provider.GetBranches(ctx, repo)
if testCase.shouldReturnError {
assert.Error(t, err)
require.Error(t, err)
} else {
assert.NoError(t, err)
require.NoError(t, err)
}
assert.Empty(t, branches)
@@ -168,7 +170,6 @@ func TestGetDefaultBranchOnDisabledRepo(t *testing.T) {
}
func TestGetAllBranchesOnDisabledRepo(t *testing.T) {
organization := "myorg"
teamProject := "myorg_project"
repoName := "myorg_project_repo"
@@ -215,9 +216,9 @@ func TestGetAllBranchesOnDisabledRepo(t *testing.T) {
branches, err := provider.GetBranches(ctx, repo)
if testCase.shouldReturnError {
assert.Error(t, err)
require.Error(t, err)
} else {
assert.NoError(t, err)
require.NoError(t, err)
}
assert.Empty(t, branches)
@@ -228,9 +229,7 @@ func TestGetAllBranchesOnDisabledRepo(t *testing.T) {
}
func TestAzureDevOpsGetDefaultBranchStripsRefsName(t *testing.T) {
t.Run("Get branches only default branch removes characters before querying azure devops", func(t *testing.T) {
organization := "myorg"
teamProject := "myorg_project"
repoName := "myorg_project_repo"
@@ -253,7 +252,7 @@ func TestAzureDevOpsGetDefaultBranchStripsRefsName(t *testing.T) {
provider := AzureDevOpsProvider{organization: organization, teamProject: teamProject, clientFactory: clientFactoryMock, allBranches: false}
branches, err := provider.GetBranches(ctx, repo)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, branches, 1)
assert.Equal(t, strippedBranchName, branches[0].Branch)
@@ -310,7 +309,7 @@ func TestAzureDevOpsGetBranchesDefultBranchOnly(t *testing.T) {
branches, err := provider.GetBranches(ctx, repo)
if testCase.clientError != nil {
assert.ErrorContains(t, err, testCase.clientError.Error())
require.ErrorContains(t, err, testCase.clientError.Error())
gitClientMock.AssertNotCalled(t, "GetBranch", ctx, azureGit.GetBranchArgs{RepositoryId: &repoName, Project: &teamProject, Name: &defaultBranch})
return
@@ -318,7 +317,7 @@ func TestAzureDevOpsGetBranchesDefultBranchOnly(t *testing.T) {
if testCase.getBranchesApiError != nil {
assert.Empty(t, branches)
assert.ErrorContains(t, err, testCase.getBranchesApiError.Error())
require.ErrorContains(t, err, testCase.getBranchesApiError.Error())
} else {
if testCase.expectedBranch != nil {
assert.NotEmpty(t, branches)
@@ -394,21 +393,20 @@ func TestAzureDevopsGetBranches(t *testing.T) {
branches, err := provider.GetBranches(ctx, repo)
if testCase.expectedProcessingErrorMsg != "" {
assert.ErrorContains(t, err, testCase.expectedProcessingErrorMsg)
require.ErrorContains(t, err, testCase.expectedProcessingErrorMsg)
assert.Nil(t, branches)
return
}
if testCase.clientError != nil {
assert.ErrorContains(t, err, testCase.clientError.Error())
require.ErrorContains(t, err, testCase.clientError.Error())
gitClientMock.AssertNotCalled(t, "GetBranches", ctx, azureGit.GetBranchesArgs{RepositoryId: &repoName, Project: &teamProject})
return
}
if testCase.getBranchesApiError != nil {
assert.Empty(t, branches)
assert.ErrorContains(t, err, testCase.getBranchesApiError.Error())
require.ErrorContains(t, err, testCase.getBranchesApiError.Error())
} else {
if len(*testCase.expectedBranches) > 0 {
assert.NotEmpty(t, branches)
@@ -472,14 +470,14 @@ func TestGetAzureDevopsRepositories(t *testing.T) {
{Name: s("missing_default_branch"), RemoteUrl: s("https://remoteurl.u"), Id: repoId},
{DefaultBranch: s("missing_name"), RemoteUrl: s("https://remoteurl.u"), Id: repoId},
{Name: s("missing_remote_url"), DefaultBranch: s("main"), Id: repoId},
{Name: s("missing_id"), DefaultBranch: s("main"), RemoteUrl: s("https://remoteurl.u")}},
{Name: s("missing_id"), DefaultBranch: s("main"), RemoteUrl: s("https://remoteurl.u")},
},
expectedNumberOfRepos: 1,
},
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
gitClientMock := azureMock.Client{}
gitClientMock.On("GetRepositories", ctx, azureGit.GetRepositoriesArgs{Project: s(teamProject)}).Return(&testCase.repositories, testCase.getRepositoriesError)
@@ -491,7 +489,7 @@ func TestGetAzureDevopsRepositories(t *testing.T) {
repositories, err := provider.ListRepos(ctx, "https")
if testCase.getRepositoriesError != nil {
assert.Error(t, err, "Expected an error from test case %v", testCase.name)
require.Error(t, err, "Expected an error from test case %v", testCase.name)
}
if testCase.expectedNumberOfRepos == 0 {

View File

@@ -52,7 +52,6 @@ func (c *ExtendedClient) GetContents(repo *Repository, path string) (bool, error
var _ SCMProviderService = &BitBucketCloudProvider{}
func NewBitBucketCloudProvider(ctx context.Context, owner string, user string, password string, allBranches bool) (*BitBucketCloudProvider, error) {
client := &ExtendedClient{
bitbucket.NewBasicAuth(user, password),
user,
@@ -66,13 +65,13 @@ func (g *BitBucketCloudProvider) GetBranches(ctx context.Context, repo *Reposito
repos := []*Repository{}
branches, err := g.listBranches(repo)
if err != nil {
return nil, fmt.Errorf("error listing branches for %s/%s: %v", repo.Organization, repo.Repository, err)
return nil, fmt.Errorf("error listing branches for %s/%s: %w", repo.Organization, repo.Repository, err)
}
for _, branch := range branches {
hash, ok := branch.Target["hash"].(string)
if !ok {
return nil, fmt.Errorf("error getting SHA for branch for %s/%s/%s: %v", g.owner, repo.Repository, branch.Name, err)
return nil, fmt.Errorf("error getting SHA for branch for %s/%s/%s: %w", g.owner, repo.Repository, branch.Name, err)
}
repos = append(repos, &Repository{
Organization: repo.Organization,
@@ -98,12 +97,12 @@ func (g *BitBucketCloudProvider) ListRepos(ctx context.Context, cloneProtocol st
repos := []*Repository{}
accountReposResp, err := g.client.Repositories.ListForAccount(opt)
if err != nil {
return nil, fmt.Errorf("error listing repositories for %s: %v", g.owner, err)
return nil, fmt.Errorf("error listing repositories for %s: %w", g.owner, err)
}
for _, bitBucketRepo := range accountReposResp.Items {
cloneUrl, err := findCloneURL(cloneProtocol, &bitBucketRepo)
if err != nil {
return nil, fmt.Errorf("error fetching clone url for repo %s: %v", bitBucketRepo.Slug, err)
return nil, fmt.Errorf("error fetching clone url for repo %s: %w", bitBucketRepo.Slug, err)
}
repos = append(repos, &Repository{
Organization: g.owner,
@@ -151,11 +150,9 @@ func (g *BitBucketCloudProvider) listBranches(repo *Repository) ([]bitbucket.Rep
return nil, err
}
return branches.Branches, nil
}
func findCloneURL(cloneProtocol string, repo *bitbucket.Repository) (*string, error) {
cloneLinks, ok := repo.Links["clone"].([]interface{})
if !ok {
return nil, fmt.Errorf("unknown type returned from repo links")

View File

@@ -8,6 +8,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -18,7 +19,7 @@ func TestBitbucketHasRepo(t *testing.T) {
res.WriteHeader(http.StatusNotFound)
_, err := res.Write([]byte(""))
if err != nil {
assert.NoError(t, fmt.Errorf("Error in mock response %v", err))
require.NoError(t, fmt.Errorf("Error in mock response %w", err))
}
}
if req.URL.Path == "/repositories/test-owner/testmike/src/dc1edb6c7d650d8ba67719ddf7b662ad8f8fb798/.gitignore" {
@@ -55,7 +56,7 @@ func TestBitbucketHasRepo(t *testing.T) {
"size": 624
}`))
if err != nil {
assert.NoError(t, fmt.Errorf("Error in mock response %v", err))
require.NoError(t, fmt.Errorf("Error in mock response %w", err))
}
}
}))
@@ -95,7 +96,7 @@ func TestBitbucketHasRepo(t *testing.T) {
}
hasPath, err := provider.RepoHasPath(context.Background(), repo, c.path)
if err != nil {
assert.Error(t, fmt.Errorf("Error in test %v", err))
require.Error(t, fmt.Errorf("Error in test %w", err))
}
if c.status != http.StatusOK {
assert.False(t, hasPath)
@@ -208,7 +209,7 @@ func TestBitbucketListRepos(t *testing.T) {
"size": 1
}`))
if err != nil {
assert.NoError(t, fmt.Errorf("Error in mock response %v", err))
require.NoError(t, fmt.Errorf("Error in mock response %w", err))
}
}
if req.URL.Path == "/repositories/test-owner/testmike/refs/branches/main" {
@@ -303,7 +304,7 @@ func TestBitbucketListRepos(t *testing.T) {
}
}`))
if err != nil {
assert.NoError(t, fmt.Errorf("Error in mock response %v", err))
require.NoError(t, fmt.Errorf("Error in mock response %w", err))
}
}
if req.URL.Path == "/repositories/test-owner" {
@@ -442,7 +443,7 @@ func TestBitbucketListRepos(t *testing.T) {
"size": 1
}`))
if err != nil {
assert.NoError(t, fmt.Errorf("Error in mock response %v", err))
require.NoError(t, fmt.Errorf("Error in mock response %w", err))
}
}
}))
@@ -489,9 +490,9 @@ func TestBitbucketListRepos(t *testing.T) {
provider, _ := NewBitBucketCloudProvider(context.Background(), c.owner, "user", "password", c.allBranches)
rawRepos, err := ListRepos(context.Background(), provider, c.filters, c.proto)
if c.hasError {
assert.Error(t, err)
require.Error(t, err)
} else {
assert.NoError(t, err)
require.NoError(t, err)
repos := []*Repository{}
branches := []string{}
for _, r := range rawRepos {

View File

@@ -2,12 +2,14 @@ package scm_provider
import (
"context"
"errors"
"fmt"
"io"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
bitbucketv1 "github.com/gfleury/go-bitbucket-v1"
log "github.com/sirupsen/logrus"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
)
type BitbucketServerProvider struct {
@@ -54,12 +56,12 @@ func (b *BitbucketServerProvider) ListRepos(_ context.Context, cloneProtocol str
for {
response, err := b.client.DefaultApi.GetRepositoriesWithOptions(b.projectKey, paged)
if err != nil {
return nil, fmt.Errorf("error listing repositories for %s: %v", b.projectKey, err)
return nil, fmt.Errorf("error listing repositories for %s: %w", b.projectKey, err)
}
repositories, err := bitbucketv1.GetRepositoriesResponse(response)
if err != nil {
log.Errorf("error parsing repositories response '%v'", response.Values)
return nil, fmt.Errorf("error parsing repositories response %s: %v", b.projectKey, err)
return nil, fmt.Errorf("error parsing repositories response %s: %w", b.projectKey, err)
}
for _, bitbucketRepo := range repositories {
var url string
@@ -126,7 +128,7 @@ func (b *BitbucketServerProvider) GetBranches(_ context.Context, repo *Repositor
repos := []*Repository{}
branches, err := b.listBranches(repo)
if err != nil {
return nil, fmt.Errorf("error listing branches for %s/%s: %v", repo.Organization, repo.Repository, err)
return nil, fmt.Errorf("error listing branches for %s/%s: %w", repo.Organization, repo.Repository, err)
}
for _, branch := range branches {
@@ -163,12 +165,12 @@ func (b *BitbucketServerProvider) listBranches(repo *Repository) ([]bitbucketv1.
for {
response, err := b.client.DefaultApi.GetBranches(repo.Organization, repo.Repository, paged)
if err != nil {
return nil, fmt.Errorf("error listing branches for %s/%s: %v", repo.Organization, repo.Repository, err)
return nil, fmt.Errorf("error listing branches for %s/%s: %w", repo.Organization, repo.Repository, err)
}
bitbucketBranches, err := bitbucketv1.GetBranchesResponse(response)
if err != nil {
log.Errorf("error parsing branches response '%v'", response.Values)
return nil, fmt.Errorf("error parsing branches response for %s/%s: %v", repo.Organization, repo.Repository, err)
return nil, fmt.Errorf("error parsing branches response for %s/%s: %w", repo.Organization, repo.Repository, err)
}
branches = append(branches, bitbucketBranches...)
@@ -186,7 +188,7 @@ func (b *BitbucketServerProvider) getDefaultBranch(org string, repo string) (*bi
response, err := b.client.DefaultApi.GetDefaultBranch(org, repo)
// The API will return 404 if a default branch is set but doesn't exist. In case the repo is empty and default branch is unset,
// we will get an EOF and a nil response.
if (response != nil && response.StatusCode == 404) || (response == nil && err == io.EOF) {
if (response != nil && response.StatusCode == 404) || (response == nil && err != nil && errors.Is(err, io.EOF)) {
return nil, nil
}
if err != nil {

View File

@@ -8,6 +8,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func defaultHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
@@ -79,8 +80,8 @@ func defaultHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
}
func verifyDefaultRepo(t *testing.T, err error, repos []*Repository) {
assert.NoError(t, err)
assert.Equal(t, 1, len(repos))
require.NoError(t, err)
assert.Len(t, repos, 1)
assert.Equal(t, Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -99,7 +100,7 @@ func TestListReposNoAuth(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.ListRepos(context.Background(), "ssh")
verifyDefaultRepo(t, err, repos)
}
@@ -191,10 +192,10 @@ func TestListReposPagination(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.ListRepos(context.Background(), "ssh")
assert.NoError(t, err)
assert.Equal(t, 2, len(repos))
require.NoError(t, err)
assert.Len(t, repos, 2)
assert.Equal(t, Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -268,7 +269,7 @@ func TestGetBranchesBranchPagination(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.GetBranches(context.Background(), &Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -276,8 +277,8 @@ func TestGetBranchesBranchPagination(t *testing.T) {
Labels: []string{},
RepositoryId: 1,
})
assert.NoError(t, err)
assert.Equal(t, 2, len(repos))
require.NoError(t, err)
assert.Len(t, repos, 2)
assert.Equal(t, Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -321,7 +322,7 @@ func TestGetBranchesDefaultOnly(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.GetBranches(context.Background(), &Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -329,8 +330,8 @@ func TestGetBranchesDefaultOnly(t *testing.T) {
Labels: []string{},
RepositoryId: 1,
})
assert.NoError(t, err)
assert.Equal(t, 1, len(repos))
require.NoError(t, err)
assert.Len(t, repos, 1)
assert.Equal(t, Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -353,7 +354,7 @@ func TestGetBranchesMissingDefault(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.GetBranches(context.Background(), &Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -361,7 +362,7 @@ func TestGetBranchesMissingDefault(t *testing.T) {
Labels: []string{},
RepositoryId: 1,
})
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, repos)
}
@@ -375,7 +376,7 @@ func TestGetBranchesEmptyRepo(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.GetBranches(context.Background(), &Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -384,7 +385,7 @@ func TestGetBranchesEmptyRepo(t *testing.T) {
RepositoryId: 1,
})
assert.Empty(t, repos)
assert.NoError(t, err)
require.NoError(t, err)
}
func TestGetBranchesErrorDefaultBranch(t *testing.T) {
@@ -398,7 +399,7 @@ func TestGetBranchesErrorDefaultBranch(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false)
assert.NoError(t, err)
require.NoError(t, err)
_, err = provider.GetBranches(context.Background(), &Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -406,7 +407,7 @@ func TestGetBranchesErrorDefaultBranch(t *testing.T) {
Labels: []string{},
RepositoryId: 1,
})
assert.Error(t, err)
require.Error(t, err)
}
func TestListReposBasicAuth(t *testing.T) {
@@ -417,7 +418,7 @@ func TestListReposBasicAuth(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderBasicAuth(context.Background(), "user", "password", ts.URL, "PROJECT", true)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.ListRepos(context.Background(), "ssh")
verifyDefaultRepo(t, err, repos)
}
@@ -444,10 +445,10 @@ func TestListReposDefaultBranch(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.ListRepos(context.Background(), "ssh")
assert.NoError(t, err)
assert.Equal(t, 1, len(repos))
require.NoError(t, err)
assert.Len(t, repos, 1)
assert.Equal(t, Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -470,9 +471,9 @@ func TestListReposMissingDefaultBranch(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.ListRepos(context.Background(), "ssh")
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, repos)
}
@@ -487,9 +488,9 @@ func TestListReposErrorDefaultBranch(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false)
assert.NoError(t, err)
require.NoError(t, err)
_, err = provider.ListRepos(context.Background(), "ssh")
assert.Error(t, err)
require.Error(t, err)
}
func TestListReposCloneProtocol(t *testing.T) {
@@ -499,10 +500,10 @@ func TestListReposCloneProtocol(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true)
assert.NoError(t, err)
require.NoError(t, err)
repos, err := provider.ListRepos(context.Background(), "https")
assert.NoError(t, err)
assert.Equal(t, 1, len(repos))
require.NoError(t, err)
assert.Len(t, repos, 1)
assert.Equal(t, Repository{
Organization: "PROJECT",
Repository: "REPO",
@@ -521,9 +522,9 @@ func TestListReposUnknownProtocol(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true)
assert.NoError(t, err)
require.NoError(t, err)
_, errProtocol := provider.ListRepos(context.Background(), "http")
assert.NotNil(t, errProtocol)
require.Error(t, errProtocol)
}
func TestBitbucketServerHasPath(t *testing.T) {
@@ -559,36 +560,36 @@ func TestBitbucketServerHasPath(t *testing.T) {
}))
defer ts.Close()
provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true)
assert.NoError(t, err)
require.NoError(t, err)
repo := &Repository{
Organization: "PROJECT",
Repository: "REPO",
Branch: "main",
}
ok, err := provider.RepoHasPath(context.Background(), repo, "pkg")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, ok)
ok, err = provider.RepoHasPath(context.Background(), repo, "pkg/")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, ok)
ok, err = provider.RepoHasPath(context.Background(), repo, "anotherpkg/file.txt")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, ok)
ok, err = provider.RepoHasPath(context.Background(), repo, "anotherpkg/missing.txt")
assert.NoError(t, err)
require.NoError(t, err)
assert.False(t, ok)
ok, err = provider.RepoHasPath(context.Background(), repo, "notathing")
assert.NoError(t, err)
require.NoError(t, err)
assert.False(t, ok)
ok, err = provider.RepoHasPath(context.Background(), repo, "return-redirect")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, ok)
_, err = provider.RepoHasPath(context.Background(), repo, "unauthorized-response")
assert.Error(t, err)
require.Error(t, err)
}

View File

@@ -258,6 +258,7 @@ func giteaMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
}
}
}
func TestGiteaListRepos(t *testing.T) {
cases := []struct {
name, proto, url string
@@ -305,9 +306,9 @@ func TestGiteaListRepos(t *testing.T) {
provider, _ := NewGiteaProvider(context.Background(), "test-argocd", "", ts.URL, c.allBranches, false)
rawRepos, err := ListRepos(context.Background(), provider, c.filters, c.proto)
if c.hasError {
assert.NotNil(t, err)
require.Error(t, err)
} else {
assert.Nil(t, err)
require.NoError(t, err)
// Just check that this one project shows up. Not a great test but better thing nothing?
repos := []*Repository{}
branches := []string{}
@@ -341,19 +342,19 @@ func TestGiteaHasPath(t *testing.T) {
t.Run("file exists", func(t *testing.T) {
ok, err := host.RepoHasPath(context.Background(), repo, "README.md")
assert.Nil(t, err)
require.NoError(t, err)
assert.True(t, ok)
})
t.Run("directory exists", func(t *testing.T) {
ok, err := host.RepoHasPath(context.Background(), repo, "gitea")
assert.Nil(t, err)
require.NoError(t, err)
assert.True(t, ok)
})
t.Run("does not exists", func(t *testing.T) {
ok, err := host.RepoHasPath(context.Background(), repo, "notathing")
assert.Nil(t, err)
require.NoError(t, err)
assert.False(t, ok)
})
}

View File

@@ -8,6 +8,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -244,9 +245,9 @@ func TestGithubListRepos(t *testing.T) {
provider, _ := NewGithubProvider(context.Background(), "argoproj", "", ts.URL, c.allBranches)
rawRepos, err := ListRepos(context.Background(), provider, c.filters, c.proto)
if c.hasError {
assert.Error(t, err)
require.Error(t, err)
} else {
assert.NoError(t, err)
require.NoError(t, err)
// Just check that this one project shows up. Not a great test but better thing nothing?
repos := []*Repository{}
branches := []string{}
@@ -278,11 +279,11 @@ func TestGithubHasPath(t *testing.T) {
Branch: "master",
}
ok, err := host.RepoHasPath(context.Background(), repo, "pkg/")
assert.Nil(t, err)
require.NoError(t, err)
assert.True(t, ok)
ok, err = host.RepoHasPath(context.Background(), repo, "notathing/")
assert.Nil(t, err)
require.NoError(t, err)
assert.False(t, ok)
}
@@ -299,26 +300,26 @@ func TestGithubGetBranches(t *testing.T) {
}
repos, err := host.GetBranches(context.Background(), repo)
if err != nil {
assert.NoError(t, err)
require.NoError(t, err)
} else {
assert.Equal(t, repos[0].Branch, "master")
assert.Equal(t, "master", repos[0].Branch)
}
//Branch Doesn't exists instead of error will return no error
// Branch Doesn't exists instead of error will return no error
repo2 := &Repository{
Organization: "argoproj",
Repository: "applicationset",
Branch: "main",
}
_, err = host.GetBranches(context.Background(), repo2)
assert.NoError(t, err)
require.NoError(t, err)
// Get all branches
host.allBranches = true
repos, err = host.GetBranches(context.Background(), repo)
if err != nil {
assert.NoError(t, err)
require.NoError(t, err)
} else {
// considering master branch to exist.
assert.Equal(t, len(repos), 1)
assert.Len(t, repos, 1)
}
}

View File

@@ -7,9 +7,10 @@ import (
"os"
pathpkg "path"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
"github.com/hashicorp/go-retryablehttp"
"github.com/xanzy/go-gitlab"
"github.com/argoproj/argo-cd/v2/applicationset/utils"
)
type GitlabProvider struct {
@@ -57,7 +58,7 @@ func (g *GitlabProvider) GetBranches(ctx context.Context, repo *Repository) ([]*
repos := []*Repository{}
branches, err := g.listBranches(ctx, repo)
if err != nil {
return nil, fmt.Errorf("error listing branches for %s/%s: %v", repo.Organization, repo.Repository, err)
return nil, fmt.Errorf("error listing branches for %s/%s: %w", repo.Organization, repo.Repository, err)
}
for _, branch := range branches {
@@ -86,7 +87,7 @@ func (g *GitlabProvider) ListRepos(ctx context.Context, cloneProtocol string) ([
for {
gitlabRepos, resp, err := g.client.Groups.ListGroupProjects(g.organization, opt)
if err != nil {
return nil, fmt.Errorf("error listing projects for %s: %v", g.organization, err)
return nil, fmt.Errorf("error listing projects for %s: %w", g.organization, err)
}
for _, gitlabRepo := range gitlabRepos {
var url string

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -1046,6 +1047,7 @@ func gitlabMockHandler(t *testing.T) func(http.ResponseWriter, *http.Request) {
}
}
}
func TestGitlabListRepos(t *testing.T) {
cases := []struct {
name, proto, url, topic string
@@ -1122,9 +1124,9 @@ func TestGitlabListRepos(t *testing.T) {
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)
require.Error(t, err)
} else {
assert.Nil(t, err)
require.NoError(t, err)
// Just check that this one project shows up. Not a great test but better than nothing?
repos := []*Repository{}
uniqueRepos := map[string]int{}
@@ -1143,11 +1145,11 @@ func TestGitlabListRepos(t *testing.T) {
}
// In case of listing subgroups, validate the number of returned projects
if c.includeSubgroups || c.includeSharedProjects {
assert.Equal(t, 2, len(uniqueRepos))
assert.Len(t, uniqueRepos, 2)
}
// In case we filter on the topic, ensure we got only one repo returned
if c.topic != "" {
assert.Equal(t, 1, len(uniqueRepos))
assert.Len(t, uniqueRepos, 1)
}
}
})
@@ -1194,7 +1196,7 @@ func TestGitlabHasPath(t *testing.T) {
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
ok, err := host.RepoHasPath(context.Background(), repo, c.path)
assert.Nil(t, err)
require.NoError(t, err)
assert.Equal(t, c.exists, ok)
})
}
@@ -1212,8 +1214,8 @@ func TestGitlabGetBranches(t *testing.T) {
}
t.Run("branch exists", func(t *testing.T) {
repos, err := host.GetBranches(context.Background(), repo)
assert.Nil(t, err)
assert.Equal(t, repos[0].Branch, "master")
require.NoError(t, err)
assert.Equal(t, "master", repos[0].Branch)
})
repo2 := &Repository{
@@ -1222,6 +1224,6 @@ func TestGitlabGetBranches(t *testing.T) {
}
t.Run("unknown branch", func(t *testing.T) {
_, err := host.GetBranches(context.Background(), repo2)
assert.NoError(t, err)
require.NoError(t, err)
})
}

View File

@@ -44,7 +44,6 @@ func (m *MockProvider) GetBranches(_ context.Context, repo *Repository) ([]*Repo
branchRepos = append(branchRepos, candidateRepo)
}
}
}
return branchRepos, nil
}

View File

@@ -17,14 +17,14 @@ func compileFilters(filters []argoprojiov1alpha1.SCMProviderGeneratorFilter) ([]
if filter.RepositoryMatch != nil {
outFilter.RepositoryMatch, err = regexp.Compile(*filter.RepositoryMatch)
if err != nil {
return nil, fmt.Errorf("error compiling RepositoryMatch regexp %q: %v", *filter.RepositoryMatch, err)
return nil, fmt.Errorf("error compiling RepositoryMatch regexp %q: %w", *filter.RepositoryMatch, err)
}
outFilter.FilterType = FilterTypeRepo
}
if filter.LabelMatch != nil {
outFilter.LabelMatch, err = regexp.Compile(*filter.LabelMatch)
if err != nil {
return nil, fmt.Errorf("error compiling LabelMatch regexp %q: %v", *filter.LabelMatch, err)
return nil, fmt.Errorf("error compiling LabelMatch regexp %q: %w", *filter.LabelMatch, err)
}
outFilter.FilterType = FilterTypeRepo
}
@@ -39,7 +39,7 @@ func compileFilters(filters []argoprojiov1alpha1.SCMProviderGeneratorFilter) ([]
if filter.BranchMatch != nil {
outFilter.BranchMatch, err = regexp.Compile(*filter.BranchMatch)
if err != nil {
return nil, fmt.Errorf("error compiling BranchMatch regexp %q: %v", *filter.BranchMatch, err)
return nil, fmt.Errorf("error compiling BranchMatch regexp %q: %w", *filter.BranchMatch, err)
}
outFilter.FilterType = FilterTypeBranch
}

View File

@@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
)
@@ -37,7 +38,7 @@ func TestFilterRepoMatch(t *testing.T) {
},
}
repos, err := ListRepos(context.Background(), provider, filters, "")
assert.Nil(t, err)
require.NoError(t, err)
assert.Len(t, repos, 2)
assert.Equal(t, "one", repos[0].Repository)
assert.Equal(t, "three", repos[1].Repository)
@@ -66,7 +67,7 @@ func TestFilterLabelMatch(t *testing.T) {
},
}
repos, err := ListRepos(context.Background(), provider, filters, "")
assert.Nil(t, err)
require.NoError(t, err)
assert.Len(t, repos, 2)
assert.Equal(t, "one", repos[0].Repository)
assert.Equal(t, "two", repos[1].Repository)
@@ -92,7 +93,7 @@ func TestFilterPathExists(t *testing.T) {
},
}
repos, err := ListRepos(context.Background(), provider, filters, "")
assert.Nil(t, err)
require.NoError(t, err)
assert.Len(t, repos, 1)
assert.Equal(t, "two", repos[0].Repository)
}
@@ -117,9 +118,10 @@ func TestFilterPathDoesntExists(t *testing.T) {
},
}
repos, err := ListRepos(context.Background(), provider, filters, "")
assert.Nil(t, err)
require.NoError(t, err)
assert.Len(t, repos, 2)
}
func TestFilterRepoMatchBadRegexp(t *testing.T) {
provider := &MockProvider{
Repos: []*Repository{
@@ -134,7 +136,7 @@ func TestFilterRepoMatchBadRegexp(t *testing.T) {
},
}
_, err := ListRepos(context.Background(), provider, filters, "")
assert.NotNil(t, err)
require.Error(t, err)
}
func TestFilterLabelMatchBadRegexp(t *testing.T) {
@@ -151,7 +153,7 @@ func TestFilterLabelMatchBadRegexp(t *testing.T) {
},
}
_, err := ListRepos(context.Background(), provider, filters, "")
assert.NotNil(t, err)
require.Error(t, err)
}
func TestFilterBranchMatch(t *testing.T) {
@@ -185,7 +187,7 @@ func TestFilterBranchMatch(t *testing.T) {
},
}
repos, err := ListRepos(context.Background(), provider, filters, "")
assert.Nil(t, err)
require.NoError(t, err)
assert.Len(t, repos, 2)
assert.Equal(t, "one", repos[0].Repository)
assert.Equal(t, "two", repos[0].Branch)
@@ -217,7 +219,7 @@ func TestMultiFilterAnd(t *testing.T) {
},
}
repos, err := ListRepos(context.Background(), provider, filters, "")
assert.Nil(t, err)
require.NoError(t, err)
assert.Len(t, repos, 1)
assert.Equal(t, "two", repos[0].Repository)
}
@@ -248,7 +250,7 @@ func TestMultiFilterOr(t *testing.T) {
},
}
repos, err := ListRepos(context.Background(), provider, filters, "")
assert.Nil(t, err)
require.NoError(t, err)
assert.Len(t, repos, 3)
assert.Equal(t, "one", repos[0].Repository)
assert.Equal(t, "two", repos[1].Repository)
@@ -274,7 +276,7 @@ func TestNoFilters(t *testing.T) {
}
filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{}
repos, err := ListRepos(context.Background(), provider, filters, "")
assert.Nil(t, err)
require.NoError(t, err)
assert.Len(t, repos, 3)
assert.Equal(t, "one", repos[0].Repository)
assert.Equal(t, "two", repos[1].Repository)
@@ -311,8 +313,10 @@ func TestApplicableFilterMap(t *testing.T) {
BranchMatch: &regexp.Regexp{},
FilterType: FilterTypeBranch,
}
filterMap := getApplicableFilters([]*Filter{&branchFilter, &repoFilter,
&pathExistsFilter, &labelMatchFilter, &unsetFilter, &additionalBranchFilter, &pathDoesntExistsFilter})
filterMap := getApplicableFilters([]*Filter{
&branchFilter, &repoFilter,
&pathExistsFilter, &labelMatchFilter, &unsetFilter, &additionalBranchFilter, &pathDoesntExistsFilter,
})
assert.Len(t, filterMap[FilterTypeRepo], 2)
assert.Len(t, filterMap[FilterTypeBranch], 4)

View File

@@ -17,7 +17,7 @@ import (
appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"k8s.io/client-go/kubernetes"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
)
// The contents of this file are from
@@ -55,16 +55,14 @@ func ValidateDestination(ctx context.Context, dest *appv1.ApplicationDestination
if dest.Server == "" {
server, err := getDestinationServer(ctx, dest.Name, clientset, argoCDNamespace)
if err != nil {
return fmt.Errorf("unable to find destination server: %v", err)
return fmt.Errorf("unable to find destination server: %w", err)
}
if server == "" {
return fmt.Errorf("application references destination cluster %s which does not exist", dest.Name)
}
dest.SetInferredServer(server)
} else {
if !dest.IsServerInferred() {
return fmt.Errorf("application destination can't have both name and server defined: %s %s", dest.Name, dest.Server)
}
} else if !dest.IsServerInferred() {
return fmt.Errorf("application destination can't have both name and server defined: %s %s", dest.Name, dest.Server)
}
}
return nil
@@ -93,7 +91,6 @@ func getDestinationServer(ctx context.Context, clusterName string, clientset kub
}
func ListClusters(ctx context.Context, clientset kubernetes.Interface, namespace string) (*appv1.ClusterList, error) {
clusterSecretsList, err := clientset.CoreV1().Secrets(namespace).List(ctx,
metav1.ListOptions{LabelSelector: common.LabelKeySecretType + "=" + common.LabelValueSecretTypeCluster})
if err != nil {
@@ -114,7 +111,7 @@ func ListClusters(ctx context.Context, clientset kubernetes.Interface, namespace
// This line has changed from the original Argo CD code: now receives an error, and handles it
cluster, err := secretToCluster(&clusterSecret)
if err != nil || cluster == nil {
return nil, fmt.Errorf("unable to convert cluster secret to cluster object '%s': %v", clusterSecret.Name, err)
return nil, fmt.Errorf("unable to convert cluster secret to cluster object '%s': %w", clusterSecret.Name, err)
}
clusterList.Items[i] = *cluster
@@ -180,7 +177,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.Int64(int64(val))
shard = ptr.To(int64(val))
}
}
cluster := appv1.Cluster{

View File

@@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
@@ -33,14 +34,14 @@ func Test_secretToCluster(t *testing.T) {
},
}
cluster, err := secretToCluster(secret)
assert.Nil(t, err)
assert.Equal(t, *cluster, argoappv1.Cluster{
require.NoError(t, err)
assert.Equal(t, argoappv1.Cluster{
Name: "test",
Server: "http://mycluster",
Config: argoappv1.ClusterConfig{
Username: "foo",
},
})
}, *cluster)
}
// From Argo CD util/db/cluster_test.go
@@ -56,15 +57,14 @@ func Test_secretToCluster_NoConfig(t *testing.T) {
},
}
cluster, err := secretToCluster(secret)
assert.Nil(t, err)
assert.Equal(t, *cluster, argoappv1.Cluster{
require.NoError(t, err)
assert.Equal(t, argoappv1.Cluster{
Name: "test",
Server: "http://mycluster",
})
}, *cluster)
}
func createClusterSecret(secretName string, clusterName string, clusterServer string) *corev1.Secret {
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: secretName,
@@ -81,22 +81,19 @@ func createClusterSecret(secretName string, clusterName string, clusterServer st
}
return secret
}
// From util/argo/argo_test.go
// (ported to use kubeclientset)
func TestValidateDestination(t *testing.T) {
t.Run("Validate destination with server url", func(t *testing.T) {
dest := argoappv1.ApplicationDestination{
Server: "https://127.0.0.1:6443",
Namespace: "default",
}
appCond := ValidateDestination(context.Background(), &dest, nil, fakeNamespace)
assert.Nil(t, appCond)
require.NoError(t, appCond)
assert.False(t, dest.IsServerInferred())
})
@@ -111,7 +108,7 @@ func TestValidateDestination(t *testing.T) {
kubeclientset := fake.NewSimpleClientset(objects...)
appCond := ValidateDestination(context.Background(), &dest, kubeclientset, fakeNamespace)
assert.Nil(t, appCond)
require.NoError(t, appCond)
assert.Equal(t, "https://127.0.0.1:6443", dest.Server)
assert.True(t, dest.IsServerInferred())
})
@@ -174,5 +171,4 @@ func TestValidateDestination(t *testing.T) {
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

@@ -20,6 +20,7 @@ import (
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
@@ -35,8 +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, logCtx *log.Entry, c client.Client, ignoreAppDifferences argov1alpha1.ApplicationSetIgnoreDifferences, obj *argov1alpha1.Application, 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 {
if !errors.IsNotFound(err) {
@@ -60,7 +60,7 @@ func CreateOrUpdate(ctx context.Context, logCtx *log.Entry, c client.Client, ign
// 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)
err := applyIgnoreDifferences(ignoreAppDifferences, normalizedLive, obj, ignoreNormalizerOpts)
if err != nil {
return controllerutil.OperationResultNone, fmt.Errorf("failed to apply ignore differences: %w", err)
}
@@ -134,14 +134,14 @@ func mutate(f controllerutil.MutateFn, key client.ObjectKey, obj client.Object)
}
// 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) error {
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).
WithDiffSettings(applicationSetIgnoreDifferences.ToApplicationIgnoreDifferences(), nil, false, ignoreNormalizerOpts).
WithNoCache().
Build()
if err != nil {

View File

@@ -9,6 +9,7 @@ import (
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) {
@@ -222,7 +223,7 @@ spec:
generatedApp := v1alpha1.Application{TypeMeta: appMeta}
err = yaml.Unmarshal([]byte(tc.generatedApp), &generatedApp)
require.NoError(t, err, tc.generatedApp)
err = applyIgnoreDifferences(tc.ignoreDifferences, &foundApp, &generatedApp)
err = applyIgnoreDifferences(tc.ignoreDifferences, &foundApp, &generatedApp, normalizers.IgnoreNormalizerOpts{})
require.NoError(t, err)
yamlFound, err := yaml.Marshal(tc.foundApp)
require.NoError(t, err)

View File

@@ -26,7 +26,6 @@ func ConvertToMapStringInterface(mapStringString map[string]string) map[string]i
}
func CombineStringMaps(aSI map[string]interface{}, bSI map[string]interface{}) (map[string]string, error) {
a := ConvertToMapStringString(aSI)
b := ConvertToMapStringString(bSI)
@@ -49,7 +48,6 @@ func CombineStringMaps(aSI map[string]interface{}, bSI map[string]interface{}) (
// CombineStringMapsAllowDuplicates merges two maps. Where there are duplicates, take the latter map's value.
func CombineStringMapsAllowDuplicates(aSI map[string]interface{}, bSI map[string]interface{}) (map[string]string, error) {
a := ConvertToMapStringString(aSI)
b := ConvertToMapStringString(bSI)

View File

@@ -5,6 +5,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestCombineStringMaps(t *testing.T) {
@@ -49,10 +50,9 @@ func TestCombineStringMaps(t *testing.T) {
if testCaseCopy.expectedErr != nil {
assert.EqualError(t, err, testCaseCopy.expectedErr.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testCaseCopy.expected, got)
}
})
}
}

View File

@@ -2,15 +2,16 @@ package utils
import (
"fmt"
"sort"
"strconv"
"strings"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/klog/v2"
"sort"
"strconv"
"strings"
)
var (

View File

@@ -44,8 +44,7 @@ type Renderer interface {
Replace(tmpl string, replaceMap map[string]interface{}, useGoTemplate bool, goTemplateOptions []string) (string, error)
}
type Render struct {
}
type Render struct{}
func copyValueIntoUnexported(destination, value reflect.Value) {
reflect.NewAt(destination.Type(), unsafe.Pointer(destination.UnsafeAddr())).
@@ -54,7 +53,7 @@ func copyValueIntoUnexported(destination, value reflect.Value) {
}
func copyUnexported(copy, original reflect.Value) {
var unexported = reflect.NewAt(original.Type(), unsafe.Pointer(original.UnsafeAddr())).Elem()
unexported := reflect.NewAt(original.Type(), unsafe.Pointer(original.UnsafeAddr())).Elem()
copyValueIntoUnexported(copy, unexported)
}
@@ -127,7 +126,7 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
// If it is a struct we translate each field
case reflect.Struct:
for i := 0; i < original.NumField(); i += 1 {
var currentType = fmt.Sprintf("%s.%s", original.Type().Field(i).Name, original.Type().PkgPath())
currentType := fmt.Sprintf("%s.%s", original.Type().Field(i).Name, original.Type().PkgPath())
// specific case time
if currentType == "time.Time" {
copy.Field(i).Set(original.Field(i))
@@ -269,9 +268,8 @@ func (r *Render) RenderTemplateParams(tmpl *argoappsv1.Application, syncPolicy *
// b) there IS a syncPolicy, but preserveResourcesOnDeletion is set to false
// See TestRenderTemplateParamsFinalizers in util_test.go for test-based definition of behaviour
if (syncPolicy == nil || !syncPolicy.PreserveResourcesOnDeletion) &&
((*replacedTmpl).ObjectMeta.Finalizers == nil || len((*replacedTmpl).ObjectMeta.Finalizers) == 0) {
(*replacedTmpl).ObjectMeta.Finalizers = []string{"resources-finalizer.argocd.argoproj.io"}
(replacedTmpl.ObjectMeta.Finalizers == nil || len(replacedTmpl.ObjectMeta.Finalizers) == 0) {
replacedTmpl.ObjectMeta.Finalizers = []string{"resources-finalizer.argocd.argoproj.io"}
}
return replacedTmpl, nil
@@ -486,7 +484,6 @@ func SlugifyName(args ...interface{}) string {
}
func getTlsConfigWithCACert(scmRootCAPath string) *tls.Config {
tlsConfig := &tls.Config{}
if scmRootCAPath != "" {

View File

@@ -21,7 +21,6 @@ import (
)
func TestRenderTemplateParams(t *testing.T) {
// Believe it or not, this is actually less complex than the equivalent solution using reflection
fieldMap := map[string]func(app *argoappsv1.Application) *string{}
fieldMap["Path"] = func(app *argoappsv1.Application) *string { return &app.Spec.Source.Path }
@@ -165,11 +164,8 @@ func TestRenderTemplateParams(t *testing.T) {
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
for fieldName, getPtrFunc := range fieldMap {
// Clone the template application
application := emptyApplication.DeepCopy()
@@ -184,23 +180,21 @@ func TestRenderTemplateParams(t *testing.T) {
// the target field has been templated into the expected value
actualValue := *getPtrFunc(newApplication)
assert.Equal(t, test.expectedVal, actualValue, "Field '%s' had an unexpected value. expected: '%s' value: '%s'", fieldName, test.expectedVal, actualValue)
assert.Equal(t, newApplication.ObjectMeta.Annotations["annotation-key"], "annotation-value")
assert.Equal(t, newApplication.ObjectMeta.Annotations["annotation-key2"], "annotation-value2")
assert.Equal(t, newApplication.ObjectMeta.Labels["label-key"], "label-value")
assert.Equal(t, newApplication.ObjectMeta.Labels["label-key2"], "label-value2")
assert.Equal(t, newApplication.ObjectMeta.Name, "application-one")
assert.Equal(t, newApplication.ObjectMeta.Namespace, "default")
assert.Equal(t, "annotation-value", newApplication.ObjectMeta.Annotations["annotation-key"])
assert.Equal(t, "annotation-value2", newApplication.ObjectMeta.Annotations["annotation-key2"])
assert.Equal(t, "label-value", newApplication.ObjectMeta.Labels["label-key"])
assert.Equal(t, "label-value2", newApplication.ObjectMeta.Labels["label-key2"])
assert.Equal(t, "application-one", newApplication.ObjectMeta.Name)
assert.Equal(t, "default", newApplication.ObjectMeta.Namespace)
assert.Equal(t, newApplication.ObjectMeta.UID, types.UID("d546da12-06b7-4f9a-8ea2-3adb16a20e2b"))
assert.Equal(t, newApplication.ObjectMeta.CreationTimestamp, application.ObjectMeta.CreationTimestamp)
assert.NoError(t, err)
require.NoError(t, err)
}
})
}
}
func TestRenderHelmValuesObjectJson(t *testing.T) {
params := map[string]interface{}{
"test": "Hello world",
}
@@ -243,19 +237,17 @@ func TestRenderHelmValuesObjectJson(t *testing.T) {
render := Render{}
newApplication, err := render.RenderTemplateParams(application, nil, params, true, []string{})
assert.NoError(t, err)
require.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")
require.NoError(t, err)
assert.Equal(t, "Hello world", unmarshaled.(map[string]interface{})["some"].(map[string]interface{})["string"])
}
func TestRenderHelmValuesObjectYaml(t *testing.T) {
params := map[string]interface{}{
"test": "Hello world",
}
@@ -295,19 +287,17 @@ func TestRenderHelmValuesObjectYaml(t *testing.T) {
render := Render{}
newApplication, err := render.RenderTemplateParams(application, nil, params, true, []string{})
assert.NoError(t, err)
require.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")
require.NoError(t, err)
assert.Equal(t, "Hello world", unmarshaled.(map[string]interface{})["some"].(map[string]interface{})["string"])
}
func TestRenderTemplateParamsGoTemplate(t *testing.T) {
// Believe it or not, this is actually less complex than the equivalent solution using reflection
fieldMap := map[string]func(app *argoappsv1.Application) *string{}
fieldMap["Path"] = func(app *argoappsv1.Application) *string { return &app.Spec.Source.Path }
@@ -616,11 +606,8 @@ func TestRenderTemplateParamsGoTemplate(t *testing.T) {
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
for fieldName, getPtrFunc := range fieldMap {
// Clone the template application
application := emptyApplication.DeepCopy()
@@ -634,18 +621,18 @@ func TestRenderTemplateParamsGoTemplate(t *testing.T) {
// Retrieve the value of the target field from the newApplication, then verify that
// the target field has been templated into the expected value
if test.errorMessage != "" {
assert.Error(t, err)
require.Error(t, err)
assert.Equal(t, test.errorMessage, err.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
actualValue := *getPtrFunc(newApplication)
assert.Equal(t, test.expectedVal, actualValue, "Field '%s' had an unexpected value. expected: '%s' value: '%s'", fieldName, test.expectedVal, actualValue)
assert.Equal(t, newApplication.ObjectMeta.Annotations["annotation-key"], "annotation-value")
assert.Equal(t, newApplication.ObjectMeta.Annotations["annotation-key2"], "annotation-value2")
assert.Equal(t, newApplication.ObjectMeta.Labels["label-key"], "label-value")
assert.Equal(t, newApplication.ObjectMeta.Labels["label-key2"], "label-value2")
assert.Equal(t, newApplication.ObjectMeta.Name, "application-one")
assert.Equal(t, newApplication.ObjectMeta.Namespace, "default")
assert.Equal(t, "annotation-value", newApplication.ObjectMeta.Annotations["annotation-key"])
assert.Equal(t, "annotation-value2", newApplication.ObjectMeta.Annotations["annotation-key2"])
assert.Equal(t, "label-value", newApplication.ObjectMeta.Labels["label-key"])
assert.Equal(t, "label-value2", newApplication.ObjectMeta.Labels["label-key2"])
assert.Equal(t, "application-one", newApplication.ObjectMeta.Name)
assert.Equal(t, "default", newApplication.ObjectMeta.Namespace)
assert.Equal(t, newApplication.ObjectMeta.UID, types.UID("d546da12-06b7-4f9a-8ea2-3adb16a20e2b"))
assert.Equal(t, newApplication.ObjectMeta.CreationTimestamp, application.ObjectMeta.CreationTimestamp)
}
@@ -679,7 +666,7 @@ func TestRenderGeneratorParams_does_not_panic(t *testing.T) {
},
}
_, err := render.RenderGeneratorParams(generator, params, true, []string{})
assert.NoError(t, err)
require.NoError(t, err)
}
func TestRenderTemplateKeys(t *testing.T) {
@@ -701,7 +688,7 @@ func TestRenderTemplateKeys(t *testing.T) {
newApplication, err := render.RenderTemplateParams(application, nil, params, false, nil)
require.NoError(t, err)
require.Contains(t, newApplication.ObjectMeta.Annotations, "annotation-some-key")
assert.Equal(t, newApplication.ObjectMeta.Annotations["annotation-some-key"], "annotation-some-value")
assert.Equal(t, "annotation-some-value", newApplication.ObjectMeta.Annotations["annotation-some-key"])
})
t.Run("gotemplate", func(t *testing.T) {
application := &argoappsv1.Application{
@@ -721,7 +708,7 @@ func TestRenderTemplateKeys(t *testing.T) {
newApplication, err := render.RenderTemplateParams(application, nil, params, true, nil)
require.NoError(t, err)
require.Contains(t, newApplication.ObjectMeta.Annotations, "annotation-some-key")
assert.Equal(t, newApplication.ObjectMeta.Annotations["annotation-some-key"], "annotation-some-value")
assert.Equal(t, "annotation-some-value", newApplication.ObjectMeta.Annotations["annotation-some-key"])
})
}
@@ -729,12 +716,11 @@ 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)
require.Error(t, err)
})
}
func TestRenderTemplateParamsFinalizers(t *testing.T) {
emptyApplication := &argoappsv1.Application{
Spec: argoappsv1.ApplicationSpec{
Source: &argoappsv1.ApplicationSource{
@@ -813,9 +799,7 @@ func TestRenderTemplateParamsFinalizers(t *testing.T) {
expectedFinalizers: []string{"resources-finalizer.argocd.argoproj.io/background"},
},
} {
t.Run(c.testName, func(t *testing.T) {
// Clone the template application
application := emptyApplication.DeepCopy()
application.Finalizers = c.existingFinalizers
@@ -828,23 +812,19 @@ func TestRenderTemplateParamsFinalizers(t *testing.T) {
render := Render{}
res, err := render.RenderTemplateParams(application, c.syncPolicy, params, true, nil)
assert.Nil(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, res.Finalizers, c.expectedFinalizers)
})
}
}
func TestCheckInvalidGenerators(t *testing.T) {
scheme := runtime.NewScheme()
err := argoappsv1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
err = argoappsv1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
for _, c := range []struct {
testName string
@@ -932,7 +912,7 @@ func TestCheckInvalidGenerators(t *testing.T) {
hook := logtest.NewGlobal()
_ = CheckInvalidGenerators(&c.appSet)
assert.True(t, len(hook.Entries) >= 1, c.testName)
assert.GreaterOrEqual(t, len(hook.Entries), 1, c.testName)
assert.NotNil(t, hook.LastEntry(), c.testName)
if hook.LastEntry() != nil {
assert.Equal(t, logrus.WarnLevel, hook.LastEntry().Level, c.testName)
@@ -943,12 +923,11 @@ func TestCheckInvalidGenerators(t *testing.T) {
}
func TestInvalidGenerators(t *testing.T) {
scheme := runtime.NewScheme()
err := argoappsv1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
err = argoappsv1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
for _, c := range []struct {
testName string
@@ -1322,7 +1301,7 @@ xO7Tr5lAo74vNUkF2EHNaI28/RGnJPm2TIxZqy4rNH6L
`
rootCAPath := path.Join(temppath, "foo.example.com")
err := os.WriteFile(rootCAPath, []byte(cert), 0666)
err := os.WriteFile(rootCAPath, []byte(cert), 0o666)
if err != nil {
panic(err)
}

View File

@@ -26,9 +26,7 @@ import (
log "github.com/sirupsen/logrus"
)
var (
errBasicAuthVerificationFailed = errors.New("basic auth verification failed")
)
var errBasicAuthVerificationFailed = errors.New("basic auth verification failed")
type WebhookHandler struct {
namespace string
@@ -72,19 +70,19 @@ func NewWebhookHandler(namespace string, argocdSettingsMgr *argosettings.Setting
// register the webhook secrets stored under "argocd-secret" for verifying incoming payloads
argocdSettings, err := argocdSettingsMgr.GetSettings()
if err != nil {
return nil, fmt.Errorf("Failed to get argocd settings: %v", err)
return nil, fmt.Errorf("Failed to get argocd settings: %w", err)
}
githubHandler, err := github.New(github.Options.Secret(argocdSettings.WebhookGitHubSecret))
if err != nil {
return nil, fmt.Errorf("Unable to init GitHub webhook: %v", err)
return nil, fmt.Errorf("Unable to init GitHub webhook: %w", err)
}
gitlabHandler, err := gitlab.New(gitlab.Options.Secret(argocdSettings.WebhookGitLabSecret))
if err != nil {
return nil, fmt.Errorf("Unable to init GitLab webhook: %v", err)
return nil, fmt.Errorf("Unable to init GitLab webhook: %w", err)
}
azuredevopsHandler, err := azuredevops.New()
if err != nil {
return nil, fmt.Errorf("Unable to init Azure DevOps webhook: %v", err)
return nil, fmt.Errorf("Unable to init Azure DevOps webhook: %w", err)
}
azuredevopsAuthHandler := func(r *http.Request) error {
if argocdSettings.WebhookAzureDevOpsUsername != "" && argocdSettings.WebhookAzureDevOpsPassword != "" {
@@ -514,7 +512,7 @@ func (h *WebhookHandler) shouldRefreshMatrixGenerator(gen *v1alpha1.MatrixGenera
relGenerators := generators.GetRelevantGenerators(requestedGenerator0, h.generators)
params := []map[string]interface{}{}
for _, g := range relGenerators {
p, err := g.GenerateParams(requestedGenerator0, appSet)
p, err := g.GenerateParams(requestedGenerator0, appSet, h.client)
if err != nil {
log.Error(err)
return false

View File

@@ -14,10 +14,12 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
kubefake "k8s.io/client-go/kubernetes/fake"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
@@ -37,7 +39,7 @@ func (g *generatorMock) GetTemplate(appSetGenerator *v1alpha1.ApplicationSetGene
return &v1alpha1.ApplicationSetTemplate{}
}
func (g *generatorMock) GenerateParams(appSetGenerator *v1alpha1.ApplicationSetGenerator, _ *v1alpha1.ApplicationSet) ([]map[string]interface{}, error) {
func (g *generatorMock) GenerateParams(appSetGenerator *v1alpha1.ApplicationSetGenerator, _ *v1alpha1.ApplicationSet, client client.Client) ([]map[string]interface{}, error) {
return []map[string]interface{}{}, nil
}
@@ -179,9 +181,9 @@ func TestWebhookHandler(t *testing.T) {
fakeClient := newFakeClient(namespace)
scheme := runtime.NewScheme()
err := v1alpha1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
err = v1alpha1.AddToScheme(scheme)
assert.Nil(t, err)
require.NoError(t, err)
for _, test := range tt {
t.Run(test.desc, func(t *testing.T) {
@@ -205,21 +207,21 @@ func TestWebhookHandler(t *testing.T) {
).Build()
set := argosettings.NewSettingsManager(context.TODO(), fakeClient, namespace)
h, err := NewWebhookHandler(namespace, set, fc, mockGenerators())
assert.Nil(t, err)
require.NoError(t, err)
req := httptest.NewRequest(http.MethodPost, "/api/webhook", nil)
req.Header.Set(test.headerKey, test.headerValue)
eventJSON, err := os.ReadFile(filepath.Join("testdata", test.payloadFile))
assert.NoError(t, err)
require.NoError(t, err)
req.Body = io.NopCloser(bytes.NewReader(eventJSON))
w := httptest.NewRecorder()
h.Handler(w, req)
assert.Equal(t, w.Code, test.expectedStatusCode)
assert.Equal(t, test.expectedStatusCode, w.Code)
list := &v1alpha1.ApplicationSetList{}
err = fc.List(context.TODO(), list)
assert.Nil(t, err)
require.NoError(t, err)
effectedAppSetsAsExpected := make(map[string]bool)
for _, appSetName := range test.effectedAppSets {
effectedAppSetsAsExpected[appSetName] = false

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