Compare commits

...

361 Commits

Author SHA1 Message Date
Rafael Brito 67d19e100f
chore: make api-proto to support go module style (#4402)
tweak on make api-proto to support go module style

Signed-off-by: Rafael Brito <rafa@stormforge.io>
2025-08-08 11:18:18 -05:00
Rafael Brito b579b3d4d9
fix(deps): bumping k8s modules to 0.30.14 fixes #4210 Rollout CRD and mitigates #4180 (#4212)
* chore: bumping k8s mods to 0.30.11 and new CRD

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* chore: updating more modules and tweaking CRD generation

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* chore: adding StormForge on USERS.md

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* tweaking Makefile and supporting script to successfully run codegen

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* removed deprecated generate-groups.sh codegen script

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* Updating gen-openapi parameters k8s to v0.30.X

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* running go mod before generating crd

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* another pass on fixing go-to-protobuf

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* restoring boilerplate.go.txt for gen_client

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* tweaking openapi-gen for the expected file name

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* disable vendoring on gen-crd

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* disable vendoring for docs generation

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* invoking doc generation prior crd generation

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* bumping mockery version

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* adding go-mod-vendor for docs

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* bumping to latest k8s libraries 0.30.X

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* bumping golang

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* bumping last k8s libraries and reinstate go 1.23

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* fixing codegen directory

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* resolving conflicts on x/sync

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* bumping k8s libraries to 1.30.14

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* another pass after go mod tidy

Signed-off-by: Rafael Brito <rafa@stormforge.io>

* Makefile changes to support go module style setup with new codegen

Signed-off-by: Rafael Brito <rafa@stormforge.io>

---------

Signed-off-by: Rafael Brito <rafa@stormforge.io>
Signed-off-by: Rafael Brito <rafaelbrito@gmail.com>
2025-08-07 19:20:37 -05:00
Gusty Sapto Ady Prakoso b3447cbf96
docs: add batumbu to USERS.md (#4389)
Signed-off-by: Gusty Sapto Ady Prakoso <gustysaptoadyprakoso@gmail.com>
2025-08-07 19:19:46 -05:00
Kevin Dorosh a9e566ea4f
fix(cli): Add generation to RolloutInfo (#4336)
Signed-off-by: Kevin Dorosh <kcdorosh@gmail.com>
Co-authored-by: Kevin Dorosh <kevin.dorosh@reddit.com>
2025-07-24 10:26:32 -05:00
Oliver Gondža 87562252b3
chore: Adding Red Hat to the list (#4361)
feat(USERS.md): Adding Red Hat to the list

Signed-off-by: Oliver Gondža <ogondza@gmail.com>
2025-07-24 10:25:42 -05:00
dependabot[bot] 5e44d4b461
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.45.1 to 1.45.4 (#4366)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  dependency-version: 1.45.4
  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>
2025-07-24 10:25:23 -05:00
Kevin Park 401a5fab7e
fix(cli): expose AWS API versions in controller CLI. Fixes #4334 (#4368)
* Fix camelCase typo in metricsPort CLI flag

Signed-off-by: Kevin Park <krapi0314@gmail.com>

* Expose AWS API version in controller CLI

Signed-off-by: Kevin Park <krapi0314@gmail.com>

---------

Signed-off-by: Kevin Park <krapi0314@gmail.com>
2025-07-24 09:28:08 -05:00
Brian Fox d6d63f3330
fix(controller): don't panic if workload ref is not found (#4208)
Signed-off-by: OneMatchFox <878612+onematchfox@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2025-07-23 13:19:36 -05:00
TamarRubin d4a935068d
feat(dashboard): add error handling notifications for rollout actions (#4345)
* feat(ui): add error handling notifications for rollout actions

- Add try-catch error handling to rollout action buttons
- Display error notifications at top of page when actions fail
- Show specific 'Permission Denied' message for HTTP 403 errors
- Include RBAC guidance for permission-related failures
- Ensure loading spinner stops on both success and error
- Remove success notifications to reduce UI noise

Fixes silent failures when users lack proper RBAC permissions
for rollout actions like Abort, Promote, Restart, and Retry.

Signed-off-by: tamar.rubin <tamar.rubin@appsflyer.com>

* docs: add AppsFlyer to USERS.md

Signed-off-by: tamar.rubin <tamar.rubin@appsflyer.com>

---------

Signed-off-by: tamar.rubin <tamar.rubin@appsflyer.com>
Co-authored-by: tamar.rubin <tamar.rubin@appsflyer.com>
2025-07-17 08:45:13 -05:00
dependabot[bot] 1e03da7841
chore(deps): bump golang.org/x/sync from 0.11.0 to 0.16.0 (#4353)
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.11.0 to 0.16.0.
- [Commits](https://github.com/golang/sync/compare/v0.11.0...v0.16.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.16.0
  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>
2025-07-17 08:43:53 -05:00
Donghyun Kang 848c9fa729
docs: fix indentation in Rollout YAML (#4354)
Signed-off-by: augustkang <iamaugustkang@gmail.com>
2025-07-17 08:43:33 -05:00
Kevin Park caf2e6f4d2
fix(cli): update incorrect boolean flag syntax example in cli help output. Fixes #4112 (#4355)
Fix cli example for boolean flag with value set

Signed-off-by: Kevin Park <krapi0314@gmail.com>
2025-07-17 08:43:06 -05:00
Eduardo Morales 6dfe280d14
feat: added available replica pods threshold (#4341)
* feat: added available replica pods threshold

Signed-off-by: Eduardo Morales <emorales@nextdoor.com>

* feat: created a better struct pattern for replicaProgressThreshold

Signed-off-by: Eduardo Morales <emorales@nextdoor.com>

* fix: changed ThresholdType -> Type

Signed-off-by: Eduardo Morales <emorales@nextdoor.com>

---------

Signed-off-by: Eduardo Morales <emorales@nextdoor.com>
2025-07-17 08:41:01 -05:00
Kostis (Codefresh) 468cfdf3d4
docs: proposal for parameterized build system (#4331)
Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
2025-07-08 14:42:31 +00:00
Kostis (Codefresh) 92df0a35d2
fix: truncate analysis job name if needed (#4305)
* fix: truncate analysis job name if needed

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>

* fix: moved DNS limit to defaults

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>

---------

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
2025-07-08 09:07:13 -05:00
Abhish2702 88ea0c519f
fix: experiment services deletion before reconciling traffic routing in rollouts (#4310)
Signed-off-by: Abhishek Bansal <abhishekbansal2002@gmail.com>
2025-07-07 19:11:47 -07:00
dependabot[bot] e2cdaf5f11
chore(deps): bump docker/setup-buildx-action from 3.10.0 to 3.11.1 (#4328)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.10.0 to 3.11.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](b5ca514318...e468171a9d)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: 3.11.1
  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>
2025-06-23 13:11:26 -05:00
Revan Darth f17316b9ac
docs: fix traffic manager note (#4311)
Signed-off-by: Revan Darth <darthrevan344@gmail.com>
2025-06-09 10:16:53 -05:00
dependabot[bot] c179d94d5a
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.44.1 to 1.45.1 (#4313)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.44.1 to 1.45.1.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/iot/v1.44.1...service/s3/v1.45.1)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  dependency-version: 1.45.1
  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>
2025-06-09 10:16:32 -05:00
github-actions[bot] 4025384e2e
docs: Update Changelog (#4306)
* update changelog

* Update CHANGELOG.md

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2025-06-05 13:14:33 +00:00
Jan Konarzewski 02cf24ebb3
docs: fix links in canary docs to other docs (#4303)
docs(canaries): fix links to other docs

Signed-off-by: Jan Konarzewski <jan.konarzewski@wolt.com>
2025-06-04 10:40:21 -05:00
Jayendra Parsai 8668348cd4
fix: code weakness of path traversal (#4278)
Signed-off-by: Jayendra Parsai <jparsai@jparsai-thinkpadp1gen4i.remote.csb>
Co-authored-by: Jayendra Parsai <jparsai@jparsai-thinkpadp1gen4i.remote.csb>
2025-05-30 21:21:19 +00:00
Kostis (Codefresh) 5ccf0a71e0
docs: explain skew policy between the kubectl plugin and the controller (#4300)
* docs: explain version skew policy

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>

* docs: explain version skew policy - added links

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>

---------

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
2025-05-30 21:20:45 +00:00
Johannes Kleinlercher 3f677349be
fix: remove preserveUnknownFields to avoid OutOfSync in ArgoCD. Fixes #1272 (#4277)
* fix: remove preserveUnknownFields to avoid OutOfSync in ArgoCD

fixes https://github.com/argoproj/argo-rollouts/issues/1272

Signed-off-by: Johannes Kleinlercher <johannes.kleinlercher@suxess-it.com>

* chore: added suxess-it as users

Signed-off-by: Johannes Kleinlercher <johannes.kleinlercher@suxess-it.com>

* fix: remove preserveUnknownFields in gen-crd-spec

Signed-off-by: Johannes Kleinlercher <johannes.kleinlercher@suxess-it.com>

---------

Signed-off-by: Johannes Kleinlercher <johannes.kleinlercher@suxess-it.com>
2025-05-30 09:17:55 -05:00
dependabot[bot] db79990787
chore(deps): bump codecov/codecov-action from 5.4.2 to 5.4.3 (#4283)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.4.2 to 5.4.3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](ad3126e916...18283e04ce)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.4.3
  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>
2025-05-30 09:05:37 -05:00
Takumi Sue 599e7fa54e
docs: fix broken link (#4289)
docs: fix link

Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>
2025-05-30 08:50:06 -05:00
Tyler Auerbeck 473c14e360
ci: bump golangci-lint to v2 (#4290)
bump golangci-lint to v2

Signed-off-by: Tyler Auerbeck <tylerauerbeck@users.noreply.github.com>
Co-authored-by: Tyler Auerbeck <tylerauerbeck@users.noreply.github.com>
2025-05-30 08:48:19 -05:00
dependabot[bot] 0a15908d66
chore(deps): bump docker/build-push-action from 6.16.0 to 6.18.0 (#4298)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.16.0 to 6.18.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](14487ce63c...263435318d)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.18.0
  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>
2025-05-30 08:38:45 -05:00
Peter Jiang ccf0be9ccc
fix: abort scenario where canary/stable service is not provided (#4299)
* fix: fix abort scenario where canary/stable service is not provided

Signed-off-by: Peter Jiang <peterjiang823@gmail.com>

* remove not needed code

Signed-off-by: Peter Jiang <peterjiang823@gmail.com>

* Modularize tests

Signed-off-by: Peter Jiang <peterjiang823@gmail.com>

* fix tests

Signed-off-by: Peter Jiang <peterjiang823@gmail.com>

* Refactor code to handle only checking relavant RS and return nil

Signed-off-by: Peter Jiang <peterjiang823@gmail.com>

* update test

Signed-off-by: Peter Jiang <peterjiang823@gmail.com>

* update test

Signed-off-by: Peter Jiang <peterjiang823@gmail.com>

---------

Signed-off-by: Peter Jiang <peterjiang823@gmail.com>
2025-05-30 08:38:01 -05:00
Ciprian Hacman 6e7560ad8d
fix: update main command description for retry (#4301)
* Fix main command description for retry

Signed-off-by: Ciprian Hacman <ciprian@hakman.dev>

* Add Microsoft to the users list

Signed-off-by: Ciprian Hacman <ciprian@hakman.dev>

* Update generated docs

Signed-off-by: Ciprian Hacman <ciprian@hakman.dev>

---------

Signed-off-by: Ciprian Hacman <ciprian@hakman.dev>
2025-05-30 08:33:23 -05:00
Travis Perdue 8f536b4beb
refactor(controller): context refactor (#4291)
* add lo package

Signed-off-by: Travis Perdue <perduetravis@gmail.com>

* remove repetitive boolean checks

Signed-off-by: Travis Perdue <perduetravis@gmail.com>

* remove accidental package add

Signed-off-by: Travis Perdue <perduetravis@gmail.com>

* fix vendor package snafu

Signed-off-by: Travis Perdue <perduetravis@gmail.com>

* restore log; tweak if conditions

Signed-off-by: Travis Perdue <perduetravis@gmail.com>

---------

Signed-off-by: Travis Perdue <perduetravis@gmail.com>
2025-05-27 12:00:00 -05:00
T Nolan 2e31d0f550
docs: adding more information about flag to document (#4240) (#4280)
* Adding more information about flag

Signed-off-by: Tavi Nolan <Tavi.Nolan@fmr.com>

* Updating --aws-region note

Signed-off-by: Tavi Nolan <Tavi.Nolan@fmr.com>

---------

Signed-off-by: Tavi Nolan <Tavi.Nolan@fmr.com>
Co-authored-by: Tavi Nolan <Tavi.Nolan@fmr.com>
2025-05-19 17:02:28 +00:00
Travis Perdue b32ed29b43
chore: fix deprecation (pointer -> ptr) (#4286)
pointer -> ptr

Signed-off-by: Travis Perdue <perduetravis@gmail.com>
2025-05-19 07:52:06 -05:00
Kostis (Codefresh) 287acaa919
chore: Improve logging (#4266)
Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
Co-authored-by: pashakostohrys <pavel@codefresh.io>
2025-05-18 10:20:01 -05:00
Kylash M R e9ac866296
docs: Update USERS.md - adding Schneider Electric (#4272)
Update USERS.md - adding Schneider Electric

Signed-off-by: Kylash M R <105107963+kylash-mr@users.noreply.github.com>
2025-05-13 15:25:19 +00:00
Tsubasa Nakayama c44c9d2560
fix(dashboard): fix container image input (#4274)
Signed-off-by: Tsubasa Nakayama <app.nakayama@gmail.com>
2025-05-13 10:22:55 -05:00
Jorge Ivan Tapicha Bedoya 16edf3a9b5
docs: Added Yuno to the USERS.md (#4262)
Docs: Added Yuno to the USERS.md

Signed-off-by: Jorge Ivan Tapicha Bedoya <jitapichab@gmail.com>
2025-05-01 10:55:04 -05:00
Aaron Hastings 80493f2018
docs: Fix traffic management link from `features/canary` page (#4269)
* Fix traffic management link from `features/canary` page.

Signed-off-by: Aaron Hastings <aaron@aaronhastings.me>
2025-05-01 10:54:29 -05:00
Kostis (Codefresh) 7ea5086021
docs: mention existing test suite names (#4267)
Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
2025-04-30 17:47:06 +00:00
dependabot[bot] 94376e6ed3
chore(deps): bump softprops/action-gh-release from 2.2.1 to 2.2.2 (#4243)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](c95fe14893...da05d55257)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.2.2
  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>
2025-04-28 12:46:39 -05:00
Zach Aller 06e887dcbf
docs: blue green w/ ALB not supported without downtime (#4259)
* docs: blue green w/ ALB not supported

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* docs: blue green w/ ALB not supported

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* docs: blue green w/ ALB not supported

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* docs: blue green w/ ALB not supported

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* docs: blue green w/ ALB not supported

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* docs: blue green w/ ALB not supported

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* Update docs/features/bluegreen.md

Co-authored-by: Leonardo Luz Almeida <leoluz@users.noreply.github.com>
Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* Update docs/features/bluegreen.md

Co-authored-by: Leonardo Luz Almeida <leoluz@users.noreply.github.com>
Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* docs: blue green w/ ALB not supported

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
Co-authored-by: Leonardo Luz Almeida <leoluz@users.noreply.github.com>
2025-04-28 16:00:01 +00:00
dependabot[bot] 6f391aaf03
chore(deps): bump actions/download-artifact from 4.2.1 to 4.3.0 (#4254)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](95815c38cf...d3f86a106a)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 4.3.0
  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>
2025-04-25 13:13:49 -07:00
dependabot[bot] 9b8655c72c
chore(deps): bump docker/build-push-action from 6.15.0 to 6.16.0 (#4255)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.15.0 to 6.16.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](471d1dc4e0...14487ce63c)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.16.0
  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>
2025-04-25 13:13:22 -07:00
dependabot[bot] b296d31a85
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.29.8 to 1.29.14 (#4230)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.8 to 1.29.14.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.8...config/v1.29.14)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.29.14
  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>
2025-04-24 08:44:59 -07:00
dependabot[bot] 37b9d0bee1
chore(deps): bump codecov/codecov-action from 5.4.0 to 5.4.2 (#4237)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.4.0 to 5.4.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](0565863a31...ad3126e916)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.4.2
  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>
2025-04-24 08:44:35 -07:00
dependabot[bot] e7e512a606
chore(deps): bump sigstore/cosign-installer from 3.8.1 to 3.8.2 (#4247)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.8.1 to 3.8.2.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](d7d6bc7722...3454372f43)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-version: 3.8.2
  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>
2025-04-24 08:43:59 -07:00
Keith Chong c98bc84159
chore(deps): bump github.com/golang-jwt/jwt to 4.5.2 (#4235) (#4236)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2025-04-16 10:02:00 -05:00
dependabot[bot] d2d958d1d2
chore(deps): bump google.golang.org/grpc from 1.70.0 to 1.71.1 (#4227)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.70.0 to 1.71.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.70.0...v1.71.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.71.1
  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>
2025-04-10 11:21:01 -05:00
Yusuke Abe bd7a37c607
fix: follow the kustomize directory structure changes for link (#4224)
Signed-off-by: chansuke <moonset20@gmail.com>
2025-04-08 13:27:47 -05:00
Cheng Fang 39665b087c
chore(deps): bump golangci-lang from v1.61.0 to v1.64.8 (#4213)
Signed-off-by: Cheng Fang <cfang@redhat.com>
2025-04-08 14:35:33 +00:00
Joe Ton 5fe7bb8963
chore: enrich controller startup log with namespace, ports, and insta… (#4218)
chore: enrich controller startup log with namespace, ports, and instanceID

Signed-off-by: Joe Ton <joe@tonindustries.com>
2025-04-08 09:15:23 -05:00
dependabot[bot] bd6ec088f4
chore(deps): bump golang.org/x/oauth2 from 0.26.0 to 0.29.0 (#4219)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.26.0 to 0.29.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.26.0...v0.29.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.29.0
  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>
2025-04-08 09:14:36 -05:00
Jesse Suen 2d24489418
fix: restarts during updates could cause downtime (#4221)
Signed-off-by: Jesse Suen <jesse@akuity.io>
2025-04-08 09:13:03 -05:00
Salvador Montiel 3427b15786
chore: Fix Traefik name (#4217)
Signed-off-by: Salvador Montiel <salvadormontiel8@gmail.com>
2025-04-07 11:05:33 -05:00
Dag Andersen 2583845f27
chore: Add Doubble to official USERS.md (#4214)
docs(users): Add Doubble to official USERS.md

Signed-off-by: Dag Andersen <dagbjerreandersen@gmail.com>
2025-04-03 22:24:40 +00:00
github-actions[bot] f4f7eabd6b
docs: Update Changelog (#4202)
update changelog

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
2025-03-22 03:53:31 +00:00
Zach Aller 963e4f291b
fix: Revert "fix(controller): rollout stuck in `Progressing`. fixes #3988" (#4201)
Revert "fix(controller):  rollout stuck in `Progressing`. fixes #3988 (#4072)"

This reverts commit f4289b70eb.
2025-03-21 14:06:41 -05:00
Yurii 38c3ff3584
fix(analysis): prevent promotion on inconclusive background run. Fixes: #3850 (#3873)
* test: add test for background analysis with inconclusive result

Signed-off-by: Yurii Popivniak <ypopivniak@cargurus.com>

* fix: prevent promotion on inconclusive background run

Signed-off-by: Yurii Popivniak <ypopivniak@cargurus.com>

* fix: e2e test for inconclusive analysisrun

Signed-off-by: Yurii Popivniak <ypopivniak@cargurus.com>

---------

Signed-off-by: Yurii Popivniak <ypopivniak@cargurus.com>
2025-03-21 13:58:51 -05:00
github-actions[bot] 88f902cfcb
docs: Update Changelog (#4199)
* update changelog

* Update CHANGELOG.md for version 1.8.0

---------

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2025-03-20 17:16:54 +00:00
dependabot[bot] d49ab7eb0f
chore(deps): bump actions/setup-go from 5.3.0 to 5.4.0 (#4197)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5.3.0...v5.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 09:00:43 -05:00
dependabot[bot] 5bbc3723e2
chore(deps): bump actions/download-artifact from 4.2.0 to 4.2.1 (#4198)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](b14cf4c926...95815c38cf)

---
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>
2025-03-20 09:00:13 -05:00
dependabot[bot] 2b653644c0
chore(deps): bump docker/login-action from 3.3.0 to 3.4.0 (#4191)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](9780b0c442...74a5d14239)

---
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>
2025-03-19 09:45:27 -05:00
dependabot[bot] 88e408d957
chore(deps): bump actions/download-artifact from 4.1.9 to 4.2.0 (#4194)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.9 to 4.2.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](cc20338598...b14cf4c926)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  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>
2025-03-19 09:45:11 -05:00
Anand Francis Joseph 507dc0c233
chore(deps): Updated go version in go.mod file (#4182)
Updated go version in go.mod file

Signed-off-by: Anand Francis Joseph <anjoseph@redhat.com>
2025-03-15 08:34:33 -05:00
Steve Ramage 659c13934f
docs: Improve the Istio documentation and some grammar tweaks. Fixes #4163 (#4164)
docs: fix some typos and tweaks to istio documentation

Signed-off-by: Steve Ramage <gitcommits@sjrx.net>
Co-authored-by: Steve Ramage <gitcommits@sjrx.net>
2025-03-12 14:50:34 -05:00
Abhish2702 933b7b3b1a
fix: guardrail to not overload stable replicaset (#3878)
* fix: unexpected downtime in rollouts

Signed-off-by: Abhishek Bansal <abhibansal@abhisheks-mbp-7.corp.adobe.com>

* lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Abhishek Bansal <abhibansal@abhisheks-mbp-7.corp.adobe.com>
Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
Co-authored-by: Abhishek Bansal <abhibansal@abhisheks-mbp-7.corp.adobe.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2025-03-10 11:35:33 -05:00
chengjoey f4289b70eb
fix(controller): rollout stuck in `Progressing`. fixes #3988 (#4072)
fix rollout stuck in `Progressing`

Signed-off-by: joey <zchengjoey@gmail.com>
2025-03-06 09:29:17 -06:00
dependabot[bot] 37368106ab
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.44.0 to 1.44.1 (#4172)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.44.0 to 1.44.1.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.44.0...service/iot/v1.44.1)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-03-05 12:01:10 -06:00
Andrii Korotkov aa243dbba9
chore: Add Verkada to the list of users (#4176)
Signed-off-by: Andrii Korotkov <andrii.korotkov@verkada.com>
2025-03-05 12:00:45 -06:00
Michael Crenshaw 7c0f995d8c
chore: use internal errors util instead of pkg's (#4171)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2025-03-05 17:33:12 +00:00
dependabot[bot] 9e71a87087
chore(deps): bump slsa-framework/slsa-github-generator from 2.0.0 to 2.1.0 (#4152)
chore(deps): bump slsa-framework/slsa-github-generator

Bumps [slsa-framework/slsa-github-generator](https://github.com/slsa-framework/slsa-github-generator) from 2.0.0 to 2.1.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/v2.0.0...v2.1.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>
2025-03-04 08:31:17 -06:00
dependabot[bot] 48377540ec
chore(deps): bump docker/setup-buildx-action from 3.9.0 to 3.10.0 (#4167)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.9.0 to 3.10.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](f7ce87c1d6...b5ca514318)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-04 08:29:58 -06:00
dependabot[bot] 451ea40086
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.15 to 1.44.0 (#4169)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.15 to 1.44.0.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/cloudwatch/v1.43.15...service/s3/v1.44.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-03-04 08:29:14 -06:00
Yusuke Abe b69c07cdf7
fix(dashboard): Revert react-scripts upgrade due to performance regression. Fixes #4122 (#4166)
fix(dashboard): revert `react-scripts`` upgrade to restore performance

This reverts commit 2e7cf6932a.

Signed-off-by: chansuke <moonset20@gmail.com>
2025-03-03 16:29:01 -06:00
dependabot[bot] 2213b07592
chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.53.0 to 2.54.0 (#4150)
chore(deps): bump github.com/newrelic/newrelic-client-go/v2

Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.53.0 to 2.54.0.
- [Release notes](https://github.com/newrelic/newrelic-client-go/releases)
- [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.53.0...v2.54.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-03 15:48:36 -06:00
dependabot[bot] e033914389
chore(deps): bump actions/download-artifact from 4.1.8 to 4.1.9 (#4154)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.8 to 4.1.9.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](fa0a91b85d...cc20338598)

---
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>
2025-03-03 15:47:26 -06:00
dependabot[bot] e876f43be9
chore(deps): bump codecov/codecov-action from 5.3.1 to 5.4.0 (#4157)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.3.1 to 5.4.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](13ce06bfc6...0565863a31)

---
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>
2025-03-03 15:47:03 -06:00
dependabot[bot] 7b9279c5ae
chore(deps): bump docker/build-push-action from 6.14.0 to 6.15.0 (#4158)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.14.0 to 6.15.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](0adf995921...471d1dc4e0)

---
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>
2025-03-03 15:46:25 -06:00
dependabot[bot] 6fbb625bdf
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.29.6 to 1.29.8 (#4160)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.6 to 1.29.8.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.6...config/v1.29.8)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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>
2025-03-03 15:46:05 -06:00
Matias Reparaz 3cb61fa80a
docs: Update USERS.md (#4162)
Update USERS.md

Adding X3M ads to argo-rollouts users

Signed-off-by: Matias Reparaz <mreparaz@gmail.com>
2025-03-03 15:45:42 -06:00
dependabot[bot] 444094a1ca
chore(deps): bump docker/setup-qemu-action from 3.4.0 to 3.6.0 (#4165)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.4.0 to 3.6.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](4574d27a47...29109295f8)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-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>
2025-03-03 11:29:30 -06:00
Jean Morais 77a139861c
fix(trafficrouting): patch VirtualService when there is only one named route (#4055)
* fix(trafficrouting): patch VirtualService when there is only one named route

Signed-off-by: Jean Morais <jeancdemorais@gmail.com>

* test(trafficrouting): fix TestGetHttpRouteIndexesToPatch

Signed-off-by: Jean Morais <jeancdemorais@gmail.com>

---------

Signed-off-by: Jean Morais <jeancdemorais@gmail.com>
2025-02-21 20:18:01 +00:00
Zach Aller 5e6936e06f
fix!: subresource scale selector changed for traffic routed canary (#4074)
* fix: subresouce scale selector for traffic routed canary

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: fix tests

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* chore: fix lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: add code docs

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: standardize test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2025-02-21 13:32:01 -06:00
Zach Aller 6e43cff7b2
fix: loop when paused and completed (#4134)
* fix: loop when paused and completed

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: loop when paused and completed

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: loop when paused and completed

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* cleanup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add e2e tests

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: loop when paused and completed

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: loop when paused and completed

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: loop when paused and completed

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* cleanup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add e2e tests

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add comments

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* use function for completed

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove un-used variable

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2025-02-21 13:16:41 -06:00
dependabot[bot] e4e1942a0c
chore(deps): bump docker/build-push-action from 6.13.0 to 6.14.0 (#4141)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.13.0 to 6.14.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](ca877d9245...0adf995921)

---
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>
2025-02-21 08:29:15 -06:00
Takayuki Takagi 494bfd909e
fix(metricprovider): not require address in kubernetes secret for Datadog. Fixes #4103 (#4145)
fix(metricprovider): not require address in kubernetes secret for Datadog

Signed-off-by: Takayuki Takagi <takagi.takayuki.yuuki@gmail.com>
2025-02-21 08:23:55 -06:00
dependabot[bot] d35fcb5b4c
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.14 to 1.43.15 (#4144)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.14 to 1.43.15.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/cloudwatch/v1.43.14...service/cloudwatch/v1.43.15)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-02-21 07:39:46 -06:00
dependabot[bot] 1672c67065
chore(deps): bump sigstore/cosign-installer from 3.8.0 to 3.8.1 (#4146)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.8.0 to 3.8.1.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](c56c2d3e59...d7d6bc7722)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-21 07:39:28 -06:00
dependabot[bot] 445e1c2b78
chore(deps): bump github.com/spf13/cobra from 1.8.1 to 1.9.1 (#4135)
Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.8.1 to 1.9.1.
- [Release notes](https://github.com/spf13/cobra/releases)
- [Commits](https://github.com/spf13/cobra/compare/v1.8.1...v1.9.1)

---
updated-dependencies:
- dependency-name: github.com/spf13/cobra
  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>
2025-02-19 08:33:55 -06:00
dependabot[bot] cb7c0fc7c8
chore(deps): bump github.com/aws/smithy-go from 1.22.2 to 1.22.3 (#4136)
Bumps [github.com/aws/smithy-go](https://github.com/aws/smithy-go) from 1.22.2 to 1.22.3.
- [Release notes](https://github.com/aws/smithy-go/releases)
- [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/smithy-go/compare/v1.22.2...v1.22.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-19 08:33:28 -06:00
dependabot[bot] 76b3898c04
chore(deps): bump golang.org/x/sync from 0.10.0 to 0.11.0 (#4132)
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.10.0 to 0.11.0.
- [Commits](https://github.com/golang/sync/compare/v0.10.0...v0.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-14 10:09:37 -06:00
mitchell amihod a748f05fde
fix(experiments): fire rollout event on experiment step (#4124)
* chore: ignore all debug_bin*

Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com>

* feat(experiments): Add a utility to check if an experiment belongs to a Rollout. We can then identify when an experiment is a Step in a Rollout.

Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com>

* chore: typo

Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com>

* feat(experiments): Fire k8s Event bound to the Rollout when it owns the Experiment

Addresses #4009. This change will fire Analysis Run events bound to the parent Rollout object when the Experiment is a Step in the Rollout.

Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com>

* Loop through ownerReferences to find the rollout reference.

If we pass belongs to rollout check, we know there is a rollout to find.

Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com>

* Tighten things up - don't need a bool - fetch the ref or nil

Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com>

---------

Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com>
2025-02-14 10:09:09 -06:00
Jordan Rodgers d8994c0b19
feat: reconcile pod ephemeral metadata in parallel (#4130)
* perf: reconcile pod ephemeral metadata in parallel

Signed-off-by: Jordan Rodgers <jrodgers@figma.com>

* update tests for multiple pods

Signed-off-by: Jordan Rodgers <jrodgers@figma.com>

---------

Signed-off-by: Jordan Rodgers <jrodgers@figma.com>
2025-02-13 10:21:32 -06:00
Zach Aller a312e28021
fix: nil pointer on logging (#4127)
Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2025-02-11 21:44:28 -06:00
dependabot[bot] 44eee2ec3b
chore(deps): bump docker/setup-qemu-action from 3.3.0 to 3.4.0 (#4120)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](53851d1459...4574d27a47)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-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>
2025-02-07 14:46:07 +00:00
dependabot[bot] a9e10fb73e
chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.52.0 to 2.53.0 (#4102)
chore(deps): bump github.com/newrelic/newrelic-client-go/v2

Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.52.0 to 2.53.0.
- [Release notes](https://github.com/newrelic/newrelic-client-go/releases)
- [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.52.0...v2.53.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-07 08:21:27 -06:00
ayureidini 420aacb133
fix(experiments): propagate rolouts labels to experiments and replicasets (#4118)
fix(experiments): propagate rolouts labels to experiments and replica sets

Enhancement ticket: https://github.com/argoproj/argo-rollouts/issues/4113
This can be useful for complying to Tagging Policy imposed at cluster level
since there is no mechanism to add custom labels to Experiments and their
associated ReplicaSets.
Indeed, this could enable automatic reporting but also give required information
for investigation.

Signed-off-by: Ahmed YUREIDINI NOGALES <ahmed.yureidini@gmail.com>
Co-authored-by: Ahmed YUREIDINI NOGALES <ayureidininogales@ncelrnd2709.nce.amadeus.net>
2025-02-07 08:20:59 -06:00
dependabot[bot] cbf36efaf8
chore(deps): bump google.golang.org/protobuf from 1.36.4 to 1.36.5 (#4119)
Bumps google.golang.org/protobuf from 1.36.4 to 1.36.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-07 08:17:40 -06:00
dependabot[bot] c8f165c1ca
chore(deps): bump docker/setup-buildx-action from 3.8.0 to 3.9.0 (#4121)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.8.0 to 3.9.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](6524bf65af...f7ce87c1d6)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-07 08:15:41 -06:00
dependabot[bot] 70a946d56e
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.12 to 1.43.14 (#4115)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.12 to 1.43.14.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/cloudwatch/v1.43.12...service/cloudwatch/v1.43.14)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-02-06 22:58:07 +00:00
dependabot[bot] 1d47a97cd3
chore(deps): bump golang.org/x/oauth2 from 0.25.0 to 0.26.0 (#4108)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.25.0...v0.26.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-06 16:18:07 -06:00
dependabot[bot] fa17918a9e
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.29.4 to 1.29.6 (#4116)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.4 to 1.29.6.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.4...config/v1.29.6)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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>
2025-02-06 16:17:15 -06:00
dependabot[bot] c3407844ca
chore(deps): bump sigstore/cosign-installer from 3.7.0 to 3.8.0 (#4105)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](dc72c7d5c4...c56c2d3e59)

---
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>
2025-02-06 16:16:58 -06:00
Zach Aller ea914af830
fix: redo PR 3639 (#4114)
Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2025-02-06 16:15:47 -06:00
Gonçalo Montalvão Marques 6761843977
docs: fix markdown rendering (#4109)
Signed-off-by: Gonçalo Montalvão Marques <9379664+gonmmarques@users.noreply.github.com>
2025-02-05 10:34:28 -06:00
Jordan Rodgers f829ae7984
fix: check ephemeral metadata is set before delete (#4089)
* fix: check ephemeral metadata is set before delete

Signed-off-by: Jordan Rodgers <jrodgers@figma.com>

* add test case

Signed-off-by: Jordan Rodgers <jrodgers@figma.com>

* address test comments

Signed-off-by: Jordan Rodgers <jrodgers@figma.com>

---------

Signed-off-by: Jordan Rodgers <jrodgers@figma.com>
2025-02-03 20:18:56 -06:00
dependabot[bot] db8e065044
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.29.3 to 1.29.4 (#4098)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.3 to 1.29.4.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.3...config/v1.29.4)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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>
2025-02-03 17:07:37 +00:00
Ville Vesilehto 42117f9af4
fix: correct typo in linter settings key name (#4094)
The linter settings key was incorrectly named "linter-settings" instead of
"linters-settings", preventing proper parsing of goimports configuration.
This fixes the local-prefixes setting for import organization.

All affected files have been automatically reformatted to comply with the
now-active goimports rules for import ordering and grouping.

Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
2025-02-03 10:16:38 -06:00
dependabot[bot] 7695f8a8de
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.11 to 1.43.12 (#4099)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.11 to 1.43.12.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/cloudwatch/v1.43.11...service/cloudwatch/v1.43.12)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-02-03 10:12:22 -06:00
dependabot[bot] 4ecce02e70
chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.35.0 to 1.36.0 (#4100)
Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.35.0 to 1.36.0.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.35.0...v1.36.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-03 10:12:03 -06:00
dependabot[bot] 4580c2d1e2
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.10 to 1.43.11 (#4091)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.10 to 1.43.11.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fsx/v1.43.10...service/cloudwatch/v1.43.11)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-01-31 17:58:17 +00:00
dependabot[bot] 73fda66371
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.29.2 to 1.29.3 (#4092)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.2 to 1.29.3.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.2...config/v1.29.3)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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>
2025-01-31 11:13:01 -06:00
github-actions[bot] 38ed49959b
docs: Update Changelog (#4088)
* update changelog

* Update CHANGELOG.md formatting

---------

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2025-01-31 15:39:08 +00:00
Zach Aller 4f5d93bbe6
fix!: make `.spec.selector` immutable (#4084)
* fix: make selector immutable

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: make selector immutable

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: make selector optional for workloadRef

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2025-01-30 10:07:11 -06:00
dependabot[bot] 723e81ca69
chore(deps): bump github.com/evanphx/json-patch/v5 from 5.9.10 to 5.9.11 (#4085)
Bumps [github.com/evanphx/json-patch/v5](https://github.com/evanphx/json-patch) from 5.9.10 to 5.9.11.
- [Release notes](https://github.com/evanphx/json-patch/releases)
- [Commits](https://github.com/evanphx/json-patch/compare/v5.9.10...v5.9.11)

---
updated-dependencies:
- dependency-name: github.com/evanphx/json-patch/v5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-30 09:52:51 -06:00
dependabot[bot] 236f878447
chore(deps): bump google.golang.org/grpc from 1.69.4 to 1.70.0 (#4086)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.69.4 to 1.70.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.69.4...v1.70.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-30 09:52:29 -06:00
dependabot[bot] dfa0eaef7c
chore(deps): bump github.com/evanphx/json-patch/v5 from 5.9.0 to 5.9.10 (#4080)
Bumps [github.com/evanphx/json-patch/v5](https://github.com/evanphx/json-patch) from 5.9.0 to 5.9.10.
- [Release notes](https://github.com/evanphx/json-patch/releases)
- [Commits](https://github.com/evanphx/json-patch/compare/v5.9.0...v5.9.10)

---
updated-dependencies:
- dependency-name: github.com/evanphx/json-patch/v5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-28 08:44:33 -06:00
dependabot[bot] 78682686b9
chore(deps): bump github.com/hashicorp/go-plugin from 1.6.2 to 1.6.3 (#4081)
Bumps [github.com/hashicorp/go-plugin](https://github.com/hashicorp/go-plugin) from 1.6.2 to 1.6.3.
- [Release notes](https://github.com/hashicorp/go-plugin/releases)
- [Changelog](https://github.com/hashicorp/go-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/go-plugin/compare/v1.6.2...v1.6.3)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/go-plugin
  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>
2025-01-28 08:44:08 -06:00
dependabot[bot] c25954dccf
chore(deps): bump google.golang.org/protobuf from 1.36.3 to 1.36.4 (#4082)
Bumps google.golang.org/protobuf from 1.36.3 to 1.36.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-28 08:43:46 -06:00
Kostis (Codefresh) f237af07be
chore: security fix https://nvd.nist.gov/vuln/detail/CVE-2023-46402 (#4083)
* chore: security fix https://nvd.nist.gov/vuln/detail/CVE-2023-46402

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>

* docs: GitHub notification reference

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

---------

Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>
2025-01-28 08:43:22 -06:00
chengjoey b101632af0
chore(deps): fix go list -m all show `unknown revision v0.0.0` (#4071)
fix go list -m all show `unknown revision v0.0.0`

Signed-off-by: joey <zchengjoey@gmail.com>
2025-01-27 16:49:42 -06:00
dependabot[bot] b6a9bec292
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.29.0 to 1.29.2 (#4077)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.0 to 1.29.2.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.29.0...config/v1.29.2)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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>
2025-01-27 17:18:11 +00:00
dependabot[bot] e225d88da8
chore(deps): bump docker/build-push-action from 6.12.0 to 6.13.0 (#4076)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.12.0 to 6.13.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](67a2d409c0...ca877d9245)

---
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>
2025-01-27 17:03:19 +00:00
dependabot[bot] 086d4cb755
chore(deps): bump actions/setup-go from 5.2.0 to 5.3.0 (#4066)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5.2.0...v5.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 10:33:55 -06:00
dependabot[bot] 8b5ecaed16
chore(deps): bump codecov/codecov-action from 5.1.2 to 5.3.1 (#4075)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.1.2 to 5.3.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](1e68e06f1d...13ce06bfc6)

---
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>
2025-01-27 10:21:36 -06:00
dependabot[bot] 7d02604f6d
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.8 to 1.43.10 (#4078)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.8 to 1.43.10.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fsx/v1.43.8...service/fsx/v1.43.10)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-01-27 10:20:38 -06:00
dependabot[bot] c10bf66176
chore(deps): bump google.golang.org/protobuf from 1.36.2 to 1.36.3 (#4057)
Bumps google.golang.org/protobuf from 1.36.2 to 1.36.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-17 08:37:26 -06:00
github-actions[bot] 99903543ee
docs: Update Changelog (#4056)
* update changelog

* Update CHANGELOG.md formatting

---------

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2025-01-16 20:21:13 +00:00
dependabot[bot] 5905525b4a
chore(deps): bump docker/build-push-action from 6.10.0 to 6.12.0 (#4050)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.10.0 to 6.12.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](48aba3b46d...67a2d409c0)

---
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>
2025-01-16 13:40:28 -06:00
dependabot[bot] d6054867c6
chore(deps): bump docker/setup-qemu-action from 3.2.0 to 3.3.0 (#4034)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](49b3bc8e6b...53851d1459)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-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>
2025-01-16 11:57:31 -06:00
dependabot[bot] 00210827b7
chore(deps): bump google.golang.org/grpc from 1.69.2 to 1.69.4 (#4045)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.69.2 to 1.69.4.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.69.2...v1.69.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-16 10:58:11 -06:00
dependabot[bot] ba05acf4fd
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.6 to 1.43.8 (#4051)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.6 to 1.43.8.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fsx/v1.43.6...service/fsx/v1.43.8)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-01-16 10:57:20 -06:00
dependabot[bot] effef4477a
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.28.10 to 1.29.0 (#4053)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.28.10 to 1.29.0.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.28.10...v1.29.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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>
2025-01-16 09:50:35 -06:00
Zach Aller 50cf6d7de9
fix: remove ReplicaSet write-back (#4044)
* fix: keep informer updated

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: move inside if

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: cleanup logic

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: don't write back to informer at all

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: fix tests

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: remove informer add

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: typo

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: fix lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: cleanup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: cleanup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: update comments

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2025-01-16 09:18:46 -06:00
dependabot[bot] 5c1a2a9000
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.4 to 1.43.6 (#4039)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.4 to 1.43.6.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fsx/v1.43.4...service/fsx/v1.43.6)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-01-13 22:01:07 +00:00
dependabot[bot] 23c40c15ad
chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.51.3 to 2.52.0 (#4031)
chore(deps): bump github.com/newrelic/newrelic-client-go/v2

Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.51.3 to 2.52.0.
- [Release notes](https://github.com/newrelic/newrelic-client-go/releases)
- [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.51.3...v2.52.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 15:23:33 -06:00
dependabot[bot] dbf5588e7e
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.28.7 to 1.28.10 (#4043)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.28.7 to 1.28.10.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.28.7...config/v1.28.10)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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>
2025-01-13 15:22:19 -06:00
dependabot[bot] 00b57266b9
chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.32.7 to 1.32.8 (#4041)
Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.32.7 to 1.32.8.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.32.7...v1.32.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 16:43:09 -06:00
Derek Brown efd3008a34
fix(controller): Fixed broken pprof links #4037 (#4038)
Signed-off-by: Derek Brown <6845676+DerekTBrown@users.noreply.github.com>
2025-01-10 16:42:00 -06:00
Hellspam c0ca5301bf
fix(experiments): move recorder event to after experiment reconciliation, fixes #4021 (#4022)
* fix: move recorder event to after experiment reconcilation, fixes #4021

Signed-off-by: Roy Arnon <roy.a@taboola.com>

* Add Taboola to the user list

---------

Signed-off-by: Roy Arnon <roy.a@taboola.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2025-01-08 18:15:11 +00:00
dependabot[bot] 07c1028545
chore(deps): bump golang.org/x/oauth2 from 0.24.0 to 0.25.0 (#4027)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.24.0 to 0.25.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.24.0...v0.25.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 09:19:59 -06:00
dependabot[bot] 1874afa10d
chore(deps): bump softprops/action-gh-release from 2.2.0 to 2.2.1 (#4028)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](7b4da11513...c95fe14893)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 09:19:23 -06:00
dependabot[bot] dc2e00e3a0
chore(deps): bump google.golang.org/protobuf from 1.36.0 to 1.36.2 (#4029)
Bumps google.golang.org/protobuf from 1.36.0 to 1.36.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 09:18:34 -06:00
dependabot[bot] 097f5be132
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.28.6 to 1.28.7 (#4019)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.28.6 to 1.28.7.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.28.6...config/v1.28.7)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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>
2025-01-06 18:08:38 +00:00
dependabot[bot] fde9cdeba9
chore(deps): bump google.golang.org/grpc from 1.69.0 to 1.69.2 (#4015)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.69.0 to 1.69.2.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.69.0...v1.69.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-06 11:05:38 -06:00
dependabot[bot] 5904f6481f
chore(deps): bump codecov/codecov-action from 5.1.1 to 5.1.2 (#4014)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](7f8b4b4bde...1e68e06f1d)

---
updated-dependencies:
- dependency-name: codecov/codecov-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>
2025-01-06 10:59:34 -06:00
dependabot[bot] 6ca92be1fe
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.43.3 to 1.43.4 (#4020)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.43.3 to 1.43.4.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ssm/v1.43.3...service/fsx/v1.43.4)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>
2025-01-06 10:58:10 -06:00
Kostis (Codefresh) bdbb0f17c0
docs: mention the Kubernetes Downward API in the ephemeral metadata documentation page (#4025)
* :docs: mention Downward API in docs

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

* :docs: Spelling mistakes

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

---------

Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>
2025-01-05 08:25:32 -06:00
Kostis (Codefresh) 8a800a8717
docs: new syntax for docs conf (#4012)
Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>
2024-12-18 16:13:14 +00:00
Zach Aller 0eec0d89f8
fix: don't over reconcile on error (#4005)
* fix: don't over reconcile on error

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: don't send rollout context on field error

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: cleanup comments

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: cleanup comments

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix typo

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-12-17 16:03:01 +00:00
dependabot[bot] 707bd9f9eb
chore(deps): bump google.golang.org/protobuf from 1.35.2 to 1.36.0 (#4007)
Bumps google.golang.org/protobuf from 1.35.2 to 1.36.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-17 09:18:01 -06:00
dependabot[bot] e808d6ef62
chore(deps): bump docker/setup-buildx-action from 3.7.1 to 3.8.0 (#4006)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.7.1 to 3.8.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](c47758b77c...6524bf65af)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-16 19:08:32 -06:00
dependabot[bot] e5a9307958
chore(deps): bump actions/setup-go from 5.1.0 to 5.2.0 (#4000)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5.1.0...v5.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 10:42:59 -06:00
dependabot[bot] c348ecf270
chore(deps): bump google.golang.org/grpc from 1.68.1 to 1.69.0 (#4001)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.68.1 to 1.69.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.68.1...v1.69.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 10:42:41 -06:00
dependabot[bot] 6858812261
chore(deps): bump softprops/action-gh-release from 2.1.0 to 2.2.0 (#3999)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](01570a1f39...7b4da11513)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 10:42:20 -06:00
Rizwana Naaz 25e2b535db
fix: Upgrade go-retryablehttp to v0.7.7 (#3743)
Upgrade go-retryablehttp to v0.7.7

Signed-off-by: Rizwana777 <rizwananaaz177@gmail.com>
2024-12-12 18:33:41 -06:00
Youssef Rabie 21d57165b9
docs(analysis): add docs for consecutiveSuccessLimit (#3996)
Signed-off-by: Youssef Rabie <youssef.rabie@procore.com>
2024-12-11 14:07:37 -06:00
github-actions[bot] 37193bf535
docs: Update Changelog (#3992)
update changelog

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
2024-12-09 15:44:23 +00:00
William Van Hevelingen 5a1fa164ef
ci: add testing for k8s 1.30 and 1.31 (#3858)
* ci: add testing for k8s 1.30 and 1.31

Signed-off-by: william.vanhevelingen <william.vanhevelingen@acquia.com>

* Update Kubernetes versions' latest flags in workflow

---------

Signed-off-by: william.vanhevelingen <william.vanhevelingen@acquia.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2024-12-07 08:27:04 -06:00
Pierre Baillet (Oct) a4d50d8e65
docs: fix broken links (#3962)
Update notifications.md

- Fix external reference urls.
2024-12-06 11:58:08 -06:00
Nicolas Lamirault b3356a2eda
feat: New Prometheus metric: build_info (#3591)
* new Prometheus metrics build_info

Signed-off-by: Nicolas Lamirault <nicolas.lamirault@gmail.com>

* fix: gofmt

Signed-off-by: Nicolas Lamirault <nicolas.lamirault@gmail.com>

---------

Signed-off-by: Nicolas Lamirault <nicolas.lamirault@gmail.com>
2024-12-06 10:12:10 -06:00
dependabot[bot] c335003427
chore(deps): bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (#3985)
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-06 10:08:34 -06:00
dependabot[bot] db43539773
chore(deps): bump codecov/codecov-action from 5.0.7 to 5.1.1 (#3986)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.0.7 to 5.1.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](015f24e681...7f8b4b4bde)

---
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-12-06 10:08:16 -06:00
William Van Hevelingen 02e9dd62b4
chore(deps): update golang to 1.23 (#3987)
Signed-off-by: william.vanhevelingen <william.vanhevelingen@acquia.com>
2024-12-06 10:07:58 -06:00
William Van Hevelingen 5e39d59311
chore: update golangci-lint to v1.61.0 (#3857)
Signed-off-by: william.vanhevelingen <william.vanhevelingen@acquia.com>
2024-12-05 22:49:01 +00:00
Youssef Rabie 1c6a7ff95a
feat(analysis): Add ConsecutiveSuccessLimit feature to Analysis (#3970)
Signed-off-by: Youssef Rabie <youssef.rabie@procore.com>
2024-12-05 16:14:58 -06:00
dependabot[bot] ffbaaad4ea
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.4 to 1.43.3 (#3980)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.42.4 to 1.43.3.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/emr/v1.42.4...service/ssm/v1.43.3)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 15:23:06 +00:00
Youssef Rabie 1bfcd0c344
fix(controller): fix race condition in updating ephemeral metadata (#3975)
Signed-off-by: Youssef Rabie <youssef.rabie@procore.com>
2024-12-05 08:50:36 -06:00
dependabot[bot] 947437962f
chore(deps): bump google.golang.org/grpc from 1.67.1 to 1.68.1 (#3979)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.67.1 to 1.68.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.67.1...v1.68.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 08:47:52 -06:00
dependabot[bot] 1dbe60c549
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.28.1 to 1.28.6 (#3981)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.28.1 to 1.28.6.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.28.1...config/v1.28.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 08:47:33 -06:00
arouco 7c063168cc
feat(metricprovider): credentials to download plugin (#3905)
* adding logic to defined headers to download plugins from secure sources.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* adding documentation for plugin download headers

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* removing insignificant line.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* increasing coverage

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* adding coverage.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* malformed url case coverage.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

---------

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>
2024-12-04 14:00:30 -06:00
Yusuke Abe 275623fedc
docs: add descriptions for additional default trigger templates (#3960)
Signed-off-by: chansuke <moonset20@gmail.com>
2024-12-04 13:46:08 -06:00
dependabot[bot] c5f3810023
chore(deps): bump codecov/codecov-action from 4.6.0 to 5.0.7 (#3961)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.6.0 to 5.0.7.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](b9fd7d16f6...015f24e681)

---
updated-dependencies:
- dependency-name: codecov/codecov-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-12-04 13:45:33 -06:00
dependabot[bot] f7265e3b45
chore(deps): bump golang.org/x/oauth2 from 0.23.0 to 0.24.0 (#3949)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.23.0 to 0.24.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.23.0...v0.24.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-04 13:45:14 -06:00
dependabot[bot] 25d1a6edc3
chore(deps): bump google.golang.org/protobuf from 1.35.1 to 1.35.2 (#3950)
Bumps google.golang.org/protobuf from 1.35.1 to 1.35.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-04 13:44:56 -06:00
dependabot[bot] c40e5a8883
chore(deps): bump docker/build-push-action from 6.9.0 to 6.10.0 (#3963)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.9.0 to 6.10.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](4f58ea7922...48aba3b46d)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-04 13:42:17 -06:00
Cory Jacobsen 642d031747
fix(dashboard): Cleanup viewcontroller after each request. Fixes #2095 (#3966)
fix(dashboard): cleanup viewcontroller after each request. Fixes #2095

Signed-off-by: Cory Jacobsen <cory@7shifts.com>
2024-12-04 13:34:22 -06:00
Josef Kolář 35147d30a8
fix(dashboard): No redirect loop when running on root. Fixes #3967 (#3968)
fix(dashboard): no redirect loop with running on root

Signed-off-by: Josef Kolář <josef.kolar@firma.seznam.cz>
2024-12-04 13:28:45 -06:00
Kostis (Codefresh) 0607239cc3
docs: document dynamicStableScale (#3978)
Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com>
2024-12-04 13:24:55 -06:00
Cory Jacobsen 2de796683a
docs: add 7shifts to users.md (#3965)
Signed-off-by: Cory Jacobsen <cory@7shifts.com>
2024-12-04 13:00:39 -06:00
dependabot[bot] 5f59344adf
chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.32.3 to 1.32.4 (#3934)
Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.32.3 to 1.32.4.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.32.3...v1.32.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-13 22:33:57 -07:00
dependabot[bot] 1a05565827
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.3 to 1.42.4 (#3935)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.42.3 to 1.42.4.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/emr/v1.42.3...service/emr/v1.42.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-13 22:33:40 -07:00
dependabot[bot] b899cf57f0
chore(deps): bump softprops/action-gh-release from 2.0.9 to 2.1.0 (#3938)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.9 to 2.1.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](e7a8f85e1c...01570a1f39)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-13 22:33:23 -07:00
dependabot[bot] 8ff3d0d77a
chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.50.1 to 2.51.3 (#3939)
chore(deps): bump github.com/newrelic/newrelic-client-go/v2

Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.50.1 to 2.51.3.
- [Release notes](https://github.com/newrelic/newrelic-client-go/releases)
- [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.50.1...v2.51.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-13 22:33:03 -07:00
Jahvon Dockery 7a63088ab2
docs: add CarGurus to users.md (#3940)
Signed-off-by: Jahvon Dockery <jdockery@cargurus.com>
2024-11-13 22:32:44 -07:00
Yusuke Abe e0968a9287
chore: update the link of DCO in PR template (#3944)
chore: update the link of DCO

Signed-off-by: chansuke <moonset20@gmail.com>
2024-11-13 22:32:23 -07:00
Dylan Schlager 53c4f12d66
fix: remove condition where header routes can stay directed at empty service in preemption (#3898)
* fix: remove condition where header routes can stay directed at empty service in preemption

Signed-off-by: Dylan Schlager <dylan.schlager@lattice.com>

* add unit test

Signed-off-by: Dylan Schlager <dylan.schlager@lattice.com>

* lint

Signed-off-by: Dylan Schlager <dylan.schlager@lattice.com>

---------

Signed-off-by: Dylan Schlager <dylan.schlager@lattice.com>
2024-11-02 20:50:29 -05:00
dependabot[bot] 15c723fd81
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.2 to 1.42.3 (#3923)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.42.2 to 1.42.3.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.42.2...service/emr/v1.42.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 11:04:44 -05:00
dependabot[bot] 3296d6d651
chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.48.2 to 2.50.1 (#3924)
chore(deps): bump github.com/newrelic/newrelic-client-go/v2

Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.48.2 to 2.50.1.
- [Release notes](https://github.com/newrelic/newrelic-client-go/releases)
- [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.48.2...v2.50.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 11:04:26 -05:00
dependabot[bot] 7d3627d669
chore(deps): bump softprops/action-gh-release from 2.0.8 to 2.0.9 (#3928)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](c062e08bd5...e7a8f85e1c)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 11:04:02 -05:00
Selçuk Usta 8bd36d813b
docs(analysis): plugin url is changed and redirected to argoproj-labs project (#3922)
update docs/analysis/plugins.md

Signed-off-by: selcukusta <selcukusta@gmail.com>
2024-10-31 07:42:36 -05:00
Alexandre Gaudreault 68afdbf9b0
docs: document canary step plugin (alpha) (#3906)
* docs(plugins): document canary step plugin (alpha)

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

* add docs for step plugins

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

* mkdocs

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

* spell check

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

* review

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

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-10-29 17:08:32 +00:00
dependabot[bot] 9ea0de1f6e
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.38 to 1.28.1 (#3917)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.38 to 1.28.1.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.38...config/v1.28.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 14:57:17 +00:00
dependabot[bot] 51b02adaba
chore(deps): bump github.com/hashicorp/go-plugin from 1.6.1 to 1.6.2 (#3908)
Bumps [github.com/hashicorp/go-plugin](https://github.com/hashicorp/go-plugin) from 1.6.1 to 1.6.2.
- [Release notes](https://github.com/hashicorp/go-plugin/releases)
- [Changelog](https://github.com/hashicorp/go-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/go-plugin/compare/v1.6.1...v1.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 09:47:46 -05:00
dependabot[bot] cb86d48e57
chore(deps): bump actions/setup-go from 5.0.2 to 5.1.0 (#3912)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5.0.2...v5.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 09:47:20 -05:00
Maksim Bezsaznyj 8503baa8fe
fix(controller): weighted experiment validation should allow delegating to trafficRouter plugins (#3909)
Signed-off-by: Maksim Bezsaznyj <bezmax@gmail.com>
2024-10-29 09:46:58 -05:00
Ian Rudie 869687932a
docs: GTW API support changed to Gloo Gateway instead of GloodMesh (#3914)
correct GTW API support to state Gloo Gateway instead of GloodMesh

Signed-off-by: Ian Rudie <ian.rudie@solo.io>
2024-10-29 09:23:03 -05:00
dependabot[bot] 79c445f48e
chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.32.2 to 1.32.3 (#3919)
Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.32.2 to 1.32.3.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.32.2...v1.32.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 09:22:04 -05:00
Selçuk Usta 8ac6be847a
docs(analysis): new plugin is added to the documentation (#3915)
USERS.md is modified & new plugin is added to the documentation

Signed-off-by: selcukusta <selcukusta@gmail.com>
2024-10-29 09:21:03 -05:00
Alexandre Gaudreault 1264f8d9b3
chore: add step plugin proposal (#3480)
step plugin proposal

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-10-19 18:25:06 +00:00
dependabot[bot] ee356d0aeb
chore(deps): bump google.golang.org/grpc from 1.66.2 to 1.67.1 (#3903)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.66.2 to 1.67.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.66.2...v1.67.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 08:38:55 -05:00
Li Wang b2a6844f26
fix: rollout should skip timeout when paused (#3711)
* fix: rollout should timeout when paused

Signed-off-by: Li Wang <li.wang3@fmr.com>

* chore: add test cases for Rollout timeout when paused or aborted

Signed-off-by: Li Wang <li.wang3@fmr.com>

---------

Signed-off-by: Li Wang <li.wang3@fmr.com>
2024-10-17 10:59:52 -05:00
dependabot[bot] 3cf177dbee
chore(deps): bump docker/setup-buildx-action from 3.6.1 to 3.7.1 (#3876)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.6.1 to 3.7.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](988b5a0280...c47758b77c)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-17 10:51:49 -05:00
Zach Aller de827d4144
fix: check isScalingEvent only on stable and newRS (#3883)
* test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add comments

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* comments

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* no need to check length, same in both versions

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add active filter back

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* rename vars add comments

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove comment

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-10-17 10:49:48 -05:00
dependabot[bot] 060566cbf0
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.8 to 1.42.2 (#3901)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.40.8 to 1.42.2.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/athena/v1.40.8...service/s3/v1.42.2)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-16 21:05:19 -05:00
dependabot[bot] 806d07cca1
chore(deps): bump github.com/aws/smithy-go from 1.21.0 to 1.22.0 (#3885)
Bumps [github.com/aws/smithy-go](https://github.com/aws/smithy-go) from 1.21.0 to 1.22.0.
- [Release notes](https://github.com/aws/smithy-go/releases)
- [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/smithy-go/compare/v1.21.0...v1.22.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-16 16:50:37 +00:00
dependabot[bot] ac5a0d7368
chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.31.0 to 1.32.2 (#3886)
Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.31.0 to 1.32.2.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.31.0...v1.32.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-16 11:50:14 -05:00
dependabot[bot] 6c61ed2a22
chore(deps): bump google.golang.org/protobuf from 1.34.2 to 1.35.1 (#3887)
Bumps google.golang.org/protobuf from 1.34.2 to 1.35.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-16 11:49:57 -05:00
Youssef Rabie 785ea17563
fix(metricprovider): fix handling null values in datadog (#3893)
Signed-off-by: Youssef Rabie <youssef.rabie@procore.com>
2024-10-14 21:00:33 -05:00
dependabot[bot] b0d74e5def
chore(deps): bump golang.org/x/oauth2 from 0.22.0 to 0.23.0 (#3841)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.22.0 to 0.23.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.22.0...v0.23.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 15:04:58 -05:00
dependabot[bot] 9f182220f5
chore(deps): bump codecov/codecov-action from 4.5.0 to 4.6.0 (#3865)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](e28ff129e5...b9fd7d16f6)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 14:52:05 -05:00
Ashu 4afdb85224
fix(dashboard): analysis modal crashed when value not valid (#3881)
* handle the parse issue
Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>

* handle the parse error

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

* handle the parse error

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

* handle the parse error

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

---------

Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
2024-10-09 13:32:09 -05:00
dependabot[bot] d49b3fa166
chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.45.0 to 2.48.2 (#3874)
chore(deps): bump github.com/newrelic/newrelic-client-go/v2

Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.45.0 to 2.48.2.
- [Release notes](https://github.com/newrelic/newrelic-client-go/releases)
- [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.45.0...v2.48.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 12:58:23 -05:00
dependabot[bot] e9dad99810
chore(deps): bump sigstore/cosign-installer from 3.6.0 to 3.7.0 (#3875)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](4959ce089c...dc72c7d5c4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 12:58:06 -05:00
Mate Gogiberidze 50300e5525
docs: add TBC Bank to USERS.md (#3871)
* docs: add TBC Bank to USERS.md

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>

* docs: reordered alpabethical

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>

---------

Signed-off-by: Mate Gogiberidze <gogiberidzemate9@gmail.com>
2024-10-07 10:42:55 -05:00
Taehong Kim 5bcf340a23
docs: Update specification document (#3877)
doc: Update specification document about setCanaryScale

Signed-off-by: kth496 <taehongkim496@gmail.com>
2024-10-07 10:42:38 -05:00
dependabot[bot] 6ced7fc986
chore(deps): bump docker/build-push-action from 6.8.0 to 6.9.0 (#3863)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.8.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](32945a3392...4f58ea7922)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-01 09:55:52 -05:00
dependabot[bot] 3df034c865
chore(deps): bump docker/build-push-action from 6.7.0 to 6.8.0 (#3860)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.8.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5cd11c3a4c...32945a3392)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-30 19:10:28 -05:00
Miles 4e44913329
fix: stop rollout from entering degraded state during blueGreen pause. Fixes #3843 (#3845)
add check for overall pause condition to indefinite step

Signed-off-by: Miles <miles.wilson@wolterskluwer.com>
Co-authored-by: Miles <miles.wilson@wolterskluwer.com>
2024-09-27 14:50:53 +00:00
John Wood 9b60ecaaa2
docs: clarify supported deployment strategies (#3823)
Signed-off-by: John Wood <jmw.home@gmail.com>
2024-09-27 09:13:16 -05:00
dependabot[bot] a0a520c4d7
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.33 to 1.27.38 (#3851)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.33 to 1.27.38.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.33...config/v1.27.38)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-27 09:02:22 -05:00
Youssef Rabie f32b2f3fb5
fix(trafficrouting): add nil check for desired annotations map in ALB… (#3853)
fix(trafficrouting): add nil check for desired annotations map in ALB ingress

Signed-off-by: Youssef Rabie <youssef.rabie@procore.com>
2024-09-27 09:02:05 -05:00
mitchell amihod ff93786194
docs: Update metric job docs with some of the available config options (#3839)
[chore] Update metric job docs with some of the available config options

Signed-off-by: mitchell amihod <4623+meeech@users.noreply.github.com>
2024-09-24 13:51:17 -05:00
Leonardo Luz Almeida a964a8078c
docs: Clarify analysis count with value 0 (#3847)
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2024-09-24 14:30:14 +00:00
dependabot[bot] 00e39b1148
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.5 to 1.40.8 (#3838)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.40.5 to 1.40.8.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/rds/v1.40.5...service/athena/v1.40.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 09:48:56 -05:00
dependabot[bot] c3db7611f4
chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.43.1 to 2.45.0 (#3829)
chore(deps): bump github.com/newrelic/newrelic-client-go/v2

Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.43.1 to 2.45.0.
- [Release notes](https://github.com/newrelic/newrelic-client-go/releases)
- [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.43.1...v2.45.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 09:47:46 -05:00
dependabot[bot] d750376137
chore(deps): bump google.golang.org/grpc from 1.65.0 to 1.66.2 (#3831)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.65.0 to 1.66.2.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.65.0...v1.66.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 09:47:29 -05:00
maru 0258071ccf
docs: fix a link to e2e.yaml (#3834)
Signed-off-by: maru <marumaru.niconico@gmail.com>
2024-09-18 09:44:10 -05:00
Bishal Thapa e51e924133
chore: Add Trustly to USERS.md (#3837)
* chore: Add Trustly to users

Signed-off-by: Bishal Thapa <bishal.thapa@trustly.com>

* Update USERS.md

Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Bishal Thapa <bishal.thapa@trustly.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2024-09-18 14:31:58 +00:00
dependabot[bot] b8a9bf54f8
chore(deps): bump peter-evans/create-pull-request from 6 to 7 (#3819)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7)

---
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-09-09 14:25:12 -05:00
dependabot[bot] 4135fae152
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.31 to 1.27.33 (#3822)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.31 to 1.27.33.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.31...config/v1.27.33)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-09 14:23:49 -05:00
arouco bfef7f0d2b
feat: support multi account Datadog metrics provider (#3787)
* Adding support for multi datadog accounts.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* Removing default secret name in the manifest.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* Adding secret ref to analysis template, analsys run and cluster analysis template.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* reentering removed command

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* Documentation updated

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* Update docs/analysis/datadog.md

Co-authored-by: Thibault Jamet <tjamet@users.noreply.github.com>
Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* Adding removed code and removing string from log.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* Rewriting documentation with the correct flow.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>

* updated credential finders logic and added tests

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>
(cherry picked from commit 36a9c0601eef055eaa88faa8cfd04fd76fc54b87)
Signed-off-by: Ariadna Rouco <ariadna.rouco@adevinta.com>

* Added test case for credentials not found.

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>
(cherry picked from commit 7703ff960f2b27f1fffef234d4c9a686d1375397)
Signed-off-by: Ariadna Rouco <ariadna.rouco@adevinta.com>

* added tests for findCredential method.

(cherry picked from commit eab99be055cff27cab44e76955d8a6611807aaeb)
Signed-off-by: Ariadna Rouco <ariadna.rouco@adevinta.com>

* updating generated.pd.go

Signed-off-by: Ariadna Rouco <ariadna.rouco@adevinta.com>

---------

Signed-off-by: Ariadna Rouco <ariadna.rouco@gmail.com>
Signed-off-by: Ariadna Rouco <ariadna.rouco@adevinta.com>
Co-authored-by: Thibault Jamet <tjamet@users.noreply.github.com>
2024-08-28 00:21:10 +02:00
Wietse Muizelaar 39764fb239
fix(trafficrouting): Fix downtime on initial deployment using Istio DestinationRule Subsets. Fixes #2507 (#3602)
Signed-off-by: Wietse Muizelaar <wmuizelaar@bol.com>
2024-08-28 00:13:16 +02:00
dependabot[bot] 22cdc1f258
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.30 to 1.27.31 (#3807)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.30 to 1.27.31.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.30...config/v1.27.31)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-08-27 17:47:44 +00:00
Jahvon Dockery f9b62a8da5
fix: retain non-nginx canary annotations. Fixes: #1070 (#3806)
fix: retain nginx canary annotations

Signed-off-by: Jahvon Dockery <jdockery@cargurus.com>
2024-08-27 12:21:23 -05:00
dependabot[bot] 8a9ef9f8ee
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.3 to 1.40.5 (#3808)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.40.3 to 1.40.5.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/rds/v1.40.3...service/rds/v1.40.5)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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-08-27 12:10:55 -05:00
dependabot[bot] 23e186e43d
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.27 to 1.27.30 (#3804)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.27 to 1.27.30.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.27...config/v1.27.30)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-08-26 11:46:20 -05:00
Zach Aller 7938e84db6
chore: move ReplicaSet creation and Rollout validation earlier during the reconciliation process. (#3657)
refactor replicaset creation

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-08-26 11:45:50 -05:00
Thomas Martin 80fff8e89c
fix(dashboard): parse analysis values with JSON5 to handle NaN. Fixes #2758 (#3801)
fix(ui analysis-modal): parse analysis values with JSON5 to handle NaN

Signed-off-by: AppliNH <applinh@protonmail.com>
2024-08-22 19:27:51 +02:00
dependabot[bot] a38748ba71
chore(deps): bump github.com/newrelic/newrelic-client-go/v2 from 2.41.2 to 2.43.1 (#3793)
chore(deps): bump github.com/newrelic/newrelic-client-go/v2

Bumps [github.com/newrelic/newrelic-client-go/v2](https://github.com/newrelic/newrelic-client-go) from 2.41.2 to 2.43.1.
- [Release notes](https://github.com/newrelic/newrelic-client-go/releases)
- [Changelog](https://github.com/newrelic/newrelic-client-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-client-go/compare/v2.41.2...v2.43.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-15 08:31:59 -05:00
dependabot[bot] 463b63e6ac
chore(deps): bump github.com/aws/smithy-go from 1.20.3 to 1.20.4 (#3794)
Bumps [github.com/aws/smithy-go](https://github.com/aws/smithy-go) from 1.20.3 to 1.20.4.
- [Release notes](https://github.com/aws/smithy-go/releases)
- [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/smithy-go/compare/v1.20.3...v1.20.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-15 08:31:41 -05:00
dependabot[bot] c1ffa8e1ab
chore(deps): bump docker/build-push-action from 6.6.1 to 6.7.0 (#3791)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.1 to 6.7.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](16ebe778df...5cd11c3a4c)

---
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-08-14 15:54:45 -05:00
Orlando Valdez 97ded54e3f
feat(analysis): Adds timeout property to NewRelic metrics provider. Resolves: #3741 (#3742)
* Add timeout property

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Add option to specify nrql timeout

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Update newrelic docs

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Indent gql query

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Slim down GQL query

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Add missing codegen output after the merge

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Add tests

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Add mock client comments

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Fix response struct

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Codegen after merge

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

---------

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>
2024-08-14 15:54:28 -05:00
github-actions[bot] 36b9e15e39
docs: Update Changelog (#3788)
* update changelog

* Update CHANGELOG.md

---------

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2024-08-13 22:20:50 +00:00
John Wood 0397210a79
feat(controller): enable pprof profiling support (#3769)
* feat(controller): enable pprof profiling

Signed-off-by: John Wood <jmw.home@gmail.com>

* wip

Signed-off-by: John Wood <jmw.home@gmail.com>

* Consolidate --enable-pprof and --pprof-port into single config variable

Signed-off-by: John Wood <jmw.home@gmail.com>

---------

Signed-off-by: John Wood <jmw.home@gmail.com>
2024-08-13 11:27:33 -05:00
dependabot[bot] e619a51a16
chore(deps): bump github.com/influxdata/influxdb-client-go/v2 from 2.13.0 to 2.14.0 (#3786)
chore(deps): bump github.com/influxdata/influxdb-client-go/v2

Bumps [github.com/influxdata/influxdb-client-go/v2](https://github.com/influxdata/influxdb-client-go) from 2.13.0 to 2.14.0.
- [Release notes](https://github.com/influxdata/influxdb-client-go/releases)
- [Changelog](https://github.com/influxdata/influxdb-client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/influxdata/influxdb-client-go/compare/v2.13.0...v2.14.0)

---
updated-dependencies:
- dependency-name: github.com/influxdata/influxdb-client-go/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-13 10:42:18 -05:00
Alexandre Gaudreault 3c15eb1454
fix: replicaSet not scaled down due to incorrect annotations (#3762) (#3784)
dco

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-08-12 12:02:01 -05:00
Kostis (Codefresh) f6ce5ce003
docs: remove obsolete roadmap page (#3783)
Signed-off-by: Kostis Kapelonis <kostis@codefresh.io>
2024-08-12 15:24:31 +00:00
Kevin Ji 6b2ee92915
fix(metricprovider): reuse http.Transport for http.Client (#3780)
The current code creates a new http.Transport for each http.Client that is
created, which leads to a leak in TCP connections due to keep-alive.

Instead, reuse the same http.Transport between requests. According to the
http.Transport docs, this is safe for concurrent use.

Signed-off-by: Kevin Ji <1146876+kevinji@users.noreply.github.com>
2024-08-12 03:10:32 +02:00
Andy Reitz 8f74229d59
docs: Update ephemeral-metadata.md with a small fix (#3782)
Update ephemeral-metadata.md

A small grammatical fix.

Signed-off-by: Andy Reitz <ajr9@po.cwru.edu>
2024-08-12 03:08:37 +02:00
Kevin Ji 54cef88794
chore: capitalize AS in Dockerfile (#3781)
Signed-off-by: Kevin Ji <1146876+kevinji@users.noreply.github.com>
2024-08-12 03:08:13 +02:00
dependabot[bot] 825a7caf88
chore(deps): bump docker/build-push-action from 6.5.0 to 6.6.1 (#3776)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.5.0 to 6.6.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5176d81f87...16ebe778df)

---
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-08-08 10:08:14 -05:00
dependabot[bot] b448b76faf
chore(deps): bump sigstore/cosign-installer from 3.5.0 to 3.6.0 (#3777)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](59acb6260d...4959ce089c)

---
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-08-08 08:59:01 -05:00
Alexandre Gaudreault 74c1a947ab
feat(controller): add canary steps plugin (#3521)
* making code for step plugin

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

* codegen

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

* unit tests

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

* rpc tests

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

* add rpc plugin tests

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

* better message

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

* add order test

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

* implement terminate

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

* Terminate tests

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

* aborted logic + some unit test

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

* unit test

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

* abort test

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

* load plugin

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

* more tests

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

* dont use newStatus

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

* codegen preserve fields

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

* some test before full promote problem

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

* fix full promotion

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

* fix plugins

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

* codegen

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

* add disabled rollout

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

* codegen

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

* fix duration cast

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

* refactor to use context object

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

* adding debug logs.

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

* need to adjust the backoff on each reconcile

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

* fix e2e

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

* unit test

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

* fix abort and promote logic

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

* fix aborted rollout do not retry

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

* add event

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

* change enabled to status

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

* unit tests

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

* more test

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

* cleanup

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

* add docs

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

* docs

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

* makefile for e2e

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

* disable e2e when not configured

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

* Add some UI for the extension

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

* codegen

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2024-08-08 08:58:42 -05:00
Hidetake Iwata 48131ebedc
fix: Support kustomize v5 labels transformer. Fixes #3105 (#3775)
* feat: add rollout-transform-2023-10-09.yaml which has been adapted for kustomize v5

Signed-off-by: Jethro Lee <jethro.lee@a-bly.com>

* Rename to rollout-transform-kustomize-v5.yaml

Signed-off-by: Hidetake Iwata <int128@gmail.com>

* Add link to doc

Signed-off-by: Hidetake Iwata <int128@gmail.com>

---------

Signed-off-by: Jethro Lee <jethro.lee@a-bly.com>
Signed-off-by: Hidetake Iwata <int128@gmail.com>
Co-authored-by: Jethro Lee <jethro.lee@a-bly.com>
2024-08-07 11:29:45 -05:00
benminter-treatwell 827ce595c8
fix(controller): use the stableRS from the rollout context rather tha… (#3664)
* fix(controller): use the stableRS from the rollout context rather than inferring it from the active selector, to deal with the edge case where the stableRS != activeRS during analysis templates

Signed-off-by: ben.minter <ben.minter@treatwell.com>

* fix(controller): update tests which were relying on this bug(?)

Signed-off-by: ben.minter <ben.minter@treatwell.com>

* fix(controller): add clarity to comment in the case there is no stableRS

Signed-off-by: ben.minter <ben.minter@treatwell.com>

* fix(controller): add a test to assert that the stablers is not scaled by the reconiliation on start, by checking the log

Signed-off-by: ben.minter <ben.minter@treatwell.com>

---------

Signed-off-by: ben.minter <ben.minter@treatwell.com>
2024-08-06 10:36:00 -05:00
Aleksander Korzynski 0ca5932701
docs: add Priceline to USERS.md (#3764)
Signed-off-by: Aleksander Korzynski <89802643+akorzy-pl@users.noreply.github.com>
2024-08-06 09:57:18 -05:00
dependabot[bot] cf469839c2
chore(deps): bump golang.org/x/oauth2 from 0.21.0 to 0.22.0 (#3766)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.21.0 to 0.22.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.21.0...v0.22.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-06 09:57:01 -05:00
John Wood f2c737c986
chore: Add Cloudflare to users (#3768)
Add Cloudflare to users

Signed-off-by: John Wood <jmw.home@gmail.com>
2024-08-06 09:56:05 -05:00
Bruno Aumiller Tarijon 708db68ed1
fix(controller): Get the right resourceName for traefik.io.Fixes #3615 (#3759)
Signed-off-by: BrunoTarijon <btarijon@gmail.com>
2024-08-01 09:03:33 -05:00
Martyn Dale 6c873a95ec
fix(dashboard): Update pod status logic to support native sidecars. Fixes #3366 (#3639)
* Update pod status logic to support native sidecars

Signed-off-by: Martyn Dale <mdale@verticalscope.com>

* Fix lint issues

Signed-off-by: Martyn Dale <mdale@verticalscope.com>

---------

Signed-off-by: Martyn Dale <mdale@verticalscope.com>
2024-07-31 09:11:56 -05:00
Kostis (Codefresh) 643d684f51
docs: added clarifications for short releases (#3753)
* docs: added clarifications for short releases

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

* docs: clarify current Argo Rollout behavior

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

* docs: also clarify multiple versions

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-07-30 20:42:26 -05:00
dependabot[bot] 65fc9ef476
chore(deps): bump docker/setup-buildx-action from 3.5.0 to 3.6.1 (#3755)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.5.0 to 3.6.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](aa33708b10...988b5a0280)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-30 09:33:52 -05:00
Zach Aller 3024c2a6fb
chore: use codecov config and only send merged coverage file (#3751)
* make sure config is used and only send merged coverage

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* checkout repo to get codecov config

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* use folder not file

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* disable search

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* switch merged output format

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* stop controller before upload

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* stop controller

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* stop controller

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* only stop on latest

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* print controller pids

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix erro

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add ls

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* kill correct process

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add proper cover for unit to ues with merge

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* upload directory now

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-07-29 14:59:33 -05:00
dependabot[bot] e638c88d40
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.26 to 1.27.27 (#3732)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.26 to 1.27.27.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.26...config/v1.27.27)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-07-25 17:24:21 +00:00
Zach Aller 638ca1b562
fix: separate e2e and unit test reporting uploads (#3747)
* seperate test reporting

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix file name path

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-07-25 09:31:43 -05:00
cyrilico 872f2aca56
feat(controller): Allow specifying full annotations for nginx canary ingresses. (#3671)
* refactor according to suggestions

Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com>

* codegen

Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com>

* missing codegen

Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com>

* Update specification.md

Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com>

* further clarify when to use new field

Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com>

---------

Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com>
2024-07-25 08:51:27 -05:00
Zach Aller d3d630d60f
fix: add secrets so we can download across workflows (#3746)
add secrets so we can download across workflows

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-07-24 18:45:30 -05:00
Zach Aller 9884b2a4c4
fix: e2e test results processing change key name to run-id (#3744)
fix key name to run-id

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-07-24 14:43:27 -05:00
dependabot[bot] f96eaca4ef
chore(deps): bump softprops/action-gh-release from 2.0.6 to 2.0.8 (#3733)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.6 to 2.0.8.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](a74c6b72af...c062e08bd5)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-24 19:10:20 +00:00
Zach Aller c727a3c2b1
chore: code coverage for e2e (#3740)
* first pass at coverage for e2e

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* change folder names

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* only upload latest e2e results

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* change name of step

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix matrix name

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* rename files

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add directory

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* use correct upload name

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* move event file

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* bad move of event_file

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix uncomment

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* only run on testing workflow

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove events from go workflow

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* use new download metho

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove specific file

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* change workflow name

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove double upload

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-07-24 12:48:06 -05:00
dependabot[bot] 5dbd7a8efc
chore(deps): bump docker/setup-qemu-action from 3.1.0 to 3.2.0 (#3736)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](5927c834f5...49b3bc8e6b)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-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-07-23 15:28:07 +00:00
dependabot[bot] 63c0eecf55
chore(deps): bump docker/build-push-action from 6.4.0 to 6.5.0 (#3737)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.4.0 to 6.5.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](a254f8ca60...5176d81f87)

---
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-07-23 09:45:40 -05:00
dependabot[bot] 9a230b37f8
chore(deps): bump docker/setup-buildx-action from 3.4.0 to 3.5.0 (#3738)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](4fd812986e...aa33708b10)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-23 09:45:26 -05:00
dependabot[bot] 1189944e34
chore(deps): bump docker/login-action from 3.2.0 to 3.3.0 (#3739)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](0d4c9c5ea7...9780b0c442)

---
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-07-23 09:45:11 -05:00
Alex Eftimie d962435606
fix(analysis): explicitly set datadog aggregator to last only on v2 (#3730)
* Datadog: explicitly set aggregator to last

the field is required by API and we currently leave it empty string

Signed-off-by: Alex Eftimie <alex.eftimie@getyourguide.com>

* add unit tests

Signed-off-by: Alex Eftimie <alex.eftimie@getyourguide.com>

---------

Signed-off-by: Alex Eftimie <alex.eftimie@getyourguide.com>
2024-07-18 09:20:50 -05:00
dependabot[bot] e4c374d9d7
chore(deps): bump docker/build-push-action from 6.3.0 to 6.4.0 (#3723)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](1a162644f9...a254f8ca60)

---
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-07-16 15:44:52 -05:00
T Nguyen fdcb0d8657
docs: correct the case that autoPromotionSeconds feature is ignored (#2388)
* chore(deps): bump actions/upload-artifact from 2 to 3 (#1973)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)

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

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

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

* chore: sign container images and checksum assets (#2334)

Signed-off-by: Justin Marquis <34fathombelow@protonmail.com>
Signed-off-by: toann <toann@axon.com>

* chore(deps): upgrade ui deps to fix high security cve's (#2345)

* ui: upgrade deps to fix high security cve's

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

* github trigger re-run

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

Signed-off-by: zachaller <zachaller@users.noreply.github.com>
Signed-off-by: toann <toann@axon.com>

* chore(deps): bump imjasonh/setup-crane from 0.1 to 0.2 (#2387)

Bumps [imjasonh/setup-crane](https://github.com/imjasonh/setup-crane) from 0.1 to 0.2.
- [Release notes](https://github.com/imjasonh/setup-crane/releases)
- [Commits](https://github.com/imjasonh/setup-crane/compare/v0.1...v0.2)

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

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

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

* docs: Fix the case that autoPromotionSeconds feature is ignored
Signed-off-by: Toan Nguyen <toann241196@gmail.com>

Signed-off-by: toann <toann@axon.com>

* chore(deps): bump dependabot/fetch-metadata from 1.3.4 to 1.3.5 (#2390)

Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 1.3.4 to 1.3.5.
- [Release notes](https://github.com/dependabot/fetch-metadata/releases)
- [Commits](https://github.com/dependabot/fetch-metadata/compare/v1.3.4...v1.3.5)

---
updated-dependencies:
- dependency-name: dependabot/fetch-metadata
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

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

* Update docs/features/bluegreen.md

Co-authored-by: Rohit Agrawal <rohit.agrawal@databricks.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: toann <toann@axon.com>
Signed-off-by: Justin Marquis <34fathombelow@protonmail.com>
Signed-off-by: zachaller <zachaller@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin Marquis <34fathombelow@protonmail.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
Co-authored-by: toann <toann@axon.com>
Co-authored-by: Rohit Agrawal <rohit.agrawal@databricks.com>
2024-07-11 16:13:57 -05:00
Orlando Valdez d89abb29f8
feat(analysis): Returns the resolved query as metadata in the New Relic provider (#3715)
* Adds newrelic resolved query to metadata

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Fix comment

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Updates tests

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

* Update docs

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>

---------

Signed-off-by: Orlando Valdez <orlando.valdez@creditkarma.com>
2024-07-11 15:36:09 -05:00
dependabot[bot] 3d296535a8
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.24 to 1.27.26 (#3717)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.24 to 1.27.26.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.24...config/v1.27.26)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-07-11 14:23:32 -05:00
dependabot[bot] fdfc75ef4e
chore(deps): bump actions/setup-go from 5.0.1 to 5.0.2 (#3716)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5.0.1...v5.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-11 10:41:58 -05:00
dependabot[bot] 813b94c46d
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.1 to 1.40.3 (#3719)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.40.1 to 1.40.3.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/rds/v1.40.3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.40.1...service/rds/v1.40.3)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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-07-11 10:41:36 -05:00
Matt Kelly 764f530049
docs: copy omission in rollout docs (#3690)
Fix copy omission

Looks like this sentence is incomplete. Might I suggest this change to make it read more naturally?
2024-07-10 08:27:13 -05:00
dependabot[bot] c366c5ac77
chore(deps): bump docker/setup-qemu-action from 3.0.0 to 3.1.0 (#3696)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](68827325e0...5927c834f5)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-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-07-10 08:26:13 -05:00
dependabot[bot] 2fad35394c
chore(deps): bump docker/build-push-action from 6.2.0 to 6.3.0 (#3697)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](15560696de...1a162644f9)

---
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-07-10 08:25:49 -05:00
dependabot[bot] 005ff27d2a
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.23 to 1.27.24 (#3698)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.23 to 1.27.24.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.23...config/v1.27.24)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-07-10 08:25:29 -05:00
Matthew Clarke 3e4ea7429d
feat(metricprovider): add prometheus range query support (#3704)
* feat: add prometheus range query support

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* fix: code-gen

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* fix: handle matrix results from prometheus

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* refactor: remove duplicated code

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* feat: configurable step

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* fix: codegen

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* test: more tests

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* docs: range query docs

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* refactor: expr for prometheus range query start/end

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* fix: lint issue

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* docs: missing codegen

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* fix: PR Fixes

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

---------

Signed-off-by: Matthew Clarke <mclarke@spotify.com>
2024-07-10 08:25:00 -05:00
dependabot[bot] 68f7b41f72
chore(deps): bump docker/setup-buildx-action from 3.3.0 to 3.4.0 (#3705)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](d70bba72b1...4fd812986e)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 10:43:41 -05:00
dependabot[bot] 590206b9bc
chore(deps): bump google.golang.org/grpc from 1.64.0 to 1.65.0 (#3694)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.64.0 to 1.65.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.64.0...v1.65.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-03 11:22:03 -05:00
dependabot[bot] aae86f7604
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.22 to 1.27.23 (#3695)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.22 to 1.27.23.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.22...config/v1.27.23)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-07-03 11:21:46 -05:00
Enrique Tejeda b99767494a
chore: add example for updating all container images in set command (#3667)
Signed-off-by: EnriqueTejeda <quique.tejeda.68@gmail.com>
2024-07-02 10:44:46 -05:00
dependabot[bot] 23436a28c5
chore(deps): bump github.com/aws/smithy-go from 1.20.2 to 1.20.3 (#3685)
Bumps [github.com/aws/smithy-go](https://github.com/aws/smithy-go) from 1.20.2 to 1.20.3.
- [Release notes](https://github.com/aws/smithy-go/releases)
- [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/smithy-go/compare/v1.20.2...v1.20.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-02 10:40:42 -05:00
dependabot[bot] eb1d8b81d9
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.7 to 1.40.1 (#3687)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.38.7 to 1.40.1.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/kendra/v1.38.7...service/s3/v1.40.1)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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-07-02 10:40:22 -05:00
dependabot[bot] 04f8da1d93
chore(deps): bump softprops/action-gh-release from 2.0.5 to 2.0.6 (#3656)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.5 to 2.0.6.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](69320dbe05...a74c6b72af)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-27 11:37:49 -05:00
Psukhe 243ea91767
fix(analysis): Take RollbackWindow into account when Reconciling Analysis Runs. Fixes #3669 (#3670)
* Ensure that BackgroundAnalysisRun does not run when rolling back within RollbackWindow

Signed-off-by: Alex Dunn <adunn@sofi.org>

* Fix linting

Signed-off-by: Alex Dunn <adunn@sofi.org>

---------

Signed-off-by: Alex Dunn <adunn@sofi.org>
2024-06-27 11:37:18 -05:00
Enrique Tejeda f21956c7f1
fix: add update verb to ClusterRole permissions for scaleDown feature. Fixes #3672 (#3675)
fix: add update verb to ClusterRole permissions for scaleDown

Signed-off-by: EnriqueTejeda <quique.tejeda.68@gmail.com>
2024-06-27 11:27:59 -05:00
dependabot[bot] 5996471496
chore(deps): bump docker/build-push-action from 6.1.0 to 6.2.0 (#3676)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](31159d49c0...15560696de)

---
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-27 11:23:48 -05:00
dependabot[bot] f1d4dd2010
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.19 to 1.27.22 (#3680)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.19 to 1.27.22.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.19...config/v1.27.22)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-27 11:21:32 -05:00
github-actions[bot] 0c716e2e60
docs: Update Changelog (#3666)
* update changelog

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2024-06-25 02:13:57 +00:00
dependabot[bot] b5d0818c0f
chore(deps): bump docker/build-push-action from 6.0.2 to 6.1.0 (#3662)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.2 to 6.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](f6010ea701...31159d49c0)

---
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-24 20:40:56 -05:00
yyzxw c43f4fb340
fix: docs site version selector broken (#3590)
Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>
Signed-off-by: root <root@daocloud.io>
2024-06-21 12:30:01 -05:00
dependabot[bot] 72f3dabb01
chore(deps): bump docker/build-push-action from 6.0.0 to 6.0.2 (#3659)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.0 to 6.0.2.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](c382f710d3...f6010ea701)

---
updated-dependencies:
- dependency-name: docker/build-push-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-06-21 10:50:13 -05:00
Zach Aller f2b155d085
chore: don't fail code-cov on failure (#3661)
don't fail on failure

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-06-21 15:44:18 +00:00
dependabot[bot] 4f1edbe933
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.18 to 1.27.19 (#3646)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.18 to 1.27.19.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.18...config/v1.27.19)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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 14:40:11 +00:00
dependabot[bot] 50baf74dad
chore(deps): bump docker/build-push-action from 5.4.0 to 6.0.0 (#3644)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.4.0 to 6.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](ca052bb54a...c382f710d3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 09:07:13 -05:00
dependabot[bot] 5a6ca83afc
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.6 to 1.38.7 (#3647)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.38.6 to 1.38.7.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/kendra/v1.38.6...service/kendra/v1.38.7)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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 09:06:21 -05:00
Zach Aller d1ebbe958c
fix: don't default datadog aggregator (#3643)
* fix: don't default datadog aggregator

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* codegen

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix: don't default datadog aggregator

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-06-17 11:09:11 -05:00
yyzxw b83ef70ff4
chore: fix and add more cli usage case (#3592)
Signed-off-by: xiaowu.zhu <xiaowu.zhu@daocloud.io>
2024-06-17 09:25:37 -05:00
dependabot[bot] 112dd4fad9
chore(deps): bump github.com/spf13/cobra from 1.8.0 to 1.8.1 (#3640)
Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/spf13/cobra/releases)
- [Commits](https://github.com/spf13/cobra/compare/v1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: github.com/spf13/cobra
  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:23:27 -05:00
Tommy Chen 7188d999fb
fix: Add volume for plugin and tmp folder (#3546)
Signed-off-by: Tommy Chen <tommy351@gmail.com>
2024-06-17 09:14:28 -05:00
dependabot[bot] 42cef17568
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.0 to 1.38.6 (#3619)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.38.0 to 1.38.6.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.38.0...service/kendra/v1.38.6)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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 16:36:33 +00:00
dependabot[bot] 84ef9f8cc1
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.16 to 1.27.18 (#3625)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.16 to 1.27.18.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.16...config/v1.27.18)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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 11:03:37 -05:00
dependabot[bot] 8f32113be6
chore(deps): bump google.golang.org/protobuf from 1.34.1 to 1.34.2 (#3633)
Bumps google.golang.org/protobuf from 1.34.1 to 1.34.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-14 11:03:21 -05:00
dependabot[bot] 11089c91d3
chore(deps): bump codecov/codecov-action from 4.4.1 to 4.5.0 (#3634)
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](https://github.com/codecov/codecov-action/compare/v4.4.1...v4.5.0)

---
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 11:03:05 -05:00
github-actions[bot] a2c7dbd029
docs: Update Changelog (#3632)
* update changelog

* Update CHANGELOG.md

---------

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2024-06-13 21:12:30 +00:00
dependabot[bot] 8bf1b5e392
chore(deps): bump docker/build-push-action from 5.3.0 to 5.4.0 (#3624)
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-13 19:45:06 +00:00
dependabot[bot] 0d3ed79079
chore(deps): bump golang.org/x/oauth2 from 0.20.0 to 0.21.0 (#3631)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.20.0 to 0.21.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.20.0...v0.21.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-13 14:28:36 -05:00
Joshua Mathew f656735765
fix: protocol missing in ambassador canary mapping creation. Fixes #3593 (#3603)
fix protocol missing in ambassador canary mapping creation

Signed-off-by: Joshua Mathew <umjoshua@gmail.com>
2024-06-12 15:22:13 -05:00
dependabot[bot] 1d5c9b46e6
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.31.1 to 1.31.3 (#3620)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2

Bumps [github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2](https://github.com/aws/aws-sdk-go-v2) from 1.31.1 to 1.31.3.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.31.1...service/s3/v1.31.3)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2
  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-12 15:18:29 -05:00
May Zhang 7df3d17ac4
fix: when Rollout has pingpong and stable/canary service defined, only alb traffic management uses pingpong. (#3628)
* fix: when Rollout has pingpong and stable/canary service defined, GetStableAndCanaryServices returns based on isPingpongPreferred. Only when it is ALB controller, then isPringpongPreferred is true.

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

* fix lint error

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

* added e2e

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

---------

Signed-off-by: mayz985 <may_zhang@intuit.com>
2024-06-12 15:18:02 -05:00
Zach Aller e20bcde8f3
fix: verify the weight of the alb at the end of the rollout (#3627)
* fix: verify the weight of the alb at the end of the rollout when we auto set max weight

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add unit test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* refactor add unit test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* Trigger Build

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* Trigger Build

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* block reconcile

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add tests

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* rename test and cleanup un-need logic check

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-06-12 12:11:22 -05:00
Zach Aller 32d50b78d3
chore: add codecov token (#3623)
* add codecov token

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fail if we do not upload

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-06-10 16:32:42 +00:00
dependabot[bot] e807d391eb
chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.27.0 to 1.27.2 (#3621)
Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.27.0 to 1.27.2.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.27.0...v1.27.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-10 06:52:04 -07:00
Zach Aller ec18d99102
fix: rs conflict with fallback to patch (#3559)
* fix: fallback to patch on scale conflict

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

fix: switch to retry logic

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

retry experiments

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

remove TODO

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

remove accidental add

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

remove accidental add

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

add retry to setting revision

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

chore(deps): bump slsa-framework/slsa-github-generator from 1.10.0 to 2.0.0 (#3537)

chore(deps): bump slsa-framework/slsa-github-generator

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>

chore(deps): bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (#3522)

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>

chore(deps): bump golangci/golangci-lint-action from 4 to 5 (#3540)

Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 4 to 5.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-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>

docs: provide recommendation for strategies (#3531)

* docs: provide recommendation for strategies

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

* docs: traffic manager clarifications

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

* docs: explain canary with/out traffic manager

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

* docs: add 3 columns on the comparison table

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

---------

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

feat(dashboard): change the color of the current rollout step (#3526)

I feel that having the current (running) step in a orange color is misleading,
as orange usually means warning.

This commit changes the color to the `$argo-running-color`.

Signed-off-by: Alejandro López Sánchez <alejandro.lopez@factorial.co>

chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.37.0 to 1.38.0 (#3525)

chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.37.0 to 1.38.0.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.38.0/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.37.0...service/s3/v1.38.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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>

perform all of set revision actions on retry

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

fix variable

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

add retry counts to log

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

add retry counts to logs

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

clean logs, always dump controller e2e logs

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

lower timeout

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

bump timeout on e2e

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

retry on rollout conflict

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

don't reque on rs changes

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

reque rs

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

bump qps for e2e

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

fix gen-crd

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

switch to patch

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

switch to patch

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

add log

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

move log lines

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

Trigger Build

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

fix one e2e test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

add test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

chore(deps): bump actions/setup-go from 5.0.0 to 5.0.1 (#3552)

Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5.0.0...v5.0.1)

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

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

chore(deps): bump codecov/codecov-action from 4.3.0 to 4.3.1 (#3550)

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4.3.0...v4.3.1)

---
updated-dependencies:
- dependency-name: codecov/codecov-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>

chore(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 (#3548)

Bumps google.golang.org/protobuf from 1.33.0 to 1.34.0.

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

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

refactor

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

add test for updating rs revision

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

add retry for ephemeral metadata

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

clear some fields

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

add logs

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

refactor into function

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

change log

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

switch rollout update to patch fallback

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

siwtch ephemeral metadata sync to shared function

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

siwtch merge type

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

don't update status

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

switch rollout update to not use patch

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

change log

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

switch to small patch

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

some cleanup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

remove not found rollout removal

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

working setup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

fix test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

small cleanup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* typo

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* cleanup commented out code

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* Trigger Build

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* only patch rollouts manged fields

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix flaky test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix flaky test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* reduce patch size

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* get some logs

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* cleanup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* improve tests

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* Trigger Build

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add env var to log diff

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove expirment rs patch

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* imporve logs

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* use correct variable

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* change env var

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix flaky e2e

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix flaky e2e

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix flaky e2e

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove not found rollouts

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* update replica count

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* lint

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* refactor cleanup

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* keep track of UpdatedReplicas on sync

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* some hpa tests and log changes

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove update to UpdatedReplicas

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add more test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* undo change

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add comment to flaky tests

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* cleanup Makefile

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* use labels

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* remove make file change

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add label to test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* review changes

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* change to TODO

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* fix test

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add extra logging for tests

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* Trigger Build

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* add ignore to codecov

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* we always generate patch because we are comparing against emtpy obj

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-06-07 11:53:09 -07:00
Keith Chong 276a66dd12
fix: Update loader-utils to 2.0.4 (#3601)
Signed-off-by: Keith Chong <kykchong@redhat.com>
2024-06-05 10:48:33 -05:00
dependabot[bot] 2c192007df
chore(deps): bump docker/login-action from 3.1.0 to 3.2.0 (#3604)
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-06-03 17:49:15 +00:00
dependabot[bot] 8ee081564f
chore(deps): bump github.com/hashicorp/go-plugin from 1.6.0 to 1.6.1 (#3606)
Bumps [github.com/hashicorp/go-plugin](https://github.com/hashicorp/go-plugin) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/hashicorp/go-plugin/releases)
- [Changelog](https://github.com/hashicorp/go-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/go-plugin/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/go-plugin
  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-03 12:11:43 -05:00
dependabot[bot] 70817c0839
chore(deps): bump google.golang.org/grpc from 1.63.2 to 1.64.0 (#3607)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.63.2 to 1.64.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.63.2...v1.64.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 12:11:16 -05:00
dependabot[bot] 48de5b20bc
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.5 to 1.31.1 (#3608)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2

Bumps [github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2](https://github.com/aws/aws-sdk-go-v2) from 1.30.5 to 1.31.1.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.31.1/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.30.5...service/s3/v1.31.1)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2
  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-03 12:10:41 -05:00
dependabot[bot] 6329a7adfb
chore(deps): bump golang.org/x/oauth2 from 0.19.0 to 0.20.0 (#3554)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.19.0 to 0.20.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.19.0...v0.20.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-30 21:10:35 +00:00
dependabot[bot] 36e02c0c95
chore(deps): bump golangci/golangci-lint-action from 5 to 6 (#3556)
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 5 to 6.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-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-05-30 14:10:04 -07:00
dependabot[bot] 283e5bfc71
chore(deps): bump google.golang.org/protobuf from 1.34.0 to 1.34.1 (#3557)
Bumps google.golang.org/protobuf from 1.34.0 to 1.34.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-30 14:09:45 -07:00
dependabot[bot] 1be50a03c9
chore(deps): bump softprops/action-gh-release from 2.0.4 to 2.0.5 (#3561)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](9d7c94cfd0...69320dbe05)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-30 14:09:22 -07:00
dependabot[bot] 4894e4531d
chore(deps): bump codecov/codecov-action from 4.3.1 to 4.4.1 (#3588)
---
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-05-30 14:09:05 -07:00
dependabot[bot] dee5f3bd2e
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.11 to 1.27.16 (#3597)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.11 to 1.27.16.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.11...config/v1.27.16)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-30 14:08:47 -07:00
Remington Breeze 2e7cf6932a
chore: upgrade react-scripts (#3584) 2024-05-21 12:05:50 -06:00
dependabot[bot] 125fc3dfba
chore(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 (#3548)
Bumps google.golang.org/protobuf from 1.33.0 to 1.34.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-03 13:50:11 -05:00
dependabot[bot] 572f1f5d1a
chore(deps): bump codecov/codecov-action from 4.3.0 to 4.3.1 (#3550)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4.3.0...v4.3.1)

---
updated-dependencies:
- dependency-name: codecov/codecov-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-03 13:49:55 -05:00
dependabot[bot] 76e95cdb4d
chore(deps): bump actions/setup-go from 5.0.0 to 5.0.1 (#3552)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5.0.0...v5.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-03 13:49:29 -05:00
dependabot[bot] 4b0289bf4d
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.37.0 to 1.38.0 (#3525)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch

Bumps [github.com/aws/aws-sdk-go-v2/service/cloudwatch](https://github.com/aws/aws-sdk-go-v2) from 1.37.0 to 1.38.0.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.38.0/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.37.0...service/s3/v1.38.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatch
  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 09:55:41 -05:00
Alejandro López 9f0041922c
feat(dashboard): change the color of the current rollout step (#3526)
I feel that having the current (running) step in a orange color is misleading,
as orange usually means warning.

This commit changes the color to the `$argo-running-color`.

Signed-off-by: Alejandro López Sánchez <alejandro.lopez@factorial.co>
2024-04-29 09:55:20 -05:00
Kostis (Codefresh) 63fd6e300e
docs: provide recommendation for strategies (#3531)
* docs: provide recommendation for strategies

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

* docs: traffic manager clarifications

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

* docs: explain canary with/out traffic manager

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

* docs: add 3 columns on the comparison table

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-04-29 09:54:18 -05:00
dependabot[bot] 2198fcce46
chore(deps): bump golangci/golangci-lint-action from 4 to 5 (#3540)
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 4 to 5.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-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-04-29 09:48:50 -05:00
dependabot[bot] e63c221dd9
chore(deps): bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (#3522)
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-04-23 19:47:07 +02:00
dependabot[bot] e8ab42be51
chore(deps): bump slsa-framework/slsa-github-generator from 1.10.0 to 2.0.0 (#3537)
chore(deps): bump slsa-framework/slsa-github-generator

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 19:45:30 +02:00
OpenGuidou 1856c3c396
docs: Add Amadeus to Users.md (#3527)
Signed-off-by: Guillaume Doussin <guillaume.doussin@gmail.com>
2024-04-18 10:09:55 -05:00
dhawani e90a60189e
fix(controller): Corrects the logic of comparing sha256 has. Fixes #3519 (#3520)
Fixed sha256 algo

Signed-off-by: dhawani <vishal.dhawani@scalekit.com>
Signed-off-by: dhawani <vishal.dhawani@gmail.com>
Co-authored-by: dhawani <vishal.dhawani@scalekit.com>
2024-04-10 08:36:02 -05:00
dependabot[bot] 451e27fd8e
chore(deps): bump codecov/codecov-action from 4.2.0 to 4.3.0 (#3517)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4.2.0...v4.3.0)

---
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-04-10 03:36:31 +02:00
Alexandre Gaudreault f6f026d065
chore(deps): bump go version to 1.22 (#3516)
* bump go version to 1.22

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

* fix deps version

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

* codegen without manifest

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

* manifest codegen

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

* updates for CI

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

* ignore mocks for codecov

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

---------

Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
2024-04-09 13:05:54 -05:00
dependabot[bot] 2b7dd8d2e4
chore(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 (#3512)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.63.0 to 1.63.2.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.63.0...v1.63.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-09 09:57:00 -05:00
dependabot[bot] ed62ee8eae
chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.27.10 to 1.27.11 (#3510)
chore(deps): bump github.com/aws/aws-sdk-go-v2/config

Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.27.10 to 1.27.11.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.10...config/v1.27.11)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  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-09 09:56:40 -05:00
Benjamin Muschko e356a60a89
fix: Change indentation to properly render Markdown - fixes #3509 (#3511)
Fix indentation to properly render Markdown

Signed-off-by: Benjamin Muschko <benjamin.muschko@gmail.com>
2024-04-09 09:56:20 -05:00
dependabot[bot] cd6f5b6a35
chore(deps): bump peaceiris/actions-gh-pages from 3 to 4 (#3513)
Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4.
- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)
- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)
- [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4)

---
updated-dependencies:
- dependency-name: peaceiris/actions-gh-pages
  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-09 09:55:51 -05:00
dependabot[bot] 4e011b6b9e
chore(deps): bump docker/setup-buildx-action from 3.2.0 to 3.3.0 (#3514)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](2b51285047...d70bba72b1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-09 09:55:31 -05:00
OpenGuidou 996252b4f6
docs: Add technique for ConfigMap change detection in Rollout (#3515)
Signed-off-by: Guillaume Doussin <guillaume.doussin@gmail.com>
2024-04-09 09:55:07 -05:00
dependabot[bot] 4cf5162553
chore(deps): bump google.golang.org/grpc from 1.62.1 to 1.63.0 (#3497)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.62.1 to 1.63.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.62.1...v1.63.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 19:31:42 +00:00
dependabot[bot] 5a1928a33e
chore(deps): bump github.com/prometheus/client_model from 0.6.0 to 0.6.1 (#3499)
Bumps [github.com/prometheus/client_model](https://github.com/prometheus/client_model) from 0.6.0 to 0.6.1.
- [Release notes](https://github.com/prometheus/client_model/releases)
- [Commits](https://github.com/prometheus/client_model/compare/v0.6.0...v0.6.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_model
  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-05 13:55:49 -05:00
dependabot[bot] fe6a65dd9e
chore(deps): bump golang.org/x/oauth2 from 0.18.0 to 0.19.0 (#3506)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.18.0 to 0.19.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.18.0...v0.19.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 13:54:42 -05:00
dependabot[bot] 6b05baf177
chore(deps): bump codecov/codecov-action from 4.1.1 to 4.2.0 (#3500)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.1.1 to 4.2.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4.1.1...v4.2.0)

---
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-04-05 13:54:14 -05:00
github-actions[bot] c4a7583199
docs: Update Changelog (#3507)
* update changelog

* Update CHANGELOG.md

---------

Co-authored-by: zachaller <201390+zachaller@users.noreply.github.com>
Co-authored-by: Zach Aller <zachaller@users.noreply.github.com>
2024-04-05 18:53:48 +00:00
Zach Aller 02d7e4f568
chore: remove some k8s e2e test versions (#3495)
* chore: bump k8s versions

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

* chore: remove a few old e2e k8s versions

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>

---------

Signed-off-by: Zach Aller <zachaller@users.noreply.github.com>
2024-04-03 15:16:36 -05:00
336 changed files with 24716 additions and 4890 deletions

View File

@ -8,13 +8,16 @@ coverage:
default:
threshold: 0.1
ignore:
- "pkg/apis/rollouts/v1alpha1"
- "test"
- "**/*.pb.go"
- "**/*.pb.gw.go"
- "**/*generated.go"
- "**/*generated.deepcopy.go"
- "**/*_test.go"
- "pkg/apis/client/.*"
- "pkg/client/.*"
- "vendor/.*"
- 'pkg/apis/rollouts/v1alpha1'
- 'test'
- '**/*.pb.go'
- '**/*.pb.gw.go'
- '**/*generated.go'
- '**/*generated.deepcopy.go'
- '**/*_test.go'
- 'pkg/apis/client/.*'
- 'pkg/client/.*'
- 'vendor/.*'
- '**/mocks/*'
- 'hack/gen-crd-spec/main.go'
- 'hack/gen-docs/main.go'

View File

@ -2,7 +2,7 @@ Checklist:
* [ ] Either (a) I've created an [enhancement proposal](https://github.com/argoproj/argo-rollouts/issues/new/choose) and discussed it with the community, (b) this is a bug fix, or (c) this is a chore.
* [ ] The title of the PR is (a) [conventional](https://www.conventionalcommits.org/en/v1.0.0/) with a list of types and scopes found [here](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/pr-title-check.yml), (b) states what changed, and (c) suffixes the related issues number. E.g. `"fix(controller): Updates such and such. Fixes #1234"`.
* [ ] I've signed my commits with [DCO](https://github.com/argoproj/argoproj)
* [ ] I've signed my commits with [DCO](https://github.com/argoproj/argoproj/blob/main/community/CONTRIBUTING.md#legal)
* [ ] I have written unit and/or e2e tests for my change. PRs without these are unlikely to be merged.
* [ ] My builds are green. Try syncing with master if they are not.
* [ ] My organization is added to [USERS.md](https://github.com/argoproj/argo-rollouts/blob/master/USERS.md).
* [ ] My organization is added to [USERS.md](https://github.com/argoproj/argo-rollouts/blob/master/USERS.md).

View File

@ -23,7 +23,7 @@ jobs:
./git-chglog --sort semver -o CHANGELOG.md v1.3.1..
rm git-chglog
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@v7
with:
commit-message: update changelog
title: "docs: Update Changelog"

View File

@ -61,13 +61,13 @@ jobs:
needs: [set-vars]
permissions:
contents: read
packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
id-token: write # for creating OIDC tokens for signing.
uses: ./.github/workflows/image-reuse.yaml
with:
quay_image_name: ${{ needs.set-vars.outputs.controller-meta-tags }}
# 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.23'
platforms: ${{ needs.set-vars.outputs.platforms }}
push: ${{ github.event_name != 'pull_request' }}
secrets:
@ -78,13 +78,13 @@ jobs:
needs: [set-vars]
permissions:
contents: read
packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
packages: write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
id-token: write # for creating OIDC tokens for signing.
uses: ./.github/workflows/image-reuse.yaml
with:
quay_image_name: ${{ needs.set-vars.outputs.plugin-meta-tags }}
# 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.23'
platforms: ${{ needs.set-vars.outputs.platforms }}
push: ${{ github.event_name != 'pull_request' }}
target: kubectl-argo-rollouts

View File

@ -1,100 +0,0 @@
name: E2E Tests
on:
push:
branches:
- 'master'
- 'release-*'
pull_request:
branches:
- 'master'
- 'release-*'
workflow_dispatch:
inputs:
debug_enabled:
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
required: false
default: false
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
event_file:
name: "Event File"
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Event File
path: ${{ github.event_path }}
test-e2e:
strategy:
fail-fast: false
matrix:
kubernetes-minor-version:
- 1.24
- 1.25
- 1.26
- 1.27
- 1.28
- 1.29
name: Run end-to-end tests
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v5.0.0
with:
go-version: '1.21'
- uses: actions/checkout@v4
- name: Setup k3s
env:
INSTALL_K3S_CHANNEL: v${{ matrix.kubernetes-minor-version }}
run: |
curl -sfL https://get.k3s.io | sh -
sudo mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chmod 755 ~/.kube/config
kubectl version
kubectl create ns argo-rollouts
- uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download cache
run: go mod download
- name: Install CRDs
run: |
kubectl apply -k manifests/crds
kubectl apply -f test/e2e/crds
- name: Start controller
run: make start-e2e 2>&1 | sed -r "s/[[:cntrl:]]\[[0-9]{1,3}m//g" > /tmp/e2e-controller.log &
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true'}}
- name: Run e2e tests
run: make test-e2e
if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true') }}
- name: Output Rerun Overview
run: |
[[ -f rerunreport.txt ]] && cat rerunreport.txt || echo "No rerun report found"
- name: Upload E2E Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: E2E Test Results (k8s ${{ matrix.kubernetes-minor-version }})
path: |
junit.xml
- name: Upload e2e-controller logs
uses: actions/upload-artifact@v4
with:
name: e2e-controller-k8s-${{ matrix.kubernetes-minor-version }}.log
path: /tmp/e2e-controller.log
if: ${{ failure() }}

View File

@ -15,7 +15,7 @@ permissions:
jobs:
deploy:
permissions:
contents: write # for peaceiris/actions-gh-pages to push pages branch
contents: write # for peaceiris/actions-gh-pages to push pages branch
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@ -24,16 +24,16 @@ jobs:
with:
python-version: 3.x
- name: Set up Go
uses: actions/setup-go@v5.0.0
uses: actions/setup-go@v5.4.0
with:
go-version: '1.21'
go-version: '1.23'
- name: build
run: |
pip install mkdocs mkdocs_material
make docs
mkdocs build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./site

View File

@ -2,14 +2,14 @@ name: Go
on:
push:
branches:
- "master"
- "release-*"
- 'master'
- 'release-*'
pull_request:
branches:
- "master"
- 'master'
env:
# Golang version to use across CI steps
GOLANG_VERSION: '1.21'
GOLANG_VERSION: '1.23'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@ -19,39 +19,30 @@ permissions:
contents: read
jobs:
event_file:
name: "Event File"
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Event File
path: ${{ github.event_path }}
lint-go:
permissions:
contents: read # for actions/checkout to fetch code
pull-requests: read # for golangci/golangci-lint-action to fetch pull requests
contents: read # for actions/checkout to fetch code
pull-requests: read # for golangci/golangci-lint-action to fetch pull requests
name: Lint Go code
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v5.0.0
uses: actions/setup-go@v5.4.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Checkout code
uses: actions/checkout@v4
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v4
uses: golangci/golangci-lint-action@v8
with:
version: v1.57.2
version: v2.1.6
args: --timeout 6m
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v5.0.0
uses: actions/setup-go@v5.4.0
with:
go-version: ${{ env.GOLANG_VERSION }}
id: go
@ -72,28 +63,6 @@ jobs:
- name: Compile all packages
run: make controller plugin
- name: Test
run: make test-unit
- name: Upload Unit Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: Unit Test Results
path: |
junit.xml
- name: Generate code coverage artifacts
uses: actions/upload-artifact@v4
with:
name: code-coverage
path: coverage.out
- name: Upload code coverage information to codecov.io
uses: codecov/codecov-action@v4.1.1
with:
file: coverage.out
codegen:
name: Verify Codegen
runs-on: ubuntu-latest
@ -103,7 +72,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Golang
uses: actions/setup-go@v5.0.0
uses: actions/setup-go@v5.4.0
with:
go-version: ${{ env.GOLANG_VERSION }}
# k8s codegen generates files into GOPATH location instead of the GitHub git checkout location

View File

@ -69,17 +69,17 @@ jobs:
if: ${{ github.ref_type != 'tag'}}
- name: Setup Golang
uses: actions/setup-go@v5.0.0 # v3.5.0
uses: actions/setup-go@v5.4.0 # v3.5.0
with:
go-version: ${{ inputs.go-version }}
- name: Install cosign
uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb # v3.8.2
with:
cosign-release: 'v2.2.0'
- uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0
- uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0
- uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Setup tags for container image as a CSV type
run: |
@ -106,7 +106,7 @@ jobs:
echo 'EOF' >> $GITHUB_ENV
- name: Login to Quay.io
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: quay.io
username: ${{ secrets.quay_username }}
@ -114,7 +114,7 @@ jobs:
if: ${{ inputs.quay_image_name && inputs.push }}
- name: Login to GitHub Container Registry
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: ghcr.io
username: ${{ secrets.ghcr_username }}
@ -122,7 +122,7 @@ jobs:
if: ${{ inputs.ghcr_image_name && inputs.push }}
- name: Login to dockerhub Container Registry
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.docker_username }}
password: ${{ secrets.docker_password }}
@ -130,7 +130,7 @@ jobs:
- name: Build and push container image
id: image
uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 #v5.3.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 #v6.18.0
with:
context: .
platforms: ${{ inputs.platforms }}

View File

@ -7,7 +7,7 @@ on:
permissions: {}
env:
GOLANG_VERSION: '1.21' # Note: go-version must also be set in job controller-image.with.go-version & plugin-image.with.go-version.
GOLANG_VERSION: '1.23' # Note: go-version must also be set in job controller-image.with.go-version & plugin-image.with.go-version.
jobs:
controller-image:
@ -19,7 +19,7 @@ jobs:
with:
quay_image_name: quay.io/argoproj/argo-rollouts:${{ 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.23'
platforms: linux/amd64,linux/arm64
push: true
secrets:
@ -35,7 +35,7 @@ jobs:
with:
quay_image_name: quay.io/argoproj/kubectl-argo-rollouts:${{ 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.23'
platforms: linux/amd64,linux/arm64
push: true
target: kubectl-argo-rollouts
@ -44,41 +44,40 @@ jobs:
quay_password: ${{ secrets.QUAY_ROBOT_TOKEN }}
controller-image-provenance:
needs:
- controller-image
permissions:
actions: read # for detecting the Github Actions environment.
id-token: write # for creating OIDC tokens for signing.
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
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0
with:
image: quay.io/argoproj/argo-rollouts
digest: ${{ needs.controller-image.outputs.image-digest }}
secrets:
registry-username: ${{ secrets.QUAY_USERNAME }}
registry-password: ${{ secrets.QUAY_ROBOT_TOKEN }}
needs:
- controller-image
permissions:
actions: read # for detecting the Github Actions environment.
id-token: write # for creating OIDC tokens for signing.
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
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.1.0
with:
image: quay.io/argoproj/argo-rollouts
digest: ${{ needs.controller-image.outputs.image-digest }}
secrets:
registry-username: ${{ secrets.QUAY_USERNAME }}
registry-password: ${{ secrets.QUAY_ROBOT_TOKEN }}
plugin-image-provenance:
needs:
- plugin-image
permissions:
actions: read # for detecting the Github Actions environment.
id-token: write # for creating OIDC tokens for signing.
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
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.10.0
with:
image: quay.io/argoproj/kubectl-argo-rollouts
digest: ${{ needs.plugin-image.outputs.image-digest }}
secrets:
registry-username: ${{ secrets.QUAY_USERNAME }}
registry-password: ${{ secrets.QUAY_ROBOT_TOKEN }}
needs:
- plugin-image
permissions:
actions: read # for detecting the Github Actions environment.
id-token: write # for creating OIDC tokens for signing.
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
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.1.0
with:
image: quay.io/argoproj/kubectl-argo-rollouts
digest: ${{ needs.plugin-image.outputs.image-digest }}
secrets:
registry-username: ${{ secrets.QUAY_USERNAME }}
registry-password: ${{ secrets.QUAY_ROBOT_TOKEN }}
release-artifacts:
permissions:
contents: write # for softprops/action-gh-release to create GitHub release
contents: write # for softprops/action-gh-release to create GitHub release
runs-on: ubuntu-latest
outputs:
hashes: ${{ steps.hash.outputs.hashes }}
@ -91,15 +90,15 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Golang
uses: actions/setup-go@v5.0.0 # v4.0.1
uses: actions/setup-go@v5.4.0 # v4.0.1
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Set up QEMU
uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Generate release artifacts
run: |
@ -108,7 +107,7 @@ jobs:
make manifests IMAGE_TAG=${{ github.ref_name }}
- name: Draft release
uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v0.1.15
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v0.1.15
with:
tag_name: ${{ github.event.inputs.tag }}
draft: true
@ -132,7 +131,6 @@ jobs:
run: |
echo "hashes=$(sha256sum ./dist/kubectl-argo-rollouts-* ./manifests/*.yaml | base64 -w0)" >> "$GITHUB_OUTPUT"
release-artifacts-provenance:
needs:
- release-artifacts
@ -141,10 +139,10 @@ jobs:
id-token: write # Needed for provenance signing and ID
contents: write # Needed for release uploads
# Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.10.0
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0
with:
base64-subjects: "${{ needs.release-artifacts.outputs.hashes }}"
provenance-name: "argo-rollouts.intoto.jsonl"
base64-subjects: '${{ needs.release-artifacts.outputs.hashes }}'
provenance-name: 'argo-rollouts.intoto.jsonl'
upload-assets: true
draft-release: true
@ -165,12 +163,12 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Golang
uses: actions/setup-go@v5.0.0 # v4.0.0
uses: actions/setup-go@v5.4.0 # v4.0.0
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Install cosign
uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb # v3.8.2
with:
cosign-release: 'v2.2.0'
@ -183,7 +181,7 @@ jobs:
SIGS_BOM_VERSION: v0.2.1
# comma delimited list of project relative folders to inspect for package
# managers (gomod, yarn, npm).
PROJECT_FOLDERS: ".,./ui"
PROJECT_FOLDERS: '.,./ui'
# full qualified name of the container image to be inspected
CONTAINER_IMAGE: quay.io/argoproj/argo-rollouts:${{ github.event.inputs.tag }}
@ -214,7 +212,7 @@ jobs:
/tmp/sbom.tar.gz
- name: Upload SBOM and signature assets
uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v0.1.15
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v0.1.15
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:

View File

@ -1,9 +1,9 @@
# use separate workflow to support fork repositories and dependabot branches when publishing test results: see https://github.com/EnricoMi/publish-unit-test-result-action#support-fork-repositories-and-dependabot-branches
name: Test Results
name: Testing Results
on:
workflow_run:
workflows: ["E2E Tests", "Go"]
workflows: ["Testing"]
types:
- completed
permissions: {}
@ -19,27 +19,31 @@ jobs:
actions: read
steps:
- name: Download and Extract Artifacts
# TODO repace with native actions/download-artifact once it supports downloading from another workflow: https://github.com/actions/download-artifact/issues/3
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: |
mkdir -p artifacts && cd artifacts
artifacts_url=${{ github.event.workflow_run.artifacts_url }}
gh api "$artifacts_url" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact
do
IFS=$'\t' read name url <<< "$artifact"
gh api $url > "$name.zip"
unzip -d "$name" "$name.zip"
done
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
run-id: ${{ github.event.workflow_run.id }}
path: artifacts
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish Test Results
- name: Publish E2E Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
check_name: "${{ github.event.workflow.name }} Published Test Results"
commit: ${{ github.event.workflow_run.head_sha }}
event_file: artifacts/Event File/event.json
event_name: ${{ github.event.workflow_run.event }}
junit_files: "artifacts/**/junit.xml"
check_name: "Published E2E Test Results"
compare_to_earlier_commit: false
test_changes_limit: 0
fail_on: "errors"
commit: ${{ github.event.workflow_run.head_sha }}
event_file: artifacts/Event File/event.json
event_name: ${{ github.event.workflow_run.event }}
files: "artifacts/**/junit-e2e-test.xml"
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
check_name: "Published Unit Test Results"
compare_to_earlier_commit: false
test_changes_limit: 0
fail_on: "errors"
commit: ${{ github.event.workflow_run.head_sha }}
event_file: artifacts/Event File/event.json
event_name: ${{ github.event.workflow_run.event }}
files: "artifacts/**/junit-unit-test.xml"

195
.github/workflows/testing.yaml vendored Normal file
View File

@ -0,0 +1,195 @@
name: Testing
on:
push:
branches:
- 'master'
- 'release-*'
pull_request:
branches:
- 'master'
- 'release-*'
workflow_dispatch:
inputs:
debug_enabled:
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
required: false
default: false
env:
# Golang version to use across CI steps
GOLANG_VERSION: '1.23'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
event_file:
name: 'Event File'
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Event File
path: ${{ github.event_path }}
test-unit:
name: Run unit tests
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v5.4.0
with:
go-version: ${{ env.GOLANG_VERSION }}
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Restore go build cache
uses: actions/cache@v4
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }}
- name: Download all Go modules
run: |
go mod download
- name: Test
run: make test-unit
- name: Upload Unit Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: Unit Test Results
path: |
junit-unit-test.xml
- name: Generate code coverage artifacts
uses: actions/upload-artifact@v4
with:
name: coverage-output-unit
path: coverage-output-unit
test-e2e:
strategy:
fail-fast: false
matrix:
kubernetes:
- version: '1.28'
latest: false
- version: '1.29'
latest: false
- version: '1.30'
latest: false
- version: '1.31'
latest: true
name: Run end-to-end tests
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v5.4.0
with:
go-version: '1.23'
- uses: actions/checkout@v4
- name: Setup k3s
env:
INSTALL_K3S_CHANNEL: v${{ matrix.kubernetes.version }}
run: |
curl -sfL https://get.k3s.io | sh -
sudo mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chmod 755 ~/.kube/config
kubectl version
kubectl create ns argo-rollouts
- uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download cache
run: go mod download
- name: Install CRDs
run: |
kubectl apply -k manifests/crds
kubectl apply -f test/e2e/crds
- name: Start controller
run: make start-e2e 2>&1 | sed -r "s/[[:cntrl:]]\[[0-9]{1,3}m//g" > /tmp/e2e-controller.log &
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true'}}
- name: Run e2e tests
run: |
make test-e2e
if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true') }}
- name: Stop e2e tests controller
run: |
pgrep -f go-build -a
pkill -f go-build
sleep 5
echo "done stopping process"
ls -lah coverage-output-e2e/
if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true' && matrix.kubernetes.latest)}}
- name: Output Rerun Overview
run: |
[[ -f rerunreport.txt ]] && cat rerunreport.txt || echo "No rerun report found"
- name: Upload E2E Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: E2E Test Results (k8s ${{ matrix.kubernetes.version }})
path: |
junit-e2e-test.xml
- name: Upload e2e-controller logs
uses: actions/upload-artifact@v4
with:
name: e2e-controller-k8s-${{ matrix.kubernetes.version }}.log
path: /tmp/e2e-controller.log
if: ${{ always() }}
- name: Upload code coverage artifacts
uses: actions/upload-artifact@v4
with:
name: coverage-output-e2e
path: coverage-output-e2e
if: ${{ matrix.kubernetes.latest }}
coverage-process:
name: Process Coverage Files
runs-on: ubuntu-latest
needs:
- test-unit
- test-e2e
steps:
- name: Set up Go
uses: actions/setup-go@v5.4.0
with:
go-version: ${{ env.GOLANG_VERSION }}
id: go
- uses: actions/checkout@v4
- name: Get e2e code coverage
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: coverage-output-e2e
path: coverage-output-e2e
- name: Get unit test code coverage
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: coverage-output-unit
path: coverage-output-unit
- name: combine-go-coverage
run: |
go tool covdata textfmt -i=coverage-output-unit/,coverage-output-e2e/ -o full-coverage.out
- name: Upload code coverage information to codecov.io
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
file: full-coverage.out
fail_ci_if_error: false
codecov_yml_path: .codecov.yml
disable_search: true
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

8
.gitignore vendored
View File

@ -2,9 +2,11 @@
.idea/
.DS_Store
dist/
github.com/
k8s.io/
*.iml
# delve debug binaries
__debug_bin
__debug_bin*
cmd/**/debug
debug.test
coverage.out
@ -17,3 +19,7 @@ plugin-bin/
# static
server/static/*
!server/static/.gitkeep
coverage-output-e2e/
coverage-output-unit/
junit*

View File

@ -1,20 +1,41 @@
version: "2"
run:
deadline: 1m
skip-files:
- ".*\\.pb\\.go"
skip-dirs:
- pkg/client
modules-download-mode: readonly
linter-settings:
goimports:
local-prefixes: github.com/argoproj/argo-rollouts
timeout: 10m
linters:
default: none
enable:
- govet
- ineffassign
- misspell
- unconvert
- unused
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
paths:
- .*\.pb\.go
- pkg/client
- third_party$
- builtin$
- examples$
formatters:
enable:
- vet
- gofmt
- goimports
- unused
- ineffassign
- unconvert
- misspell
disable-all: true
settings:
goimports:
local-prefixes:
- github.com/argoproj/argo-rollouts
exclusions:
generated: lax
paths:
- .*\.pb\.go
- pkg/client
- third_party$
- builtin$
- examples$

View File

@ -1,6 +1,7 @@
version: 2
formats: all
mkdocs:
configuration: mkdocs.yml
fail_on_warning: false
python:
install:

View File

@ -1,4 +1,616 @@
<a name="v1.8.3"></a>
## [v1.8.3](https://github.com/argoproj/argo-rollouts/compare/v1.8.2...v1.8.3) (2025-05-31)
### Chore
* **deps:** bump github.com/golang-jwt/jwt to 4.5.2 ([#4235](https://github.com/argoproj/argo-rollouts/issues/4235)) ([#4236](https://github.com/argoproj/argo-rollouts/issues/4236))
* **deps:** bump golang.org/x/oauth2 from 0.24.0 to 0.29.0 to fix CVE-2025-22868 ([#4225](https://github.com/argoproj/argo-rollouts/issues/4225))
### Docs
* explain skew policy between the kubectl plugin and the controller ([#4300](https://github.com/argoproj/argo-rollouts/issues/4300))
* blue green w/ ALB not supported without downtime ([#4259](https://github.com/argoproj/argo-rollouts/issues/4259))
### Fix
* abort scenario where canary/stable service is not provided ([#4299](https://github.com/argoproj/argo-rollouts/issues/4299))
* restarts during updates could cause downtime ([#4221](https://github.com/argoproj/argo-rollouts/issues/4221))
* **experiments:** fire rollout event on experiment step ([#4124](https://github.com/argoproj/argo-rollouts/issues/4124))
* **trafficrouting:** patch VirtualService when there is only one named route ([#4055](https://github.com/argoproj/argo-rollouts/issues/4055))
<a name="v1.8.2"></a>
## [v1.8.2](https://github.com/argoproj/argo-rollouts/compare/v1.8.1...v1.8.2) (2025-03-21)
### Fix
* Revert "fix(controller): rollout stuck in `Progressing`. fixes [#3988](https://github.com/argoproj/argo-rollouts/issues/3988)" ([#4201](https://github.com/argoproj/argo-rollouts/issues/4201))
* **analysis:** prevent promotion on inconclusive background run. Fixes: [#3850](https://github.com/argoproj/argo-rollouts/issues/3850) ([#3873](https://github.com/argoproj/argo-rollouts/issues/3873))
<a name="v1.8.1"></a>
## [v1.8.1](https://github.com/argoproj/argo-rollouts/compare/v1.8.0...v1.8.1) (2025-03-15)
### Chore
* **deps:** Updated go version in go.mod file ([#4182](https://github.com/argoproj/argo-rollouts/issues/4182))
### Docs
* new syntax for docs conf ([#4012](https://github.com/argoproj/argo-rollouts/issues/4012))
### Fix
* guardrail to not overload stable replicaset ([#3878](https://github.com/argoproj/argo-rollouts/issues/3878))
* redo PR 3639 ([#4114](https://github.com/argoproj/argo-rollouts/issues/4114))
* check ephemeral metadata is set before delete ([#4089](https://github.com/argoproj/argo-rollouts/issues/4089))
* correct typo in linter settings key name ([#4094](https://github.com/argoproj/argo-rollouts/issues/4094))
* loop when paused and completed ([#4134](https://github.com/argoproj/argo-rollouts/issues/4134))
* nil pointer on logging ([#4127](https://github.com/argoproj/argo-rollouts/issues/4127))
* Upgrade go-retryablehttp to v0.7.7 ([#3743](https://github.com/argoproj/argo-rollouts/issues/3743))
* **controller:** rollout stuck in `Progressing`. fixes [#3988](https://github.com/argoproj/argo-rollouts/issues/3988) ([#4072](https://github.com/argoproj/argo-rollouts/issues/4072))
* **dashboard:** Revert react-scripts upgrade due to performance regression. Fixes [#4122](https://github.com/argoproj/argo-rollouts/issues/4122) ([#4166](https://github.com/argoproj/argo-rollouts/issues/4166))
* **metricprovider:** not require address in kubernetes secret for Datadog. Fixes [#4103](https://github.com/argoproj/argo-rollouts/issues/4103) ([#4145](https://github.com/argoproj/argo-rollouts/issues/4145))
<a name="v1.8.0"></a>
## [v1.8.0](https://github.com/argoproj/argo-rollouts/compare/v1.8.0-rc2...v1.8.0) (2024-12-17)
<a name="v1.8.0-rc2"></a>
## [v1.8.0-rc2](https://github.com/argoproj/argo-rollouts/compare/v1.8.0-rc1...v1.8.0-rc2) (2024-12-17)
### Ci
* add testing for k8s 1.30 and 1.31 ([#3858](https://github.com/argoproj/argo-rollouts/issues/3858))
### Docs
* **analysis:** add docs for consecutiveSuccessLimit ([#3996](https://github.com/argoproj/argo-rollouts/issues/3996))
### Fix
* don't over reconcile on error ([#4005](https://github.com/argoproj/argo-rollouts/issues/4005))
* remove ReplicaSet write-back ([#4044](https://github.com/argoproj/argo-rollouts/issues/4044))
* **controller:** Fixed broken pprof links [#4037](https://github.com/argoproj/argo-rollouts/issues/4037) ([#4038](https://github.com/argoproj/argo-rollouts/issues/4038))
* **experiments:** move recorder event to after experiment reconciliation, fixes [#4021](https://github.com/argoproj/argo-rollouts/issues/4021) ([#4022](https://github.com/argoproj/argo-rollouts/issues/4022))
<a name="v1.8.0-rc1"></a>
## [v1.8.0-rc1](https://github.com/argoproj/argo-rollouts/compare/v1.7.2...v1.8.0-rc1) (2024-12-06)
### Chore
* update the link of DCO in PR template ([#3944](https://github.com/argoproj/argo-rollouts/issues/3944))
* remove some k8s e2e test versions ([#3495](https://github.com/argoproj/argo-rollouts/issues/3495))
* upgrade react-scripts ([#3584](https://github.com/argoproj/argo-rollouts/issues/3584))
* update golangci-lint to v1.61.0 ([#3857](https://github.com/argoproj/argo-rollouts/issues/3857))
* fix and add more cli usage case ([#3592](https://github.com/argoproj/argo-rollouts/issues/3592))
* don't fail code-cov on failure ([#3661](https://github.com/argoproj/argo-rollouts/issues/3661))
* add example for updating all container images in set command ([#3667](https://github.com/argoproj/argo-rollouts/issues/3667))
* add codecov token ([#3623](https://github.com/argoproj/argo-rollouts/issues/3623))
* code coverage for e2e ([#3740](https://github.com/argoproj/argo-rollouts/issues/3740))
* use codecov config and only send merged coverage file ([#3751](https://github.com/argoproj/argo-rollouts/issues/3751))
* Add Cloudflare to users ([#3768](https://github.com/argoproj/argo-rollouts/issues/3768))
* capitalize AS in Dockerfile ([#3781](https://github.com/argoproj/argo-rollouts/issues/3781))
* move ReplicaSet creation and Rollout validation earlier during the reconciliation process. ([#3657](https://github.com/argoproj/argo-rollouts/issues/3657))
* Add Trustly to USERS.md ([#3837](https://github.com/argoproj/argo-rollouts/issues/3837))
* add step plugin proposal ([#3480](https://github.com/argoproj/argo-rollouts/issues/3480))
* **deps:** bump docker/setup-buildx-action from 3.4.0 to 3.5.0 ([#3738](https://github.com/argoproj/argo-rollouts/issues/3738))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.2 to 1.42.3 ([#3923](https://github.com/argoproj/argo-rollouts/issues/3923))
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.48.2 to 2.50.1 ([#3924](https://github.com/argoproj/argo-rollouts/issues/3924))
* **deps:** bump softprops/action-gh-release from 2.0.8 to 2.0.9 ([#3928](https://github.com/argoproj/argo-rollouts/issues/3928))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.38 to 1.28.1 ([#3917](https://github.com/argoproj/argo-rollouts/issues/3917))
* **deps:** bump github.com/hashicorp/go-plugin from 1.6.1 to 1.6.2 ([#3908](https://github.com/argoproj/argo-rollouts/issues/3908))
* **deps:** bump actions/setup-go from 5.0.2 to 5.1.0 ([#3912](https://github.com/argoproj/argo-rollouts/issues/3912))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.32.2 to 1.32.3 ([#3919](https://github.com/argoproj/argo-rollouts/issues/3919))
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.50.1 to 2.51.3 ([#3939](https://github.com/argoproj/argo-rollouts/issues/3939))
* **deps:** bump google.golang.org/grpc from 1.66.2 to 1.67.1 ([#3903](https://github.com/argoproj/argo-rollouts/issues/3903))
* **deps:** bump docker/setup-buildx-action from 3.6.1 to 3.7.1 ([#3876](https://github.com/argoproj/argo-rollouts/issues/3876))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.8 to 1.42.2 ([#3901](https://github.com/argoproj/argo-rollouts/issues/3901))
* **deps:** bump github.com/aws/smithy-go from 1.21.0 to 1.22.0 ([#3885](https://github.com/argoproj/argo-rollouts/issues/3885))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.31.0 to 1.32.2 ([#3886](https://github.com/argoproj/argo-rollouts/issues/3886))
* **deps:** bump google.golang.org/protobuf from 1.34.2 to 1.35.1 ([#3887](https://github.com/argoproj/argo-rollouts/issues/3887))
* **deps:** bump golang.org/x/oauth2 from 0.22.0 to 0.23.0 ([#3841](https://github.com/argoproj/argo-rollouts/issues/3841))
* **deps:** bump codecov/codecov-action from 4.5.0 to 4.6.0 ([#3865](https://github.com/argoproj/argo-rollouts/issues/3865))
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.45.0 to 2.48.2 ([#3874](https://github.com/argoproj/argo-rollouts/issues/3874))
* **deps:** bump sigstore/cosign-installer from 3.6.0 to 3.7.0 ([#3875](https://github.com/argoproj/argo-rollouts/issues/3875))
* **deps:** bump docker/build-push-action from 6.8.0 to 6.9.0 ([#3863](https://github.com/argoproj/argo-rollouts/issues/3863))
* **deps:** bump docker/build-push-action from 6.7.0 to 6.8.0 ([#3860](https://github.com/argoproj/argo-rollouts/issues/3860))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.33 to 1.27.38 ([#3851](https://github.com/argoproj/argo-rollouts/issues/3851))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.5 to 1.40.8 ([#3838](https://github.com/argoproj/argo-rollouts/issues/3838))
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.43.1 to 2.45.0 ([#3829](https://github.com/argoproj/argo-rollouts/issues/3829))
* **deps:** bump google.golang.org/grpc from 1.65.0 to 1.66.2 ([#3831](https://github.com/argoproj/argo-rollouts/issues/3831))
* **deps:** bump softprops/action-gh-release from 2.0.9 to 2.1.0 ([#3938](https://github.com/argoproj/argo-rollouts/issues/3938))
* **deps:** bump peter-evans/create-pull-request from 6 to 7 ([#3819](https://github.com/argoproj/argo-rollouts/issues/3819))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.31 to 1.27.33 ([#3822](https://github.com/argoproj/argo-rollouts/issues/3822))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.30 to 1.27.31 ([#3807](https://github.com/argoproj/argo-rollouts/issues/3807))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.3 to 1.40.5 ([#3808](https://github.com/argoproj/argo-rollouts/issues/3808))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.27 to 1.27.30 ([#3804](https://github.com/argoproj/argo-rollouts/issues/3804))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.3 to 1.42.4 ([#3935](https://github.com/argoproj/argo-rollouts/issues/3935))
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.41.2 to 2.43.1 ([#3793](https://github.com/argoproj/argo-rollouts/issues/3793))
* **deps:** bump github.com/aws/smithy-go from 1.20.3 to 1.20.4 ([#3794](https://github.com/argoproj/argo-rollouts/issues/3794))
* **deps:** bump docker/build-push-action from 6.6.1 to 6.7.0 ([#3791](https://github.com/argoproj/argo-rollouts/issues/3791))
* **deps:** bump github.com/influxdata/influxdb-client-go/v2 from 2.13.0 to 2.14.0 ([#3786](https://github.com/argoproj/argo-rollouts/issues/3786))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.32.3 to 1.32.4 ([#3934](https://github.com/argoproj/argo-rollouts/issues/3934))
* **deps:** bump docker/build-push-action from 6.5.0 to 6.6.1 ([#3776](https://github.com/argoproj/argo-rollouts/issues/3776))
* **deps:** bump sigstore/cosign-installer from 3.5.0 to 3.6.0 ([#3777](https://github.com/argoproj/argo-rollouts/issues/3777))
* **deps:** bump golang.org/x/oauth2 from 0.21.0 to 0.22.0 ([#3766](https://github.com/argoproj/argo-rollouts/issues/3766))
* **deps:** bump docker/build-push-action from 6.9.0 to 6.10.0 ([#3963](https://github.com/argoproj/argo-rollouts/issues/3963))
* **deps:** bump docker/setup-buildx-action from 3.5.0 to 3.6.1 ([#3755](https://github.com/argoproj/argo-rollouts/issues/3755))
* **deps:** bump google.golang.org/protobuf from 1.35.1 to 1.35.2 ([#3950](https://github.com/argoproj/argo-rollouts/issues/3950))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.26 to 1.27.27 ([#3732](https://github.com/argoproj/argo-rollouts/issues/3732))
* **deps:** bump softprops/action-gh-release from 2.0.6 to 2.0.8 ([#3733](https://github.com/argoproj/argo-rollouts/issues/3733))
* **deps:** bump golang.org/x/oauth2 from 0.23.0 to 0.24.0 ([#3949](https://github.com/argoproj/argo-rollouts/issues/3949))
* **deps:** bump docker/setup-qemu-action from 3.1.0 to 3.2.0 ([#3736](https://github.com/argoproj/argo-rollouts/issues/3736))
* **deps:** bump docker/build-push-action from 6.4.0 to 6.5.0 ([#3737](https://github.com/argoproj/argo-rollouts/issues/3737))
* **deps:** bump codecov/codecov-action from 4.6.0 to 5.0.7 ([#3961](https://github.com/argoproj/argo-rollouts/issues/3961))
* **deps:** bump docker/login-action from 3.2.0 to 3.3.0 ([#3739](https://github.com/argoproj/argo-rollouts/issues/3739))
* **deps:** bump docker/build-push-action from 6.3.0 to 6.4.0 ([#3723](https://github.com/argoproj/argo-rollouts/issues/3723))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.24 to 1.27.26 ([#3717](https://github.com/argoproj/argo-rollouts/issues/3717))
* **deps:** bump actions/setup-go from 5.0.1 to 5.0.2 ([#3716](https://github.com/argoproj/argo-rollouts/issues/3716))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.1 to 1.40.3 ([#3719](https://github.com/argoproj/argo-rollouts/issues/3719))
* **deps:** bump docker/setup-qemu-action from 3.0.0 to 3.1.0 ([#3696](https://github.com/argoproj/argo-rollouts/issues/3696))
* **deps:** bump docker/build-push-action from 6.2.0 to 6.3.0 ([#3697](https://github.com/argoproj/argo-rollouts/issues/3697))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.23 to 1.27.24 ([#3698](https://github.com/argoproj/argo-rollouts/issues/3698))
* **deps:** bump docker/setup-buildx-action from 3.3.0 to 3.4.0 ([#3705](https://github.com/argoproj/argo-rollouts/issues/3705))
* **deps:** bump google.golang.org/grpc from 1.64.0 to 1.65.0 ([#3694](https://github.com/argoproj/argo-rollouts/issues/3694))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.22 to 1.27.23 ([#3695](https://github.com/argoproj/argo-rollouts/issues/3695))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.28.1 to 1.28.6 ([#3981](https://github.com/argoproj/argo-rollouts/issues/3981))
* **deps:** bump github.com/aws/smithy-go from 1.20.2 to 1.20.3 ([#3685](https://github.com/argoproj/argo-rollouts/issues/3685))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.7 to 1.40.1 ([#3687](https://github.com/argoproj/argo-rollouts/issues/3687))
* **deps:** bump softprops/action-gh-release from 2.0.5 to 2.0.6 ([#3656](https://github.com/argoproj/argo-rollouts/issues/3656))
* **deps:** bump docker/build-push-action from 6.1.0 to 6.2.0 ([#3676](https://github.com/argoproj/argo-rollouts/issues/3676))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.19 to 1.27.22 ([#3680](https://github.com/argoproj/argo-rollouts/issues/3680))
* **deps:** bump docker/build-push-action from 6.0.2 to 6.1.0 ([#3662](https://github.com/argoproj/argo-rollouts/issues/3662))
* **deps:** bump docker/build-push-action from 6.0.0 to 6.0.2 ([#3659](https://github.com/argoproj/argo-rollouts/issues/3659))
* **deps:** bump google.golang.org/grpc from 1.67.1 to 1.68.1 ([#3979](https://github.com/argoproj/argo-rollouts/issues/3979))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.18 to 1.27.19 ([#3646](https://github.com/argoproj/argo-rollouts/issues/3646))
* **deps:** bump docker/build-push-action from 5.4.0 to 6.0.0 ([#3644](https://github.com/argoproj/argo-rollouts/issues/3644))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.6 to 1.38.7 ([#3647](https://github.com/argoproj/argo-rollouts/issues/3647))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.4 to 1.43.3 ([#3980](https://github.com/argoproj/argo-rollouts/issues/3980))
* **deps:** bump github.com/spf13/cobra from 1.8.0 to 1.8.1 ([#3640](https://github.com/argoproj/argo-rollouts/issues/3640))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.0 to 1.38.6 ([#3619](https://github.com/argoproj/argo-rollouts/issues/3619))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.16 to 1.27.18 ([#3625](https://github.com/argoproj/argo-rollouts/issues/3625))
* **deps:** bump google.golang.org/protobuf from 1.34.1 to 1.34.2 ([#3633](https://github.com/argoproj/argo-rollouts/issues/3633))
* **deps:** bump codecov/codecov-action from 4.4.1 to 4.5.0 ([#3634](https://github.com/argoproj/argo-rollouts/issues/3634))
* **deps:** bump docker/build-push-action from 5.3.0 to 5.4.0 ([#3624](https://github.com/argoproj/argo-rollouts/issues/3624))
* **deps:** bump golang.org/x/oauth2 from 0.20.0 to 0.21.0 ([#3631](https://github.com/argoproj/argo-rollouts/issues/3631))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.31.1 to 1.31.3 ([#3620](https://github.com/argoproj/argo-rollouts/issues/3620))
* **deps:** bump actions/setup-go from 5.0.0 to 5.0.1 ([#3552](https://github.com/argoproj/argo-rollouts/issues/3552))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.27.0 to 1.27.2 ([#3621](https://github.com/argoproj/argo-rollouts/issues/3621))
* **deps:** bump docker/login-action from 3.1.0 to 3.2.0 ([#3604](https://github.com/argoproj/argo-rollouts/issues/3604))
* **deps:** bump github.com/hashicorp/go-plugin from 1.6.0 to 1.6.1 ([#3606](https://github.com/argoproj/argo-rollouts/issues/3606))
* **deps:** bump google.golang.org/grpc from 1.63.2 to 1.64.0 ([#3607](https://github.com/argoproj/argo-rollouts/issues/3607))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.5 to 1.31.1 ([#3608](https://github.com/argoproj/argo-rollouts/issues/3608))
* **deps:** bump golang.org/x/oauth2 from 0.19.0 to 0.20.0 ([#3554](https://github.com/argoproj/argo-rollouts/issues/3554))
* **deps:** bump golangci/golangci-lint-action from 5 to 6 ([#3556](https://github.com/argoproj/argo-rollouts/issues/3556))
* **deps:** bump google.golang.org/protobuf from 1.34.0 to 1.34.1 ([#3557](https://github.com/argoproj/argo-rollouts/issues/3557))
* **deps:** bump softprops/action-gh-release from 2.0.4 to 2.0.5 ([#3561](https://github.com/argoproj/argo-rollouts/issues/3561))
* **deps:** bump codecov/codecov-action from 4.3.1 to 4.4.1 ([#3588](https://github.com/argoproj/argo-rollouts/issues/3588))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.11 to 1.27.16 ([#3597](https://github.com/argoproj/argo-rollouts/issues/3597))
* **deps:** update golang to 1.23 ([#3987](https://github.com/argoproj/argo-rollouts/issues/3987))
* **deps:** bump google.golang.org/protobuf from 1.33.0 to 1.34.0 ([#3548](https://github.com/argoproj/argo-rollouts/issues/3548))
* **deps:** bump codecov/codecov-action from 4.3.0 to 4.3.1 ([#3550](https://github.com/argoproj/argo-rollouts/issues/3550))
* **deps:** bump codecov/codecov-action from 5.0.7 to 5.1.1 ([#3986](https://github.com/argoproj/argo-rollouts/issues/3986))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.37.0 to 1.38.0 ([#3525](https://github.com/argoproj/argo-rollouts/issues/3525))
* **deps:** bump golangci/golangci-lint-action from 4 to 5 ([#3540](https://github.com/argoproj/argo-rollouts/issues/3540))
* **deps:** bump sigstore/cosign-installer from 3.4.0 to 3.5.0 ([#3522](https://github.com/argoproj/argo-rollouts/issues/3522))
* **deps:** bump slsa-framework/slsa-github-generator from 1.10.0 to 2.0.0 ([#3537](https://github.com/argoproj/argo-rollouts/issues/3537))
* **deps:** bump codecov/codecov-action from 4.2.0 to 4.3.0 ([#3517](https://github.com/argoproj/argo-rollouts/issues/3517))
* **deps:** bump go version to 1.22 ([#3516](https://github.com/argoproj/argo-rollouts/issues/3516))
* **deps:** bump google.golang.org/grpc from 1.63.0 to 1.63.2 ([#3512](https://github.com/argoproj/argo-rollouts/issues/3512))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.10 to 1.27.11 ([#3510](https://github.com/argoproj/argo-rollouts/issues/3510))
* **deps:** bump peaceiris/actions-gh-pages from 3 to 4 ([#3513](https://github.com/argoproj/argo-rollouts/issues/3513))
* **deps:** bump docker/setup-buildx-action from 3.2.0 to 3.3.0 ([#3514](https://github.com/argoproj/argo-rollouts/issues/3514))
* **deps:** bump google.golang.org/grpc from 1.62.1 to 1.63.0 ([#3497](https://github.com/argoproj/argo-rollouts/issues/3497))
* **deps:** bump github.com/prometheus/client_model from 0.6.0 to 0.6.1 ([#3499](https://github.com/argoproj/argo-rollouts/issues/3499))
* **deps:** bump golang.org/x/oauth2 from 0.18.0 to 0.19.0 ([#3506](https://github.com/argoproj/argo-rollouts/issues/3506))
* **deps:** bump codecov/codecov-action from 4.1.1 to 4.2.0 ([#3500](https://github.com/argoproj/argo-rollouts/issues/3500))
* **deps:** bump github.com/stretchr/testify from 1.9.0 to 1.10.0 ([#3985](https://github.com/argoproj/argo-rollouts/issues/3985))
### Docs
* fix broken links ([#3962](https://github.com/argoproj/argo-rollouts/issues/3962))
* add descriptions for additional default trigger templates ([#3960](https://github.com/argoproj/argo-rollouts/issues/3960))
* document dynamicStableScale ([#3978](https://github.com/argoproj/argo-rollouts/issues/3978))
* add 7shifts to users.md ([#3965](https://github.com/argoproj/argo-rollouts/issues/3965))
* add CarGurus to users.md ([#3940](https://github.com/argoproj/argo-rollouts/issues/3940))
* Add technique for ConfigMap change detection in Rollout ([#3515](https://github.com/argoproj/argo-rollouts/issues/3515))
* document canary step plugin (alpha) ([#3906](https://github.com/argoproj/argo-rollouts/issues/3906))
* GTW API support changed to Gloo Gateway instead of GloodMesh ([#3914](https://github.com/argoproj/argo-rollouts/issues/3914))
* Add Amadeus to Users.md ([#3527](https://github.com/argoproj/argo-rollouts/issues/3527))
* add TBC Bank to USERS.md ([#3871](https://github.com/argoproj/argo-rollouts/issues/3871))
* Update specification document ([#3877](https://github.com/argoproj/argo-rollouts/issues/3877))
* clarify supported deployment strategies ([#3823](https://github.com/argoproj/argo-rollouts/issues/3823))
* Update metric job docs with some of the available config options ([#3839](https://github.com/argoproj/argo-rollouts/issues/3839))
* Clarify analysis count with value 0 ([#3847](https://github.com/argoproj/argo-rollouts/issues/3847))
* fix a link to e2e.yaml ([#3834](https://github.com/argoproj/argo-rollouts/issues/3834))
* Update Changelog ([#3788](https://github.com/argoproj/argo-rollouts/issues/3788))
* remove obsolete roadmap page ([#3783](https://github.com/argoproj/argo-rollouts/issues/3783))
* Update ephemeral-metadata.md with a small fix ([#3782](https://github.com/argoproj/argo-rollouts/issues/3782))
* add Priceline to USERS.md ([#3764](https://github.com/argoproj/argo-rollouts/issues/3764))
* added clarifications for short releases ([#3753](https://github.com/argoproj/argo-rollouts/issues/3753))
* correct the case that autoPromotionSeconds feature is ignored ([#2388](https://github.com/argoproj/argo-rollouts/issues/2388))
* copy omission in rollout docs ([#3690](https://github.com/argoproj/argo-rollouts/issues/3690))
* Update Changelog ([#3666](https://github.com/argoproj/argo-rollouts/issues/3666))
* Update Changelog ([#3632](https://github.com/argoproj/argo-rollouts/issues/3632))
* provide recommendation for strategies ([#3531](https://github.com/argoproj/argo-rollouts/issues/3531))
* Update Changelog ([#3507](https://github.com/argoproj/argo-rollouts/issues/3507))
* **analysis:** new plugin is added to the documentation ([#3915](https://github.com/argoproj/argo-rollouts/issues/3915))
* **analysis:** plugin url is changed and redirected to argoproj-labs project ([#3922](https://github.com/argoproj/argo-rollouts/issues/3922))
### Feat
* New Prometheus metric: build_info ([#3591](https://github.com/argoproj/argo-rollouts/issues/3591))
* support multi account Datadog metrics provider ([#3787](https://github.com/argoproj/argo-rollouts/issues/3787))
* **analysis:** Add ConsecutiveSuccessLimit feature to Analysis ([#3970](https://github.com/argoproj/argo-rollouts/issues/3970))
* **analysis:** Returns the resolved query as metadata in the New Relic provider ([#3715](https://github.com/argoproj/argo-rollouts/issues/3715))
* **analysis:** Adds timeout property to NewRelic metrics provider. Resolves: [#3741](https://github.com/argoproj/argo-rollouts/issues/3741) ([#3742](https://github.com/argoproj/argo-rollouts/issues/3742))
* **controller:** enable pprof profiling support ([#3769](https://github.com/argoproj/argo-rollouts/issues/3769))
* **controller:** add canary steps plugin ([#3521](https://github.com/argoproj/argo-rollouts/issues/3521))
* **controller:** Allow specifying full annotations for nginx canary ingresses. ([#3671](https://github.com/argoproj/argo-rollouts/issues/3671))
* **dashboard:** change the color of the current rollout step ([#3526](https://github.com/argoproj/argo-rollouts/issues/3526))
* **metricprovider:** credentials to download plugin ([#3905](https://github.com/argoproj/argo-rollouts/issues/3905))
* **metricprovider:** add prometheus range query support ([#3704](https://github.com/argoproj/argo-rollouts/issues/3704))
### Fix
* add update verb to ClusterRole permissions for scaleDown feature. Fixes [#3672](https://github.com/argoproj/argo-rollouts/issues/3672) ([#3675](https://github.com/argoproj/argo-rollouts/issues/3675))
* e2e test results processing change key name to run-id ([#3744](https://github.com/argoproj/argo-rollouts/issues/3744))
* Update loader-utils to 2.0.4 ([#3601](https://github.com/argoproj/argo-rollouts/issues/3601))
* remove condition where header routes can stay directed at empty service in preemption ([#3898](https://github.com/argoproj/argo-rollouts/issues/3898))
* add secrets so we can download across workflows ([#3746](https://github.com/argoproj/argo-rollouts/issues/3746))
* rollout should skip timeout when paused ([#3711](https://github.com/argoproj/argo-rollouts/issues/3711))
* check isScalingEvent only on stable and newRS ([#3883](https://github.com/argoproj/argo-rollouts/issues/3883))
* rs conflict with fallback to patch ([#3559](https://github.com/argoproj/argo-rollouts/issues/3559))
* verify the weight of the alb at the end of the rollout ([#3627](https://github.com/argoproj/argo-rollouts/issues/3627))
* stop rollout from entering degraded state during blueGreen pause. Fixes [#3843](https://github.com/argoproj/argo-rollouts/issues/3843) ([#3845](https://github.com/argoproj/argo-rollouts/issues/3845))
* when Rollout has pingpong and stable/canary service defined, only alb traffic management uses pingpong. ([#3628](https://github.com/argoproj/argo-rollouts/issues/3628))
* protocol missing in ambassador canary mapping creation. Fixes [#3593](https://github.com/argoproj/argo-rollouts/issues/3593) ([#3603](https://github.com/argoproj/argo-rollouts/issues/3603))
* Change indentation to properly render Markdown - fixes [#3509](https://github.com/argoproj/argo-rollouts/issues/3509) ([#3511](https://github.com/argoproj/argo-rollouts/issues/3511))
* Add volume for plugin and tmp folder ([#3546](https://github.com/argoproj/argo-rollouts/issues/3546))
* replicaSet not scaled down due to incorrect annotations ([#3762](https://github.com/argoproj/argo-rollouts/issues/3762)) ([#3784](https://github.com/argoproj/argo-rollouts/issues/3784))
* don't default datadog aggregator ([#3643](https://github.com/argoproj/argo-rollouts/issues/3643))
* Support kustomize v5 labels transformer. Fixes [#3105](https://github.com/argoproj/argo-rollouts/issues/3105) ([#3775](https://github.com/argoproj/argo-rollouts/issues/3775))
* separate e2e and unit test reporting uploads ([#3747](https://github.com/argoproj/argo-rollouts/issues/3747))
* retain non-nginx canary annotations. Fixes: [#1070](https://github.com/argoproj/argo-rollouts/issues/1070) ([#3806](https://github.com/argoproj/argo-rollouts/issues/3806))
* docs site version selector broken ([#3590](https://github.com/argoproj/argo-rollouts/issues/3590))
* **analysis:** explicitly set datadog aggregator to last only on v2 ([#3730](https://github.com/argoproj/argo-rollouts/issues/3730))
* **analysis:** Take RollbackWindow into account when Reconciling Analysis Runs. Fixes [#3669](https://github.com/argoproj/argo-rollouts/issues/3669) ([#3670](https://github.com/argoproj/argo-rollouts/issues/3670))
* **controller:** use the stableRS from the rollout context rather tha… ([#3664](https://github.com/argoproj/argo-rollouts/issues/3664))
* **controller:** weighted experiment validation should allow delegating to trafficRouter plugins ([#3909](https://github.com/argoproj/argo-rollouts/issues/3909))
* **controller:** Corrects the logic of comparing sha256 has. Fixes [#3519](https://github.com/argoproj/argo-rollouts/issues/3519) ([#3520](https://github.com/argoproj/argo-rollouts/issues/3520))
* **controller:** Get the right resourceName for traefik.io.Fixes [#3615](https://github.com/argoproj/argo-rollouts/issues/3615) ([#3759](https://github.com/argoproj/argo-rollouts/issues/3759))
* **controller:** fix race condition in updating ephemeral metadata ([#3975](https://github.com/argoproj/argo-rollouts/issues/3975))
* **dashboard:** Update pod status logic to support native sidecars. Fixes [#3366](https://github.com/argoproj/argo-rollouts/issues/3366) ([#3639](https://github.com/argoproj/argo-rollouts/issues/3639))
* **dashboard:** No redirect loop when running on root. Fixes [#3967](https://github.com/argoproj/argo-rollouts/issues/3967) ([#3968](https://github.com/argoproj/argo-rollouts/issues/3968))
* **dashboard:** parse analysis values with JSON5 to handle NaN. Fixes [#2758](https://github.com/argoproj/argo-rollouts/issues/2758) ([#3801](https://github.com/argoproj/argo-rollouts/issues/3801))
* **dashboard:** analysis modal crashed when value not valid ([#3881](https://github.com/argoproj/argo-rollouts/issues/3881))
* **dashboard:** Cleanup viewcontroller after each request. Fixes [#2095](https://github.com/argoproj/argo-rollouts/issues/2095) ([#3966](https://github.com/argoproj/argo-rollouts/issues/3966))
* **metricprovider:** fix handling null values in datadog ([#3893](https://github.com/argoproj/argo-rollouts/issues/3893))
* **metricprovider:** reuse http.Transport for http.Client ([#3780](https://github.com/argoproj/argo-rollouts/issues/3780))
* **trafficrouting:** add nil check for desired annotations map in ALB… ([#3853](https://github.com/argoproj/argo-rollouts/issues/3853))
* **trafficrouting:** Fix downtime on initial deployment using Istio DestinationRule Subsets. Fixes [#2507](https://github.com/argoproj/argo-rollouts/issues/2507) ([#3602](https://github.com/argoproj/argo-rollouts/issues/3602))
<a name="v1.7.2"></a>
## [v1.7.2](https://github.com/argoproj/argo-rollouts/compare/v1.7.1...v1.7.2) (2024-08-12)
### Fix
* replicaSet not scaled down due to incorrect annotations ([#3762](https://github.com/argoproj/argo-rollouts/issues/3762)) ([#3784](https://github.com/argoproj/argo-rollouts/issues/3784))
* add update verb to ClusterRole permissions for scaleDown feature. Fixes [#3672](https://github.com/argoproj/argo-rollouts/issues/3672) ([#3675](https://github.com/argoproj/argo-rollouts/issues/3675))
* **analysis:** explicitly set datadog aggregator to last only on v2 ([#3730](https://github.com/argoproj/argo-rollouts/issues/3730))
* **analysis:** Take RollbackWindow into account when Reconciling Analysis Runs. Fixes [#3669](https://github.com/argoproj/argo-rollouts/issues/3669) ([#3670](https://github.com/argoproj/argo-rollouts/issues/3670))
* **controller:** Get the right resourceName for traefik.io.Fixes [#3615](https://github.com/argoproj/argo-rollouts/issues/3615) ([#3759](https://github.com/argoproj/argo-rollouts/issues/3759))
* **controller:** use the stableRS from the rollout context rather tha… ([#3664](https://github.com/argoproj/argo-rollouts/issues/3664))
* **dashboard:** Update pod status logic to support native sidecars. Fixes [#3366](https://github.com/argoproj/argo-rollouts/issues/3366) ([#3639](https://github.com/argoproj/argo-rollouts/issues/3639))
* **metricprovider:** reuse http.Transport for http.Client ([#3780](https://github.com/argoproj/argo-rollouts/issues/3780))
<a name="v1.7.1"></a>
## [v1.7.1](https://github.com/argoproj/argo-rollouts/compare/v1.7.0...v1.7.1) (2024-06-22)
### Fix
* docs site version selector broken ([#3590](https://github.com/argoproj/argo-rollouts/issues/3590))
* don't default datadog aggregator ([#3643](https://github.com/argoproj/argo-rollouts/issues/3643))
* Add volume for plugin and tmp folder ([#3546](https://github.com/argoproj/argo-rollouts/issues/3546))
<a name="v1.7.0"></a>
## [v1.7.0](https://github.com/argoproj/argo-rollouts/compare/v1.7.0-rc1...v1.7.0) (2024-06-12)
### Fix
* verify the weight of the alb at the end of the rollout ([#3627](https://github.com/argoproj/argo-rollouts/issues/3627))
* when Rollout has pingpong and stable/canary service defined, only alb traffic management uses pingpong. ([#3628](https://github.com/argoproj/argo-rollouts/issues/3628))
* protocol missing in ambassador canary mapping creation. Fixes [#3593](https://github.com/argoproj/argo-rollouts/issues/3593) ([#3603](https://github.com/argoproj/argo-rollouts/issues/3603))
* rs conflict with fallback to patch ([#3559](https://github.com/argoproj/argo-rollouts/issues/3559))
* **controller:** Corrects the logic of comparing sha256 has. Fixes [#3519](https://github.com/argoproj/argo-rollouts/issues/3519) ([#3520](https://github.com/argoproj/argo-rollouts/issues/3520))
<a name="v1.7.0-rc1"></a>
## [v1.7.0-rc1](https://github.com/argoproj/argo-rollouts/compare/v1.6.6...v1.7.0-rc1) (2024-04-03)
### Build
* **deps:** always resolve momentjs version 2.29.4 ([#3182](https://github.com/argoproj/argo-rollouts/issues/3182))
### Chore
* fix PodSecurity warning ([#3424](https://github.com/argoproj/argo-rollouts/issues/3424))
* add WeLab Bank to users.md ([#2996](https://github.com/argoproj/argo-rollouts/issues/2996))
* change file name for readthedocs compatibility ([#2999](https://github.com/argoproj/argo-rollouts/issues/2999))
* Update users doc with CircleCI ([#3028](https://github.com/argoproj/argo-rollouts/issues/3028))
* bump k8s versions to 1.29 ([#3494](https://github.com/argoproj/argo-rollouts/issues/3494))
* updating getCanaryConfigId to be more efficient with better error handling ([#3070](https://github.com/argoproj/argo-rollouts/issues/3070))
* add missing rollout fields ([#3062](https://github.com/argoproj/argo-rollouts/issues/3062))
* upgrade cosign ([#3139](https://github.com/argoproj/argo-rollouts/issues/3139))
* add OpenSSF Scorecard badge ([#3154](https://github.com/argoproj/argo-rollouts/issues/3154))
* add test for reconcileEphemeralMetadata() ([#3163](https://github.com/argoproj/argo-rollouts/issues/3163))
* leave the validation of setHeaderRoute to the plugin when plugins is not empty. ([#2898](https://github.com/argoproj/argo-rollouts/issues/2898))
* fix lint errors reported by golangci-lint ([#3458](https://github.com/argoproj/argo-rollouts/issues/3458))
* fix unit test data races ([#3478](https://github.com/argoproj/argo-rollouts/issues/3478)) ([#3479](https://github.com/argoproj/argo-rollouts/issues/3479))
* added organization to users.md ([#3481](https://github.com/argoproj/argo-rollouts/issues/3481))
* set webpack hashFunction to modern sha256, remove legacy-provider. Fixes [#2609](https://github.com/argoproj/argo-rollouts/issues/2609) ([#3475](https://github.com/argoproj/argo-rollouts/issues/3475))
* remove year from codegen license ([#3282](https://github.com/argoproj/argo-rollouts/issues/3282))
* update follow-redirects to 1.15.5 ([#3314](https://github.com/argoproj/argo-rollouts/issues/3314))
* add logging context around replicaset updates ([#3326](https://github.com/argoproj/argo-rollouts/issues/3326))
* bump notification engine lib ([#3327](https://github.com/argoproj/argo-rollouts/issues/3327))
* change controller's deploy strategy to RollingUpdate due to leader election ([#3334](https://github.com/argoproj/argo-rollouts/issues/3334))
* Add exception to `requireCanaryStableServices` to disable validation when using the `hashicorp/consul` plugin ([#3339](https://github.com/argoproj/argo-rollouts/issues/3339))
* Update notifications engine to 7a06976 ([#3384](https://github.com/argoproj/argo-rollouts/issues/3384))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.4 to 1.30.5 ([#3491](https://github.com/argoproj/argo-rollouts/issues/3491))
* **deps:** bump golang.org/x/oauth2 from 0.17.0 to 0.18.0 ([#3422](https://github.com/argoproj/argo-rollouts/issues/3422))
* **deps:** bump softprops/action-gh-release from 2.0.3 to 2.0.4 ([#3442](https://github.com/argoproj/argo-rollouts/issues/3442))
* **deps:** bump softprops/action-gh-release from 2.0.2 to 2.0.3 ([#3440](https://github.com/argoproj/argo-rollouts/issues/3440))
* **deps:** bump softprops/action-gh-release from 1 to 2 ([#3438](https://github.com/argoproj/argo-rollouts/issues/3438))
* **deps:** bump docker/build-push-action from 5.1.0 to 5.2.0 ([#3439](https://github.com/argoproj/argo-rollouts/issues/3439))
* **deps:** bump docker/setup-buildx-action from 3.1.0 to 3.2.0 ([#3449](https://github.com/argoproj/argo-rollouts/issues/3449))
* **deps:** bump google.golang.org/grpc from 1.62.0 to 1.62.1 ([#3426](https://github.com/argoproj/argo-rollouts/issues/3426))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.4 to 1.27.5 ([#3421](https://github.com/argoproj/argo-rollouts/issues/3421))
* **deps:** bump github.com/stretchr/testify from 1.8.4 to 1.9.0 ([#3419](https://github.com/argoproj/argo-rollouts/issues/3419))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.0 to 1.27.4 ([#3410](https://github.com/argoproj/argo-rollouts/issues/3410))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.27.0 to 1.30.1 ([#3399](https://github.com/argoproj/argo-rollouts/issues/3399))
* **deps:** bump google.golang.org/grpc from 1.61.0 to 1.62.0 ([#3404](https://github.com/argoproj/argo-rollouts/issues/3404))
* **deps:** bump docker/setup-buildx-action from 3.0.0 to 3.1.0 ([#3406](https://github.com/argoproj/argo-rollouts/issues/3406))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.33.0 to 1.36.1 ([#3400](https://github.com/argoproj/argo-rollouts/issues/3400))
* **deps:** bump codecov/codecov-action from 4.0.1 to 4.1.0 ([#3403](https://github.com/argoproj/argo-rollouts/issues/3403))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.1 to 1.30.3 ([#3447](https://github.com/argoproj/argo-rollouts/issues/3447))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.6 to 1.27.0 ([#3368](https://github.com/argoproj/argo-rollouts/issues/3368))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.32.2 to 1.33.0 ([#3363](https://github.com/argoproj/argo-rollouts/issues/3363))
* **deps:** bump docker/login-action from 3.0.0 to 3.1.0 ([#3443](https://github.com/argoproj/argo-rollouts/issues/3443))
* **deps:** bump golang.org/x/oauth2 from 0.16.0 to 0.17.0 ([#3357](https://github.com/argoproj/argo-rollouts/issues/3357))
* **deps:** bump golangci/golangci-lint-action from 3 to 4 ([#3359](https://github.com/argoproj/argo-rollouts/issues/3359))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.7 to 1.27.0 ([#3341](https://github.com/argoproj/argo-rollouts/issues/3341))
* **deps:** bump peter-evans/create-pull-request from 5 to 6 ([#3342](https://github.com/argoproj/argo-rollouts/issues/3342))
* **deps:** bump sigstore/cosign-installer from 3.3.0 to 3.4.0 ([#3343](https://github.com/argoproj/argo-rollouts/issues/3343))
* **deps:** bump codecov/codecov-action from 3.1.5 to 4.0.1 ([#3347](https://github.com/argoproj/argo-rollouts/issues/3347))
* **deps:** bump github.com/evanphx/json-patch/v5 from 5.8.1 to 5.9.0 ([#3335](https://github.com/argoproj/argo-rollouts/issues/3335))
* **deps:** bump docker/build-push-action from 5.2.0 to 5.3.0 ([#3448](https://github.com/argoproj/argo-rollouts/issues/3448))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.5 to 1.26.6 ([#3322](https://github.com/argoproj/argo-rollouts/issues/3322))
* **deps:** bump github.com/evanphx/json-patch/v5 from 5.8.0 to 5.8.1 ([#3312](https://github.com/argoproj/argo-rollouts/issues/3312))
* **deps:** bump codecov/codecov-action from 3.1.4 to 3.1.5 ([#3330](https://github.com/argoproj/argo-rollouts/issues/3330))
* **deps:** bump slsa-framework/slsa-github-generator from 1.9.0 to 1.9.1 ([#3456](https://github.com/argoproj/argo-rollouts/issues/3456))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.36.1 to 1.36.3 ([#3452](https://github.com/argoproj/argo-rollouts/issues/3452))
* **deps:** bump google.golang.org/grpc from 1.60.1 to 1.61.0 ([#3325](https://github.com/argoproj/argo-rollouts/issues/3325))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.4 to 1.26.5 ([#3319](https://github.com/argoproj/argo-rollouts/issues/3319))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.3 to 1.26.4 ([#3313](https://github.com/argoproj/argo-rollouts/issues/3313))
* **deps:** bump actions/cache from 3 to 4 ([#3315](https://github.com/argoproj/argo-rollouts/issues/3315))
* **deps:** bump slsa-framework/slsa-github-generator from 1.9.1 to 1.10.0 ([#3462](https://github.com/argoproj/argo-rollouts/issues/3462))
* **deps:** bump github.com/evanphx/json-patch/v5 from 5.7.0 to 5.8.0 ([#3309](https://github.com/argoproj/argo-rollouts/issues/3309))
* **deps:** bump golang.org/x/oauth2 from 0.15.0 to 0.16.0 ([#3294](https://github.com/argoproj/argo-rollouts/issues/3294))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.32.1 to 1.32.2 ([#3288](https://github.com/argoproj/argo-rollouts/issues/3288))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.2 to 1.26.3 ([#3289](https://github.com/argoproj/argo-rollouts/issues/3289))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.6 to 1.26.7 ([#3290](https://github.com/argoproj/argo-rollouts/issues/3290))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.24.0 to 1.24.1 ([#3291](https://github.com/argoproj/argo-rollouts/issues/3291))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.3 to 1.30.4 ([#3461](https://github.com/argoproj/argo-rollouts/issues/3461))
* **deps:** bump google.golang.org/protobuf from 1.31.0 to 1.32.0 ([#3273](https://github.com/argoproj/argo-rollouts/issues/3273))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.1 to 1.26.2 ([#3268](https://github.com/argoproj/argo-rollouts/issues/3268))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.5 to 1.26.6 ([#3269](https://github.com/argoproj/argo-rollouts/issues/3269))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.32.0 to 1.32.1 ([#3270](https://github.com/argoproj/argo-rollouts/issues/3270))
* **deps:** bump google.golang.org/grpc from 1.60.0 to 1.60.1 ([#3260](https://github.com/argoproj/argo-rollouts/issues/3260))
* **deps:** bump github/codeql-action from 2 to 3 ([#3252](https://github.com/argoproj/argo-rollouts/issues/3252))
* **deps:** bump actions/upload-artifact from 3 to 4 ([#3255](https://github.com/argoproj/argo-rollouts/issues/3255))
* **deps:** bump sigstore/cosign-installer from 3.2.0 to 3.3.0 ([#3245](https://github.com/argoproj/argo-rollouts/issues/3245))
* **deps:** bump google.golang.org/grpc from 1.59.0 to 1.60.0 ([#3246](https://github.com/argoproj/argo-rollouts/issues/3246))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.26.0 to 1.26.1 ([#3241](https://github.com/argoproj/argo-rollouts/issues/3241))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.4 to 1.26.5 ([#3240](https://github.com/argoproj/argo-rollouts/issues/3240))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.31.4 to 1.32.0 ([#3239](https://github.com/argoproj/argo-rollouts/issues/3239))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.12 to 1.26.0 ([#3236](https://github.com/argoproj/argo-rollouts/issues/3236))
* **deps:** bump codecov/codecov-action from 4.1.0 to 4.1.1 ([#3476](https://github.com/argoproj/argo-rollouts/issues/3476))
* **deps:** bump github.com/influxdata/influxdb-client-go/v2 from 2.12.4 to 2.13.0 ([#3217](https://github.com/argoproj/argo-rollouts/issues/3217))
* **deps:** bump actions/stale from 8 to 9 ([#3232](https://github.com/argoproj/argo-rollouts/issues/3232))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.31.3 to 1.31.4 ([#3235](https://github.com/argoproj/argo-rollouts/issues/3235))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.3 to 1.26.4 ([#3234](https://github.com/argoproj/argo-rollouts/issues/3234))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.11 to 1.25.12 ([#3230](https://github.com/argoproj/argo-rollouts/issues/3230))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.31.2 to 1.31.3 ([#3226](https://github.com/argoproj/argo-rollouts/issues/3226))
* **deps:** bump actions/setup-python from 4 to 5 ([#3227](https://github.com/argoproj/argo-rollouts/issues/3227))
* **deps:** bump actions/setup-go from 4.1.0 to 5.0.0 ([#3228](https://github.com/argoproj/argo-rollouts/issues/3228))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.2 to 1.26.3 ([#3229](https://github.com/argoproj/argo-rollouts/issues/3229))
* **deps:** Bump k8s dependencies to v1.26.11 ([#3211](https://github.com/argoproj/argo-rollouts/issues/3211))
* **deps:** bump argo-ui and fix browser console errors ([#3212](https://github.com/argoproj/argo-rollouts/issues/3212))
* **deps:** bump docker/build-push-action from 5.0.0 to 5.1.0 ([#3178](https://github.com/argoproj/argo-rollouts/issues/3178))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.10 to 1.25.11 ([#3206](https://github.com/argoproj/argo-rollouts/issues/3206))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.26.1 to 1.26.2 ([#3207](https://github.com/argoproj/argo-rollouts/issues/3207))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.31.1 to 1.31.2 ([#3208](https://github.com/argoproj/argo-rollouts/issues/3208))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.30.5 to 1.31.1 ([#3201](https://github.com/argoproj/argo-rollouts/issues/3201))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.25.2 to 1.26.1 ([#3203](https://github.com/argoproj/argo-rollouts/issues/3203))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.8 to 1.25.10 ([#3204](https://github.com/argoproj/argo-rollouts/issues/3204))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.25.5 to 1.25.8 ([#3191](https://github.com/argoproj/argo-rollouts/issues/3191))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.24.3 to 1.25.2 ([#3192](https://github.com/argoproj/argo-rollouts/issues/3192))
* **deps:** bump golang.org/x/oauth2 from 0.13.0 to 0.15.0 ([#3187](https://github.com/argoproj/argo-rollouts/issues/3187))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.30.3 to 1.30.5 ([#3193](https://github.com/argoproj/argo-rollouts/issues/3193))
* **deps:** bump github.com/antonmedv/expr from 1.15.4 to 1.15.5 ([#3186](https://github.com/argoproj/argo-rollouts/issues/3186))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.30.1 to 1.30.3 ([#3179](https://github.com/argoproj/argo-rollouts/issues/3179))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.24.0 to 1.24.3 ([#3180](https://github.com/argoproj/argo-rollouts/issues/3180))
* **deps:** bump github.com/influxdata/influxdb-client-go/v2 from 2.12.3 to 2.12.4 ([#3150](https://github.com/argoproj/argo-rollouts/issues/3150))
* **deps:** bump github.com/antonmedv/expr from 1.15.3 to 1.15.4 ([#3184](https://github.com/argoproj/argo-rollouts/issues/3184))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.23.0 to 1.25.5 ([#3183](https://github.com/argoproj/argo-rollouts/issues/3183))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.30.0 to 1.30.1 ([#3166](https://github.com/argoproj/argo-rollouts/issues/3166))
* **deps:** bump github.com/hashicorp/go-plugin from 1.5.2 to 1.6.0 ([#3167](https://github.com/argoproj/argo-rollouts/issues/3167))
* **deps:** update golang to 1.21 ([#3482](https://github.com/argoproj/argo-rollouts/issues/3482))
* **deps:** bump github.com/bombsimon/logrusr/v4 from 4.0.0 to 4.1.0 ([#3151](https://github.com/argoproj/argo-rollouts/issues/3151))
* **deps:** bump github.com/spf13/cobra from 1.7.0 to 1.8.0 ([#3152](https://github.com/argoproj/argo-rollouts/issues/3152))
* **deps:** bump sigstore/cosign-installer from 3.1.2 to 3.2.0 ([#3158](https://github.com/argoproj/argo-rollouts/issues/3158))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.22.0 to 1.23.0 ([#3161](https://github.com/argoproj/argo-rollouts/issues/3161))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.5 to 1.27.9 ([#3469](https://github.com/argoproj/argo-rollouts/issues/3469))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.28.0 to 1.30.0 ([#3144](https://github.com/argoproj/argo-rollouts/issues/3144))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.22.0 to 1.24.0 ([#3143](https://github.com/argoproj/argo-rollouts/issues/3143))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.20.0 to 1.22.0 ([#3149](https://github.com/argoproj/argo-rollouts/issues/3149))
* **deps:** bump google.golang.org/protobuf from 1.32.0 to 1.33.0 ([#3429](https://github.com/argoproj/argo-rollouts/issues/3429))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.19.1 to 1.20.0 ([#3135](https://github.com/argoproj/argo-rollouts/issues/3135))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.21.2 to 1.22.0 ([#3136](https://github.com/argoproj/argo-rollouts/issues/3136))
* **deps:** bump sigs.k8s.io/yaml from 1.3.0 to 1.4.0 ([#3122](https://github.com/argoproj/argo-rollouts/issues/3122))
* **deps:** bump google.golang.org/grpc from 1.58.3 to 1.59.0 ([#3113](https://github.com/argoproj/argo-rollouts/issues/3113))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.21.6 to 1.22.0 ([#3127](https://github.com/argoproj/argo-rollouts/issues/3127))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.19.0 to 1.19.1 ([#3123](https://github.com/argoproj/argo-rollouts/issues/3123))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.9 to 1.28.0 ([#3124](https://github.com/argoproj/argo-rollouts/issues/3124))
* **deps:** bump golang.org/x/oauth2 from 0.10.0 to 0.13.0 ([#3107](https://github.com/argoproj/argo-rollouts/issues/3107))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.45 to 1.19.0 ([#3109](https://github.com/argoproj/argo-rollouts/issues/3109))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.44 to 1.18.45 ([#3101](https://github.com/argoproj/argo-rollouts/issues/3101))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.21.4 to 1.21.6 ([#3100](https://github.com/argoproj/argo-rollouts/issues/3100))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.8 to 1.27.9 ([#3102](https://github.com/argoproj/argo-rollouts/issues/3102))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.21.1 to 1.21.2 ([#3103](https://github.com/argoproj/argo-rollouts/issues/3103))
* **deps:** bump github.com/aws/smithy-go from 1.20.1 to 1.20.2 ([#3488](https://github.com/argoproj/argo-rollouts/issues/3488))
* **deps:** bump google.golang.org/grpc from 1.58.2 to 1.58.3 ([#3098](https://github.com/argoproj/argo-rollouts/issues/3098))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.43 to 1.18.44 ([#3099](https://github.com/argoproj/argo-rollouts/issues/3099))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.21.0 to 1.21.1 ([#3085](https://github.com/argoproj/argo-rollouts/issues/3085))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.7 to 1.27.8 ([#3086](https://github.com/argoproj/argo-rollouts/issues/3086))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.42 to 1.18.43 ([#3072](https://github.com/argoproj/argo-rollouts/issues/3072))
* **deps:** bump github.com/hashicorp/go-plugin from 1.5.1 to 1.5.2 ([#3056](https://github.com/argoproj/argo-rollouts/issues/3056))
* **deps:** bump github.com/prometheus/common from 0.42.0 to 0.51.1 ([#3468](https://github.com/argoproj/argo-rollouts/issues/3468))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.41 to 1.18.42 ([#3055](https://github.com/argoproj/argo-rollouts/issues/3055))
* **deps:** bump github.com/antonmedv/expr from 1.15.2 to 1.15.3 ([#3046](https://github.com/argoproj/argo-rollouts/issues/3046))
* **deps:** bump docker/setup-qemu-action from 2.2.0 to 3.0.0 ([#3031](https://github.com/argoproj/argo-rollouts/issues/3031))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.39 to 1.18.41 ([#3047](https://github.com/argoproj/argo-rollouts/issues/3047))
* **deps:** bump google.golang.org/grpc from 1.58.0 to 1.58.2 ([#3050](https://github.com/argoproj/argo-rollouts/issues/3050))
* **deps:** bump google.golang.org/grpc from 1.57.0 to 1.58.0 ([#3023](https://github.com/argoproj/argo-rollouts/issues/3023))
* **deps:** bump github.com/evanphx/json-patch/v5 from 5.6.0 to 5.7.0 ([#3030](https://github.com/argoproj/argo-rollouts/issues/3030))
* **deps:** bump docker/metadata-action from 4 to 5 ([#3032](https://github.com/argoproj/argo-rollouts/issues/3032))
* **deps:** bump docker/build-push-action from 4.1.1 to 5.0.0 ([#3033](https://github.com/argoproj/argo-rollouts/issues/3033))
* **deps:** bump docker/setup-buildx-action from 2.10.0 to 3.0.0 ([#3034](https://github.com/argoproj/argo-rollouts/issues/3034))
* **deps:** bump docker/login-action from 2.2.0 to 3.0.0 ([#3035](https://github.com/argoproj/argo-rollouts/issues/3035))
* **deps:** bump github.com/antonmedv/expr from 1.15.1 to 1.15.2 ([#3036](https://github.com/argoproj/argo-rollouts/issues/3036))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.26.0 to 1.26.1 ([#3490](https://github.com/argoproj/argo-rollouts/issues/3490))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.21.3 to 1.21.4 ([#3025](https://github.com/argoproj/argo-rollouts/issues/3025))
* **deps:** bump github.com/hashicorp/go-plugin from 1.5.0 to 1.5.1 ([#3017](https://github.com/argoproj/argo-rollouts/issues/3017))
* **deps:** bump github.com/antonmedv/expr from 1.13.0 to 1.15.1 ([#3024](https://github.com/argoproj/argo-rollouts/issues/3024))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.38 to 1.18.39 ([#3018](https://github.com/argoproj/argo-rollouts/issues/3018))
* **deps:** bump actions/checkout from 3 to 4 ([#3012](https://github.com/argoproj/argo-rollouts/issues/3012))
* **deps:** bump sigstore/cosign-installer from 3.1.1 to 3.1.2 ([#3011](https://github.com/argoproj/argo-rollouts/issues/3011))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.37 to 1.18.38 ([#3002](https://github.com/argoproj/argo-rollouts/issues/3002))
* **deps:** bump github.com/hashicorp/go-plugin from 1.4.10 to 1.5.0 ([#2995](https://github.com/argoproj/argo-rollouts/issues/2995))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.36.3 to 1.37.0 ([#3489](https://github.com/argoproj/argo-rollouts/issues/3489))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.9 to 1.27.10 ([#3492](https://github.com/argoproj/argo-rollouts/issues/3492))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.6 to 1.27.7 ([#2990](https://github.com/argoproj/argo-rollouts/issues/2990))
* **deps:** bump docker/setup-buildx-action from 2.9.1 to 2.10.0 ([#2994](https://github.com/argoproj/argo-rollouts/issues/2994))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.21.0 to 1.21.3 ([#2977](https://github.com/argoproj/argo-rollouts/issues/2977))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.36 to 1.18.37 ([#2984](https://github.com/argoproj/argo-rollouts/issues/2984))
* **deps:** bump slsa-framework/slsa-github-generator from 1.8.0 to 1.9.0 ([#2983](https://github.com/argoproj/argo-rollouts/issues/2983))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.33 to 1.18.36 ([#2978](https://github.com/argoproj/argo-rollouts/issues/2978))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.2 to 1.27.6 ([#2979](https://github.com/argoproj/argo-rollouts/issues/2979))
### Docs
* more best practices ([#3484](https://github.com/argoproj/argo-rollouts/issues/3484))
* typo in BlueGreen ([#3463](https://github.com/argoproj/argo-rollouts/issues/3463))
* minor readability on migration ([#3427](https://github.com/argoproj/argo-rollouts/issues/3427))
* added Consul plugin support to website ([#3362](https://github.com/argoproj/argo-rollouts/issues/3362))
* Update shell autocompletion instructions ([#3377](https://github.com/argoproj/argo-rollouts/issues/3377))
* Update Changelog ([#3365](https://github.com/argoproj/argo-rollouts/issues/3365))
* Guides for popular use-cases ([#3346](https://github.com/argoproj/argo-rollouts/issues/3346))
* Update Changelog ([#3328](https://github.com/argoproj/argo-rollouts/issues/3328))
* Fixed the key for headers in prometheus based argo analysis ([#3306](https://github.com/argoproj/argo-rollouts/issues/3306))
* mention archival of the SMI spec ([#3263](https://github.com/argoproj/argo-rollouts/issues/3263))
* Update Changelog ([#3244](https://github.com/argoproj/argo-rollouts/issues/3244))
* Update Changelog ([#3214](https://github.com/argoproj/argo-rollouts/issues/3214))
* Update Changelog ([#2952](https://github.com/argoproj/argo-rollouts/issues/2952))
* fix typo in smi.md ([#3160](https://github.com/argoproj/argo-rollouts/issues/3160))
* Update Changelog ([#3148](https://github.com/argoproj/argo-rollouts/issues/3148))
* add Gateway-API integration information to README.md ([#2985](https://github.com/argoproj/argo-rollouts/issues/2985))
* add CONTRIBUTING.md at root of repo, directing to docs/ ([#3121](https://github.com/argoproj/argo-rollouts/issues/3121))
* Ensure image not present between incomplete sentence. ([#3079](https://github.com/argoproj/argo-rollouts/issues/3079))
* clarify external clusters ([#3058](https://github.com/argoproj/argo-rollouts/issues/3058))
* Update Changelog ([#3021](https://github.com/argoproj/argo-rollouts/issues/3021))
* replace `patchesStrategicMerge` with `patches` in tests/docs ([#3010](https://github.com/argoproj/argo-rollouts/issues/3010))
* update all ingress objects to networking.k8s.io/v1 ([#3005](https://github.com/argoproj/argo-rollouts/issues/3005))
* Remove rogue apostrophe in features/analysis.md ([#3001](https://github.com/argoproj/argo-rollouts/issues/3001))
* add contour integration information to README.md ([#2980](https://github.com/argoproj/argo-rollouts/issues/2980))
* **analysis:** Add note about availability of new datadog v2 functionality ([#3131](https://github.com/argoproj/argo-rollouts/issues/3131))
* **deps:** Specify minimum kustomize version ([#3199](https://github.com/argoproj/argo-rollouts/issues/3199))
### Feat
* Reference AnalysisTemplates inside an AnalysisTemplate ([#3353](https://github.com/argoproj/argo-rollouts/issues/3353))
* add command args for plugin ([#2992](https://github.com/argoproj/argo-rollouts/issues/2992))
* expose secrets for notification templates ([#3455](https://github.com/argoproj/argo-rollouts/issues/3455)) ([#3466](https://github.com/argoproj/argo-rollouts/issues/3466))
* ping pong support for istio ([#3371](https://github.com/argoproj/argo-rollouts/issues/3371))
* display init container images on the rollout dashboard ([#3473](https://github.com/argoproj/argo-rollouts/issues/3473))
* add Analysis run to rollout notifications ([#3296](https://github.com/argoproj/argo-rollouts/issues/3296))
* add the max traffic weight support for the traffic routing (nginx/plugins). ([#3215](https://github.com/argoproj/argo-rollouts/issues/3215))
* allow analysis run to use separate kubeconfig for jobs ([#3350](https://github.com/argoproj/argo-rollouts/issues/3350))
* Support AnalysisRunMetadata and Dryrun for experiments via Rollout ([#3213](https://github.com/argoproj/argo-rollouts/issues/3213))
* allow setting traefik versions ([#3348](https://github.com/argoproj/argo-rollouts/issues/3348))
* support ability to run only the analysis controller ([#3336](https://github.com/argoproj/argo-rollouts/issues/3336))
* Support OAuth2 for prometheus and web providers ([#3038](https://github.com/argoproj/argo-rollouts/issues/3038))
* Add support for aggregator type in DataDog metric provider ([#3293](https://github.com/argoproj/argo-rollouts/issues/3293))
* add analysis modal ([#3174](https://github.com/argoproj/argo-rollouts/issues/3174))
* automatically scale down Deployment after migrating to Rollout ([#3111](https://github.com/argoproj/argo-rollouts/issues/3111))
* Rollouts UI List View Refresh ([#3118](https://github.com/argoproj/argo-rollouts/issues/3118))
* **analysis:** add ttlStrategy on AnalysisRun for garbage collecting stale AnalysisRun automatically ([#3324](https://github.com/argoproj/argo-rollouts/issues/3324))
* **dashboard:** improve pods visibility ([#3483](https://github.com/argoproj/argo-rollouts/issues/3483))
* **trafficrouting:** use values array for multiple accepted values under same header name ([#2974](https://github.com/argoproj/argo-rollouts/issues/2974))
### Fix
* set formatter for klog logger ([#3493](https://github.com/argoproj/argo-rollouts/issues/3493))
* fix the issue that when max weight is 100000000, and the replicas> 20, the trafficWeightToReplicas will return negative value. ([#3474](https://github.com/argoproj/argo-rollouts/issues/3474))
* analysis step should be ignored after promote ([#3016](https://github.com/argoproj/argo-rollouts/issues/3016))
* job metrics owner ref when using custom job kubeconfig/ns ([#3425](https://github.com/argoproj/argo-rollouts/issues/3425))
* Add the GOPATH to the go-to-protobuf command ([#3022](https://github.com/argoproj/argo-rollouts/issues/3022))
* prevent hot loop when fully promoted rollout is aborted ([#3064](https://github.com/argoproj/argo-rollouts/issues/3064))
* include the correct response error in the plugin init error message ([#3388](https://github.com/argoproj/argo-rollouts/issues/3388))
* append weighted destination only when weight is mentioned ([#2734](https://github.com/argoproj/argo-rollouts/issues/2734))
* stuck rollout when 2nd deployment happens before 1st finishes ([#3354](https://github.com/argoproj/argo-rollouts/issues/3354))
* do not require pod readiness when switching desired service selector on abort ([#3338](https://github.com/argoproj/argo-rollouts/issues/3338))
* log rs name when update fails ([#3318](https://github.com/argoproj/argo-rollouts/issues/3318))
* keep rs inormer updated upon updating labels and annotations ([#3321](https://github.com/argoproj/argo-rollouts/issues/3321))
* updates to replicas and pod template at the same time causes rollout to get stuck ([#3272](https://github.com/argoproj/argo-rollouts/issues/3272))
* canary step analysis run wasn't terminated as keep running after promote action being called. Fixes [#3220](https://github.com/argoproj/argo-rollouts/issues/3220) ([#3221](https://github.com/argoproj/argo-rollouts/issues/3221))
* make sure we use the updated rs when we write back to informer ([#3237](https://github.com/argoproj/argo-rollouts/issues/3237))
* conflict on updates to replicaset revision ([#3216](https://github.com/argoproj/argo-rollouts/issues/3216))
* rollouts getting stuck due to bad rs informer updates ([#3200](https://github.com/argoproj/argo-rollouts/issues/3200))
* missing notification on error ([#3076](https://github.com/argoproj/argo-rollouts/issues/3076))
* istio destionationrule subsets enforcement ([#3126](https://github.com/argoproj/argo-rollouts/issues/3126))
* docs require build.os to be defined ([#3133](https://github.com/argoproj/argo-rollouts/issues/3133))
* rollback to stable with dynamicStableScale could overwhelm stable pods ([#3077](https://github.com/argoproj/argo-rollouts/issues/3077))
* inopportune scaling events would lose some status fields ([#3060](https://github.com/argoproj/argo-rollouts/issues/3060))
* codegen was missed ([#3104](https://github.com/argoproj/argo-rollouts/issues/3104))
* keep rs informer updated ([#3091](https://github.com/argoproj/argo-rollouts/issues/3091))
* bump notification-engine to fix double send on self server notifications ([#3095](https://github.com/argoproj/argo-rollouts/issues/3095))
* revert repo change to expr ([#3094](https://github.com/argoproj/argo-rollouts/issues/3094))
* Replace antonmedv/expr with expr-lang/expr ([#3090](https://github.com/argoproj/argo-rollouts/issues/3090))
* Revert "fix: istio destionationrule subsets enforcement ([#3126](https://github.com/argoproj/argo-rollouts/issues/3126))" ([#3147](https://github.com/argoproj/argo-rollouts/issues/3147))
* sync notification controller configmaps/secrets first ([#3075](https://github.com/argoproj/argo-rollouts/issues/3075))
* **controller:** don't timeout rollout when still waiting for scale down delay ([#3417](https://github.com/argoproj/argo-rollouts/issues/3417))
* **controller:** treat spec.canary.analysis.template empty list as spec.canary.analysis not set ([#3446](https://github.com/argoproj/argo-rollouts/issues/3446))
* **controller:** prevent negative vsvc weights on a replica scaledown following a canary abort for istio trafficrouting ([#3467](https://github.com/argoproj/argo-rollouts/issues/3467))
* **controller:** rollback should skip all steps to active rs within RollbackWindow ([#2953](https://github.com/argoproj/argo-rollouts/issues/2953))
* **controller:** typo fix ("Secrete" -> "Secret") in secret informer ([#2965](https://github.com/argoproj/argo-rollouts/issues/2965))
* **metricprovider:** support Datadog v2 API Fixes [#2813](https://github.com/argoproj/argo-rollouts/issues/2813) ([#2997](https://github.com/argoproj/argo-rollouts/issues/2997))
### Refactor
* rename interface{} => any ([#3000](https://github.com/argoproj/argo-rollouts/issues/3000))
### Test
* add unit tests for maxSurge=0, replicas=1 ([#3375](https://github.com/argoproj/argo-rollouts/issues/3375))
<a name="v1.6.6"></a>
## [v1.6.6](https://github.com/argoproj/argo-rollouts/compare/v1.6.5...v1.6.6) (2024-02-12)
@ -98,23 +710,21 @@
### Chore
* bump gotestsum and fix flakey test causing nil channel send ([#2934](https://github.com/argoproj/argo-rollouts/issues/2934))
* quote golang version string to not use go 1.2.2 ([#2915](https://github.com/argoproj/argo-rollouts/issues/2915))
* bump golang to 1.20 ([#2910](https://github.com/argoproj/argo-rollouts/issues/2910))
* add make help cmd ([#2854](https://github.com/argoproj/argo-rollouts/issues/2854))
* add unit test ([#2798](https://github.com/argoproj/argo-rollouts/issues/2798))
* bump gotestsum and fix flakey test causing nil channel send ([#2934](https://github.com/argoproj/argo-rollouts/issues/2934))
* Update test and related docs for plugin name standard ([#2728](https://github.com/argoproj/argo-rollouts/issues/2728))
* bump k8s deps to v0.25.8 ([#2712](https://github.com/argoproj/argo-rollouts/issues/2712))
* add zachaller as lead in owers file ([#2759](https://github.com/argoproj/argo-rollouts/issues/2759))
* add unit test ([#2798](https://github.com/argoproj/argo-rollouts/issues/2798))
* add make help cmd ([#2854](https://github.com/argoproj/argo-rollouts/issues/2854))
* Add tests for pause functionality in rollout package ([#2772](https://github.com/argoproj/argo-rollouts/issues/2772))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.0 to 1.26.1 ([#2840](https://github.com/argoproj/argo-rollouts/issues/2840))
* bump golang to 1.20 ([#2910](https://github.com/argoproj/argo-rollouts/issues/2910))
* **deps:** bump actions/setup-go from 4.0.1 to 4.1.0 ([#2947](https://github.com/argoproj/argo-rollouts/issues/2947))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.30 to 1.18.31 ([#2924](https://github.com/argoproj/argo-rollouts/issues/2924))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.0 to 1.27.1 ([#2927](https://github.com/argoproj/argo-rollouts/issues/2927))
* **deps:** bump docker/build-push-action from 4.0.0 to 4.1.0 ([#2832](https://github.com/argoproj/argo-rollouts/issues/2832))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.3 to 1.27.0 ([#2922](https://github.com/argoproj/argo-rollouts/issues/2922))
* **deps:** bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 ([#2821](https://github.com/argoproj/argo-rollouts/issues/2821))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.29 to 1.18.30 ([#2919](https://github.com/argoproj/argo-rollouts/issues/2919))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.19.0 to 1.19.1 ([#2920](https://github.com/argoproj/argo-rollouts/issues/2920))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.3 to 1.27.0 ([#2922](https://github.com/argoproj/argo-rollouts/issues/2922))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.31 to 1.18.32 ([#2928](https://github.com/argoproj/argo-rollouts/issues/2928))
* **deps:** bump google.golang.org/grpc from 1.56.2 to 1.57.0 ([#2908](https://github.com/argoproj/argo-rollouts/issues/2908))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.28 to 1.18.29 ([#2907](https://github.com/argoproj/argo-rollouts/issues/2907))
* **deps:** bump github.com/antonmedv/expr from 1.12.6 to 1.12.7 ([#2894](https://github.com/argoproj/argo-rollouts/issues/2894))
@ -130,42 +740,44 @@
* **deps:** bump google.golang.org/grpc from 1.56.1 to 1.56.2 ([#2872](https://github.com/argoproj/argo-rollouts/issues/2872))
* **deps:** bump sigstore/cosign-installer from 3.1.0 to 3.1.1 ([#2860](https://github.com/argoproj/argo-rollouts/issues/2860))
* **deps:** bump google.golang.org/protobuf from 1.30.0 to 1.31.0 ([#2859](https://github.com/argoproj/argo-rollouts/issues/2859))
* **deps:** bump sigstore/cosign-installer from 3.0.5 to 3.1.0 ([#2858](https://github.com/argoproj/argo-rollouts/issues/2858))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.0 to 1.27.1 ([#2927](https://github.com/argoproj/argo-rollouts/issues/2927))
* **deps:** bump google.golang.org/grpc from 1.55.0 to 1.56.1 ([#2856](https://github.com/argoproj/argo-rollouts/issues/2856))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.14 to 1.20.1 ([#2926](https://github.com/argoproj/argo-rollouts/issues/2926))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.12 to 1.19.13 ([#2847](https://github.com/argoproj/argo-rollouts/issues/2847))
* **deps:** bump actions/setup-go from 3.5.0 to 4.0.1 ([#2849](https://github.com/argoproj/argo-rollouts/issues/2849))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.26 to 1.18.27 ([#2844](https://github.com/argoproj/argo-rollouts/issues/2844))
* **deps:** bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 ([#2846](https://github.com/argoproj/argo-rollouts/issues/2846))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.1 to 1.26.2 ([#2848](https://github.com/argoproj/argo-rollouts/issues/2848))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.11 to 1.19.12 ([#2839](https://github.com/argoproj/argo-rollouts/issues/2839))
* **deps:** bump slsa-framework/slsa-github-generator from 1.7.0 to 1.8.0 ([#2936](https://github.com/argoproj/argo-rollouts/issues/2936))
* **deps:** bump docker/build-push-action from 4.1.0 to 4.1.1 ([#2837](https://github.com/argoproj/argo-rollouts/issues/2837))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.26.0 to 1.26.1 ([#2840](https://github.com/argoproj/argo-rollouts/issues/2840))
* **deps:** bump sigstore/cosign-installer from 3.0.5 to 3.1.0 ([#2858](https://github.com/argoproj/argo-rollouts/issues/2858))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.25 to 1.18.26 ([#2841](https://github.com/argoproj/argo-rollouts/issues/2841))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.31 to 1.18.32 ([#2928](https://github.com/argoproj/argo-rollouts/issues/2928))
* **deps:** bump docker/build-push-action from 4.0.0 to 4.1.0 ([#2832](https://github.com/argoproj/argo-rollouts/issues/2832))
* **deps:** bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 ([#2821](https://github.com/argoproj/argo-rollouts/issues/2821))
* **deps:** bump github.com/hashicorp/go-plugin from 1.4.9 to 1.4.10 ([#2822](https://github.com/argoproj/argo-rollouts/issues/2822))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.14 to 1.20.1 ([#2926](https://github.com/argoproj/argo-rollouts/issues/2926))
* **deps:** bump github.com/stretchr/testify from 1.8.3 to 1.8.4 ([#2817](https://github.com/argoproj/argo-rollouts/issues/2817))
* **deps:** bump github.com/sirupsen/logrus from 1.9.1 to 1.9.2 ([#2789](https://github.com/argoproj/argo-rollouts/issues/2789))
* **deps:** bump github.com/stretchr/testify from 1.8.2 to 1.8.3 ([#2796](https://github.com/argoproj/argo-rollouts/issues/2796))
* **deps:** bump slsa-framework/slsa-github-generator from 1.7.0 to 1.8.0 ([#2936](https://github.com/argoproj/argo-rollouts/issues/2936))
* **deps:** bump sigstore/cosign-installer from 3.0.3 to 3.0.5 ([#2788](https://github.com/argoproj/argo-rollouts/issues/2788))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.20.1 to 1.20.2 ([#2941](https://github.com/argoproj/argo-rollouts/issues/2941))
* **deps:** bump docker/build-push-action from 4.1.0 to 4.1.1 ([#2837](https://github.com/argoproj/argo-rollouts/issues/2837))
* **deps:** bump github.com/sirupsen/logrus from 1.9.0 to 1.9.1 ([#2784](https://github.com/argoproj/argo-rollouts/issues/2784))
* **deps:** bump codecov/codecov-action from 3.1.3 to 3.1.4 ([#2782](https://github.com/argoproj/argo-rollouts/issues/2782))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.24 to 1.18.25 ([#2770](https://github.com/argoproj/argo-rollouts/issues/2770))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.23 to 1.18.24 ([#2768](https://github.com/argoproj/argo-rollouts/issues/2768))
* **deps:** bump google.golang.org/grpc from 1.54.0 to 1.55.0 ([#2763](https://github.com/argoproj/argo-rollouts/issues/2763))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.22 to 1.18.23 ([#2756](https://github.com/argoproj/argo-rollouts/issues/2756))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.1 to 1.27.2 ([#2944](https://github.com/argoproj/argo-rollouts/issues/2944))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.20.1 to 1.20.2 ([#2941](https://github.com/argoproj/argo-rollouts/issues/2941))
* **deps:** replace `github.com/ghodss/yaml` with `sigs.k8s.io/yaml` ([#2681](https://github.com/argoproj/argo-rollouts/issues/2681))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.10 to 1.26.0 ([#2755](https://github.com/argoproj/argo-rollouts/issues/2755))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.10 to 1.19.11 ([#2757](https://github.com/argoproj/argo-rollouts/issues/2757))
* **deps:** bump github.com/prometheus/client_golang from 1.15.0 to 1.15.1 ([#2754](https://github.com/argoproj/argo-rollouts/issues/2754))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.21 to 1.18.22 ([#2746](https://github.com/argoproj/argo-rollouts/issues/2746))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.9 to 1.25.10 ([#2745](https://github.com/argoproj/argo-rollouts/issues/2745))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.32 to 1.18.33 ([#2943](https://github.com/argoproj/argo-rollouts/issues/2943))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.27.1 to 1.27.2 ([#2944](https://github.com/argoproj/argo-rollouts/issues/2944))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.9 to 1.19.10 ([#2747](https://github.com/argoproj/argo-rollouts/issues/2747))
* **deps:** bump codecov/codecov-action from 3.1.2 to 3.1.3 ([#2735](https://github.com/argoproj/argo-rollouts/issues/2735))
* **deps:** bump actions/setup-go from 4.0.1 to 4.1.0 ([#2947](https://github.com/argoproj/argo-rollouts/issues/2947))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.32 to 1.18.33 ([#2943](https://github.com/argoproj/argo-rollouts/issues/2943))
* **deps:** bump github.com/prometheus/client_golang from 1.14.0 to 1.15.0 ([#2721](https://github.com/argoproj/argo-rollouts/issues/2721))
* **deps:** bump codecov/codecov-action from 3.1.1 to 3.1.2 ([#2711](https://github.com/argoproj/argo-rollouts/issues/2711))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.20 to 1.18.21 ([#2709](https://github.com/argoproj/argo-rollouts/issues/2709))
@ -186,38 +798,38 @@
### Docs
* support for Google Cloud Load balancers ([#2803](https://github.com/argoproj/argo-rollouts/issues/2803))
* Update Changelog ([#2683](https://github.com/argoproj/argo-rollouts/issues/2683))
* mirroring support in Traefik is not implemented yet ([#2904](https://github.com/argoproj/argo-rollouts/issues/2904))
* update contributions.md to include k3d as recommended cluster, add details on e2e test setup, and update kubectl install link. Fixes [#1750](https://github.com/argoproj/argo-rollouts/issues/1750) ([#1867](https://github.com/argoproj/argo-rollouts/issues/1867))
* fix minor mistakes in Migrating to Deployments ([#2270](https://github.com/argoproj/argo-rollouts/issues/2270))
* Update docs of Rollout spec to add active/previewMetadata ([#2833](https://github.com/argoproj/argo-rollouts/issues/2833))
* Update datadog.md - clarify formulas [#2813](https://github.com/argoproj/argo-rollouts/issues/2813) ([#2819](https://github.com/argoproj/argo-rollouts/issues/2819))
* support for Kong ingress ([#2820](https://github.com/argoproj/argo-rollouts/issues/2820))
* Fix AWS App Mesh getting started documentation to avoid connection pooling problems ([#2814](https://github.com/argoproj/argo-rollouts/issues/2814))
* Update Changelog ([#2807](https://github.com/argoproj/argo-rollouts/issues/2807))
* use correct capitalization for "Datadog" in navigation sidebar ([#2809](https://github.com/argoproj/argo-rollouts/issues/2809))
* Add gateway API link, fix Contour plugin naming ([#2787](https://github.com/argoproj/argo-rollouts/issues/2787))
* fix minor mistakes in Migrating to Deployments ([#2270](https://github.com/argoproj/argo-rollouts/issues/2270))
* Show how plugins are loaded ([#2801](https://github.com/argoproj/argo-rollouts/issues/2801))
* Fix typo in header routing specification docs ([#2808](https://github.com/argoproj/argo-rollouts/issues/2808))
* support for Google Cloud Load balancers ([#2803](https://github.com/argoproj/argo-rollouts/issues/2803))
* Show how plugins are loaded ([#2801](https://github.com/argoproj/argo-rollouts/issues/2801))
* Add gateway API link, fix Contour plugin naming ([#2787](https://github.com/argoproj/argo-rollouts/issues/2787))
* Add some details around running locally to make things clearer new contributors ([#2786](https://github.com/argoproj/argo-rollouts/issues/2786))
* Add docs for Amazon Managed Prometheus ([#2777](https://github.com/argoproj/argo-rollouts/issues/2777))
* Update Changelog ([#2765](https://github.com/argoproj/argo-rollouts/issues/2765))
* copy argo cd docs drop down fix ([#2731](https://github.com/argoproj/argo-rollouts/issues/2731))
* Add contour trafficrouter plugin ([#2729](https://github.com/argoproj/argo-rollouts/issues/2729))
* fix link to plugins for traffic routers ([#2719](https://github.com/argoproj/argo-rollouts/issues/2719))
* update contributions.md to include k3d as recommended cluster, add details on e2e test setup, and update kubectl install link. Fixes [#1750](https://github.com/argoproj/argo-rollouts/issues/1750) ([#1867](https://github.com/argoproj/argo-rollouts/issues/1867))
* Update Changelog ([#2683](https://github.com/argoproj/argo-rollouts/issues/2683))
* **analysis:** fix use stringData in the examples ([#2715](https://github.com/argoproj/argo-rollouts/issues/2715))
* **example:** interval requires count ([#2690](https://github.com/argoproj/argo-rollouts/issues/2690))
* **example:** Add example on how to execute subset of e2e tests ([#2867](https://github.com/argoproj/argo-rollouts/issues/2867))
* **example:** interval requires count ([#2690](https://github.com/argoproj/argo-rollouts/issues/2690))
### Feat
* Send informer add k8s event ([#2834](https://github.com/argoproj/argo-rollouts/issues/2834))
* enable self service notification support ([#2930](https://github.com/argoproj/argo-rollouts/issues/2930))
* support prometheus headers ([#2937](https://github.com/argoproj/argo-rollouts/issues/2937))
* Add insecure option for Prometheus. Fixes [#2913](https://github.com/argoproj/argo-rollouts/issues/2913) ([#2914](https://github.com/argoproj/argo-rollouts/issues/2914))
* Add prometheus timeout ([#2893](https://github.com/argoproj/argo-rollouts/issues/2893))
* Support Multiple ALB Ingresses ([#2639](https://github.com/argoproj/argo-rollouts/issues/2639))
* Send informer add k8s event ([#2834](https://github.com/argoproj/argo-rollouts/issues/2834))
* add merge key to analysis template ([#2842](https://github.com/argoproj/argo-rollouts/issues/2842))
* retain TLS configuration for canary ingresses in the nginx integration. Fixes [#1134](https://github.com/argoproj/argo-rollouts/issues/1134) ([#2679](https://github.com/argoproj/argo-rollouts/issues/2679))
* **analysis:** Adds rollout Spec.Selector.MatchLabels to AnalysisRun. Fixes [#2888](https://github.com/argoproj/argo-rollouts/issues/2888) ([#2903](https://github.com/argoproj/argo-rollouts/issues/2903))
@ -227,20 +839,20 @@
### Fix
* istio dropping fields during removing of managed routes ([#2692](https://github.com/argoproj/argo-rollouts/issues/2692))
* resolve args to metric in garbage collection function ([#2843](https://github.com/argoproj/argo-rollouts/issues/2843))
* make new alb fullName field optional for backward compatability ([#2806](https://github.com/argoproj/argo-rollouts/issues/2806))
* cloudwatch metrics provider multiple dimensions ([#2932](https://github.com/argoproj/argo-rollouts/issues/2932))
* rollout not modify the VirtualService whit setHeaderRoute step with workloadRef ([#2797](https://github.com/argoproj/argo-rollouts/issues/2797))
* get new httpRoutesI after removeRoute() to avoid duplicates. Fixes [#2769](https://github.com/argoproj/argo-rollouts/issues/2769) ([#2887](https://github.com/argoproj/argo-rollouts/issues/2887))
* make new alb fullName field optional for backward compatability ([#2806](https://github.com/argoproj/argo-rollouts/issues/2806))
* change logic of analysis run to better handle errors ([#2695](https://github.com/argoproj/argo-rollouts/issues/2695))
* cloudwatch metrics provider multiple dimensions ([#2932](https://github.com/argoproj/argo-rollouts/issues/2932))
* add required ingress permission ([#2933](https://github.com/argoproj/argo-rollouts/issues/2933))
* istio dropping fields during removing of managed routes ([#2692](https://github.com/argoproj/argo-rollouts/issues/2692))
* resolve args to metric in garbage collection function ([#2843](https://github.com/argoproj/argo-rollouts/issues/2843))
* properly wrap Datadog API v2 request body ([#2771](https://github.com/argoproj/argo-rollouts/issues/2771)) ([#2775](https://github.com/argoproj/argo-rollouts/issues/2775))
* add required ingress permission ([#2933](https://github.com/argoproj/argo-rollouts/issues/2933))
* **analysis:** Adding field in YAML to provide region for Sigv4 signing. ([#2794](https://github.com/argoproj/argo-rollouts/issues/2794))
* **analysis:** Graphite query - remove whitespaces ([#2752](https://github.com/argoproj/argo-rollouts/issues/2752))
* **analysis:** Graphite metric provider - index out of range [0] with length 0 ([#2751](https://github.com/argoproj/argo-rollouts/issues/2751))
* **analysis:** Adding field in YAML to provide region for Sigv4 signing. ([#2794](https://github.com/argoproj/argo-rollouts/issues/2794))
* **controller:** Fix for rollouts getting stuck in loop ([#2689](https://github.com/argoproj/argo-rollouts/issues/2689))
* **controller:** Remove name label from some k8s client metrics on events and replicasets ([#2851](https://github.com/argoproj/argo-rollouts/issues/2851))
* **controller:** Fix for rollouts getting stuck in loop ([#2689](https://github.com/argoproj/argo-rollouts/issues/2689))
* **controller:** Add klog logrus bridge. Fixes [#2707](https://github.com/argoproj/argo-rollouts/issues/2707). ([#2701](https://github.com/argoproj/argo-rollouts/issues/2701))
* **trafficrouting:** apply stable selectors on canary service on rollout abort [#2781](https://github.com/argoproj/argo-rollouts/issues/2781) ([#2818](https://github.com/argoproj/argo-rollouts/issues/2818))
@ -315,8 +927,8 @@ types.
* switch to distroless for cli/dashboard image ([#2596](https://github.com/argoproj/argo-rollouts/issues/2596))
* add Tuhu to users ([#2630](https://github.com/argoproj/argo-rollouts/issues/2630))
* bump deps for prisma ([#2643](https://github.com/argoproj/argo-rollouts/issues/2643))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.13 to 1.18.14 ([#2614](https://github.com/argoproj/argo-rollouts/issues/2614))
* **deps:** bump github.com/antonmedv/expr from 1.12.3 to 1.12.5 ([#2670](https://github.com/argoproj/argo-rollouts/issues/2670))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.6 to 1.25.7 ([#2682](https://github.com/argoproj/argo-rollouts/issues/2682))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.15 to 1.18.16 ([#2652](https://github.com/argoproj/argo-rollouts/issues/2652))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.16 to 1.18.17 ([#2659](https://github.com/argoproj/argo-rollouts/issues/2659))
* **deps:** bump github.com/antonmedv/expr from 1.12.2 to 1.12.3 ([#2653](https://github.com/argoproj/argo-rollouts/issues/2653))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.5 to 1.19.6 ([#2654](https://github.com/argoproj/argo-rollouts/issues/2654))
@ -331,20 +943,20 @@ types.
* **deps:** bump google.golang.org/protobuf from 1.29.0 to 1.29.1 ([#2660](https://github.com/argoproj/argo-rollouts/issues/2660))
* **deps:** bump google.golang.org/protobuf from 1.29.1 to 1.30.0 ([#2665](https://github.com/argoproj/argo-rollouts/issues/2665))
* **deps:** bump github.com/stretchr/testify from 1.8.1 to 1.8.2 ([#2627](https://github.com/argoproj/argo-rollouts/issues/2627))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.14 to 1.18.15 ([#2618](https://github.com/argoproj/argo-rollouts/issues/2618))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.6 to 1.19.7 ([#2672](https://github.com/argoproj/argo-rollouts/issues/2672))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.3 to 1.25.4 ([#2617](https://github.com/argoproj/argo-rollouts/issues/2617))
* **deps:** bump github.com/antonmedv/expr from 1.12.0 to 1.12.1 ([#2619](https://github.com/argoproj/argo-rollouts/issues/2619))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.4 to 1.19.5 ([#2616](https://github.com/argoproj/argo-rollouts/issues/2616))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.3 to 1.19.4 ([#2612](https://github.com/argoproj/argo-rollouts/issues/2612))
* **deps:** bump github.com/prometheus/common from 0.39.0 to 0.40.0 ([#2611](https://github.com/argoproj/argo-rollouts/issues/2611))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.6 to 1.25.7 ([#2682](https://github.com/argoproj/argo-rollouts/issues/2682))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.13 to 1.18.14 ([#2614](https://github.com/argoproj/argo-rollouts/issues/2614))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.2 to 1.25.3 ([#2615](https://github.com/argoproj/argo-rollouts/issues/2615))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.19.6 to 1.19.7 ([#2672](https://github.com/argoproj/argo-rollouts/issues/2672))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.14 to 1.18.15 ([#2618](https://github.com/argoproj/argo-rollouts/issues/2618))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.17 to 1.18.19 ([#2673](https://github.com/argoproj/argo-rollouts/issues/2673))
* **deps:** bump imjasonh/setup-crane from 0.2 to 0.3 ([#2600](https://github.com/argoproj/argo-rollouts/issues/2600))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.25.5 to 1.25.6 ([#2671](https://github.com/argoproj/argo-rollouts/issues/2671))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2593](https://github.com/argoproj/argo-rollouts/issues/2593))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.18.15 to 1.18.16 ([#2652](https://github.com/argoproj/argo-rollouts/issues/2652))
* **deps:** bump github.com/antonmedv/expr from 1.12.3 to 1.12.5 ([#2670](https://github.com/argoproj/argo-rollouts/issues/2670))
* **deps:** bump google.golang.org/grpc from 1.52.3 to 1.53.0 ([#2574](https://github.com/argoproj/argo-rollouts/issues/2574))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2565](https://github.com/argoproj/argo-rollouts/issues/2565))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2564](https://github.com/argoproj/argo-rollouts/issues/2564))
@ -406,12 +1018,12 @@ types.
### Fix
* update GetTargetGroupMetadata to call DescribeTags in batches ([#2570](https://github.com/argoproj/argo-rollouts/issues/2570))
* switch service selector back to stable on canary service when aborted ([#2540](https://github.com/argoproj/argo-rollouts/issues/2540))
* change log generator to only add CHANGELOG.md ([#2626](https://github.com/argoproj/argo-rollouts/issues/2626))
* Rollback change on service creation with weightless experiments ([#2624](https://github.com/argoproj/argo-rollouts/issues/2624))
* flakey TestWriteBackToInformer test ([#2621](https://github.com/argoproj/argo-rollouts/issues/2621))
* remove outdated ioutil package dependencies ([#2583](https://github.com/argoproj/argo-rollouts/issues/2583))
* update GetTargetGroupMetadata to call DescribeTags in batches ([#2570](https://github.com/argoproj/argo-rollouts/issues/2570))
* analysis information box [#2530](https://github.com/argoproj/argo-rollouts/issues/2530) ([#2575](https://github.com/argoproj/argo-rollouts/issues/2575))
* support only tls in virtual services ([#2502](https://github.com/argoproj/argo-rollouts/issues/2502))
* **analysis:** Nil Pointer Fixes [#2458](https://github.com/argoproj/argo-rollouts/issues/2458) ([#2680](https://github.com/argoproj/argo-rollouts/issues/2680))
@ -477,21 +1089,21 @@ There was an unintentional change in behavior related to service creation with e
### Chore
* add optum to users list ([#2466](https://github.com/argoproj/argo-rollouts/issues/2466))
* Add Yotpo to USERS.md
* upgrade golang to 1.19 ([#2219](https://github.com/argoproj/argo-rollouts/issues/2219))
* sign container images and checksum assets ([#2334](https://github.com/argoproj/argo-rollouts/issues/2334))
* remove deprecated -i for go build ([#2047](https://github.com/argoproj/argo-rollouts/issues/2047))
* rename the examples/trafffic-management directory to istio ([#2315](https://github.com/argoproj/argo-rollouts/issues/2315))
* update stable tag conditionally ([#2480](https://github.com/argoproj/argo-rollouts/issues/2480))
* fix checksum generation ([#2481](https://github.com/argoproj/argo-rollouts/issues/2481))
* Add Yotpo to USERS.md
* add optum to users list ([#2466](https://github.com/argoproj/argo-rollouts/issues/2466))
* use docker login to sign images ([#2479](https://github.com/argoproj/argo-rollouts/issues/2479))
* use correct image for plugin container ([#2478](https://github.com/argoproj/argo-rollouts/issues/2478))
* rename the examples/trafffic-management directory to istio ([#2315](https://github.com/argoproj/argo-rollouts/issues/2315))
* Add example for istio-subset-split ([#2318](https://github.com/argoproj/argo-rollouts/issues/2318))
* add deprecation notice for rollout_phase in docs ([#2377](https://github.com/argoproj/argo-rollouts/issues/2377)) ([#2378](https://github.com/argoproj/argo-rollouts/issues/2378))
* remove deprecated -i for go build ([#2047](https://github.com/argoproj/argo-rollouts/issues/2047))
* sign container images and checksum assets ([#2334](https://github.com/argoproj/argo-rollouts/issues/2334))
* **cli:** add darwin arm64 to build and release ([#2264](https://github.com/argoproj/argo-rollouts/issues/2264))
* **deps:** upgrade ui deps to fix high security cve's ([#2345](https://github.com/argoproj/argo-rollouts/issues/2345))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.17.0 to 1.17.1 ([#2369](https://github.com/argoproj/argo-rollouts/issues/2369))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2487](https://github.com/argoproj/argo-rollouts/issues/2487))
* **deps:** bump github.com/prometheus/common from 0.37.0 to 0.38.0 ([#2468](https://github.com/argoproj/argo-rollouts/issues/2468))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2455](https://github.com/argoproj/argo-rollouts/issues/2455))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2454](https://github.com/argoproj/argo-rollouts/issues/2454))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2452](https://github.com/argoproj/argo-rollouts/issues/2452))
@ -507,23 +1119,23 @@ There was an unintentional change in behavior related to service creation with e
* **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2413](https://github.com/argoproj/argo-rollouts/issues/2413))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2412](https://github.com/argoproj/argo-rollouts/issues/2412))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2409](https://github.com/argoproj/argo-rollouts/issues/2409))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2406](https://github.com/argoproj/argo-rollouts/issues/2406))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2404](https://github.com/argoproj/argo-rollouts/issues/2404))
* **deps:** bump github.com/prometheus/client_golang ([#2469](https://github.com/argoproj/argo-rollouts/issues/2469))
* **deps:** bump codecov/codecov-action from 2.1.0 to 3.1.1 ([#2251](https://github.com/argoproj/argo-rollouts/issues/2251))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2404](https://github.com/argoproj/argo-rollouts/issues/2404))
* **deps:** bump notification engine ([#2470](https://github.com/argoproj/argo-rollouts/issues/2470))
* **deps:** bump codecov/codecov-action from 2.1.0 to 3.1.1 ([#2251](https://github.com/argoproj/argo-rollouts/issues/2251))
* **deps:** bump github.com/prometheus/common from 0.38.0 to 0.39.0 ([#2476](https://github.com/argoproj/argo-rollouts/issues/2476))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2477](https://github.com/argoproj/argo-rollouts/issues/2477))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.17.2 to 1.17.3 ([#2484](https://github.com/argoproj/argo-rollouts/issues/2484))
* **deps:** bump dependabot/fetch-metadata from 1.3.4 to 1.3.5 ([#2390](https://github.com/argoproj/argo-rollouts/issues/2390))
* **deps:** bump imjasonh/setup-crane from 0.1 to 0.2 ([#2387](https://github.com/argoproj/argo-rollouts/issues/2387))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2487](https://github.com/argoproj/argo-rollouts/issues/2487))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.17.2 to 1.17.3 ([#2484](https://github.com/argoproj/argo-rollouts/issues/2484))
* **deps:** upgrade ui deps to fix high security cve's ([#2345](https://github.com/argoproj/argo-rollouts/issues/2345))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2406](https://github.com/argoproj/argo-rollouts/issues/2406))
* **deps:** bump actions/upload-artifact from 2 to 3 ([#1973](https://github.com/argoproj/argo-rollouts/issues/1973))
* **deps:** bump github.com/influxdata/influxdb-client-go/v2 ([#2381](https://github.com/argoproj/argo-rollouts/issues/2381))
* **deps:** bump github.com/spf13/cobra from 1.6.0 to 1.6.1 ([#2370](https://github.com/argoproj/argo-rollouts/issues/2370))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch ([#2366](https://github.com/argoproj/argo-rollouts/issues/2366))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2367](https://github.com/argoproj/argo-rollouts/issues/2367))
* **deps:** bump github.com/prometheus/common from 0.37.0 to 0.38.0 ([#2468](https://github.com/argoproj/argo-rollouts/issues/2468))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.17.0 to 1.17.1 ([#2369](https://github.com/argoproj/argo-rollouts/issues/2369))
* **deps:** bump github.com/stretchr/testify from 1.8.0 to 1.8.1 ([#2368](https://github.com/argoproj/argo-rollouts/issues/2368))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2365](https://github.com/argoproj/argo-rollouts/issues/2365))
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.16.16 to 1.17.0 ([#2364](https://github.com/argoproj/argo-rollouts/issues/2364))
@ -546,7 +1158,7 @@ There was an unintentional change in behavior related to service creation with e
* **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2294](https://github.com/argoproj/argo-rollouts/issues/2294))
* **deps:** bump google.golang.org/grpc from 1.47.0 to 1.50.0 ([#2293](https://github.com/argoproj/argo-rollouts/issues/2293))
* **deps:** bump docker/metadata-action from 3 to 4 ([#2292](https://github.com/argoproj/argo-rollouts/issues/2292))
* **deps:** bump github/codeql-action from 1 to 2 ([#2289](https://github.com/argoproj/argo-rollouts/issues/2289))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2486](https://github.com/argoproj/argo-rollouts/issues/2486))
* **deps:** bump docker/login-action from 1 to 2 ([#2288](https://github.com/argoproj/argo-rollouts/issues/2288))
* **deps:** bump actions/setup-go from 2 to 3 ([#2287](https://github.com/argoproj/argo-rollouts/issues/2287))
* **deps:** bump dependabot/fetch-metadata from 1.3.3 to 1.3.4 ([#2286](https://github.com/argoproj/argo-rollouts/issues/2286))
@ -555,8 +1167,8 @@ There was an unintentional change in behavior related to service creation with e
* **deps:** bump actions/cache from 2 to 3.0.1 ([#1940](https://github.com/argoproj/argo-rollouts/issues/1940))
* **deps:** bump docker/setup-qemu-action from 1 to 2 ([#2284](https://github.com/argoproj/argo-rollouts/issues/2284))
* **deps:** bump actions/checkout from 2 to 3.1.0 ([#2283](https://github.com/argoproj/argo-rollouts/issues/2283))
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 ([#2486](https://github.com/argoproj/argo-rollouts/issues/2486))
* **deps:** bump github.com/aws/aws-sdk-go-v2/config ([#2485](https://github.com/argoproj/argo-rollouts/issues/2485))
* **deps:** bump github/codeql-action from 1 to 2 ([#2289](https://github.com/argoproj/argo-rollouts/issues/2289))
### Ci
@ -575,23 +1187,23 @@ There was an unintentional change in behavior related to service creation with e
### Docs
* common questions for Rollbacks ([#2027](https://github.com/argoproj/argo-rollouts/issues/2027))
* Add traffic router support to readme ([#2444](https://github.com/argoproj/argo-rollouts/issues/2444))
* fix typo in helm Argo rollouts ([#2442](https://github.com/argoproj/argo-rollouts/issues/2442))
* correct syntax of canary setMirrorRoute's value ([#2431](https://github.com/argoproj/argo-rollouts/issues/2431))
* add artifact badge ([#2331](https://github.com/argoproj/argo-rollouts/issues/2331))
* Use new Google Analytics 4 site tag ([#2299](https://github.com/argoproj/argo-rollouts/issues/2299))
* Explain upgrade process ([#2424](https://github.com/argoproj/argo-rollouts/issues/2424))
* add progressive delivery with gitops example for openshift ([#2400](https://github.com/argoproj/argo-rollouts/issues/2400))
* fix !important block typo ([#2372](https://github.com/argoproj/argo-rollouts/issues/2372))
* mention supported versions ([#2163](https://github.com/argoproj/argo-rollouts/issues/2163))
* Added blog post for minimize impact in Kubernetes using Progressive Delivery and customer side impact ([#2355](https://github.com/argoproj/argo-rollouts/issues/2355))
* add Opensurvey to USERS.md ([#2195](https://github.com/argoproj/argo-rollouts/issues/2195))
* fix typo in helm Argo rollouts ([#2442](https://github.com/argoproj/argo-rollouts/issues/2442))
* Explain upgrade process ([#2424](https://github.com/argoproj/argo-rollouts/issues/2424))
* Update docs for new openapi kustomize support ([#2216](https://github.com/argoproj/argo-rollouts/issues/2216))
* add artifact badge ([#2331](https://github.com/argoproj/argo-rollouts/issues/2331))
* Use new Google Analytics 4 site tag ([#2299](https://github.com/argoproj/argo-rollouts/issues/2299))
* Fixed read the docs rendering ([#2277](https://github.com/argoproj/argo-rollouts/issues/2277))
* Add traffic router support to readme ([#2444](https://github.com/argoproj/argo-rollouts/issues/2444))
* common questions for Rollbacks ([#2027](https://github.com/argoproj/argo-rollouts/issues/2027))
* add OpsVerse as an official user (USERS.md) ([#2209](https://github.com/argoproj/argo-rollouts/issues/2209))
* Fix the controller annotation to enable data scrapping ([#2238](https://github.com/argoproj/argo-rollouts/issues/2238))
* Update release docs for versioned formula ([#2245](https://github.com/argoproj/argo-rollouts/issues/2245))
* Update docs for new openapi kustomize support ([#2216](https://github.com/argoproj/argo-rollouts/issues/2216))
* add Opensurvey to USERS.md ([#2195](https://github.com/argoproj/argo-rollouts/issues/2195))
* **trafficrouting:** fix docs warning to github style markdown ([#2342](https://github.com/argoproj/argo-rollouts/issues/2342))
### Feat
@ -599,30 +1211,30 @@ There was an unintentional change in behavior related to service creation with e
* Implement Issue [#1779](https://github.com/argoproj/argo-rollouts/issues/1779): add rollout.Spec.Strategy.Canary.MinPodsPerReplicaSet ([#2448](https://github.com/argoproj/argo-rollouts/issues/2448))
* Apache APISIX support. Fixes [#2395](https://github.com/argoproj/argo-rollouts/issues/2395) ([#2437](https://github.com/argoproj/argo-rollouts/issues/2437))
* rollback windows. Fixes [#574](https://github.com/argoproj/argo-rollouts/issues/574) ([#2394](https://github.com/argoproj/argo-rollouts/issues/2394))
* Support TCP routes traffic splitting for Istio VirtualService ([#1659](https://github.com/argoproj/argo-rollouts/issues/1659))
* add support for getting the replicaset name via templating ([#2396](https://github.com/argoproj/argo-rollouts/issues/2396))
* Allow Traffic shaping through header based routing for ALB ([#2214](https://github.com/argoproj/argo-rollouts/issues/2214))
* Add support for spec.ingressClassName ([#2178](https://github.com/argoproj/argo-rollouts/issues/2178))
* Support TCP routes traffic splitting for Istio VirtualService ([#1659](https://github.com/argoproj/argo-rollouts/issues/1659))
* **cli:** dynamic shell completion for main resources names (rollouts, experiments, analysisrun) ([#2379](https://github.com/argoproj/argo-rollouts/issues/2379))
* **cli:** add port flag for dashboard command ([#2383](https://github.com/argoproj/argo-rollouts/issues/2383))
* **controller:** don't hardcode experiment ports; always create service ([#2397](https://github.com/argoproj/argo-rollouts/issues/2397))
### Fix
* set gopath in makefile ([#2398](https://github.com/argoproj/argo-rollouts/issues/2398))
* dev build can set DEV_IMAGE=true ([#2440](https://github.com/argoproj/argo-rollouts/issues/2440))
* add patch verb to deployment resource ([#2407](https://github.com/argoproj/argo-rollouts/issues/2407))
* rootPath support so that it uses the embedded files system ([#2198](https://github.com/argoproj/argo-rollouts/issues/2198))
* set gopath in makefile ([#2398](https://github.com/argoproj/argo-rollouts/issues/2398))
* change completed condition so it only triggers on pod hash changes also adds an event for when it does changes. ([#2203](https://github.com/argoproj/argo-rollouts/issues/2203))
* enable notifications without when condition ([#2231](https://github.com/argoproj/argo-rollouts/issues/2231))
* UI not redirecting on / ([#2252](https://github.com/argoproj/argo-rollouts/issues/2252))
* nil pointer while linting with basic canary and ingresses ([#2256](https://github.com/argoproj/argo-rollouts/issues/2256))
* **analysis:** Make AR End When Only Dry-Run Metrics Are Defined ([#2230](https://github.com/argoproj/argo-rollouts/issues/2230))
* **analysis:** Fix Analysis Terminal Decision For Dry-Run Metrics ([#2399](https://github.com/argoproj/argo-rollouts/issues/2399))
* **analysis:** Make AR End When Only Dry-Run Metrics Are Defined ([#2230](https://github.com/argoproj/argo-rollouts/issues/2230))
* **analysis:** Avoid Infinite Error Message Append For Failed Dry-Run Metrics ([#2182](https://github.com/argoproj/argo-rollouts/issues/2182))
* **cli:** nil pointer while linting ([#2324](https://github.com/argoproj/argo-rollouts/issues/2324))
* **controller:** Fix k8s clientset controller metrics. Fixes [#2139](https://github.com/argoproj/argo-rollouts/issues/2139) ([#2261](https://github.com/argoproj/argo-rollouts/issues/2261))
* **controller:** leader election preventing two controllers running and gracefully shutting down ([#2291](https://github.com/argoproj/argo-rollouts/issues/2291))
* **controller:** Fix k8s clientset controller metrics. Fixes [#2139](https://github.com/argoproj/argo-rollouts/issues/2139) ([#2261](https://github.com/argoproj/argo-rollouts/issues/2261))
* **dashboard:** correct mime type is returned. Fixes: [#2290](https://github.com/argoproj/argo-rollouts/issues/2290) ([#2303](https://github.com/argoproj/argo-rollouts/issues/2303))
* **example:** correct docs when metrics got result empty ([#2309](https://github.com/argoproj/argo-rollouts/issues/2309))
* **metricprovider:** Support jsonBody for web metric provider Fixes [#2275](https://github.com/argoproj/argo-rollouts/issues/2275) ([#2312](https://github.com/argoproj/argo-rollouts/issues/2312))

View File

@ -3,7 +3,7 @@
# 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 --platform=$BUILDPLATFORM golang:1.21 as builder
FROM --platform=$BUILDPLATFORM golang:1.23 AS builder
RUN apt-get update && apt-get install -y \
wget \
@ -12,7 +12,7 @@ RUN apt-get update && apt-get install -y \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Install golangci-lint
RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.57.2 && \
RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.1.6 && \
golangci-lint linters
COPY .golangci.yml ${GOPATH}/src/dummy/.golangci.yml
@ -24,7 +24,7 @@ RUN cd ${GOPATH}/src/dummy && \
####################################################################################################
# UI build stage
####################################################################################################
FROM --platform=$BUILDPLATFORM docker.io/library/node:18 as argo-rollouts-ui
FROM --platform=$BUILDPLATFORM docker.io/library/node:18 AS argo-rollouts-ui
WORKDIR /src
ADD ["ui/package.json", "ui/yarn.lock", "./"]
@ -40,7 +40,7 @@ RUN NODE_ENV='production' yarn build
####################################################################################################
# Rollout Controller Build stage which performs the actual build of argo-rollouts binaries
####################################################################################################
FROM --platform=$BUILDPLATFORM golang:1.21 as argo-rollouts-build
FROM --platform=$BUILDPLATFORM golang:1.23 AS argo-rollouts-build
WORKDIR /go/src/github.com/argoproj/argo-rollouts
@ -69,7 +69,7 @@ RUN GOOS=$TARGETOS GOARCH=$TARGETARCH make ${MAKE_TARGET}
####################################################################################################
# Kubectl plugin image
####################################################################################################
FROM gcr.io/distroless/static-debian11 as kubectl-argo-rollouts
FROM gcr.io/distroless/static-debian11 AS kubectl-argo-rollouts
COPY --from=argo-rollouts-build /go/src/github.com/argoproj/argo-rollouts/dist/kubectl-argo-rollouts /bin/kubectl-argo-rollouts

View File

@ -1,7 +1,7 @@
####################################################################################################
# argo-rollouts-dev
####################################################################################################
FROM golang:1.20 as builder
FROM golang:1.20 AS builder
RUN apt-get update && apt-get install -y \
ca-certificates && \
@ -12,9 +12,12 @@ FROM gcr.io/distroless/static-debian11
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY rollouts-controller-linux-amd64 /bin/rollouts-controller
COPY step-plugin-e2e-linux-amd64 /bin/plugin-files/step-plugin-e2e
# Use numeric user, allows kubernetes to identify this user as being
# non-root when we use a security context with runAsNonRoot: true
USER 999
WORKDIR /home/argo-rollouts
ENTRYPOINT [ "/bin/rollouts-controller" ]

View File

@ -12,19 +12,26 @@ GIT_TREE_STATE=$(shell if [ -z "`git status --porcelain`" ]; then echo "clean" ;
GIT_REMOTE_REPO=upstream
VERSION=$(shell if [ ! -z "${GIT_TAG}" ] ; then echo "${GIT_TAG}" | sed -e "s/^v//" ; else cat VERSION ; fi)
TARGET_ARCH?=linux/amd64
# docker image publishing options
DOCKER_PUSH=false
IMAGE_TAG=latest
DOCKER_PUSH ?= false
IMAGE_TAG ?= latest
# build development images
DEV_IMAGE ?= false
# E2E variables
E2E_K8S_CONTEXT ?= rancher-desktop
E2E_INSTANCE_ID ?= argo-rollouts-e2e
E2E_TEST_OPTIONS ?=
E2E_PARALLEL ?= 1
E2E_WAIT_TIMEOUT ?= 120
E2E_WAIT_TIMEOUT ?= 90
GOPATH ?= $(shell go env GOPATH)
# Global toolchain configuration
NODE_OPTIONS=""
override LDFLAGS += \
-X ${PACKAGE}/utils/version.version=${VERSION} \
-X ${PACKAGE}/utils/version.buildDate=${BUILD_DATE} \
@ -57,8 +64,8 @@ define protoc
-I ${GOPATH}/src \
-I ${GOPATH}/pkg/mod/github.com/gogo/protobuf@v1.3.2/gogoproto \
-I ${GOPATH}/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.16.0/third_party/googleapis \
--gogofast_out=plugins=grpc:${GOPATH}/src \
--grpc-gateway_out=logtostderr=true:${GOPATH}/src \
--gogofast_out=plugins=grpc:${CURDIR} \
--grpc-gateway_out=logtostderr=true:${CURDIR} \
--swagger_out=logtostderr=true,fqn_for_swagger_name=true:. \
$(1)
endef
@ -94,6 +101,7 @@ install-tools-local: install-go-tools-local install-protoc-local install-devtool
TYPES := $(shell find pkg/apis/rollouts/v1alpha1 -type f -name '*.go' -not -name openapi_generated.go -not -name '*generated*' -not -name '*test.go')
APIMACHINERY_PKGS=k8s.io/apimachinery/pkg/util/intstr,+k8s.io/apimachinery/pkg/api/resource,+k8s.io/apimachinery/pkg/runtime/schema,+k8s.io/apimachinery/pkg/runtime,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1,k8s.io/api/batch/v1
PKG := $(shell go list ./pkg/apis/rollouts/v1alpha1)
.PHONY: install-toolchain
install-toolchain: install-go-tools-local install-protoc-local
@ -110,21 +118,31 @@ gen-proto: k8s-proto api-proto ui-proto
# generates the .proto files affected by changes to types.go
.PHONY: k8s-proto
k8s-proto: go-mod-vendor $(TYPES) ## generate kubernetes protobuf files
k8s-proto: go-mod-vendor install-protoc-local install-go-tools-local $(TYPES) ## generate kubernetes protobuf files
mkdir -p ${PKG}
cp -f $(CURDIR)/pkg/apis/rollouts/v1alpha1/*.* ${PKG}/
PATH=${DIST_DIR}:$$PATH GOPATH=${GOPATH} go-to-protobuf \
--go-header-file=./hack/custom-boilerplate.go.txt \
--packages=github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1 \
--packages=${PKG} \
--apimachinery-packages=${APIMACHINERY_PKGS} \
--proto-import $(CURDIR)/vendor \
--proto-import=${DIST_DIR}/protoc-include
--proto-import=${CURDIR}/vendor \
--proto-import=${GOPATH}/src \
--proto-import=${DIST_DIR}/protoc-include
touch pkg/apis/rollouts/v1alpha1/generated.proto
cp -R ${GOPATH}/src/github.com/argoproj/argo-rollouts/pkg . | true
cp -Rf $(CURDIR)/github.com/argoproj/argo-rollouts/pkg . | true
# cleaning up
rm -Rf $(CURDIR)/github.com/
rm -Rf $(CURDIR)/k8s.io/
# generates *.pb.go, *.pb.gw.go, swagger from .proto files
.PHONY: api-proto
api-proto: go-mod-vendor k8s-proto ## generate api protobuf files
mkdir -p ${PKG}
cp -f $(CURDIR)/pkg/apis/rollouts/v1alpha1/generated.proto ${PKG}
$(call protoc,pkg/apiclient/rollout/rollout.proto)
cp -Rf $(CURDIR)/github.com/argoproj/argo-rollouts/pkg . | true
# cleaning up
rm -Rf $(CURDIR)/github.com/
# generates ui related proto files
.PHONY: ui-proto
@ -138,22 +156,26 @@ gen-k8scodegen: go-mod-vendor ## generate kubernetes codegen files
# generates ./manifests/crds/
.PHONY: gen-crd
gen-crd: install-go-tools-local ## generate crd manifests
go run ./hack/gen-crd-spec/main.go
gen-crd: go-mod-vendor install-go-tools-local ## generate crd manifests
go run -mod=mod ./hack/gen-crd-spec/main.go
# generates mock files from interfaces
.PHONY: gen-mocks
gen-mocks: install-go-tools-local ## generate mock files
./hack/update-mocks.sh
gen-mocks-fast:
./hack/update-mocks.sh
# generates openapi_generated.go
.PHONY: gen-openapi
gen-openapi: $(DIST_DIR)/openapi-gen ## generate openapi files
PATH=${DIST_DIR}:$$PATH GOPATH=${GOPATH} openapi-gen \
gen-openapi: install-go-tools-local $(DIST_DIR)/openapi-gen ## generate openapi files
PATH=${DIST_DIR}:$$PATH GOPATH=${GOPATH} openapi-gen ${CURRENT_DIR}/pkg/apis/rollouts/v1alpha1 \
--go-header-file ${CURRENT_DIR}/hack/custom-boilerplate.go.txt \
--input-dirs github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1 \
--output-package github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1 \
--report-filename pkg/apis/api-rules/violation_exceptions.list
--output-pkg github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1 \
--output-dir ${CURRENT_DIR}/pkg/apis/rollouts/v1alpha1 \
--output-file openapi_generated.go \
--report-filename ${CURRENT_DIR}/pkg/apis/api-rules/violation_exceptions.list
##@ Plugins
@ -197,10 +219,11 @@ builder-image: ## build builder image
.PHONY: image
image:
ifeq ($(DEV_IMAGE), true)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/step-plugin-e2e-linux-amd64 ./test/cmd/step-plugin-e2e
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/rollouts-controller-linux-amd64 ./cmd/rollouts-controller
DOCKER_BUILDKIT=1 docker build -t $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) -f Dockerfile.dev ${DIST_DIR}
DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) -f Dockerfile.dev ${DIST_DIR}
else
DOCKER_BUILDKIT=1 docker build -t $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) .
DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) .
endif
@if [ "$(DOCKER_PUSH)" = "true" ] ; then docker push $(IMAGE_PREFIX)argo-rollouts:$(IMAGE_TAG) ; fi
@ -209,15 +232,19 @@ endif
# https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html
.PHONY: build-sample-metric-plugin-debug
build-sample-metric-plugin-debug: ## build sample metric plugin with debug info
go build -gcflags="all=-N -l" -o metric-plugin test/cmd/metrics-plugin-sample/main.go
go build -gcflags="all=-N -l" -o plugin-bin/metric-plugin test/cmd/metrics-plugin-sample/main.go
.PHONY: build-sample-traffic-plugin-debug
build-sample-traffic-plugin-debug: ## build sample traffic plugin with debug info
go build -gcflags="all=-N -l" -o traffic-plugin test/cmd/trafficrouter-plugin-sample/main.go
go build -gcflags="all=-N -l" -o plugin-bin/traffic-plugin test/cmd/trafficrouter-plugin-sample/main.go
.PHONY: build-sample-step-plugin-debug
build-sample-step-plugin-debug: ## build sample traffic plugin with debug info
go build -gcflags="all=-N -l" -o plugin-bin/step-plugin test/cmd/step-plugin-sample/main.go
.PHONY: plugin-image
plugin-image: ## build plugin image
DOCKER_BUILDKIT=1 docker build --target kubectl-argo-rollouts -t $(IMAGE_PREFIX)kubectl-argo-rollouts:$(IMAGE_TAG) .
DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) --target kubectl-argo-rollouts -t $(IMAGE_PREFIX)kubectl-argo-rollouts:$(IMAGE_TAG) .
if [ "$(DOCKER_PUSH)" = "true" ] ; then docker push $(IMAGE_PREFIX)kubectl-argo-rollouts:$(IMAGE_TAG) ; fi
##@ Test
@ -230,17 +257,25 @@ test: test-kustomize ## run all tests
test-kustomize: ## run kustomize tests
./test/kustomize/test.sh
setup-e2e:
@kubectl apply --context='${E2E_K8S_CONTEXT}' -f manifests/crds/rollout-crd.yaml
@kubectl apply --context='${E2E_K8S_CONTEXT}' -n argo-rollouts -f test/e2e/step-plugin/argo-rollouts-config.yaml
@rm -rf plugin-bin
@go build -gcflags="all=-N -l" -o plugin-bin/e2e-step-plugin test/cmd/step-plugin-e2e/main.go
.PHONY: start-e2e
start-e2e: ## start e2e test environment
go run ./cmd/rollouts-controller/main.go --instance-id ${E2E_INSTANCE_ID} --loglevel debug --kloglevel 6
mkdir -p coverage-output-e2e
GOCOVERDIR=coverage-output-e2e go run -cover ./cmd/rollouts-controller/main.go --instance-id ${E2E_INSTANCE_ID} --loglevel debug --kloglevel 6
.PHONY: test-e2e
test-e2e: install-devtools-local
${DIST_DIR}/gotestsum --rerun-fails-report=rerunreport.txt --junitfile=junit.xml --format=testname --packages="./test/e2e" --rerun-fails=5 -- -timeout 60m -count 1 --tags e2e -p ${E2E_PARALLEL} -parallel ${E2E_PARALLEL} -v --short ./test/e2e ${E2E_TEST_OPTIONS}
${DIST_DIR}/gotestsum --rerun-fails-report=rerunreport.txt --junitfile=junit-e2e-test.xml --format=testname --packages="./test/e2e" --rerun-fails=5 -- -timeout 60m -count 1 --tags e2e -p ${E2E_PARALLEL} -parallel ${E2E_PARALLEL} -v --short ./test/e2e ${E2E_TEST_OPTIONS}
.PHONY: test-unit
test-unit: install-devtools-local ## run unit tests
${DIST_DIR}/gotestsum --junitfile=junit.xml --format=testname -- -covermode=count -coverprofile=coverage.out `go list ./... | grep -v ./test/cmd/metrics-plugin-sample`
mkdir -p coverage-output-unit
${DIST_DIR}/gotestsum --junitfile=junit-unit-test.xml --format=testname -- `go list ./... | grep -v ./test/cmd/metrics-plugin-sample` -cover -test.gocoverdir=$(CURDIR)/coverage-output-unit
.PHONY: coverage
@ -256,6 +291,8 @@ manifests: ## generate manifests e.g. CRD, RBAC etc.
clean: ## clean up build artifacts
-rm -rf ${CURRENT_DIR}/dist
-rm -rf ${CURRENT_DIR}/ui/dist
-rm -Rf ${CURRENT_DIR}/github.com/
-rm -Rf ${CURRENT_DIR}/k8s.io/
.PHONY: precheckin
precheckin: test lint
@ -268,8 +305,8 @@ serve-docs: docs ## serve docs locally
docker run --rm -it -p 8000:8000 -v ${CURRENT_DIR}:/docs squidfunk/mkdocs-material serve -a 0.0.0.0:8000
.PHONY: docs
docs: ## build docs
go run ./hack/gen-docs/main.go
docs: go-mod-vendor install-go-tools-local ## build docs
go run -mod=mod ./hack/gen-docs/main.go
##@ Release

View File

@ -1,30 +1,42 @@
## Who uses Argo Rollouts?
Organizations below are **officially** using Argo Rollouts. Please send a PR with your organization name if you are using Argo Rollouts.
1. [7shifts](https://www.7shifts.com)
1. [Ada](https://www.ada.cx)
1. [ADP](https://www.adp.com)
1. [Akuity](https://akuity.io/)
1. [Alibaba Group](https://www.alibabagroup.com/)
1. [Amadeus IT Group](https://amadeus.com/)
1. [Ambassador Labs](https://www.getambassador.io)
1. [Ant Group](https://www.antgroup.com/)
1. [AppsFlyer](https://www.appsflyer.com/)
1. [Batumbu](https://batumbu.id/)
1. [Bucketplace](https://www.bucketplace.co.kr/)
1. [BukuKas](https://bukukas.co.id/)
1. [Calm](https://www.calm.com/)
1. [CarGurus](https://www.cargurus.com/)
1. [CircleCI](https://circleci.com/)
1. [Cloudflare](https://cloudflare.com/)
1. [Codefresh](https://codefresh.io/)
1. [Credit Karma](https://creditkarma.com/)
1. [DaoCloud](https://daocloud.io)
1. [Databricks](https://github.com/databricks)
1. [Devtron Labs](https://github.com/devtron-labs/devtron)
1. [Doubble](https://www.doubble.app)
1. [Factorial](https://factorialhr.com)
1. [Farfetch](https://www.farfetch.com/)
1. [Flipkart](https://flipkart.com)
1. [GetYourGuide](https://www.getyourguide.com)
1. [Gllue](https://gllue.com)
1. [Groww](https://groww.in/)
1. [HashiCorp](https://www.hashicorp.com/)
1. [Hepsiburada](https://hepsiburada.com/)
1. [Ibotta](https://home.ibotta.com/)
1. [Intuit](https://www.intuit.com/)
1. [Microsoft](https://microsoft.com/)
1. [New Relic](https://newrelic.com/)
1. [Nextdoor](https://nextdoor.com)
1. [Nitro](https://www.gonitro.com)
1. [Nozzle](https://nozzle.io)
1. [Opensurvey Inc.](https://opensurvey.co.kr)
@ -35,20 +47,32 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit
1. [PagerDuty](https://www.pagerduty.com/)
1. [PayPal](https://www.paypal.com/)
1. [PayPay](https://paypay.ne.jp/)
1. [Plaid](https://plaid.com/)
1. [Priceline](https://priceline.com)
1. [Productboard](https://www.productboard.com)
1. [Quipper](https://www.quipper.com/)
1. [Quizlet](https://quizlet.com)
1. [Red Hat](https://www.redhat.com/)
1. [Salesforce](https://www.salesforce.com/)
1. [SAP Concur](https://www.concur.com/)
1. [Schneider Electric](https://www.se.com)
1. [Shipt](https://www.shipt.com/)
1. [Skillz](https://www.skillz.com)
1. [Spotify](https://www.spotify.com/)
1. [suXess-it](https://www.suxess-it.com/)
1. [Synamedia](https://www.synamedia.com)
1. [StormForge](https://www.stormforge.io)
1. [Taboola](https://www.taboola.com)
1. [TBC Bank](https://tbcbank.ge/)
1. [Trustly](https://www.trustly.com/)
1. [Tuhu](https://www.tuhu.cn/)
1. [Twilio SendGrid](https://sendgrid.com)
1. [Ubie](https://ubie.life/)
1. [Verkada](https://verkada.com)
1. [VISITS Technologies](https://visits.world/en)
1. [WeLab Bank](https://www.welab.bank/)
1. [Wolt](https://wolt.com/)
1. [Yotpo](https://www.yotpo.com/)
1. [Yuno](https://y.uno/)
1. [VGS](https://www.vgs.io)
2. [Groww](https://groww.in/)
1. [X3M ads](https://x3mads.com)

View File

@ -11,7 +11,7 @@ import (
corev1 "k8s.io/api/core/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
analysisutil "github.com/argoproj/argo-rollouts/utils/analysis"
@ -145,7 +145,7 @@ func getResolvedMetricsWithoutSecrets(metrics []v1alpha1.Metric, args []v1alpha1
newArg := arg.DeepCopy()
if newArg.ValueFrom != nil && newArg.ValueFrom.SecretKeyRef != nil {
newArg.ValueFrom = nil
newArg.Value = pointer.StringPtr("temp-for-secret")
newArg.Value = ptr.To[string]("temp-for-secret")
}
newArgs = append(newArgs, *newArg)
}
@ -332,7 +332,7 @@ func (c *Controller) runMeasurements(run *v1alpha1.AnalysisRun, tasks []metricTa
logger := logutil.WithRedactor(*logutil.WithAnalysisRun(run).WithField("metric", t.metric.Name), secrets)
var newMeasurement v1alpha1.Measurement
provider, providerErr := c.newProvider(*logger, t.metric)
provider, providerErr := c.newProvider(*logger, run.Namespace, t.metric)
if providerErr != nil {
log.Errorf("Error in getting metric provider :%v", providerErr)
if t.incompleteMeasurement != nil {
@ -387,17 +387,21 @@ func (c *Controller) runMeasurements(run *v1alpha1.AnalysisRun, tasks []metricTa
metricResult.Successful++
metricResult.Count++
metricResult.ConsecutiveError = 0
metricResult.ConsecutiveSuccess++
case v1alpha1.AnalysisPhaseFailed:
metricResult.Failed++
metricResult.Count++
metricResult.ConsecutiveError = 0
metricResult.ConsecutiveSuccess = 0
case v1alpha1.AnalysisPhaseInconclusive:
metricResult.Inconclusive++
metricResult.Count++
metricResult.ConsecutiveError = 0
metricResult.ConsecutiveSuccess = 0
case v1alpha1.AnalysisPhaseError:
metricResult.Error++
metricResult.ConsecutiveError++
metricResult.ConsecutiveSuccess = 0
logger.Warnf("Measurement had error: %s", newMeasurement.Message)
}
}
@ -599,11 +603,47 @@ func assessMetricStatus(metric v1alpha1.Metric, result v1alpha1.MetricResult, te
return phaseFailureInconclusiveOrError
}
// Check if consecutiveSuccessLimit is applicable and was reached.
if metric.ConsecutiveSuccessLimit != nil && metric.ConsecutiveSuccessLimit.IntValue() > 0 && result.ConsecutiveSuccess >= int32(metric.ConsecutiveSuccessLimit.IntValue()) {
logger.Infof("Metric Assessment Result - %s: ConsecutiveSuccessLimit (%s) Reached", v1alpha1.AnalysisPhaseSuccessful, metric.ConsecutiveSuccessLimit.String())
return v1alpha1.AnalysisPhaseSuccessful
}
// If a count was specified, and we reached that count, then metric is considered Successful.
// The Error, Failed, Inconclusive counters are ignored because those checks have already been
// taken into consideration above, and we do not want to fail if failures < failureLimit.
effectiveCount := metric.EffectiveCount()
if effectiveCount != nil && result.Count >= int32(effectiveCount.IntValue()) {
failureApplicable := (metric.FailureLimit != nil && metric.FailureLimit.IntValue() >= 0) || metric.FailureLimit == nil
successApplicable := metric.ConsecutiveSuccessLimit != nil && metric.ConsecutiveSuccessLimit.IntValue() > 0
if failureApplicable && successApplicable {
// failureLimit was checked above and not reached.
// consecutiveSuccessLimit was checked above and not reached.
failureLimit := "0"
if metric.FailureLimit != nil {
failureLimit = metric.FailureLimit.String()
}
logger.Infof("Metric Assessment Result - %s: ConsecutiveSuccessLimit (%s) Not Reached and FailureLimit (%s) Not Violated", v1alpha1.AnalysisPhaseInconclusive, metric.ConsecutiveSuccessLimit.String(), failureLimit)
return v1alpha1.AnalysisPhaseInconclusive
} else if successApplicable {
logger.Infof("Metric Assessment Result - %s: ConsecutiveSuccessLimit (%s) Not Reached", v1alpha1.AnalysisPhaseFailed, metric.ConsecutiveSuccessLimit.String())
return v1alpha1.AnalysisPhaseFailed
} else if failureApplicable {
// failureLimit was not reached in assessMetricFailureInconclusiveOrError above.
// AnalysisPhaseSuccessful below.
} else {
// This cannot happen, since one of failureLimit or consecutiveSuccessLimit will be applicable
// We validate that failureLimit >= 0 when consecutiveSuccessLimit == 0
}
logger.Infof("Metric Assessment Result - %s: Count (%s) Reached", v1alpha1.AnalysisPhaseSuccessful, effectiveCount.String())
return v1alpha1.AnalysisPhaseSuccessful
}
@ -623,7 +663,8 @@ func assessMetricFailureInconclusiveOrError(metric v1alpha1.Metric, result v1alp
if metric.FailureLimit != nil {
failureLimit = int32(metric.FailureLimit.IntValue())
}
if result.Failed > failureLimit {
// If failureLimit is negative, that means it isn't applicable.
if failureLimit >= 0 && result.Failed > failureLimit {
phase = v1alpha1.AnalysisPhaseFailed
message = fmt.Sprintf("failed (%d) > failureLimit (%d)", result.Failed, failureLimit)
}
@ -744,7 +785,7 @@ func (c *Controller) garbageCollectMeasurements(run *v1alpha1.AnalysisRun, measu
continue
}
logger := logutil.WithAnalysisRun(run).WithField("metric", metric.Name)
provider, err := c.newProvider(*logger, metric)
provider, err := c.newProvider(*logger, run.Namespace, metric)
if err != nil {
errors = append(errors, err)
continue

View File

@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/uuid"
k8stesting "k8s.io/client-go/testing"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
"github.com/argoproj/argo-rollouts/utils/defaults"
@ -594,6 +594,208 @@ func TestAssessMetricStatusFailureLimit(t *testing.T) { // max failures
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
}
func TestAssessMetricStatusConsecutiveSuccessLimit(t *testing.T) {
failureLimit := intstr.FromInt(-1)
consecutiveSuccessLimit := intstr.FromInt(3)
metric := v1alpha1.Metric{
Name: "success-rate",
ConsecutiveSuccessLimit: &consecutiveSuccessLimit,
FailureLimit: &failureLimit,
Interval: "60s",
}
result := v1alpha1.MetricResult{
Failed: 3,
Successful: 4,
ConsecutiveSuccess: 3,
Count: 7,
Measurements: []v1alpha1.Measurement{{
Value: "99",
Phase: v1alpha1.AnalysisPhaseFailed,
StartedAt: timePtr(metav1.NewTime(time.Now().Add(-60 * time.Second))),
FinishedAt: timePtr(metav1.NewTime(time.Now().Add(-60 * time.Second))),
}},
}
/////////////////////////////////////////////////////////////////////////
// For indefinite analysis (count is not set)
// When ConsecutiveSuccess == ConsecutiveSuccessLimit
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
// When ConsecutiveSuccess < ConsecutiveSuccessLimit
consecutiveSuccessLimit = intstr.FromInt(5)
metric.ConsecutiveSuccessLimit = &consecutiveSuccessLimit
assert.Equal(t, v1alpha1.AnalysisPhaseRunning, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
/////////////////////////////////////////////////////////////////////////
// For limited analysis (count is >= 1)
/// When metric.Count is reached
metricCount := intstr.FromInt(7)
metric.Count = &metricCount
//// ConsecutiveSuccess=3 < ConsecutiveSuccessLimit=5
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true))
//// ConsecutiveSuccess = ConsecutiveSuccessLimit = 3
consecutiveSuccessLimit = intstr.FromInt(3)
metric.ConsecutiveSuccessLimit = &consecutiveSuccessLimit
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
/// When metric.Count is not reached
metricCount = intstr.FromInt(9)
metric.Count = &metricCount
//// ConsecutiveSuccess = ConsecutiveSuccessLimit = 3
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
//// ConsecutiveSuccess=3 < ConsecutiveSuccessLimit=5
consecutiveSuccessLimit = intstr.FromInt(5)
metric.ConsecutiveSuccessLimit = &consecutiveSuccessLimit
assert.Equal(t, v1alpha1.AnalysisPhaseRunning, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
}
func TestAssessMetricStatusFailureLimitAndConsecutiveSuccessLimit(t *testing.T) {
failureLimit := intstr.FromInt(4)
consecutiveSuccessLimit := intstr.FromInt(4)
metric := v1alpha1.Metric{
Name: "success-rate",
ConsecutiveSuccessLimit: &consecutiveSuccessLimit,
FailureLimit: &failureLimit,
Interval: "60s",
}
result := v1alpha1.MetricResult{
Failed: 3,
Successful: 4,
ConsecutiveSuccess: 3,
Count: 7,
Measurements: []v1alpha1.Measurement{{
Value: "99",
Phase: v1alpha1.AnalysisPhaseFailed,
StartedAt: timePtr(metav1.NewTime(time.Now().Add(-60 * time.Second))),
FinishedAt: timePtr(metav1.NewTime(time.Now().Add(-60 * time.Second))),
}},
}
/////////////////////////////////////////////////////////////////////////
// For indefinite analysis (count is not set)
// FailureLimit is not violated and consecutiveSuccessLimit not yet satisfied.
assert.Equal(t, v1alpha1.AnalysisPhaseRunning, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
// FailureLimit is violated and consecutiveSuccessLimit is not yet satisfied.
result.Failed = 5
result.Successful = 9
result.Count = 9
result.ConsecutiveSuccess = 0
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true))
// FailureLimit is not violated and consecutiveSuccessLimit is satisfied.
result.Failed = 3
result.Successful = 5
result.Count = 8
result.ConsecutiveSuccess = 4
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
// FailureLimit is violated and consecutiveSuccessLimit is satisfied.
result.Failed = 5
result.Successful = 5
result.Count = 10
result.ConsecutiveSuccess = 4
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true))
/////////////////////////////////////////////////////////////////////////
// For limited analysis (count is >= 1)
metricCount := intstr.FromInt(10)
metric.Count = &metricCount
/// When metric.Count is reached
//// FailureLimit is not violated and consecutiveSuccessLimit not yet satisfied.
result.Failed = 4
result.Successful = 6
result.Count = 10
result.ConsecutiveSuccess = 3
assert.Equal(t, v1alpha1.AnalysisPhaseInconclusive, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseInconclusive, assessMetricStatus(metric, result, true))
//// FailureLimit is violated and consecutiveSuccessLimit is not yet satisfied.
result.Failed = 5
result.Successful = 5
result.Count = 10
result.ConsecutiveSuccess = 3
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true))
//// FailureLimit is not violated and consecutiveSuccessLimit is satisfied.
result.Failed = 4
result.Successful = 6
result.Count = 10
result.ConsecutiveSuccess = 4
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
//// FailureLimit is violated and consecutiveSuccessLimit is satisfied.
result.Failed = 5
result.Successful = 5
result.Count = 10
result.ConsecutiveSuccess = 4
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true))
/// When metric.Count is not yet reached
//// FailureLimit is not violated and consecutiveSuccessLimit not yet satisfied.
result.Failed = 3
result.Successful = 5
result.Count = 8
result.ConsecutiveSuccess = 3
assert.Equal(t, v1alpha1.AnalysisPhaseRunning, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
//// FailureLimit is violated and consecutiveSuccessLimit is not yet satisfied.
result.Failed = 5
result.Successful = 3
result.Count = 8
result.ConsecutiveSuccess = 3
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true))
//// FailureLimit is not violated and consecutiveSuccessLimit is satisfied.
result.Failed = 3
result.Successful = 5
result.Count = 8
result.ConsecutiveSuccess = 4
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, assessMetricStatus(metric, result, true))
//// FailureLimit is violated and consecutiveSuccessLimit is satisfied.
result.Failed = 5
result.Successful = 4
result.Count = 9
result.ConsecutiveSuccess = 4
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, false))
assert.Equal(t, v1alpha1.AnalysisPhaseFailed, assessMetricStatus(metric, result, true))
}
func TestAssessMetricStatusInconclusiveLimit(t *testing.T) {
inconclusiveLimit := intstr.FromInt(2)
metric := v1alpha1.Metric{
@ -1113,7 +1315,7 @@ func TestGarbageCollectArgResolution(t *testing.T) {
defer f.Close()
c, _, _ := f.newController(noResyncPeriodFunc)
c.newProvider = func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) {
c.newProvider = func(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error) {
assert.Equal(t, "https://prometheus.kubeaddons:8080", metric.Provider.Prometheus.Address)
return f.provider, nil
}
@ -1191,7 +1393,7 @@ func TestGarbageCollectArgResolution(t *testing.T) {
}
run.Spec.Args = append(run.Spec.Args, v1alpha1.Argument{
Name: "port",
Value: pointer.String("8080"),
Value: ptr.To[string]("8080"),
})
var measurementRetentionMetricsMap = map[string]*v1alpha1.MeasurementRetention{}
measurementRetentionMetricsMap["metric2"] = &v1alpha1.MeasurementRetention{MetricName: "metric2", Limit: 2}
@ -1869,7 +2071,7 @@ func StartTerminatingAnalysisRun(t *testing.T, isDryRun bool) *v1alpha1.Analysis
Args: []v1alpha1.Argument{
{
Name: "service",
Value: pointer.StringPtr("rollouts-demo-canary.default.svc.cluster.local"),
Value: ptr.To[string]("rollouts-demo-canary.default.svc.cluster.local"),
},
},
Metrics: []v1alpha1.Metric{{
@ -1928,7 +2130,7 @@ func TestInvalidDryRunConfigThrowsError(t *testing.T) {
Args: []v1alpha1.Argument{
{
Name: "service",
Value: pointer.StringPtr("rollouts-demo-canary.default.svc.cluster.local"),
Value: ptr.To[string]("rollouts-demo-canary.default.svc.cluster.local"),
},
},
Metrics: []v1alpha1.Metric{{
@ -1969,7 +2171,7 @@ func TestInvalidMeasurementsRetentionConfigThrowsError(t *testing.T) {
Args: []v1alpha1.Argument{
{
Name: "service",
Value: pointer.StringPtr("rollouts-demo-canary.default.svc.cluster.local"),
Value: ptr.To[string]("rollouts-demo-canary.default.svc.cluster.local"),
},
},
Metrics: []v1alpha1.Metric{{
@ -2113,7 +2315,7 @@ func TestExceededTtlChecked(t *testing.T) {
})
// Test success TTL overrides completed TTL.
testTTLStrategy(t, &v1alpha1.TTLStrategy{
SecondsAfterCompletion: pointer.Int32Ptr(100000),
SecondsAfterCompletion: ptr.To[int32](100000),
SecondsAfterSuccess: &secondsOfOneDay,
}, &v1alpha1.AnalysisRunStatus{
CompletedAt: timePtr(metav1.NewTime(ttlExpiredCompletedTime)),
@ -2124,7 +2326,7 @@ func TestExceededTtlChecked(t *testing.T) {
})
// Test failed TTL overrides completed TTL.
testTTLStrategy(t, &v1alpha1.TTLStrategy{
SecondsAfterCompletion: pointer.Int32Ptr(100000),
SecondsAfterCompletion: ptr.To[int32](100000),
SecondsAfterFailure: &secondsOfOneDay,
}, &v1alpha1.AnalysisRunStatus{
CompletedAt: timePtr(metav1.NewTime(ttlExpiredCompletedTime)),
@ -2136,7 +2338,7 @@ func TestExceededTtlChecked(t *testing.T) {
// Test completed TTL still evaluated when non-matching overrides exist.
testTTLStrategy(t, &v1alpha1.TTLStrategy{
SecondsAfterCompletion: &secondsOfOneDay,
SecondsAfterFailure: pointer.Int32Ptr(86401),
SecondsAfterFailure: ptr.To[int32](86401),
}, &v1alpha1.AnalysisRunStatus{
CompletedAt: timePtr(metav1.NewTime(ttlExpiredCompletedTime)),
Phase: v1alpha1.AnalysisPhaseSuccessful,
@ -2252,7 +2454,7 @@ func TestReconcileAnalysisRunOnRunNotFound(t *testing.T) {
},
Spec: v1alpha1.AnalysisRunSpec{
TTLStrategy: &v1alpha1.TTLStrategy{
SecondsAfterCompletion: pointer.Int32Ptr(1),
SecondsAfterCompletion: ptr.To[int32](1),
},
},
Status: v1alpha1.AnalysisRunStatus{
@ -2289,7 +2491,7 @@ func TestReconcileAnalysisRunOnOtherRunErrors(t *testing.T) {
},
Spec: v1alpha1.AnalysisRunSpec{
TTLStrategy: &v1alpha1.TTLStrategy{
SecondsAfterCompletion: pointer.Int32Ptr(1),
SecondsAfterCompletion: ptr.To[int32](1),
},
},
Status: v1alpha1.AnalysisRunStatus{
@ -2361,7 +2563,7 @@ func TestMaybeGarbageCollectAnalysisRunNoGCIfWithDeletionTimestamp(t *testing.T)
},
Spec: v1alpha1.AnalysisRunSpec{
TTLStrategy: &v1alpha1.TTLStrategy{
SecondsAfterCompletion: pointer.Int32Ptr(1),
SecondsAfterCompletion: ptr.To[int32](1),
},
},
Status: v1alpha1.AnalysisRunStatus{
@ -2388,7 +2590,7 @@ func TestMaybeGarbageCollectAnalysisRunNoGCIfNoCompletedAt(t *testing.T) {
},
Spec: v1alpha1.AnalysisRunSpec{
TTLStrategy: &v1alpha1.TTLStrategy{
SecondsAfterCompletion: pointer.Int32Ptr(1),
SecondsAfterCompletion: ptr.To[int32](1),
},
},
Status: v1alpha1.AnalysisRunStatus{

View File

@ -5,12 +5,13 @@ import (
"sync"
"time"
"github.com/argoproj/argo-rollouts/metric"
jobProvider "github.com/argoproj/argo-rollouts/metricproviders/job"
"github.com/aws/smithy-go/ptr"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"github.com/argoproj/argo-rollouts/metric"
jobProvider "github.com/argoproj/argo-rollouts/metricproviders/job"
unstructuredutil "github.com/argoproj/argo-rollouts/utils/unstructured"
log "github.com/sirupsen/logrus"
@ -54,7 +55,7 @@ type Controller struct {
metricsServer *metrics.MetricsServer
newProvider func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error)
newProvider func(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error)
// used for unit testing
enqueueAnalysis func(obj any)

View File

@ -143,7 +143,7 @@ func (f *fixture) newController(resync resyncFunc) (*Controller, informers.Share
c.enqueueAnalysis(obj)
}
f.provider = &mocks.Provider{}
c.newProvider = func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) {
c.newProvider = func(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error) {
return f.provider, nil
}
@ -370,7 +370,7 @@ func TestFailedToCreateProviderError(t *testing.T) {
f.objects = append(f.objects, ar)
c, i, k8sI := f.newController(noResyncPeriodFunc)
c.newProvider = func(logCtx log.Entry, metric v1alpha1.Metric) (metric.Provider, error) {
c.newProvider = func(logCtx log.Entry, namespace string, metric v1alpha1.Metric) (metric.Provider, error) {
return nil, fmt.Errorf("failed to create provider")
}

View File

@ -3,7 +3,6 @@ package main
import (
"os"
logutil "github.com/argoproj/argo-rollouts/utils/log"
log "github.com/sirupsen/logrus"
"k8s.io/cli-runtime/pkg/genericclioptions"
_ "k8s.io/client-go/plugin/pkg/client/auth/azure"
@ -11,6 +10,8 @@ import (
_ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
"k8s.io/klog/v2"
logutil "github.com/argoproj/argo-rollouts/utils/log"
"github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd"
"github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options"
)

View File

@ -2,12 +2,11 @@ package main
import (
"fmt"
"net/http"
"os"
"strings"
"time"
"github.com/argoproj/argo-rollouts/metricproviders"
"github.com/argoproj/argo-rollouts/utils/record"
"github.com/argoproj/pkg/kubeclientmetrics"
smiclientset "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/clientset/versioned"
log "github.com/sirupsen/logrus"
@ -23,6 +22,11 @@ import (
_ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
"k8s.io/client-go/tools/clientcmd"
"github.com/argoproj/argo-rollouts/metricproviders"
"github.com/argoproj/argo-rollouts/rollout"
"github.com/argoproj/argo-rollouts/utils/errors"
"github.com/argoproj/argo-rollouts/utils/record"
"github.com/argoproj/argo-rollouts/controller"
"github.com/argoproj/argo-rollouts/controller/metrics"
jobprovider "github.com/argoproj/argo-rollouts/metricproviders/job"
@ -65,6 +69,9 @@ func newCommand() *cobra.Command {
analysisThreads int
serviceThreads int
ingressThreads int
ephemeralMetadataThreads int
targetGroupBindingVersion string
albTagKeyResourceID string
istioVersion string
trafficSplitVersion string
traefikAPIGroup string
@ -79,6 +86,7 @@ func newCommand() *cobra.Command {
printVersion bool
selfServiceNotificationEnabled bool
controllersEnabled []string
pprofAddress string
)
electOpts := controller.NewLeaderElectionOptions()
var command = cobra.Command{
@ -97,12 +105,13 @@ func newCommand() *cobra.Command {
}
logutil.SetKLogLogger(logger)
logutil.SetKLogLevel(klogLevel)
log.WithField("version", version.GetVersion()).Info("Argo Rollouts starting")
// set up signals so we handle the first shutdown signal gracefully
ctx := signals.SetupSignalHandlerContext()
defaults.SetVerifyTargetGroup(awsVerifyTargetGroup)
defaults.SetTargetGroupBindingAPIVersion(targetGroupBindingVersion)
defaults.SetalbTagKeyResourceID(albTagKeyResourceID)
defaults.SetIstioAPIVersion(istioVersion)
defaults.SetAmbassadorAPIVersion(ambassadorVersion)
defaults.SetSMIAPIVersion(trafficSplitVersion)
@ -111,30 +120,36 @@ func newCommand() *cobra.Command {
defaults.SetTraefikVersion(traefikVersion)
config, err := clientConfig.ClientConfig()
checkError(err)
errors.CheckError(err)
config.QPS = qps
config.Burst = burst
namespace := metav1.NamespaceAll
configNS, _, err := clientConfig.Namespace()
checkError(err)
errors.CheckError(err)
if namespaced {
namespace = configNS
log.Infof("Using namespace %s", namespace)
}
log.WithFields(log.Fields{
"version": version.GetVersion(),
"namespace": namespace,
"instanceID": instanceID,
"metricsPort": metricsPort,
"healthzPort": healthzPort,
}).Info("Argo Rollouts controller starting")
k8sRequestProvider := &metrics.K8sRequestsCountProvider{}
kubeclientmetrics.AddMetricsTransportWrapper(config, k8sRequestProvider.IncKubernetesRequest)
kubeClient, err := kubernetes.NewForConfig(config)
checkError(err)
errors.CheckError(err)
argoprojClient, err := clientset.NewForConfig(config)
checkError(err)
errors.CheckError(err)
dynamicClient, err := dynamic.NewForConfig(config)
checkError(err)
errors.CheckError(err)
discoveryClient, err := discovery.NewDiscoveryClientForConfig(config)
checkError(err)
errors.CheckError(err)
smiClient, err := smiclientset.NewForConfig(config)
checkError(err)
errors.CheckError(err)
resyncDuration := time.Duration(rolloutResyncPeriod) * time.Second
kubeInformerFactory := kubeinformers.NewSharedInformerFactoryWithOptions(
kubeClient,
@ -145,7 +160,7 @@ func newCommand() *cobra.Command {
options.LabelSelector = instanceIDSelector.String()
}
jobKubeClient, _, err := metricproviders.GetAnalysisJobClientset(kubeClient)
checkError(err)
errors.CheckError(err)
jobNs := metricproviders.GetAnalysisJobNamespace()
if jobNs == "" {
// if not set explicitly use the configured ns
@ -200,14 +215,19 @@ func newCommand() *cobra.Command {
)
mode, err := ingressutil.DetermineIngressMode(ingressVersion, kubeClient.DiscoveryClient)
checkError(err)
errors.CheckError(err)
ingressWrapper, err := ingressutil.NewIngressWrapper(mode, kubeClient, kubeInformerFactory)
checkError(err)
errors.CheckError(err)
if pprofAddress != "" {
mux := controller.NewPProfServer()
go func() { log.Println(http.ListenAndServe(pprofAddress, mux)) }()
}
var cm *controller.Manager
enabledControllers, err := getEnabledControllers(controllersEnabled)
checkError(err)
errors.CheckError(err)
// currently only supports running analysis controller independently
if enabledControllers[controllerAnalysis] {
@ -263,7 +283,8 @@ func newCommand() *cobra.Command {
istioDynamicInformerFactory,
namespaced,
kubeInformerFactory,
jobInformerFactory)
jobInformerFactory,
ephemeralMetadataThreads)
}
if err = cm.Run(ctx, rolloutThreads, serviceThreads, ingressThreads, experimentThreads, analysisThreads, electOpts); err != nil {
log.Fatalf("Error running controller: %s", err.Error())
@ -281,7 +302,7 @@ func newCommand() *cobra.Command {
command.Flags().StringVar(&logLevel, "loglevel", "info", "Set the logging level. One of: debug|info|warn|error")
command.Flags().StringVar(&logFormat, "logformat", "", "Set the logging format. One of: text|json")
command.Flags().IntVar(&klogLevel, "kloglevel", 0, "Set the klog logging level")
command.Flags().IntVar(&metricsPort, "metricsport", controller.DefaultMetricsPort, "Set the port the metrics endpoint should be exposed over")
command.Flags().IntVar(&metricsPort, "metricsPort", controller.DefaultMetricsPort, "Set the port the metrics endpoint should be exposed over")
command.Flags().IntVar(&healthzPort, "healthzPort", controller.DefaultHealthzPort, "Set the port the healthz endpoint should be exposed over")
command.Flags().StringVar(&instanceID, "instance-id", "", "Indicates which argo rollout objects the controller should operate on")
command.Flags().Float32Var(&qps, "qps", defaults.DefaultQPS, "Maximum QPS (queries per second) to the K8s API server")
@ -291,11 +312,14 @@ func newCommand() *cobra.Command {
command.Flags().IntVar(&analysisThreads, "analysis-threads", controller.DefaultAnalysisThreads, "Set the number of worker threads for the Experiment controller")
command.Flags().IntVar(&serviceThreads, "service-threads", controller.DefaultServiceThreads, "Set the number of worker threads for the Service controller")
command.Flags().IntVar(&ingressThreads, "ingress-threads", controller.DefaultIngressThreads, "Set the number of worker threads for the Ingress controller")
command.Flags().IntVar(&ephemeralMetadataThreads, "ephemeral-metadata-threads", rollout.DefaultEphemeralMetadataThreads, "Set the number of worker threads for the Ephemeral Metadata reconciler")
command.Flags().StringVar(&targetGroupBindingVersion, "aws-target-group-binding-api-version", defaults.DefaultTargetGroupBindingAPIVersion, "Set the default AWS TargetGroupBinding apiVersion that controller uses when verifying target group weights.")
command.Flags().StringVar(&albTagKeyResourceID, "alb-tag-key-resource-id", defaults.DefaultAlbTagKeyResourceID, "Set the default AWS LoadBalancer tag key for resource ID that controller uses when verifying target group weights.")
command.Flags().StringVar(&istioVersion, "istio-api-version", defaults.DefaultIstioVersion, "Set the default Istio apiVersion that controller should look when manipulating VirtualServices.")
command.Flags().StringVar(&ambassadorVersion, "ambassador-api-version", defaults.DefaultAmbassadorVersion, "Set the Ambassador apiVersion that controller should look when manipulating Ambassador Mappings.")
command.Flags().StringVar(&trafficSplitVersion, "traffic-split-api-version", defaults.DefaultSMITrafficSplitVersion, "Set the default TrafficSplit apiVersion that controller uses when creating TrafficSplits.")
command.Flags().StringVar(&traefikAPIGroup, "traefik-api-group", defaults.DefaultTraefikAPIGroup, "Set the default Traerfik apiGroup that controller uses.")
command.Flags().StringVar(&traefikVersion, "traefik-api-version", defaults.DefaultTraefikVersion, "Set the default Traerfik apiVersion that controller uses.")
command.Flags().StringVar(&traefikAPIGroup, "traefik-api-group", defaults.DefaultTraefikAPIGroup, "Set the default Traefik apiGroup that controller uses.")
command.Flags().StringVar(&traefikVersion, "traefik-api-version", defaults.DefaultTraefikVersion, "Set the default Traefik apiVersion that controller uses.")
command.Flags().StringVar(&ingressVersion, "ingress-api-version", "", "Set the Ingress apiVersion that the controller should use.")
command.Flags().StringVar(&appmeshCRDVersion, "appmesh-crd-version", defaults.DefaultAppMeshCRDVersion, "Set the default AppMesh CRD Version that controller uses when manipulating resources.")
command.Flags().StringArrayVar(&albIngressClasses, "alb-ingress-classes", defaultALBIngressClass, "Defines all the ingress class annotations that the alb ingress controller operates on. Defaults to alb")
@ -310,6 +334,7 @@ func newCommand() *cobra.Command {
command.Flags().DurationVar(&electOpts.LeaderElectionRetryPeriod, "leader-election-retry-period", controller.DefaultLeaderElectionRetryPeriod, "The duration the clients should wait between attempting acquisition and renewal of a leadership. This is only applicable if leader election is enabled.")
command.Flags().BoolVar(&selfServiceNotificationEnabled, "self-service-notification-enabled", false, "Allows rollouts controller to pull notification config from the namespace that the rollout resource is in. This is useful for self-service notification.")
command.Flags().StringSliceVar(&controllersEnabled, "controllers", nil, "Explicitly specify the list of controllers to run, currently only supports 'analysis', eg. --controller=analysis. Default: all controllers are enabled")
command.Flags().StringVar(&pprofAddress, "enable-pprof-address", "", "Enable pprof profiling on controller by providing a server address.")
return &command
}
@ -358,12 +383,6 @@ func createFormatter(logFormat string) log.Formatter {
return formatType
}
func checkError(err error) {
if err != nil {
log.Fatal(err)
}
}
func getEnabledControllers(controllersEnabled []string) (map[string]bool, error) {
enabledControllers := make(map[string]bool)
for _, controller := range controllersEnabled {

View File

@ -13,9 +13,10 @@ import (
istioutil "github.com/argoproj/argo-rollouts/utils/istio"
rolloutsConfig "github.com/argoproj/argo-rollouts/utils/config"
goPlugin "github.com/hashicorp/go-plugin"
rolloutsConfig "github.com/argoproj/argo-rollouts/utils/config"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/dynamic/dynamicinformer"
@ -238,7 +239,7 @@ func NewAnalysisManager(
log.Fatalf("Failed to init config: %v", err)
}
err = plugin.DownloadPlugins(plugin.FileDownloaderImpl{})
err = plugin.DownloadPlugins(plugin.FileDownloaderImpl{}, kubeclientset)
if err != nil {
log.Fatalf("Failed to download plugins: %v", err)
}
@ -281,6 +282,7 @@ func NewManager(
namespaced bool,
kubeInformerFactory kubeinformers.SharedInformerFactory,
jobInformerFactory kubeinformers.SharedInformerFactory,
ephemeralMetadataThreads int,
) *Manager {
runtime.Must(rolloutscheme.AddToScheme(scheme.Scheme))
log.Info("Creating event broadcaster")
@ -345,6 +347,7 @@ func NewManager(
IngressWorkQueue: ingressWorkqueue,
MetricsServer: metricsServer,
Recorder: recorder,
EphemeralMetadataThreads: ephemeralMetadataThreads,
})
experimentController := experiments.NewController(experiments.ControllerConfig{
@ -444,7 +447,7 @@ func NewManager(
log.Fatalf("Failed to init config: %v", err)
}
err = plugin.DownloadPlugins(plugin.FileDownloaderImpl{})
err = plugin.DownloadPlugins(plugin.FileDownloaderImpl{}, kubeclientset)
if err != nil {
log.Fatalf("Failed to download plugins: %v", err)
}

View File

@ -269,6 +269,41 @@ func TestNewManager(t *testing.T) {
false,
nil,
nil,
rolloutController.DefaultEphemeralMetadataThreads,
)
assert.NotNil(t, cm)
}
func TestNewAnalysisManager(t *testing.T) {
f := newFixture(t)
i := informers.NewSharedInformerFactory(f.client, noResyncPeriodFunc())
k8sI := kubeinformers.NewSharedInformerFactory(f.kubeclient, noResyncPeriodFunc())
scheme := runtime.NewScheme()
listMapping := map[schema.GroupVersionResource]string{}
dynamicClient := dynamicfake.NewSimpleDynamicClientWithCustomListKinds(scheme, listMapping)
dynamicInformerFactory := dynamicinformer.NewDynamicSharedInformerFactory(dynamicClient, 0)
k8sRequestProvider := &metrics.K8sRequestsCountProvider{}
cm := NewAnalysisManager(
"default",
f.kubeclient,
f.client,
k8sI.Batch().V1().Jobs(),
i.Argoproj().V1alpha1().AnalysisRuns(),
i.Argoproj().V1alpha1().AnalysisTemplates(),
i.Argoproj().V1alpha1().ClusterAnalysisTemplates(),
noResyncPeriodFunc(),
8090,
8080,
k8sRequestProvider,
nil,
dynamicInformerFactory,
false,
nil,
nil,
)
assert.NotNil(t, cm)

View File

@ -10,9 +10,10 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/yaml"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
)
const (

View File

@ -2,6 +2,7 @@ package metrics
import (
"net/http"
"runtime"
"time"
"github.com/argoproj/argo-rollouts/utils/defaults"
@ -16,6 +17,7 @@ import (
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
rolloutlister "github.com/argoproj/argo-rollouts/pkg/client/listers/rollouts/v1alpha1"
"github.com/argoproj/argo-rollouts/utils/log"
"github.com/argoproj/argo-rollouts/utils/version"
)
type MetricsServer struct {
@ -39,6 +41,16 @@ const (
MetricsPath = "/metrics"
)
var (
buildInfo = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "build_info",
Help: "A metric with a constant '1' value labeled by version from which Argo-Rollouts was built.",
},
[]string{"version", "goversion", "goarch", "commit"},
)
)
type ServerConfig struct {
Addr string
RolloutLister rolloutlister.RolloutLister
@ -74,6 +86,9 @@ func NewMetricsServer(cfg ServerConfig) *MetricsServer {
reg.MustRegister(MetricNotificationFailedTotal)
reg.MustRegister(MetricNotificationSend)
reg.MustRegister(MetricVersionGauge)
reg.MustRegister(buildInfo)
recordBuildInfo()
mux.Handle(MetricsPath, promhttp.HandlerFor(prometheus.Gatherers{
// contains app controller specific metrics
@ -174,6 +189,12 @@ func (m *MetricsServer) Remove(namespace string, name string, kind string) {
}
// recordBuildInfo publishes information about Argo-Rollouts version and runtime info through an info metric (gauge).
func recordBuildInfo() {
vers := version.GetVersion()
buildInfo.WithLabelValues(vers.Version, runtime.Version(), runtime.GOARCH, vers.GitCommit).Set(1)
}
func boolFloat64(b bool) float64 {
if b {
return 1

View File

@ -9,11 +9,12 @@ import (
"testing"
"time"
"github.com/argoproj/argo-rollouts/utils/defaults"
"github.com/stretchr/testify/assert"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/cache"
"github.com/argoproj/argo-rollouts/utils/defaults"
"github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake"
informerfactory "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions"
logutil "github.com/argoproj/argo-rollouts/utils/log"

View File

@ -1,8 +1,9 @@
package metrics
import (
"github.com/argoproj/argo-rollouts/utils/version"
"github.com/prometheus/client_golang/prometheus"
"github.com/argoproj/argo-rollouts/utils/version"
)
// Follow Prometheus naming practices

View File

@ -10,10 +10,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/yaml"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
"github.com/argoproj/argo-rollouts/utils/conditions"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
"github.com/argoproj/argo-rollouts/utils/conditions"
)
const (

21
controller/profiling.go Normal file
View File

@ -0,0 +1,21 @@
package controller
import (
"net/http"
"net/http/pprof"
)
// NewPProfServer returns a new pprof server to gather runtime profiling data
func NewPProfServer() *http.ServeMux {
mux := http.NewServeMux()
// TODO: Remove enumerating all pprof endpoints if/when a more ergonomic
// attachment solution is introduced. See: https://github.com/golang/go/issues/71213.
mux.HandleFunc("/debug/pprof/", pprof.Index)
mux.HandleFunc("/debug/pprof/cmdline/", pprof.Cmdline)
mux.HandleFunc("/debug/pprof/profile/", pprof.Profile)
mux.HandleFunc("/debug/pprof/symbol/", pprof.Symbol)
mux.HandleFunc("/debug/pprof/trace/", pprof.Trace)
return mux
}

View File

@ -1,24 +1,27 @@
# Contributing
## Before You Start
Argo Rollouts is written in Golang. If you do not have a good grounding in Go, try out [the tutorial](https://tour.golang.org/).
## Pre-requisites
Install:
* [docker](https://docs.docker.com/install/#supported-platforms)
* [golang](https://golang.org/)
* [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)
* [kustomize](https://github.com/kubernetes-sigs/kustomize/releases) >= 4.5.5
* [k3d](https://k3d.io/) recommended
- [docker](https://docs.docker.com/install/#supported-platforms)
- [golang](https://golang.org/)
- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)
- [kustomize](https://github.com/kubernetes-sigs/kustomize/releases) >= 4.5.5
- [k3d](https://k3d.io/) recommended
Kustomize is required for unit tests (`make test` is using it), so you [must install it](https://kubectl.docs.kubernetes.io/installation/kustomize/)
locally if you wish to make code contributions to Argo Rollouts.
Argo Rollout additionally uses the following tools
* `golangci-lint` to lint the project.
* `protoc` and `swagger-codegen` to generate proto related files
* `yarn` to build the UI
- `golangci-lint` to lint the project.
- `protoc` and `swagger-codegen` to generate proto related files
- `yarn` to build the UI
Run the following commands to install them:
@ -56,10 +59,9 @@ cd ~/go/src/github.com/argoproj/argo-rollouts
The `make controller` command will build the controller.
* `make install-tools-local` - Runs scripts to install codegen utility CLIs necessary for codegen.
* `make codegen` - Runs the code generator that creates the informers, client, lister, and deepcopies from the types.go and modifies the open-api spec.
- `make install-tools-local` - Runs scripts to install codegen utility CLIs necessary for codegen.
- `make codegen` - Runs the code generator that creates the informers, client, lister, and deepcopies from the types.go and modifies the open-api spec.
## Running Controller Locally
@ -83,11 +85,7 @@ make test
## Running E2E tests
The end-to-end tests need to run against a kubernetes cluster with the Argo Rollouts controller
running. The rollout controller can be started with the command:
```
make start-e2e
```
running.
Start and prepare your cluster for e2e tests:
@ -98,6 +96,12 @@ kubectl apply -k manifests/crds
kubectl apply -f test/e2e/crds
```
The rollout controller can be started with the command:
```
make start-e2e
```
Then run the e2e tests:
```
@ -110,11 +114,30 @@ To run a subset of e2e tests, you need to specify the suite with `-run`, and the
E2E_TEST_OPTIONS="-run 'TestCanarySuite' -testify.m 'TestCanaryScaleDownOnAbortNoTrafficRouting'" make test-e2e
```
Available test suites [are the following](https://github.com/argoproj/argo-rollouts/tree/master/test/e2e):
* `TestBlueGreenSuite`
* `TestCanarySuite`
* `TestAnalysisSuite`
* `TestExperimentSuite`
* `TestFunctionalSuite`
* `TestRollbackSuite`
* `TestIstioSuite`
* `TestHeaderRoutingSuite` (Istio only)
* `TestMirrorRouteSuite` (Istio only)
* `TestAPISIXSuite`
* `TestAppMeshSuite`
* `TestAWSSuite`
* `StepPluginSuite`
* `SMISuite` (SMI is [deprecated](https://www.cncf.io/blog/2023/10/03/cncf-archives-the-service-mesh-interface-smi-project/))
* `SMIIngressSuite` (SMI is [deprecated](https://www.cncf.io/blog/2023/10/03/cncf-archives-the-service-mesh-interface-smi-project/))
## Running the UI
If you'd like to run the UI locally, you first need a running Rollouts controller. This can be a locally running controller with a k3d cluster, as described above, or a controller running in a remote Kubernetes cluster.
If you'd like to run the UI locally, you first need a running Rollouts controller. This can be a locally running controller with a k3d cluster, as described above, or a controller running in a remote Kubernetes cluster.
In order for the local React app to communicate with the controller and Kubernetes API, run the following to open a port forward to the dashboard:
```bash
kubectl argo rollouts dashboard
```
@ -127,12 +150,30 @@ make plugin
```
In another terminal, run the following to start the UI:
```bash
cd ui
yarn install
yarn start
```
## Getting your feature accepted
To be eligible for inclusion in a minor release, a new feature must meet the following criteria before the releases RC
date.
If it is a large feature that involves significant design decisions, that feature must be described in a Proposal.
The feature PR must include:
* Tests (passing)
* Documentation
* If necessary, a note in the Upgrading docs for the planned minor release
* The PR must be reviewed, approved, and merged by an Approver.
If these criteria are not met by the RC date, the feature will be ineligible for inclusion in the RC series or GA for
that minor release. It will have to wait for the next minor release.
## Controller architecture
Argo Rollouts is actually a collection of individual controllers
@ -142,11 +183,11 @@ that handle a specific aspect of Progressive Delivery.
The controllers are:
* [Rollout Controller](https://github.com/argoproj/argo-rollouts/blob/master/rollout/controller.go)
* [Service Controller](https://github.com/argoproj/argo-rollouts/blob/master/service/service.go)
* [Ingress Controller](https://github.com/argoproj/argo-rollouts/blob/master/ingress/ingress.go)
* [Experiment Controller](https://github.com/argoproj/argo-rollouts/blob/master/experiments/controller.go)
* [AnalysisRun Controller](https://github.com/argoproj/argo-rollouts/blob/master/analysis/controller.go)
- [Rollout Controller](https://github.com/argoproj/argo-rollouts/blob/master/rollout/controller.go)
- [Service Controller](https://github.com/argoproj/argo-rollouts/blob/master/service/service.go)
- [Ingress Controller](https://github.com/argoproj/argo-rollouts/blob/master/ingress/ingress.go)
- [Experiment Controller](https://github.com/argoproj/argo-rollouts/blob/master/experiments/controller.go)
- [AnalysisRun Controller](https://github.com/argoproj/argo-rollouts/blob/master/analysis/controller.go)
### Tips
@ -158,36 +199,35 @@ KUBECONFIG=~/.kube/minikube make test-e2e
```
2. To run a specific e2e test, set the `E2E_TEST_OPTIONS` environment variable to specify the test
(or test regex):
(or test regex):
```shell
make test-e2e E2E_TEST_OPTIONS="-testify.m ^TestRolloutRestart$"
```
3. The e2e tests are designed to run as quickly as possible, eliminating readiness and termination
delays. However, it is often desired to artificially slow down the tests for debugging purposes,
as well as to understand what the test is doing. To delay startup and termination of pods, set the
`E2E_POD_DELAY` to an integer value in seconds. This environment variable is often coupled with
`E2E_TEST_OPTIONS` to debug and slow down a specific test.
delays. However, it is often desired to artificially slow down the tests for debugging purposes,
as well as to understand what the test is doing. To delay startup and termination of pods, set the
`E2E_POD_DELAY` to an integer value in seconds. This environment variable is often coupled with
`E2E_TEST_OPTIONS` to debug and slow down a specific test.
```shell
make test-e2e E2E_POD_DELAY=10
```
4. Increasing the timeout. The E2E tests time out waiting on conditions to be met within 60 seconds.
If debugging the rollout controller, it may be useful to increase this timeout while say sitting
at a debugger breakpoint:
If debugging the rollout controller, it may be useful to increase this timeout while say sitting
at a debugger breakpoint:
```shell
make test-e2e E2E_WAIT_TIMEOUT=999999
```
5. The e2e tests leverage a feature of the controller allowing the controller to be sharded with
a user-specific "instance id" label. This allows the tests to operate only on rollouts with the
specified label, and prevents any other controllers (including the system rollout controller),
from also operating on the same set of rollouts. This value can be changed (from the default of
`argo-rollouts-e2e`), using the `E2E_INSTANCE_ID` environment variable:
a user-specific "instance id" label. This allows the tests to operate only on rollouts with the
specified label, and prevents any other controllers (including the system rollout controller),
from also operating on the same set of rollouts. This value can be changed (from the default of
`argo-rollouts-e2e`), using the `E2E_INSTANCE_ID` environment variable:
```shell
make start-e2e E2E_INSTANCE_ID=foo
@ -200,8 +240,7 @@ Alternatively, the e2e tests can be run against the system controller (i.e. with
make start-e2e E2E_INSTANCE_ID=''
```
6. Working on CRDs? While editing them directly works when you are finding the shape of things you want, the final CRDs are autogenerated. Make sure to regenerate them before submitting PRs. They are controlled by the relevant annotations in the types file:
6. Working on CRDs? While editing them directly works when you are finding the shape of things you want, the final CRDs are autogenerated. Make sure to regenerate them by running `make gen-crd` before submitting PRs. They are controlled by the relevant annotations in the types file:
eg: Analysis Templates are controlled by annotations in `pkg/apis/rollouts/v1alpha1/analysis_types.go`.
@ -242,14 +281,16 @@ kubectl -n argo-rollouts apply -f manifests/install.yaml
```
## Upgrading Kubernetes Libraries
Argo Rollouts has a dependency on the kubernetes/kubernetes repo for some of the functionality that has not been
pushed into the other kubernetes repositories yet. In order to import the kubernetes/kubernetes repo, all of the
associated repos have to pinned to the correct version specified by the kubernetes/kubernetes release. The
`./hack/update-k8s-dependencies.sh` updates all the dependencies to the those correct versions.
## Upgrading Notifications Engine
Argo Rollouts has a dependency on the [argoproj/notifications-engines](https://github.com/argoproj/notifications-engine) repo
for the notifications functionality and related documentation.
Argo Rollouts has a dependency on the [argoproj/notifications-engines](https://github.com/argoproj/notifications-engine) repo
for the notifications functionality and related documentation.
This is updated by upgrading the Go library in `go.mod` by running the commands:

View File

@ -1,5 +1,7 @@
# FAQ
Be sure to read the [Best practices page](../best-practices) as well.
## General
### Does Argo Rollouts depend on Argo CD or any other Argo project?
@ -13,7 +15,7 @@ Argo CD understands the health of Argo Rollouts resources via Argo CDs [Lua h
As a result, an operator can build automation to react to the states of the Argo Rollouts resources. For example, if a Rollout created by Argo CD is paused, Argo CD detects that and marks the Application as suspended. Once the new version is verified to be good, the operator can use Argo CDs resume resource action to unpause the Rollout so it can continue to make progress.
### Can we run the Argo Rollouts kubectl plugin commands via Argo CD?
Argo CD supports running Lua scripts to modify resource kinds (i.e. suspending a CronJob by setting the `.spec.suspend` to true). These Lua Scripts can be configured in the argocd-cm ConfigMap or upstreamed to the Argo CD's [resource_customizations](https://github.com/argoproj/argo-cd/tree/master/resource_customizations) directory. These custom actions have two Lua scripts: one to modify the said resource and another to detect if the action can be executed (i.e. A user should not be able to resuming a unpaused Rollout). Argo CD allows users to execute these actions via the UI or CLI.
Argo CD supports running Lua scripts to modify resource kinds (i.e. suspending a CronJob by setting the `.spec.suspend` to true). These Lua Scripts can be configured in the argocd-cm ConfigMap or upstreamed to the Argo CD's [resource_customizations](https://github.com/argoproj/argo-cd/tree/master/resource_customizations) directory. These custom actions have two Lua scripts: one to modify the said resource and another to detect if the action can be executed (i.e. A user should not be able to resuming an unpaused Rollout). Argo CD allows users to execute these actions via the UI or CLI.
In the CLI, a user (or a CI system) can run
```bash
@ -45,6 +47,10 @@ Yes. A k8s cluster can run multiple replicas of Argo-rollouts controllers to ach
No you cannot do that (even though Argo CD can work that way). This is by design because the Rollout is a custom resource unknown to vanilla Kubernetes. You need the Rollout CRD as well as the controller in the deployment cluster (every cluster that will use workloads with Rollouts).
### What is the version skew policy between the controller and the kubectl plugin?
The Argo Rollout CLI/Kubectl plugin just patches the Rollout object or reads fields from it. [There is no separate "Argo Rollouts API"](../best-practices#there-is-no-argo-rollouts-api). Old versions of the plugin might not understand new fields that are added in the [Rollout specification](../features/specification/). We have never made a breaking change intentionally (removed something from the Rollout Spec). So old clients should work even with newer Rollout versions (excluding new features).
## Rollouts
### Which deployment strategies does Argo Rollouts support?

View File

@ -41,6 +41,48 @@ stringData:
`apiVersion` here is different from the `apiVersion` from the Datadog configuration above.
!!! important
###### Namespaced secret
Datadog integration supports referring to secrets inside the same namespace as argo-rollouts (by default)
or referring to a secret in the same namespace as the `AnalysisTemplate`.
To use a secret from the `AnalysisTemplate` namespace, include a `secretRef` section in the template, specifying the `name` of the secret and setting the `namespaced` property to `true`.
The process for retrieving Datadog credentials is as follows:
1. **If a `secretRef` is defined in the `AnalysisTemplate`:** Argo Rollouts will search for the secret with the specified name in the namespace where the template resides.
2. **If the secret is not found in the specified namespace:** Argo Rollouts will then check the environment variables.
3. **If the credentials are not found in environment variables:** Argo Rollouts will look for a secret named "Datadog" in the namespace where Argo Rollouts itself is deployed.
---
Let me know if there's anything else you'd like to adjust!
```yaml
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: loq-error-rate
spec:
args:
- name: service-name
metrics:
- name: error-rate
interval: 5m
successCondition: result <= 0.01
failureLimit: 3
provider:
datadog:
apiVersion: v2
interval: 5m
secretRef:
name: "mysecret"
namespaced: true
query: |
sum:requests.error.rate{service:{{args.service-name}}}
```
### Working with Datadog API v2
!!! important
@ -152,7 +194,7 @@ successCondition: default(result, 0) < 0.05
#### Metric aggregation (v2 only)
By default, Datadog analysis run is configured to use `last` metric aggregator when querying Datadog v2 API. This value can be overriden by specifying a new `aggregator` value from a list of supported aggregators (`avg,min,max,sum,last,percentile,mean,l2norm,area`) for the V2 API ([docs](https://docs.datadoghq.com/api/latest/metrics/#query-scalar-data-across-multiple-products)).
By default, Datadog analysis run is configured to use `last` metric aggregator when querying Datadog v2 API. This value can be overridden by specifying a new `aggregator` value from a list of supported aggregators (`avg,min,max,sum,last,percentile,mean,l2norm,area`) for the V2 API ([docs](https://docs.datadoghq.com/api/latest/metrics/#query-scalar-data-across-multiple-products)).
For example, using count-based distribution metric (`count:metric{*}.as_count()`) with values `1,9,3,7,5` in a given `interval` will make `last` aggregator return `5`. To return a sum of all values (`25`), set `aggregator: sum` in Datadog provider block and use `moving_rollup()` function to aggregate values in the specified rollup interval. These functions can be combined in a `formula` to perform additional calculations:

View File

@ -4,7 +4,7 @@ A Kubernetes Job can be used to run analysis. When a Job is used, the metric is
successful if the Job completes and had an exit code of zero, otherwise it is failed.
```yaml
metrics:
metrics:
- name: test
provider:
job:
@ -18,8 +18,19 @@ successful if the Job completes and had an exit code of zero, otherwise it is fa
template:
spec:
containers:
- name: test
image: my-image:latest
command: [my-test-script, my-service.default.svc.cluster.local]
- name: test
image: my-image:latest
command:
[my-test-script, my-service.default.svc.cluster.local]
restartPolicy: Never
```
## Control where the jobs run
Argo Rollouts allows you some control over where your metric job runs.
The following env vars can be set on the Rollouts controller:
`ARGO_ROLLOUTS_ANALYSIS_JOB_NAMESPACE` will allow you to run your metric jobs in a namespace other than the default (which can vary depending on if you are running Rollouts in cluster mode or not).
`ARGO_ROLLOUTS_ANALYSIS_JOB_KUBECONFIG` will allow running metric jobs in a different cluster entirely. This should be a path to the kubeconfig you want to use.

View File

@ -21,6 +21,7 @@ spec:
profile: my-newrelic-secret # optional, defaults to 'newrelic'
query: |
FROM Transaction SELECT percentage(count(*), WHERE httpResponseCode != 500) as successRate where appName = '{{ args.application-name }}'
timeout: 10 # NRQL query timeout in seconds. Optional, defaults to 5
```
The `result` evaluated for the condition will always be map or list of maps. The name will follow the pattern of either `function` or `function.field`, e.g. `SELECT average(duration) from Transaction` will yield `average.duration`. In this case the field result cannot be accessed with dot notation and instead should be accessed like `result['average.duration']`. Query results can be renamed using the [NRQL clause `AS`](https://docs.newrelic.com/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions#sel-as) as seen above.
@ -54,3 +55,11 @@ stringData:
base-url-rest: <your-base-url>
base-url-nerdgraph: <your-base-url>
```
## Additional Metadata
The New Relic provider returns the below metadata under the `Metadata` map in the `MetricsResult` object of `AnalysisRun`.
| KEY | Description |
|-----------------------|-------------|
| ResolvedNewRelicQuery | Resolved query after substituting the template's arguments |

View File

@ -1,26 +1,28 @@
# Metric Plugins
!!! important
Available since v1.5 - Status: Alpha
!!! warning "Alpha Feature (Since 1.5.0)"
Argo Rollouts supports getting analysis metrics via 3rd party plugin system. This allows users to extend the capabilities of Rollouts
This is an experimental, [alpha-quality](https://github.com/argoproj/argoproj/blob/main/community/feature-status.md#alpha)
feature that allows you to support metric providers that are not natively supported.
Argo Rollouts supports getting analysis metrics via 3rd party [plugin system](../plugins.md). This allows users to extend the capabilities of Rollouts
to support metric providers that are not natively supported. Rollout's uses a plugin library called
[go-plugin](https://github.com/hashicorp/go-plugin) to do this. You can find a sample plugin
here: [rollouts-plugin-metric-sample-prometheus](https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus)
## Using a Metric Plugin
## Installing
There are two methods of installing and using an argo rollouts plugin. The first method is to mount up the plugin executable
into the rollouts controller container. The second method is to use a HTTP(S) server to host the plugin executable.
into the rollouts controller container. The second method is to use an HTTP(S) server to host the plugin executable.
### Mounting the plugin executable into the rollouts controller container
There are a few ways to mount the plugin executable into the rollouts controller container. Some of these will depend on your
particular infrastructure. Here are a few methods:
* Using an init container to download the plugin executable
* Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc.
* Building the plugin into the rollouts controller container
- Using an init container to download the plugin executable
- Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc.
- Building the plugin into the rollouts controller container
Then you can use the configmap to point to the plugin executable file location. Example:
@ -31,13 +33,26 @@ metadata:
name: argo-rollouts-config
data:
metricProviderPlugins: |-
- name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
- name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find its configuration
location: "file://./my-custom-plugin" # supports http(s):// urls and file://
```
### Using a HTTP(S) server to host the plugin executable
### Using an HTTP(S) server to host the plugin executable
Argo Rollouts supports downloading the plugin executable from a HTTP(S) server. To use this method, you will need to
!!! warning "Installing a plugin with http(s)"
Depending on which method you use to install and the plugin, there are some things to be aware of.
The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using
a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts
controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until
the server hosting the plugin is available again.
Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running
Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets
deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the
responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach.
Argo Rollouts supports downloading the plugin executable from an HTTP(S) server. To use this method, you will need to
configure the controller via the `argo-rollouts-config` configmap and set `pluginLocation` to a http(s) url. Example:
```yaml
@ -47,11 +62,24 @@ metadata:
name: argo-rollouts-config
data:
metricProviderPlugins: |-
- name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
- name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find its configuration
location: "https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus/releases/download/v0.0.4/metric-plugin-linux-amd64" # supports http(s):// urls and file://
sha256: "dac10cbf57633c9832a17f8c27d2ca34aa97dd3d" #optional sha256 checksum of the plugin executable
headersFrom: #optional headers for the download via http request
- secretRef:
name: secret-name
---
apiVersion: v1
kind: Secret
metadata:
name: secret-name
stringData:
Authorization: Basic <Base 64 TOKEN>
My-Header: value
```
## Some words of caution
Depending on which method you use to install and the plugin, there are some things to be aware of.
@ -67,8 +95,13 @@ responsibility of the Argo Rollouts administrator to define the plugin installat
## List of Available Plugins (alphabetical order)
#### Add Your Plugin Here
* If you have created a plugin, please submit a PR to add it to this list.
#### [rollouts-plugin-metric-sample-prometheus](https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus)
* This is just a sample plugin that can be used as a starting point for creating your own plugin.
It is not meant to be used in production. It is based on the built-in prometheus provider.
If you have created a plugin, please submit a PR to add it to this list.
### [rollouts-plugin-metric-opensearch](https://github.com/argoproj-labs/rollouts-plugin-metric-opensearch)
- The application is an OpenSearch plugin designed for use with the Argo Rollouts plugin system. This plugin enables the integration of OpenSearch metrics into Argo Rollouts, allowing for advanced metric analysis and monitoring during application rollouts.
### [rollouts-plugin-metric-sample-prometheus](https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus)
- This is just a sample plugin that can be used as a starting point for creating your own plugin.
It is not meant to be used in production. It is based on the built-in prometheus provider.

View File

@ -39,6 +39,47 @@ you validate your [PromQL expression](https://prometheus.io/docs/prometheus/late
See the [Analysis Overview page](../../features/analysis) for more details on the available options.
## Range queries
```yaml
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: range-query-example
spec:
args:
- name: service-name
- name: lookback-duration
value: 5m
metrics:
- name: success-rate
# checks that all returned values are under 1000ms
successCondition: "all(result, # < 1000)"
failureLimit: 3
provider:
prometheus:
rangeQuery:
# See https://expr-lang.org/docs/language-definition#date-functions
# for value date functions
# The start point to query from
start: 'now() - duration("{{args.lookback-duration}}")'
# The end point to query to
end: 'now()'
# Query resolution width
step: 1m
address: http://prometheus.example.com:9090
query: http_latency_ms{service="{{args.service-name}}"}
```
### Range query and successCondition/failureCondition
Since range queries will usually return multiple values from prometheus. It is important to assert on every value returned. See the following examples:
* ❌ `result[0] < 1000` - this will only check the first value returned
* ✅ `all(result, # < 1000)` - checks every value returns from prometheus
See [expr](https://github.com/expr-lang/expr) for more expression options.
## Authorization
### Utilizing Amazon Managed Prometheus
@ -96,7 +137,7 @@ spec:
authentication:
oauth2:
tokenUrl: https://my-oauth2-provider/token
clientId: my-cliend-id
clientId: my-client-id
clientSecret: "{{ args.oauthSecret }}"
scopes: [
"my-oauth2-scope"

View File

@ -1,7 +1,7 @@
# Web Metrics
An HTTP request can be performed against some external service to obtain the measurement. This example
makes a HTTP GET request to some URL. The webhook response must return JSON content. The result of
makes an HTTP GET request to some URL. The webhook response must return JSON content. The result of
the optional `jsonPath` expression will be assigned to the `result` variable that can be referenced
in the `successCondition` and `failureCondition` expressions. If omitted, will use the entire body
of the as the result variable.
@ -143,7 +143,7 @@ spec:
authentication:
oauth2:
tokenUrl: https://my-oauth2-provider/token
clientId: my-cliend-id
clientId: my-client-id
clientSecret: "{{ args.oauthSecret }}"
scopes: [
"my-oauth2-scope"

View File

@ -53,7 +53,7 @@ div[data-md-component=announce]>div#announce-msg>a{
}
/* from https://assets.readthedocs.org/static/css/badge_only.css,
most styles have to be overriden here */
most styles have to be overridden here */
.rst-versions{
position: relative !important;
bottom: 0;

View File

@ -1,15 +1,40 @@
setTimeout(function() {
const callbackName = 'callback_' + new Date().getTime();
window[callbackName] = function (response) {
const div = document.createElement('div');
div.innerHTML = response.html;
document.querySelector(".md-header__inner > .md-header__title").appendChild(div);
const container = div.querySelector('.rst-versions');
var caret = document.createElement('div');
caret.innerHTML = "<i class='fa fa-caret-down dropdown-caret'></i>"
caret.classList.add('dropdown-caret')
div.querySelector('.rst-current-version').appendChild(caret);
const targetNode = document.querySelector('.md-header__inner');
const observerOptions = {
childList: true,
subtree: true
};
const observerCallback = function(mutationsList, observer) {
for (let mutation of mutationsList) {
if (mutation.type === 'childList') {
const titleElement = document.querySelector('.md-header__inner > .md-header__title');
if (titleElement) {
initializeVersionDropdown();
observer.disconnect();
}
}
}
};
const observer = new MutationObserver(observerCallback);
observer.observe(targetNode, observerOptions);
function initializeVersionDropdown() {
const callbackName = 'callback_' + new Date().getTime();
window[callbackName] = function(response) {
const div = document.createElement('div');
div.innerHTML = response.html;
document.querySelector(".md-header__inner > .md-header__title").appendChild(div);
const container = div.querySelector('.rst-versions');
var caret = document.createElement('div');
caret.innerHTML = "<i class='fa fa-caret-down dropdown-caret'></i>";
caret.classList.add('dropdown-caret');
div.querySelector('.rst-current-version').appendChild(caret);
div.querySelector('.rst-current-version').addEventListener('click', function() {
container.classList.toggle('shift-up');
});
};
var CSSLink = document.createElement('link');
CSSLink.rel='stylesheet';
@ -20,6 +45,31 @@ setTimeout(function() {
script.src = 'https://argo-rollouts.readthedocs.io/_/api/v2/footer_html/?'+
'callback=' + callbackName + '&project=argo-rollouts&page=&theme=mkdocs&format=jsonp&docroot=docs&source_suffix=.md&version=' + (window['READTHEDOCS_DATA'] || { version: 'latest' }).version;
document.getElementsByTagName('head')[0].appendChild(script);
}, 0);
}
// VERSION WARNINGS
window.addEventListener("DOMContentLoaded", function() {
var currentVersion = window.location.href.match(/\/en\/(release-(?:v\d+|\w+)|latest|stable)\//);
var margin = 30;
var headerHeight = document.getElementsByClassName("md-header")[0].offsetHeight;
if (currentVersion && currentVersion.length > 1) {
currentVersion = currentVersion[1];
if (currentVersion === "latest") {
document.querySelector("div[data-md-component=announce]").innerHTML = "<div id='announce-msg'>You are viewing the docs for an unreleased version of Argo Rollouts, <a href='https://argoproj.github.io/argo-rollouts/'>click here to go to the latest stable version.</a></div>";
var bannerHeight = document.getElementById('announce-msg').offsetHeight + margin;
document.querySelector("header.md-header").style.top = bannerHeight + "px";
document.querySelector('style').textContent +=
"@media screen and (min-width: 76.25em){ .md-sidebar { height: 0; top:" + (bannerHeight + headerHeight) + "px !important; }}";
document.querySelector('style').textContent +=
"@media screen and (min-width: 60em){ .md-sidebar--secondary { height: 0; top:" + (bannerHeight + headerHeight) + "px !important; }}";
} else if (currentVersion !== "stable") {
document.querySelector("div[data-md-component=announce]").innerHTML = "<div id='announce-msg'>You are viewing the docs for a previous version of Argo Rollouts, <a href='https://argoproj.github.io/argo-rollouts/'>click here to go to the latest stable version.</a></div>";
var bannerHeight = document.getElementById('announce-msg').offsetHeight + margin;
document.querySelector("header.md-header").style.top = bannerHeight + "px";
document.querySelector('style').textContent +=
"@media screen and (min-width: 76.25em){ .md-sidebar { height: 0; top:" + (bannerHeight + headerHeight) + "px !important; }}";
document.querySelector('style').textContent +=
"@media screen and (min-width: 60em){ .md-sidebar--secondary { height: 0; top:" + (bannerHeight + headerHeight) + "px !important; }}";
}
}
});

View File

@ -13,7 +13,7 @@ Note that using Argo Rollouts for "infrastructure" applications such as cert-man
## Understand the scope of Argo Rollouts
Currently Argo Rollouts works with a single Kubernetes deployment/application and within a single cluster only. You also need to have the controller deployed on *every* cluster where a Rollout is running if have more than one clusters using Rollout workloads.
Currently, Argo Rollouts works with a single Kubernetes deployment/application and within a single cluster only. You also need to have the controller deployed on *every* cluster where a Rollout is running if have more than one clusters using Rollout workloads.
If you want to look at multiple-services on multiple clusters
see discussion at issues [2737](https://github.com/argoproj/argo-rollouts/issues/2737), [451](https://github.com/argoproj/argo-rollouts/issues/451) and [2088](https://github.com/argoproj/argo-rollouts/issues/2088).
@ -29,7 +29,23 @@ You should *NOT* use Argo Rollouts for preview/ephemeral environments. For that
The recommended way to use Argo Rollouts is for brief deployments that take 15-20 minutes or maximum 1-2 hours. If you want to run new versions for days or weeks before deciding to promote, then Argo Rollouts is probably not the best solution for you.
Also, if you want to run a wave of multiple versions at the same time (i.e. have 1.1 and 1.2 and 1.3 running at the same time), know that Argo Rollouts was not designed for this scenario.
Keeping parallel releases for long times, complicates the deployment process a lot and opens several questions where different people have different views on how Argo Rollouts should work.
For example let's say that you are testing for a week version 1.3 as stable and 1.4 as preview.
Then somebody deploys 1.5
1. Some people believe that the new state should be 1.3 stable and 1.5 as preview
1. Some people believe that the new state should be 1.4 stable and 1.5 as preview
Currently, Argo Rollouts follows the first approach, under the assumption that something was really wrong with 1.4 and 1.5 is the hotfix.
And then let's say that 1.5 has an issue. Some people believe that Argo rollouts should "rollback" to 1.3 while other people think it should rollback to 1.4
Currently, Argo Rollouts assumes that the version to rollback is always 1.3 regardless of how many "hotfixes" have been previewed in-between.
All these problems are not present if you make the assumption that each release stays active only for a minimal time and you always create one new version when the previous one has finished.
Also, if you want to run a wave of multiple versions at the same time (i.e. have 1.1 and 1.2 and 1.3 running at the same time), know that Argo Rollouts was not designed for this scenario. Argo Rollouts always works with the assumption that there is one stable/previous version and one preview/next version.
A version that has just been promoted is assumed to be ready for production and has already passed all your tests (either manual or automated).
@ -41,6 +57,8 @@ While Argo Rollouts supports manual promotions and other manual pauses, these ar
Ideally you should have proper metrics that tell you in 5-15 minutes if a deployment is successful or not. If you don't have those metrics, then you will miss a lot of value from Argo Rollouts.
If you are doing a deployment right now and then have an actual human looking at logs/metrics/traces for the next 2 hours, adopting Argo Rollouts is not going to help you a lot with automated deployments.
Get your [metrics](../features/analysis) in place first and test them with dry-runs before applying them to production deployments.
@ -126,7 +144,7 @@ spec:
number: 443
```
The above technique has the a benefit in that it would not incur additional cost of allocating
The above technique has a benefit in that it would not incur additional cost of allocating
additional load balancers.
## Reducing operator memory usage
@ -139,3 +157,34 @@ One user of Argo Rollouts saw a 27% reduction
in memory usage for a cluster with 1290 rollouts by changing
`RevisionHistoryLimit` from 10 to 0.
## Rollout a ConfigMap change
Argo Rollouts is meant to work on a Kubernetes Deployment. When a ConfigMap is mounted inside one the Deployment container and a change occurs inside the ConfigMap, it won't trigger a new Rollout by default.
One technique to trigger the Rollout it to name dynamically the ConfigMap.
For example, adding a hash of its content at the end of the name:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config-7270e14e6
```
Each time a change occurs in the ConfigMap, its name will change in the Deployment reference as well, triggering a Rollout.
However, it's not enough to perform correctly progressive rollouts, as the old ConfigMap might get deleted as soon as the new one is created. This would prevent Experiments and rollbacks in case of rollout failure to work correctly.
While no magical solution exist to work aroud that, you can tweak your deployment tool to remove the ConfigMap only when the Rollout is completed successfully.
Example with Argo CD:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config-7270e14e6
annotations:
argocd.argoproj.io/sync-options: PruneLast=true
```

View File

@ -3,7 +3,7 @@
## Rollout
A Rollout is Kubernetes workload resource which is equivalent to a Kubernetes Deployment object.
It is intended to replace a Deployment object in scenarios when more advanced deployment or
It is intended to replace a Deployment object in scenarios when more advanced deployment or
progressive delivery functionality is needed. A Rollout provides the following features which
a Kubernetes Deployment cannot:
@ -17,17 +17,17 @@ a Kubernetes Deployment cannot:
Progressive delivery is the process of releasing updates of a product in a controlled and gradual
manner, thereby reducing the risk of the release, typically coupling automation and metric analysis
to drive the automated promotion or rollback of the update.
to drive the automated promotion or rollback of the update.
Progressive delivery is often described as an evolution of continuous delivery, extending the
speed benefits made in CI/CD to the deployment process. This is accomplished by limiting the
exposure of the new version to a subset of users, observing and analyzing for correct behavior,
exposure of the new version to a subset of users, observing and analyzing for correct behavior,
then progressively increasing the exposure to a broader and wider audience while continuously
verifying correctness.
## Deployment Strategies
While the industry has used a consistent terminology to describe various deployment strategies, the implementations of these strategies tend to differ across tooling. To make it clear how the Argo Rollouts will behave, here are the descriptions of the various deployment strategies implementations offered by the Argo Rollouts.
While the industry has used a consistent terminology to describe various deployment strategies, the implementations of these strategies tend to differ across tooling. To make it clear how the Argo Rollouts will behave, here are the descriptions of the various deployment strategy implementations. Argo Rollouts only supports Blue-Green and Canary.
### Rolling Update
A `RollingUpdate` slowly replaces the old version with the new version. As the new version comes up, the old version is scaled down in order to maintain the overall count of the application. This is the default strategy of the Deployment object.
@ -46,4 +46,33 @@ A Canary deployment exposes a subset of users to the new version of the applicat
[![How Canary deployments work](concepts-assets/canary-deployments.png)](concepts-assets/canary-deployments.png)
The picture above shows a canary with two stages (10% and 33% of traffic goes to new version) but this is just an example. With Argo Rollouts you can define the exact number of stages
and percentages of traffic according to your use case.
and percentages of traffic according to your use case.
## Which strategy to choose
In general Blue/Green is the easier strategy to start with, but also the more limited. We recommend you start with Blue/Green deployments first and as you gain confidence for your metrics and applications switch to Canaries.
You also need to examine if your application can handle canaries or not.
* Blue/Green always works because only one application is active at a time. Not all applications can have different versions running in parallel at the same time (which is what canaries are doing). This can be a showstopper for adopting canary deployments especially for legacy applications.
* Blue/Green is simpler because you can get their full value WITHOUT a traffic manager. While canaries can also work without a traffic manager, most of their advanced features assume a fine-grained way to control traffic. If you don't have a traffic manager, then you can easily get the full value
of blue/green deployments but only the basic capabilities of canaries.
* Blue/Green also works with services that use queues and databases (workers that fetch tasks). Argo Rollouts doesn't control traffic flow for
connections it doesn't understand (i.e. binary/queue channels).
Here is a summary table for the possible approaches.
| | Blue/Green | Basic Canary | Canary with Traffic manager |
|--------------------------:|:-------------------------:|:--------------------------:| :-----------------------------:|
| Adoption Complexity | Low | Medium | High |
| Flexibility | Low | High | Maximum |
| Needs traffic provider | No | No | Yes |
| Works with queue workers | Yes | No | No |
| Works with shared/locked resources | Yes | No | No |
| Traffic switch | All or nothing | Gradual percentage | Gradual percentage |
| Traffic control | 0% or 100% | coarse grained | fine grained |
| Traffic depends on | deployment state | number of canary pods | Any split option is possible |
| Advanced routing scenarios | No | No | Yes |
| Failure Blast Radius | Massive impact | Low impact | Low impact |
Note that the traffic manager can be any compatible Service Mesh or Ingress Controller or Gateway API implementation (via a plugin).

View File

@ -154,8 +154,7 @@ spec:
))
```
Multiple measurements can be performed over a longer duration period, by specifying the `count` and
`interval` fields:
Multiple measurements can be performed over a longer duration period, by specifying the `count` and `interval` fields:
```yaml hl_lines="4 5"
metrics:
@ -169,6 +168,13 @@ Multiple measurements can be performed over a longer duration period, by specify
query: ...
```
!!! note
The `count` can have 0 as value which means that it will run until
the end of the Rollout execution for background analysis (outside
of steps). However if the `count` has value 0 and the analysis is
defined in the steps, the analysis won't be executed.
## ClusterAnalysisTemplates
!!! important
@ -482,9 +488,9 @@ Or without additional metrics:
clusterScope: false
```
The result in the AnalysisRun will have the aggregation of metrics of each template:
The result in the AnalysisRun will have the aggregation of metrics of each template:
=== "AnalysisRun"
=== "AnalysisRun"
```yaml
# NOTE: Generated AnalysisRun from a single template referencing several templates
@ -753,6 +759,67 @@ The entire analysis run is considered as Failed after three failed measurements.
))
```
## ConsecutiveSuccessLimit and FailureLimit
!!! important
`consecutiveSuccessLimit` available since v1.8
You can use either `failureLimit` to define a limit for the number of failures before the analysis is considered failed, `consecutiveSuccessLimit` to define the required consecutive number of successes for the analysis to succeed, or both together. One of them has to be applicable (i.e. not disabled, see below for more), otherwise a validation error is thrown.
To disable:
* `failureLimit`, set the field to `-1`.
* `consecutiveSuccessLimit`, set the field to `0` (the default value).
The default value for both is `0`, the meaning of which differs for each one of them. A value of `0` for `failureLimit` means its logic _is_ applicable and no failures are tolerated. However, a value of `0` for `consecutiveSuccessLimit` means it's inapplicable or disabled.
Let's go through each case and show what the behavior would look like.
### Only FailureLimit applicable
The behavior is shown above in the [Failure Conditions and Failure Limit](#failure-conditions-and-failure-limit) section. This is the default behavior if you set nothing of the two fields (with `failureLimit` having a default value of `0`, so no failures are tolerated).
### Only ConsecutiveSuccessLimit applicable
To have this behavior, you need to have something like
```yaml
failureLimit: -1
consecutiveSuccessLimit: 4 # Any value > 0
```
This behavior is essentially waiting for a condition to hold, or an event to happen. That is, keep measuring a metric and keep failing until you measure `N` consecutive successful measurements, at which point the analysis concludes successfully. This can be useful as an event-driven way of promoting a rollout when used in an inline analysis.
### Both FailureLimit and ConsecutiveSuccessLimit applicable
To have this behavior, you need to have something like
```yaml
failureLimit: 3 # Any value >= 0
consecutiveSuccessLimit: 4 # Any value > 0
```
The behavior is simply waiting to measure `N` consecutive successful measurements, _while_ being limited by the number of overall failures specified by `failureLimit`. Above, we need to have at most 3 failures before we get 4 consecutive successful measurements for the analysis to be considered successful.
In case of an analysis that has `count` specified (that is, runs for a specific amount of time) and that `count` is reached, the evaluation of success is as follows:
* `failureLimit` is violated and `consecutiveSuccessLimit` is satisfied: Failure.
* `failureLimit` is violated and `consecutiveSuccessLimit` is not satisfied: Failure.
* `failureLimit` is not violated and `consecutiveSuccessLimit` is satisfied: Success.
* `failureLimit` is not violated and `consecutiveSuccessLimit` is not satisfied: Inconclusive State.
As illustrated, `failureLimit` takes priority if violated. However, if neither is violated/satisfied, the analysis reaches an inconclusive state.
!!! note
When terminating analyses prematurely, they are always terminated successfully, unless it happens that `failureLimit` is enabled and violated, then they terminate in failure. `consecutiveSuccessLimit`, if enabled, doesn't affect the termination status.
For more clarity, examples of analyses terminated "prematurely":
* A background analysis with `count` not specified when terminated at the end of the rollout.
* Any analysis with `count` specified and not yet reached when the rollout is aborted.
## Dry-Run Mode
!!! important
@ -1084,7 +1151,7 @@ A use case for having `Inconclusive` analysis runs are to enable Argo Rollouts t
whether or not measurement value is acceptable and decide to proceed or abort.
## Delay Analysis Runs
If the analysis run does not need to start immediately (i.e give the metric provider time to collect
If the analysis run does not need to start immediately (i.e. give the metric provider time to collect
metrics on the canary version), Analysis Runs can delay the specific metric analysis. Each metric
can be configured to have a different delay. In additional to the metric specific delays, the rollouts
with background analysis can delay creating an analysis run until a certain step is reached

View File

@ -42,7 +42,7 @@ This feature will not modify any of the ReplicaSet's pre-existing affinity rules
Users have a choice between these scheduling rules: `RequiredDuringSchedulingIgnoredDuringExecution` and `PreferredDuringSchedulingIgnoredDuringExecution`.
`RequiredDuringSchedulingIgnoredDuringExecution` requires a new version's pods to be on a separate node than the previous versions. If this
is not possible, the the new version's pods will not be scheduled.
is not possible, the new version's pods will not be scheduled.
```yaml
strategy:

View File

@ -1,6 +1,6 @@
# BlueGreen Deployment Strategy
A Blue Green Deployment allows users to reduce the amount of time multiple versions running at the same time.
A Blue Green Deployment allows users to reduce the amount of time multiple versions are running at the same time.
## Overview
@ -11,6 +11,12 @@ When there is a change to the `.spec.template` field of a rollout, the controlle
!!! important
When the rollout changes the selector on a service, there is a propagation delay before all the nodes update their IP tables to send traffic to the new pods instead of the old. During this delay, traffic will be directed to the old pods if the nodes have not been updated yet. In order to prevent the packets from being sent to a node that killed the old pod, the rollout uses the scaleDownDelaySeconds field to give nodes enough time to broadcast the IP table changes.
!!! important
ALB Ingress with Rollouts blue-green strategy is not supported without a chance of downtime.
When using an AWS ALB to route traffic to a service, the ALB Ingress Controller does not update the target groups in an atomic or safe manner. This can result in a situation where, during a deployment, the stable target group temporarily has no pods registered. This occurs because the ALB Controller removes all current pods from the target group before registering pods from the desired ReplicaSet.
The desired pods must pass their initial configured health check on the stable target group to be considered healthy by the ALB. This creates a risk where the ALB may temporarily have no healthy pods registered to the target group, depending on the timing of deregistration and registration of new pods. This can lead to application downtime that the rollouts controller cannot prevent.
## Example
```yaml
@ -93,12 +99,12 @@ The AutoPromotionEnabled will make the rollout automatically promote the new Rep
Defaults to true
### autoPromotionSeconds
The AutoPromotionSeconds will make the rollout automatically promote the new ReplicaSet to active Service after the AutoPromotionSeconds time has passed since the rollout has entered a paused state. If the `AutoPromotionEnabled` field is set to false, this field will be ignored
Setting a positive non-zero value here would make the rollout automatically promote the new `ReplicaSet` to active Service after this much time has been elapsed since the rollout has entered a paused state. If the `AutoPromotionEnabled` field is set to **false**, this field would be ignored.
Defaults to nil
### antiAffinity
Check out the [Anti Affinity document](anti-affinity/anti-affinity.md) document for more information.
Check out the [Anti Affinity document](anti-affinity/anti-affinity.md) for more information.
Defaults to nil

View File

@ -1,15 +1,19 @@
# Canary Deployment Strategy
A canary rollout is a deployment strategy where the operator releases a new version of their application to a small percentage of the production traffic.
## Overview
Since there is no agreed upon standard for a canary deployment, the rollouts controller allows users to outline how they want to run their canary deployment. Users can define a list of steps the controller uses to manipulate the ReplicaSets when there is a change to the `.spec.template`. Each step will be evaluated before the new ReplicaSet is promoted to the stable version, and the old version is completely scaled down.
Each step can have one of two fields. The `setWeight` field dictates the percentage of traffic that should be sent to the canary, and the `pause` struct instructs the rollout to pause. When the controller reaches a `pause` step for a rollout, it will add a `PauseCondition` struct to the `.status.PauseConditions` field. If the `duration` field within the `pause` struct is set, the rollout will not progress to the next step until it has waited for the value of the `duration` field. Otherwise, the rollout will wait indefinitely until that Pause condition is removed. By using the `setWeight` and the `pause` fields, a user can declaratively describe how they want to progress to the new version. Below is an example of a canary strategy.
There are multiple steps available, the most basic ones are `setWeight` and `pause`. The `setWeight` field dictates the percentage of traffic that should be sent to the canary, and the `pause` step instructs the rollout to pause. When the controller reaches a `pause` step for a rollout, it will add a `PauseCondition` struct to the `.status.PauseConditions` field. If the `duration` field within the `pause` struct is set, the rollout will not progress to the next step until it has waited for the value of the `duration` field. Otherwise, the rollout will wait indefinitely until that Pause condition is removed. By using the `setWeight` and the `pause` fields, a user can declaratively describe how they want to progress to the new version. Below is an example of a canary strategy.
!!! important
If the canary Rollout does not use [traffic management](traffic-management/index.md), the Rollout makes a best effort attempt to achieve the percentage listed in the last `setWeight` step between the new and old version. For example, if a Rollout has 10 Replicas and 10% for the first `setWeight` step, the controller will scale the new desired ReplicaSet to 1 replicas and the old stable ReplicaSet to 9. In the case where the setWeight is 41%, the Rollout attempts to get there by finding the whole number with the smallest delta, rounding up the calculation if the deltas are equals (i.e. the new ReplicaSet has 4 pods since 41% of 10 is closer to 4/10 than 5/10, and the old ReplicaSet has 6 pods). If a user wants to have more fine-grained control of the percentages without a large number of Replicas, that user should use the [traffic management](#trafficrouting) functionality.
If the canary Rollout does not use [traffic management](traffic-management/index.md), the Rollout makes a best effort attempt to achieve the percentage listed in the last `setWeight` step between the new and old version. For example, if a Rollout has 10 Replicas and 10% for the first `setWeight` step, the controller will scale the new desired ReplicaSet to 1 replicas and the old stable ReplicaSet to 9. In the case where the setWeight is 41%, the Rollout attempts to get there by finding the whole number with the smallest delta, rounding up the calculation if the deltas are equals (i.e. the new ReplicaSet has 4 pods since 41% of 10 is closer to 4/10 than 5/10, and the old ReplicaSet has 6 pods). If a user wants to have more fine-grained control of the percentages without a large number of Replicas, that user should use the [traffic management](#trafficrouting) functionality.
## Example
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
@ -26,25 +30,26 @@ spec:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
minReadySeconds: 30
revisionHistoryLimit: 3
strategy:
canary: #Indicates that the rollout should use the Canary strategy
maxSurge: "25%"
maxSurge: '25%'
maxUnavailable: 0
steps:
- setWeight: 10
- pause:
duration: 1h # 1 hour
- setWeight: 20
- pause: {} # pause indefinitely
- setWeight: 10
- pause:
duration: 1h # 1 hour
- setWeight: 20
- pause: {} # pause indefinitely
```
## Pause Duration
Pause duration can be specified with an optional time unit suffix. Valid time units are "s", "m", "h". Defaults to "s" if not specified.
```yaml
@ -52,11 +57,11 @@ spec:
strategy:
canary:
steps:
- pause: { duration: 10 } # 10 seconds
- pause: { duration: 10 } # 10 seconds
- pause: { duration: 10s } # 10 seconds
- pause: { duration: 10m } # 10 minutes
- pause: { duration: 10h } # 10 hours
- pause: {} # pause indefinitely
- pause: {} # pause indefinitely
```
If no `duration` is specified for a pause step, the rollout will be paused indefinitely. To unpause, use the [argo kubectl plugin](kubectl-plugin.md) `promote` command.
@ -81,31 +86,31 @@ match the traffic weight. Some use cases for this:
the canary, while setWeight is still set to 0.
3. You wish to scale the canary up to 100%, in order to facilitate traffic shadowing.
!!! important
Setting canary scale is only available when using the canary strategy with a traffic router, since the basic canary needs to control canary scale in order to approximate canary weight.
To control canary scales and weights during steps, use the `setCanaryScale` step and indicate which scale the
To control canary scales and weights during steps, use the `setCanaryScale` step and indicate which scale
the canary should use:
* explicit replica count without changing traffic weight (`replicas`)
* explicit weight percentage of total spec.replicas without changing traffic weight(`weight`)
* to or not to match current canary's `setWeight` step (`matchTrafficWeight: true or false`)
- explicit replica count without changing traffic weight (`replicas`)
- explicit weight percentage of total spec.replicas without changing traffic weight(`weight`)
- to or not to match current canary's `setWeight` step (`matchTrafficWeight: true or false`)
```yaml
spec:
strategy:
canary:
steps:
# explicit count
- setCanaryScale:
replicas: 3
# a percentage of spec.replicas
- setCanaryScale:
weight: 25
# matchTrafficWeight returns to the default behavior of matching the canary traffic weight
- setCanaryScale:
matchTrafficWeight: true
# explicit count
- setCanaryScale:
replicas: 3
# a percentage of spec.replicas
- setCanaryScale:
weight: 25
# matchTrafficWeight returns to the default behavior of matching the canary traffic weight
- setCanaryScale:
matchTrafficWeight: true
```
When using `setCanaryScale` with explicit values for either replicas or weight, one must be careful
@ -119,12 +124,12 @@ spec:
strategy:
canary:
steps:
# 1 canary pod (10% of spec.replicas)
- setCanaryScale:
weight: 10
# 90% of traffic to the 1 canary pod
- setWeight: 90
- pause: {}
# 1 canary pod (10% of spec.replicas)
- setCanaryScale:
weight: 10
# 90% of traffic to the 1 canary pod
- setWeight: 90
- pause: {}
```
The above situation is caused by the changed behvaior of `setWeight` after `setCanaryScale`. To reset, set `matchTrafficWeight: true` and the `setWeight` behavior will be restored, i.e., subsequent `setWeight` will create canary replicas matching the traffic weight.
@ -132,6 +137,7 @@ The above situation is caused by the changed behvaior of `setWeight` after `setC
## Dynamic Stable Scale (with Traffic Routing)
!!! important
Available since v1.1
When using traffic routing, by default the stable ReplicaSet is left scaled to 100% during the update.
@ -167,11 +173,12 @@ spec:
abortScaleDownDelaySeconds: 600
```
## Mimicking Rolling Update
If the `steps` field is omitted, the canary strategy will mimic the rolling update behavior. Similar to the deployment, the canary strategy has the `maxSurge` and `maxUnavailable` fields to configure how the Rollout should progress to the new version.
## Other Configurable Features
Here are the optional fields that will modify the behavior of canary strategy:
```yaml
@ -188,36 +195,43 @@ spec:
```
### analysis
Configure the background [Analysis](analysis.md) to execute during the rollout. If the analysis is unsuccessful the rollout will be aborted.
Configure the background [Analysis](../analysis.md) to execute during the rollout. If the analysis is unsuccessful the rollout will be aborted.
Defaults to nil
### antiAffinity
Check out the [Anti Affinity document](anti-affinity/anti-affinity.md) document for more information.
Check out the [Anti Affinity](../anti-affinity/anti-affinity.md) document for more information.
Defaults to nil
### canaryService
`canaryService` references a Service that will be modified to send traffic to only the canary ReplicaSet. This allows users to only hit the canary ReplicaSet.
Defaults to an empty string
### stableService
`stableService` the name of a Service which selects pods with stable version and doesn't select any pods with canary version. This allows users to only hit the stable ReplicaSet.
Defaults to an empty string
### maxSurge
`maxSurge` defines the maximum number of replicas the rollout can create to move to the correct ratio set by the last setWeight. Max Surge can either be an integer or percentage as a string (i.e. "20%")
Defaults to "25%".
### maxUnavailable
The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxSurge is 0.
Defaults to 25%
### trafficRouting
The [traffic management](traffic-management/index.md) rules to apply to control the flow of traffic between the active and canary versions. If not set, the default weighted pod replica based routing will be used.
The [traffic management](../traffic-management/index.md) rules to apply to control the flow of traffic between the active and canary versions. If not set, the default weighted pod replica based routing will be used.
Defaults to nil

View File

@ -0,0 +1,168 @@
# Canary Step Plugins
!!! warning "Alpha Feature (Since 1.8.0)"
This is an experimental, [alpha-quality](https://github.com/argoproj/argoproj/blob/main/community/feature-status.md#alpha)
feature that allows you to execute plugins during canary steps.
Argo Rollouts supports getting step plugins via 3rd party [plugin system](../../plugins.md). This allows users to extend the capabilities of Rollouts
to support executing arbitrary steps during the canary. Rollout's uses a plugin library called
[go-plugin](https://github.com/hashicorp/go-plugin) to do this.
## Installing
There are two methods of installing and using an Argo Rollouts plugin. The first method is to mount up the plugin executable
into the rollouts controller container. The second method is to use an HTTP(S) server to host the plugin executable.
### Mounting the plugin executable into the rollouts controller container
There are a few ways to mount the plugin executable into the rollouts controller container. Some of these will depend on your
particular infrastructure. Here are a few methods:
- Using an init container to download the plugin executable
- Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc.
- Building the plugin into the rollouts controller container
Then you can use the ConfigMap to point to the plugin executable file location. Example:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: argo-rollouts-config
data:
stepPlugins: |-
- name: "argoproj-labs/sample-step" # name of the plugin, it must match the name required by the plugin so it can find its configuration
location: "file://./my-custom-plugin" # supports http(s):// urls and file://
```
### Using an HTTP(S) server to host the plugin executable
!!! warning "Installing a plugin with http(s)"
Depending on which method you use to install and the plugin, there are some things to be aware of.
The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using
a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts
controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until
the server hosting the plugin is available again.
Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running
Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets
deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the
responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach.
Argo Rollouts supports downloading the plugin executable from an HTTP(S) server. To use this method, you will need to
configure the controller via the `argo-rollouts-config` ConfigMap and set `pluginLocation` to a http(s) url. Example:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: argo-rollouts-config
data:
stepPlugins: |-
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find its configuration
location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx/releases/download/v0.0.1/metric-plugin-linux-amd64" # supports http(s):// urls and file://
sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70b2c" # optional sha256 checksum of the plugin executable
```
### Disabling a plugin
A step plugin that will execute during your Rollouts will fail the canary deployment whenever there is an unhandled error.
If a step plugin is used in multiple rollouts and is suddenly unstable, none of the rollouts will be able to progress.
To make the plugin less disruptive and the upgrades easier, you can use the `disabled` flag in the plugin configuration to
disable it globally. This will skip the plugin execution in every Rollout where it is configured, and progress to the next canary step.
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: argo-rollouts-config
data:
stepPlugins: |-
- name: "argoproj-labs/sample-nginx"
location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx/releases/download/v0.0.1/metric-plugin-linux-amd64"
disabled: true # Skip all canary steps using this plugin because it may be faulty.
```
## Usage
You can execute a configured step plugin at any point during your canary steps.
The plugin will be executed and the rollout step will be progressing until the plugin execution returns a status of
`Successful`, `Failed` or `Error`. Once completed, the rollout will progress to the next configured step.
For the available plugin `config`, refer to each specific plugin documentation.
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: example-plugin-ro
spec:
strategy:
canary:
steps:
- plugin:
name: argoproj-labs/step-exec
config:
command: echo "hello world"
```
### Plugin Statuses
To know the result of your plugin, you can use the `status.stepPluginStatuses[]` property to find the status that correspond to
your execution. Each status item is unique by `index`, `name` and `operation`. The `operation` can be one of the following:
- `Run`: The main operation that execute the plugin.
- `Terminate`: The operation called on your plugin when the `Run` operation is still ongoing, but your rollout is aborted.
- `Abort`: The operation called on your plugin when it is aborted. This will be called for every `Successful` `Run` operation.
## Implementation
As a plugin developer, your step plugin should follow some conventions to make it predictable and easier to use.
### Run operation
The run operation is the method called on your plugin when executed. The operation can be called
**multiple times**. It is the responsibility of the plugin's implementation to validate if the desired
plugin actions were already taken or not.
#### Long-running operations
If the plugin needs to execute an operation that may take a long time, or poll for a result, it can return
early with a `Running` phase and a `RequeueAfter` duration. The controller will requeue the rollout and call the `Run` operation
again after the `RequeueAfter` has expired. The `Status` property on the return object can hold any information that would be
necessary to retrieve the state in subsequent executions.
### Terminate operation
If the `Run` operation returns with a `Running` phase and the rollout needs to cancel the execution, the controller will call the plugin's terminate method
with the state of the ongoing `Running` operation. The plugin can use this method to cancel any ongoing information.
This is often called if the rollout is fully promoted during a plugin execution.
If the terminate operation has an error and fails, it will not be retried. The plugin should have a mechanism to cancel
suspiciously long-running operations if necessary.
### Abort operation
The abort operation will be called whenever a rollout is aborted and plugin step `Run` operation was `Successful` or currently `Running`.
The operation will be called in the reverse execution order with the existing state of the operation it is aborting.
If the abort operation has an error and fails, it will not be retried. The plugin should have a mechanism to cancel
suspiciously long-running operations if necessary.
### Returning errors
The plugin can return an error for unhandled operations. In that case, the rollout will handle that error and apply a
backoff mechanism to retry the execution of the plugin until it returns `Successful` or `Failed` phase. When an error happens, the
`Status` returned by the plugin is not persisted, allowing it to retry later on the last known valid status.
The controller will keep retrying until it succeeds, or the rollout is aborted.
## List of Available Plugins (alphabetical order)
If you have created a plugin, please submit a PR to add it to this list.
### [plugin-name](#plugin-name)
- Brief plugin description

View File

@ -2,19 +2,31 @@
!!! important
Available for canary rollouts since v0.10.0
This is an **optional** feature of Argo Rollouts that allows you to have more visibility while a rollout is in progress. You do **NOT** need to use emphemeral metadata in order to achieve the main functionality of Argo Rollouts.
!!! important
Normally during a deployment, Argo Rollouts automatically handles the pods of the new and old versions along with their labels and their association with your traffic provider (if you use one).
Available for blue-green rollouts since v1.0
In some scenarios however,
One use case is for a Rollout to label or annotate the desired/stable pods with user-defined
1. You might want to annotate the pods of each version with your own custom labels
1. You may want the application itself know when a deployment is happening
Argo Rollouts gives you the capability to label or annotate the desired/stable pods with user-defined
labels/annotations, for _only_ the duration which they are the desired or stable set, and for the
labels to be updated/removed as soon as the ReplicaSet switches roles (e.g. from desired to stable).
The use case which this enables, is to allow prometheus, wavefront, datadog queries and dashboards
to be built, which can rely on a consistent labels, rather than the `rollouts-pod-template-hash`
In the first use case this allows prometheus, wavefront, datadog queries and dashboards
to be built, which can rely on a consistent list of labels, rather than the `rollouts-pod-template-hash`
which is unpredictable and changing from revision to revision.
In the second use case you can have your application read the labels itself using the [Kubernetes Downward API](https://kubernetes.io/docs/concepts/workloads/pods/downward-api/) and adjust
its behavior automatically only for the duration of the canary/blue/green deployment. For example you could point your application
to a different Queue server while the application pods are in "preview" and only use the production instance of your Queue server
when the pods are marked as "stable".
## Using Ephemeral labels
A Rollout using the canary strategy has the ability to attach ephemeral metadata to the stable or
canary Pods using the `stableMetadata` and `canaryMetadata` fields respectively.
@ -47,12 +59,14 @@ spec:
During an update, the Rollout will create the desired ReplicaSet while also merging the metadata
defined in `canaryMetadata`/`previewMetadata` to the desired ReplicaSet's `spec.template.metadata`.
This results in all Pods of the ReplicaSet being created with the desired metadata. When the rollout
This results in all Pods of the ReplicaSet being created with the desired metadata.
When the rollout
becomes fully promoted, the desired ReplicaSet becomes the stable, and is updated to use the labels
and annotations under `stableMetadata`/`activeMetadata`. The Pods of the ReplicaSet will then be
updated _in place_ to use the stable metadata (without recreating the pods).
!!! important
!!! tip
In order for tooling to take advantage of this feature, they would need to recognize the change in
labels and/or annotations that happen _after_ the Pod has already started. Not all tools may detect
this.
this. For application code apart from the Kubernetes Downward API you also need a programming library that automatically reloads configuration files when they change their contents.

View File

@ -28,6 +28,13 @@ configurations:
- https://argoproj.github.io/argo-rollouts/features/kustomize/rollout-transform.yaml
```
- With Kustomize 5 it is possible to reference the configuration directly from a remote resource:
```yaml
configurations:
- https://argoproj.github.io/argo-rollouts/features/kustomize/rollout-transform-kustomize-v5.yaml
```
- With Kustomize 4.5.5 kustomize can use kubernetes OpenAPI data to get merge key and patch strategy information about [resource types](https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/openapi). For example, given the following rollout:
```yaml

View File

@ -0,0 +1,274 @@
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/namereference.go
nameReference:
- kind: ConfigMap
version: v1
fieldSpecs:
- path: spec/template/spec/volumes/configMap/name
kind: Rollout
- path: spec/template/spec/containers/env/valueFrom/configMapKeyRef/name
kind: Rollout
- path: spec/template/spec/initContainers/env/valueFrom/configMapKeyRef/name
kind: Rollout
- path: spec/template/spec/containers/envFrom/configMapRef/name
kind: Rollout
- path: spec/template/spec/initContainers/envFrom/configMapRef/name
kind: Rollout
- path: spec/template/spec/volumes/projected/sources/configMap/name
kind: Rollout
- path: spec/templates/template/spec/volumes/configMap/name
kind: Experiment
- path: spec/templates/template/spec/containers/env/valueFrom/configMapKeyRef/name
kind: Experiment
- path: spec/templates/template/spec/initContainers/env/valueFrom/configMapKeyRef/name
kind: Experiment
- path: spec/templates/template/spec/containers/envFrom/configMapRef/name
kind: Experiment
- path: spec/templates/template/spec/initContainers/envFrom/configMapRef/name
kind: Experiment
- path: spec/templates/template/spec/volumes/projected/sources/configMap/name
kind: Experiment
- path: spec/metrics/provider/job/spec/template/spec/volumes/configMap/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/containers/env/valueFrom/configMapKeyRef/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/initContainers/env/valueFrom/configMapKeyRef/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/containers/envFrom/configMapRef/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/initContainers/envFrom/configMapRef/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/volumes/projected/sources/configMap/name
kind: AnalysisTemplate
- kind: Secret
version: v1
fieldSpecs:
- path: spec/template/spec/volumes/secret/secretName
kind: Rollout
- path: spec/template/spec/containers/env/valueFrom/secretKeyRef/name
kind: Rollout
- path: spec/template/spec/initContainers/env/valueFrom/secretKeyRef/name
kind: Rollout
- path: spec/template/spec/containers/envFrom/secretRef/name
kind: Rollout
- path: spec/template/spec/initContainers/envFrom/secretRef/name
kind: Rollout
- path: spec/template/spec/imagePullSecrets/name
kind: Rollout
- path: spec/template/spec/volumes/projected/sources/secret/name
kind: Rollout
- path: spec/templates/template/spec/volumes/secret/secretName
kind: Experiment
- path: spec/templates/template/spec/containers/env/valueFrom/secretKeyRef/name
kind: Experiment
- path: spec/templates/template/spec/initContainers/env/valueFrom/secretKeyRef/name
kind: Experiment
- path: spec/templates/template/spec/containers/envFrom/secretRef/name
kind: Experiment
- path: spec/templates/template/spec/initContainers/envFrom/secretRef/name
kind: Experiment
- path: spec/templates/template/spec/imagePullSecrets/name
kind: Experiment
- path: spec/templates/template/spec/volumes/projected/sources/secret/name
kind: Experiment
- path: spec/metrics/provider/job/spec/template/spec/volumes/secret/secretName
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/containers/env/valueFrom/secretKeyRef/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/initContainers/env/valueFrom/secretKeyRef/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/containers/envFrom/secretRef/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/initContainers/envFrom/secretRef/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/imagePullSecrets/name
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/volumes/projected/sources/secret/name
kind: AnalysisTemplate
- kind: ServiceAccount
version: v1
fieldSpecs:
- path: spec/template/spec/serviceAccountName
kind: Rollout
- path: spec/templates/template/spec/serviceAccountName
kind: Experiment
- path: spec/metrics/provider/job/spec/template/spec/serviceAccountName
kind: AnalysisTemplate
- kind: PersistentVolumeClaim
version: v1
fieldSpecs:
- path: spec/template/spec/volumes/persistentVolumeClaim/claimName
kind: Rollout
- path: spec/templates/template/spec/volumes/persistentVolumeClaim/claimName
kind: Experiment
- path: spec/metrics/provider/job/spec/template/spec/volumes/persistentVolumeClaim/claimName
kind: AnalysisTemplate
- kind: PriorityClass
version: v1
group: scheduling.k8s.io
fieldSpecs:
- path: spec/template/spec/priorityClassName
kind: Rollout
- path: spec/templates/template/spec/priorityClassName
kind: Experiment
- path: spec/metrics/provider/job/spec/template/spec/priorityClassName
kind: AnalysisTemplate
# The name references below are unique to Rollouts and not applicable to Deployment
- kind: Service
version: v1
fieldSpecs:
- path: spec/strategy/blueGreen/activeService
kind: Rollout
- path: spec/strategy/blueGreen/previewService
kind: Rollout
- path: spec/strategy/canary/canaryService
kind: Rollout
- path: spec/strategy/canary/stableService
kind: Rollout
- path: spec/strategy/canary/trafficRouting/alb/rootService
kind: Rollout
- kind: VirtualService
group: networking.istio.io
fieldSpecs:
- path: spec/strategy/canary/trafficRouting/istio/virtualService/name
kind: Rollout
- kind: DestinationRule
group: networking.istio.io
fieldSpecs:
- path: spec/strategy/canary/trafficRouting/istio/destinationRule/name
kind: Rollout
- kind: Ingress
group: networking.k8s.io
fieldSpecs:
- path: spec/strategy/canary/trafficRouting/alb/ingress
kind: Rollout
- path: spec/strategy/canary/trafficRouting/nginx/stableIngress
kind: Rollout
- kind: Ingress
group: extensions
fieldSpecs:
- path: spec/strategy/canary/trafficRouting/alb/ingress
kind: Rollout
- path: spec/strategy/canary/trafficRouting/nginx/stableIngress
kind: Rollout
- kind: AnalysisTemplate
group: argoproj.io
fieldSpecs:
- path: spec/strategy/blueGreen/prePromotionAnalysis/templates/templateName
kind: Rollout
- path: spec/strategy/blueGreen/postPromotionAnalysis/templates/templateName
kind: Rollout
- path: spec/strategy/canary/analysis/templates/templateName
kind: Rollout
- path: spec/strategy/canary/steps/analysis/templates/templateName
kind: Rollout
- path: spec/strategy/canary/steps/experiment/analyses/templateName
kind: Rollout
- path: spec/analyses/templateName
kind: Experiment
- kind: Rollout
fieldSpecs:
- path: spec/scaleTargetRef/name
kind: HorizontalPodAutoscaler
- kind: Deployment
version: v1
group: apps
fieldSpecs:
- path: spec/workloadRef/name
kind: Rollout
- kind: Mapping
group: getambassador.io
fieldSpecs:
- path: spec/strategy/canary/trafficRouting/ambassador/mappings
kind: Rollout
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/commonlabels.go
commonLabels:
- path: spec/selector/matchLabels
create: true
kind: Rollout
- path: spec/template/metadata/labels
create: true
kind: Rollout
- path: spec/template/spec/affinity/podAffinity/preferredDuringSchedulingIgnoredDuringExecution/podAffinityTerm/labelSelector/matchLabels
create: false
kind: Rollout
- path: spec/template/spec/affinity/podAffinity/requiredDuringSchedulingIgnoredDuringExecution/labelSelector/matchLabels
create: false
kind: Rollout
- path: spec/template/spec/affinity/podAntiAffinity/preferredDuringSchedulingIgnoredDuringExecution/podAffinityTerm/labelSelector/matchLabels
create: false
kind: Rollout
- path: spec/template/spec/affinity/podAntiAffinity/requiredDuringSchedulingIgnoredDuringExecution/labelSelector/matchLabels
create: false
kind: Rollout
templateLabels:
- path: spec/template/metadata/labels
create: true
kind: Rollout
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/commonannotations.go
commonAnnotations:
- path: spec/template/metadata/annotations
create: true
kind: Rollout
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/varreference.go
varReference:
- path: spec/template/spec/containers/args
kind: Rollout
- path: spec/template/spec/containers/command
kind: Rollout
- path: spec/template/spec/containers/env/value
kind: Rollout
- path: spec/template/spec/containers/volumeMounts/mountPath
kind: Rollout
- path: spec/template/spec/initContainers/args
kind: Rollout
- path: spec/template/spec/initContainers/command
kind: Rollout
- path: spec/template/spec/initContainers/env/value
kind: Rollout
- path: spec/template/spec/initContainers/volumeMounts/mountPath
kind: Rollout
- path: spec/templates/template/spec/containers/args
kind: Experiment
- path: spec/templates/template/spec/containers/command
kind: Experiment
- path: spec/templates/template/spec/containers/env/value
kind: Experiment
- path: spec/templates/template/spec/containers/volumeMounts/mountPath
kind: Experiment
- path: spec/templates/template/spec/initContainers/args
kind: Experiment
- path: spec/templates/template/spec/initContainers/command
kind: Experiment
- path: spec/templates/template/spec/initContainers/env/value
kind: Experiment
- path: spec/templates/template/spec/initContainers/volumeMounts/mountPath
kind: Experiment
- path: spec/metrics/provider/job/spec/template/spec/containers/args
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/containers/command
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/containers/env/value
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/containers/volumeMounts/mountPath
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/initContainers/args
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/initContainers/command
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/initContainers/env/value
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/initContainers/volumeMounts/mountPath
kind: AnalysisTemplate
- path: spec/metrics/provider/job/spec/template/spec/volumes/nfs/server
kind: AnalysisTemplate
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/replicas.go
replicas:
- path: spec/replicas
create: true
kind: Rollout

View File

@ -1,4 +1,4 @@
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/namereference.go
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/namereference.go
nameReference:
- kind: ConfigMap
version: v1
@ -182,7 +182,7 @@ nameReference:
- path: spec/strategy/canary/trafficRouting/ambassador/mappings
kind: Rollout
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/commonlabels.go
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/commonlabels.go
commonLabels:
- path: spec/selector/matchLabels
create: true
@ -203,13 +203,13 @@ commonLabels:
create: false
kind: Rollout
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/commonannotations.go
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/commonannotations.go
commonAnnotations:
- path: spec/template/metadata/annotations
create: true
kind: Rollout
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/varreference.go
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/varreference.go
varReference:
- path: spec/template/spec/containers/args
kind: Rollout
@ -262,7 +262,7 @@ varReference:
- path: spec/metrics/provider/job/spec/template/spec/volumes/nfs/server
kind: AnalysisTemplate
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/replicas.go
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/replicas.go
replicas:
- path: spec/replicas
create: true

File diff suppressed because it is too large Load Diff

View File

@ -68,9 +68,14 @@ To enable you need to add a flag to the controller `--self-service-notification-
## Default Trigger templates
Currently the following triggers have [built-in templates](https://github.com/argoproj/argo-rollouts/tree/master/manifests/notifications).
Currently, the following triggers have [built-in templates](https://github.com/argoproj/argo-rollouts/tree/master/manifests/notifications).
* `on-analysis-run-error` when an error occurs during the execution of an analysis run
* `on-analysis-run-failed` when an analysis run fails
* `on-analysis-run-running` when an analysis run is running
* `on-rollout-aborted` when a rollout process is aborted before completion.
* `on-rollout-completed` when a rollout is finished and all its steps are completed
* `on-rollout-paused` when a rollout is paused
* `on-rollout-step-completed` when an individual step inside a rollout definition is completed
* `on-rollout-updated` when a rollout definition is changed
* `on-scaling-replica-set` when the number of replicas in a rollout is changed
@ -141,8 +146,8 @@ add blocks and attachments for Slack, subject for Email or URL path, and body fo
In addition to custom notification template administrator and configure custom triggers. Custom trigger defines the
condition when the notification should be sent. The definition includes name, condition and notification templates reference.
The condition is a predicate expression that returns true if the notification should be sent. The trigger condition
evaluation is powered by [antonmedv/expr](https://github.com/antonmedv/expr).
The condition language syntax is described at [Language-Definition.md](https://github.com/antonmedv/expr/blob/master/docs/Language-Definition.md).
evaluation is powered by [expr-lang/expr](https://github.com/expr-lang/expr).
The condition language syntax is described at [Language-Definition.md](https://github.com/expr-lang/expr/blob/master/docs/language-definition.md).
The trigger is configured in `argo-rollouts-notification-configmap` ConfigMap. For example the following trigger sends a notification
when rollout pod spec uses `argoproj/rollouts-demo:purple` image:
@ -165,4 +170,4 @@ Each condition might use several templates. Typically each template is responsib
The following prometheus metrics are emitted when notifications are enabled in argo-rollouts.
- notification_send_success is a counter that measures how many times the notification is sent successfully.
- notification_send_error is a counter that measures how many times the notification failed to send.
- notification_send is a histogram that measures performance of sending notification.
- notification_send is a histogram that measures performance of sending notification.

View File

@ -23,7 +23,7 @@ argocd app actions run my-app restart --kind Rollout --resource-name my-rollout
```
Both of these mechanisms updates the Rollout's `.spec.restartAt` to the current time in the
form of a [RFC 3339 formatted](https://tools.ietf.org/html/rfc3339) UTC string
form of an [RFC 3339 formatted](https://tools.ietf.org/html/rfc3339) UTC string
(e.g. 2020-03-30T21:19:35Z), which indicates to the Rollout controller that all of a Rollout's
Pods should have been created after this timestamp.

View File

@ -15,7 +15,7 @@ spec:
# limits the number of successful analysis runs and experiments to be stored in a history
# Defaults to 5.
successfulRunHistoryLimit: 10
# limits the number of unsuccessful analysis runs and experiments to be stored in a history.
# limits the number of unsuccessful analysis runs and experiments to be stored in a history.
# Stages for unsuccessful: "Error", "Failed", "Inconclusive"
# Defaults to 5.
unsuccessfulRunHistoryLimit: 10
@ -27,9 +27,9 @@ spec:
matchLabels:
app: guestbook
# WorkloadRef holds a references to a workload that provides Pod template
# WorkloadRef holds a references to a workload that provides Pod template
# (e.g. Deployment). If used, then do not use Rollout template property.
workloadRef:
workloadRef:
apiVersion: apps/v1
kind: Deployment
name: rollout-ref-deployment
@ -42,12 +42,12 @@ spec:
scaleDown: never|onsuccess|progressively
# Template describes the pods that will be created. Same as deployment.
# If used, then do not use Rollout workloadRef property.
# If used, then do not use Rollout workloadRef property.
template:
spec:
containers:
- name: guestbook
image: argoproj/rollouts-demo:blue
- name: guestbook
image: argoproj/rollouts-demo:blue
# Minimum number of seconds for which a newly created pod should be ready
# without any of its container crashing, for it to be considered available.
@ -83,7 +83,7 @@ spec:
# its pods. Used by the `kubectl argo rollouts restart ROLLOUT` command.
# The controller will ensure all pods have a creationTimestamp greater
# than or equal to this value.
restartAt: "2020-03-30T21:19:35Z"
restartAt: '2020-03-30T21:19:35Z'
# The rollback window provides a way to fast track deployments to
# previously deployed versions.
@ -92,10 +92,8 @@ spec:
revisions: 3
strategy:
# Blue-green update strategy
blueGreen:
# Reference to service that the rollout modifies as the active service.
# Required.
activeService: active-service
@ -104,19 +102,19 @@ spec:
# cutover. +optional
prePromotionAnalysis:
templates:
- templateName: success-rate
- templateName: success-rate
args:
- name: service-name
value: guestbook-svc.default.svc.cluster.local
- name: service-name
value: guestbook-svc.default.svc.cluster.local
# Post-promotion analysis run which performs analysis after the service
# cutover. +optional
postPromotionAnalysis:
templates:
- templateName: success-rate
- templateName: success-rate
args:
- name: service-name
value: guestbook-svc.default.svc.cluster.local
- name: service-name
value: guestbook-svc.default.svc.cluster.local
# Name of the service that the rollout modifies as the preview service.
# +optional
@ -158,13 +156,13 @@ spec:
requiredDuringSchedulingIgnoredDuringExecution: {}
preferredDuringSchedulingIgnoredDuringExecution:
weight: 1 # Between 1 - 100
# activeMetadata will be merged and updated in-place into the ReplicaSet's spec.template.metadata
# of the active pods. +optional
activeMetadata:
labels:
role: active
# Metadata which will be attached to the preview pods only during their preview phase.
# +optional
previewMetadata:
@ -173,7 +171,6 @@ spec:
# Canary update strategy
canary:
# Reference to a service which the controller will update to select
# canary pods. Required for traffic routing.
canaryService: canary-service
@ -220,7 +217,7 @@ spec:
# killed, new RC can be scaled up further, ensuring that total number
# of pods running at any time during the update is at most 130% of
# original pods. +optional
maxSurge: "20%"
maxSurge: '20%'
# Adds a delay before scaling down the previous ReplicaSet when the
# canary strategy is used with traffic routing (default 30 seconds).
@ -244,135 +241,154 @@ spec:
# initial deploy of a rollout. +optional
analysis:
templates:
- templateName: success-rate
- templateName: success-rate
args:
- name: service-name
value: guestbook-svc.default.svc.cluster.local
- name: service-name
value: guestbook-svc.default.svc.cluster.local
# valueFrom.podTemplateHashValue is a convenience to supply the
# rollouts-pod-template-hash value of either the Stable ReplicaSet
# or the Latest ReplicaSet
- name: stable-hash
valueFrom:
podTemplateHashValue: Stable
- name: latest-hash
valueFrom:
podTemplateHashValue: Latest
# valueFrom.podTemplateHashValue is a convenience to supply the
# rollouts-pod-template-hash value of either the Stable ReplicaSet
# or the Latest ReplicaSet
- name: stable-hash
valueFrom:
podTemplateHashValue: Stable
- name: latest-hash
valueFrom:
podTemplateHashValue: Latest
# valueFrom.fieldRef allows metadata about the rollout to be
# supplied as arguments to analysis.
- name: region
valueFrom:
fieldRef:
fieldPath: metadata.labels['region']
# valueFrom.fieldRef allows metadata about the rollout to be
# supplied as arguments to analysis.
- name: region
valueFrom:
fieldRef:
fieldPath: metadata.labels['region']
# Steps define sequence of steps to take during an update of the
# canary. Skipped upon initial deploy of a rollout. +optional
steps:
# Sets the ratio of canary ReplicaSet to 20%
- setWeight: 20
# Sets the ratio of canary ReplicaSet to 20%
- setWeight: 20
# Pauses the rollout for an hour. Supported units: s, m, h
- pause:
duration: 1h
# Pauses the rollout for an hour. Supported units: s, m, h
- pause:
duration: 1h
# Pauses indefinitely until manually resumed
- pause: {}
# Pauses indefinitely until manually resumed
- pause: {}
# set canary scale to an explicit count without changing traffic weight
# (supported only with trafficRouting)
- setCanaryScale:
replicas: 3
# set canary scale to a explicit count without changing traffic weight
# (supported only with trafficRouting)
- setCanaryScale:
replicas: 3
# set canary scale to spec.Replica * (setweight / maxTrafficWeight) without changing traffic weight
# if maxTrafficWeight unspecified, it defaults to 100
# (supported only with trafficRouting)
- setCanaryScale:
weight: 25
# set canary scale to a percentage of spec.replicas without changing traffic weight
# (supported only with trafficRouting)
- setCanaryScale:
weight: 25
# set canary scale to match the canary traffic weight (default behavior)
- setCanaryScale:
matchTrafficWeight: true
# set canary scale to match the canary traffic weight (default behavior)
- setCanaryScale:
matchTrafficWeight: true
# The percentage or number of replica pods within the applications ReplicaSet
# that are available and ready when a rollout is ready to be promoted. Useful if your application
# configured an HPA to help handle different loads of traffic, but you still want quick promotions.
# Defaults to 100% if replicaProgressThreshold is not specified.
# The 'type' field should be either "Percent" | "Pod"
# Current percentage that is checked against the input percent value is calculated by the following:
# CURRENT PERCENTAGE = available replicas / desired replicas for the current step
# +optional
- replicaProgressThreshold:
type: Percent
value: 90
# Sets header based route with specified header values
# Setting header based route will send all traffic to the canary for the requests
# with a specified header, in this case request header "version":"2"
# (supported only with trafficRouting, for Istio only at the moment)
- setHeaderRoute:
# Name of the route that will be created by argo rollouts this must also be configured
# in spec.strategy.canary.trafficRouting.managedRoutes
name: "header-route-1"
# The matching rules for the header route, if this is missing it acts as a removal of the route.
match:
# headerName The name of the header to apply the match rules to.
- headerName: "version"
# headerValue must contain exactly one field of exact, regex, or prefix. Not all traffic routers support
# all types
headerValue:
# Exact will only match if the header value is exactly the same
exact: "2"
# Will match the rule if the regular expression matches
regex: "2.0.(.*)"
# prefix will be a prefix match of the header value
prefix: "2.0"
# Sets up a mirror/shadow based route with the specified match rules
# The traffic will be mirrored at the configured percentage to the canary service
# during the rollout
# executes the configured plugin by name with the provided configuration
- plugin:
name: example
config:
key: value
# Sets header based route with specified header values
# Setting header based route will send all traffic to the canary for the requests
# with a specified header, in this case request header "version":"2"
# (supported only with trafficRouting, for Istio only at the moment)
- setMirrorRoute:
# Name of the route that will be created by argo rollouts this must also be configured
# in spec.strategy.canary.trafficRouting.managedRoutes
name: "header-route-1"
# The percentage of the matched traffic to mirror to the canary
percentage: 100
# The matching rules for the header route, if this is missing it acts as a removal of the route.
# All conditions inside a single match block have AND semantics, while the list of match blocks have OR semantics.
# Each type within a match (method, path, headers) must have one and only one match type (exact, regex, prefix)
# Not all match types (exact, regex, prefix) will be supported by all traffic routers.
match:
- method: # What HTTP method to match
exact: "GET"
regex: "P.*"
prefix: "POST"
path: # What HTTP url paths to match.
exact: "/test"
regex: "/test/.*"
prefix: "/"
headers:
agent-1b: # What HTTP header name to use in the match.
exact: "firefox"
regex: "firefox2(.*)"
prefix: "firefox"
- setHeaderRoute:
# Name of the route that will be created by argo rollouts this must also be configured
# in spec.strategy.canary.trafficRouting.managedRoutes
name: 'header-route-1'
# The matching rules for the header route, if this is missing it acts as a removal of the route.
match:
# headerName The name of the header to apply the match rules to.
- headerName: 'version'
# headerValue must contain exactly one field of exact, regex, or prefix. Not all traffic routers support
# all types
headerValue:
# Exact will only match if the header value is exactly the same
exact: '2'
# Will match the rule if the regular expression matches
regex: '2.0.(.*)'
# prefix will be a prefix match of the header value
prefix: '2.0'
# an inline analysis step
- analysis:
templates:
- templateName: success-rate
# Sets up a mirror/shadow based route with the specified match rules
# The traffic will be mirrored at the configured percentage to the canary service
# during the rollout
# (supported only with trafficRouting, for Istio only at the moment)
- setMirrorRoute:
# Name of the route that will be created by argo rollouts this must also be configured
# in spec.strategy.canary.trafficRouting.managedRoutes
name: 'header-route-1'
# The percentage of the matched traffic to mirror to the canary
percentage: 100
# The matching rules for the header route, if this is missing it acts as a removal of the route.
# All conditions inside a single match block have AND semantics, while the list of match blocks have OR semantics.
# Each type within a match (method, path, headers) must have one and only one match type (exact, regex, prefix)
# Not all match types (exact, regex, prefix) will be supported by all traffic routers.
match:
- method: # What HTTP method to match
exact: 'GET'
regex: 'P.*'
prefix: 'POST'
path: # What HTTP url paths to match.
exact: '/test'
regex: '/test/.*'
prefix: '/'
headers:
agent-1b: # What HTTP header name to use in the match.
exact: 'firefox'
regex: 'firefox2(.*)'
prefix: 'firefox'
# an inline experiment step
- experiment:
duration: 1h
templates:
- name: baseline
specRef: stable
# optional, creates a service for the experiment if set
service:
# optional, service: {} is also acceptable if name is not included
name: test-service
- name: canary
specRef: canary
# optional, set the weight of traffic routed to this version
weight: 10
analyses:
- name : mann-whitney
templateName: mann-whitney
# Metadata which will be attached to the AnalysisRun.
analysisRunMetadata:
labels:
app.service.io/analysisType: smoke-test
annotations:
link.argocd.argoproj.io/external-link: http://my-loggin-platform.com/pre-generated-link
# an inline analysis step
- analysis:
templates:
- templateName: success-rate
# an inline experiment step
- experiment:
duration: 1h
templates:
- name: baseline
specRef: stable
# optional, creates a service for the experiment if set
service:
# optional, service: {} is also acceptable if name is not included
name: test-service
- name: canary
specRef: canary
# optional, set the weight of traffic routed to this version
weight: 10
analyses:
- name: mann-whitney
templateName: mann-whitney
# Metadata which will be attached to the AnalysisRun.
analysisRunMetadata:
labels:
app.service.io/analysisType: smoke-test
annotations:
link.argocd.argoproj.io/external-link: http://my-loggin-platform.com/pre-generated-link
# Anti-affinity configuration between desired and previous ReplicaSet.
# Only one must be specified.
@ -392,7 +408,7 @@ spec:
# This is a list of routes that Argo Rollouts has the rights to manage it is currently only required for
# setMirrorRoute and setHeaderRoute. The order of managedRoutes array also sets the precedence of the route
# in the traffic router. Argo Rollouts will place these routes in the order specified above any routes already
# defined in the used traffic router if something exists. The names here must match the names from the
# defined in the used traffic router if something exists. The names here must match the names from the
# setHeaderRoute and setMirrorRoute steps.
managedRoutes:
- name: set-header
@ -400,18 +416,18 @@ spec:
# Istio traffic routing configuration
istio:
# Either virtualService or virtualServices can be configured.
virtualService:
name: rollout-vsvc # required
routes:
- primary # optional if there is a single route in VirtualService, required otherwise
virtualServices:
# One or more virtualServices can be configured
- name: rollouts-vsvc1 # required
virtualService:
name: rollout-vsvc # required
routes:
- primary # optional if there is a single route in VirtualService, required otherwise
- name: rollouts-vsvc2 # required
routes:
- secondary # optional if there is a single route in VirtualService, required otherwise
virtualServices:
# One or more virtualServices can be configured
- name: rollouts-vsvc1 # required
routes:
- primary # optional if there is a single route in VirtualService, required otherwise
- name: rollouts-vsvc2 # required
routes:
- secondary # optional if there is a single route in VirtualService, required otherwise
# NGINX Ingress Controller routing configuration
nginx:
@ -422,14 +438,16 @@ spec:
- secondary-ingress
- tertiary-ingress
annotationPrefix: customingress.nginx.ingress.kubernetes.io # optional
additionalIngressAnnotations: # optional
additionalIngressAnnotations: # optional
canary-by-header: X-Canary
canary-by-header-value: iwantsit
canaryIngressAnnotations: # optional
my-custom-annotation.mygroup.com/key: value
# ALB Ingress Controller routing configuration
alb:
ingress: ingress # required
servicePort: 443 # required
ingress: ingress # required
servicePort: 443 # required
annotationPrefix: custom.alb.ingress.kubernetes.io # optional
# Service Mesh Interface routing configuration
@ -442,18 +460,24 @@ spec:
# 0 means canary pods are not scaled down. Default is 30 seconds.
abortScaleDownDelaySeconds: 30
# Automatically reduce the number of stable pods as the number of canary pods increases
# Only available when traffic routing is used. Default value is false meaning that as more canary pods
# are created the number of stable pods stays the same.
dynamicStableScale: false
status:
pauseConditions:
- reason: StepPause
startTime: 2019-10-00T1234
- reason: BlueGreenPause
startTime: 2019-10-00T1234
- reason: AnalysisRunInconclusive
startTime: 2019-10-00T1234
- reason: StepPause
startTime: 2019-10-00T1234
- reason: BlueGreenPause
startTime: 2019-10-00T1234
- reason: AnalysisRunInconclusive
startTime: 2019-10-00T1234
```
## Examples
You can find examples of Rollouts at:
* The [example directory](https://github.com/argoproj/argo-rollouts/tree/master/examples)
* The [Argo Rollouts Demo application](https://github.com/argoproj/rollouts-demo)
- The [example directory](https://github.com/argoproj/argo-rollouts/tree/master/examples)
- The [Argo Rollouts Demo application](https://github.com/argoproj/rollouts-demo)

View File

@ -149,7 +149,7 @@ spec:
By default, a rollout will inject the `alb.ingress.kubernetes.io/actions.<SERVICE-NAME>` annotation
using the service/action name specified under `spec.strategy.canary.stableService`. However, it may
be desirable to specify an explicit service/action name different from the `stableService`. For
example, [one pattern](/argo-rollouts/best-practices/#ingress-desiredstable-host-routes) is to use a single
example, [one pattern](/best-practices/#ingress-desiredstable-host-routes) is to use a single
Ingress containing three different rules to reach the canary, stable, and root service separately
(e.g. for testing purposes). In this case, you may want to specify a "root" service as the
service/action name instead of stable. To do so, reference a service under `rootService` under the
@ -308,6 +308,9 @@ spec:
args: [--aws-verify-target-group]
# NOTE: in v1.0, the --alb-verify-weight flag should be used instead
```
!!! note
The `--aws-region` flag is mandatory for enabling AWS integrations, including TargetGroup verification. If the Argo Rollouts controller does not have the correct AWS region specified, or lacks access to validate the AWS ALB, the promotion process will fail. Ensure that the necessary AWS API permissions are granted to the controller and that the region is correctly configured.
For this feature to work, the argo-rollouts deployment requires the following AWS API permissions
under the [Elastic Load Balancing API](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/Welcome.html):

View File

@ -65,7 +65,7 @@ When Ambassador is configured in the `trafficRouting` attribute of the manifest,
## Endpoint Resolver
By default, Ambassador uses kube-proxy to route traffic to Pods. However we should configure it to bypass kube-proxy and route traffic directly to pods. This will provide true L7 load balancing which is desirable in a canary workflow. This approach is called [endpoint routing](https://www.getambassador.io/docs/latest/topics/running/load-balancer/) and can be achieve by configuring [endpoint resolvers](https://www.getambassador.io/docs/latest/topics/running/resolvers/#the-kubernetes-endpoint-resolver).
By default, Ambassador uses kube-proxy to route traffic to Pods. However we should configure it to bypass kube-proxy and route traffic directly to pods. This will provide true L7 load balancing which is desirable in a canary workflow. This approach is called [endpoint routing](https://www.getambassador.io/docs/latest/topics/running/load-balancer/) and can be achieved by configuring [endpoint resolvers](https://www.getambassador.io/docs/latest/topics/running/resolvers/#the-kubernetes-endpoint-resolver).
To configure Ambassador to use endpoint resolver it is necessary to apply the following resource in the cluster:

View File

@ -175,16 +175,16 @@ spec:
steps:
- setCanaryScale:
weight: 25
- setMirrorRoute:
name: mirror-route
percentage: 35
match:
- method:
exact: GET
path:
prefix: /
- pause:
duration: 10m
- setMirrorRoute:
name: "mirror-route" # removes mirror based traffic route
- setMirrorRoute:
name: mirror-route
percentage: 35
match:
- method:
exact: GET
path:
prefix: /
- pause:
duration: 10m
- setMirrorRoute:
name: "mirror-route" # removes mirror based traffic route
```

View File

@ -19,6 +19,10 @@ are available as options in Argo Rollouts:
1. [Host-level traffic splitting](#host-level-traffic-splitting)
2. [Subset-level traffic splitting](#subset-level-traffic-splitting)
!!! note
When using Istio only traffic that is within the service mesh will follow the rollout strategy. Pods excluded from the service mesh (e.g., because of a `sidecar.istio.io/inject="false"` label) will follow default Kubernetes traffic routing.
## Host-level Traffic Splitting
The first approach to traffic splitting using Argo Rollouts and Istio, is splitting between two
@ -303,7 +307,7 @@ spec:
## Multicluster Setup
If you have [Istio multicluster setup](https://istio.io/latest/docs/setup/install/multicluster/)
where the primary Istio cluster is different than the cluster where the Argo Rollout controller
where the primary Istio cluster is different from the cluster where the Argo Rollout controller
is running, then you need to do the following setup:
1. Create a `ServiceAccount` in the Istio primary cluster.
@ -439,12 +443,12 @@ leverage the following Argo CD features:
ignoreDifferences:
- group: networking.istio.io
kind: VirtualService
jsonPointers:
- /spec/http/0
jqPathExpressions:
- .spec.http[].route[].weight
```
Ignoring the differences in the VirtualServices HTTP route, prevents gitops differences
in the VirtualService HTTP routes to contribute to the overall sync status of the Argo CD
Ignoring the differences in the VirtualServices HTTP route weights, prevents GitOps differences
in the VirtualService HTTP route weights to contribute to the overall sync status of the Argo CD
application. This adds the additional benefit of prevent auto-sync operations from being
triggered.
@ -459,6 +463,7 @@ leverage the following Argo CD features:
syncPolicy:
syncOptions:
- ApplyOutOfSyncOnly=true
- RespectIgnoreDifferences=true
```
By default, when Argo CD syncs an application, it runs `kubectl apply` against all resources in
@ -468,11 +473,6 @@ leverage the following Argo CD features:
feature, provides a way to manage the conflict in the desired state of a VirtualService between
Argo CD and Argo Rollouts.
Argo CD also has an [open issue here](https://github.com/argoproj/argo-cd/issues/2913) which would
help address this problem. The proposed solution is to introduce an annotation to resources, which
indicates to Argo CD to respect and preserve the differences at a specified path, in order to allow
other controllers (e.g. Argo Rollouts) controller manage them instead.
## Ping Pong
!!! important

View File

@ -29,14 +29,14 @@ implement more providers such as Istio, SMI, etc.
### Hybrid Scenarios
In this case, its very similar to avoiding the Big-Bang, either if it is part of the platform roadmap or a new redesign
In this case, it's very similar to avoiding the Big-Bang, either if it is part of the platform roadmap or a new redesign
of the architecture, there are multiple scenarios where having the capacity of using multiple trafficRoutings is very
much in need: gradual implementation, eased rollback of architecture or even for a fallback.
## Requirements
The use of multiple providers requires that both providers comply with its minimum requirements independently.
By example, if you want to use NGiNX and SMI you would need to have both SMI and NGiNX in place and produce the rollout configuration
For example, if you want to use NGiNX and SMI you would need to have both SMI and NGiNX in place and produce the rollout configuration
for both.
```yaml

View File

@ -7,7 +7,8 @@ The Rollout controller will always set the following two annotations on the cana
- `canary: true` to indicate that this is the canary Ingress
- `canary-weight: <num>` to indicate what percentage of traffic to send to the canary. If all traffic is routed to the stable Service, this is set to `0`
You can provide additional annotations to add to the canary Ingress via the `additionalIngressAnnotations` field to enable features like routing by header or cookie.
You can provide additional annotations to add to the canary Ingress via the `additionalIngressAnnotations` or `canaryIngressAnnotations` field to enable features like routing by header or cookie.
While the former offers the possibility of reusing a common, injectable nginx annotation prefix, the latter allows defining custom full annotations of any group, which may be relevant for other, independent mechanisms, such as a third-party metrics scraper or some other infrastructure integration.
## Integration with Argo Rollouts
@ -34,6 +35,8 @@ spec:
additionalIngressAnnotations: # optional
canary-by-header: X-Canary
canary-by-header-value: iwantsit
canaryIngressAnnotations: # optional
my-custom-annotation.mygroup.com/key: value
```
The stable Ingress field is a reference to an Ingress in the same namespace of the Rollout. The Rollout requires the primary Ingress routes traffic to the stable Service. The Rollout checks that condition by confirming the Ingress has a backend that matches the Rollout's stableService.
@ -42,6 +45,8 @@ The controller routes traffic to the canary Service by creating a second Ingress
Since the Nginx Ingress controller allows users to configure the annotation prefix used by the Ingress controller, Rollouts can specify the optional `annotationPrefix` field. The canary Ingress uses that prefix instead of the default `nginx.ingress.kubernetes.io` if the field set.
If full annotations, [as defined in the Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set), perhaps from different groups, need to be declared instead, the `canaryIngressAnnotations` field can be used, which accepts a similar key-value structure, but performs no prefix injection.
Note that, in case of collision with `additionalIngressAnnotations`, the value under `canaryIngressAnnotations` prevails.
## Using Argo Rollouts with multiple NGINX ingress controllers per service
Starting with v1.5, argo rollouts supports multiple Nginx ingress controllers pointing at one service with canary deployments. If only one ingress controller is needed, utilize the existing key `stableIngress`. If multiple ingress controllers are needed (e.g., separating internal vs external traffic), use the key `stableIngresses` instead. It takes an array of string values that are the names of the ingress controllers. Canary steps are applied identically across all ingress controllers.

View File

@ -1,26 +1,28 @@
# Traffic Router Plugins
!!! important
Available since v1.5 - Status: Alpha
!!! warning "Alpha Feature (Since 1.5.0)"
Argo Rollouts supports getting analysis metrics via 3rd party plugin system. This allows users to extend the capabilities of Rollouts
to support metric providers that are not natively supported. Rollout's uses a plugin library called
This is an experimental, [alpha-quality](https://github.com/argoproj/argoproj/blob/main/community/feature-status.md#alpha)
feature that allows you to supporttraffic router that are not natively supported.
Argo Rollouts supports getting traffic router via 3rd party [plugin system](../../plugins.md). This allows users to extend the capabilities of Rollouts
to support traffic router that are not natively supported. Rollout's uses a plugin library called
[go-plugin](https://github.com/hashicorp/go-plugin) to do this. You can find a sample plugin
here: [rollouts-plugin-trafficrouter-sample-nginx](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx)
## Using a Traffic Router Plugin
## Installing
There are two methods of installing and using an argo rollouts plugin. The first method is to mount up the plugin executable
into the rollouts controller container. The second method is to use a HTTP(S) server to host the plugin executable.
into the rollouts controller container. The second method is to use an HTTP(S) server to host the plugin executable.
### Mounting the plugin executable into the rollouts controller container
There are a few ways to mount the plugin executable into the rollouts controller container. Some of these will depend on your
particular infrastructure. Here are a few methods:
* Using an init container to download the plugin executable
* Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc.
* Building the plugin into the rollouts controller container
- Using an init container to download the plugin executable
- Using a Kubernetes volume mount with a shared volume such as NFS, EBS, etc.
- Building the plugin into the rollouts controller container
Then you can use the configmap to point to the plugin executable file location. Example:
@ -31,13 +33,26 @@ metadata:
name: argo-rollouts-config
data:
trafficRouterPlugins: |-
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find its configuration
location: "file://./my-custom-plugin" # supports http(s):// urls and file://
```
### Using a HTTP(S) server to host the plugin executable
### Using an HTTP(S) server to host the plugin executable
Argo Rollouts supports downloading the plugin executable from a HTTP(S) server. To use this method, you will need to
!!! warning "Installing a plugin with http(s)"
Depending on which method you use to install and the plugin, there are some things to be aware of.
The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using
a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts
controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until
the server hosting the plugin is available again.
Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running
Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets
deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the
responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach.
Argo Rollouts supports downloading the plugin executable from an HTTP(S) server. To use this method, you will need to
configure the controller via the `argo-rollouts-config` configmap and set `pluginLocation` to a http(s) url. Example:
```yaml
@ -47,37 +62,39 @@ metadata:
name: argo-rollouts-config
data:
trafficRouterPlugins: |-
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find its configuration
location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx/releases/download/v0.0.1/metric-plugin-linux-amd64" # supports http(s):// urls and file://
sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70b2c" #optional sha256 checksum of the plugin executable
headersFrom: #optional headers for the download via http request
- secretRef:
name: secret-name
---
apiVersion: v1
kind: Secret
metadata:
name: secret-name
stringData:
Authorization: Basic <Base 64 TOKEN>
My-Header: value
```
## Some words of caution
Depending on which method you use to install and the plugin, there are some things to be aware of.
The rollouts controller will not start if it can not download or find the plugin executable. This means that if you are using
a method of installation that requires a download of the plugin and the server hosting the plugin for some reason is not available and the rollouts
controllers pod got deleted while the server was down or is coming up for the first time, it will not be able to start until
the server hosting the plugin is available again.
Argo Rollouts will download the plugin at startup only once but if the pod is deleted it will need to download the plugin again on next startup. Running
Argo Rollouts in HA mode can help a little with this situation because each pod will download the plugin at startup. So if a single pod gets
deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the
responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach.
## List of Available Plugins (alphabetical order)
#### Add Your Plugin Here
* If you have created a plugin, please submit a PR to add it to this list.
#### [rollouts-plugin-trafficrouter-sample-nginx](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx)
* This is just a sample plugin that can be used as a starting point for creating your own plugin.
If you have created a plugin, please submit a PR to add it to this list.
### [rollouts-plugin-trafficrouter-sample-nginx](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx)
- This is just a sample plugin that can be used as a starting point for creating your own plugin.
It is not meant to be used in production. It is based on the built-in prometheus provider.
#### [Consul](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-consul)
* This is a plugin that allows argo-rollouts to work with Consul's service mesh for traffic shaping patterns.
### [Consul](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-consul)
#### [Contour](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-contour)
* This is a plugin that allows argo-rollouts to work with contour's resource: HTTPProxy. It enables traffic shaping patterns such as canary releases and more.
- This is a plugin that allows argo-rollouts to work with Consul's service mesh for traffic shaping patterns.
#### [Gateway API](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/)
* Provide support for Gateway API, which includes Kuma, Traefix, cilium, Contour, GloodMesh, HAProxy, and [many others](https://gateway-api.sigs.k8s.io/implementations/#implementation-status).
### [Contour](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-contour)
- This is a plugin that allows argo-rollouts to work with contour's resource: HTTPProxy. It enables traffic shaping patterns such as canary releases and more.
### [Gateway API](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/)
- Provide support for Gateway API, which includes Kuma, Traefix, cilium, Contour, GloodMesh, HAProxy, and [many others](https://gateway-api.sigs.k8s.io/implementations/#implementation-status).

View File

@ -242,7 +242,7 @@ Status:
Events: <none>
```
Here we see the recommendation for cpu, memory with lowerbound, upper bound, Target etc., are provided. If we check the status of the pods.. the older pods with initial configuration would get terminated and newer pods get created.
Here we see the recommendation for cpu, memory with lowerbound, upper bound, Target etc., are provided. If we check the status of the pods, the older pods with initial configuration would get terminated and newer pods get created.
```yaml
# kubectl get po -n test-vpa -w
@ -337,7 +337,7 @@ Events:
## Requirements
In order for the VPA to manipulate the rollout, the Kubernetes cluster hosting the rollout CRD needs the subresources support for CRDs. This feature was introduced as alpha in Kubernetes version 1.10 and transitioned to beta in Kubernetes version 1.11. If a user wants to use VPA on v1.10, the Kubernetes Cluster operator will need to add a custom feature flag to the API server. After 1.10, the flag is turned on by default. Check out the following [link](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) for more information on setting the custom feature flag.
When installing VPA you may need to add the following in RBAC configurations for `system:vpa-target-reader` cluster role as by default VPA maynot support rollouts in all the versions.
When installing VPA you may need to add the following in RBAC configurations for `system:vpa-target-reader` cluster role as by default VPA may not support rollouts in all the versions.
```yaml
- apiGroups:

View File

@ -26,7 +26,7 @@ kubectl argo rollouts promote guestbook
kubectl argo rollouts abort guestbook
# Retry the guestbook rollout
kubectl argo rollouts retry guestbook
kubectl argo rollouts retry rollout guestbook
```
## Options

View File

@ -10,6 +10,16 @@ Start UI dashboard
kubectl argo rollouts dashboard [flags]
```
## Examples
```shell
# Start UI dashboard
kubectl argo rollouts dashboard
# Start UI dashboard on a specific port
kubectl argo rollouts dashboard --port 8080
```
## Options
```

View File

@ -30,6 +30,9 @@ kubectl argo rollouts get rollout guestbook
# Watch progress of a rollout
kubectl argo rollouts get rollout guestbook -w
# Watch the rollout, fail if it takes more than 60 seconds
kubectl argo rollouts get rollout guestbook -w --timeout-seconds 60
```
## Options

View File

@ -26,7 +26,7 @@ kubectl argo rollouts list experiments --watch
## Options
```
--all-namespaces Include all namespaces
-A, --all-namespaces Include all namespaces
-h, --help help for experiments
```

View File

@ -16,6 +16,9 @@ kubectl argo rollouts list rollouts [flags]
# List rollouts
kubectl argo rollouts list rollouts
# List rollouts with a specific name
kubectl argo rollouts list rollouts --name my-rollout
# List rollouts from all namespaces
kubectl argo rollouts list rollouts --all-namespaces

View File

@ -13,8 +13,11 @@ kubectl argo rollouts set image ROLLOUT_NAME CONTAINER=IMAGE [flags]
## Examples
```shell
# Set rollout image
kubectl argo rollouts set image my-rollout www=image:v2
# Set rollout image (containers contains 'initContainer', 'container', 'ephemeralContainer')
kubectl argo rollouts set image my-rollout containerName=imageName
# Set rollout image for all containers
kubectl argo rollouts set image my-rollout *=imageName
```
## Options

View File

@ -17,6 +17,9 @@ kubectl argo rollouts status ROLLOUT_NAME [flags]
# Watch the rollout until it succeeds
kubectl argo rollouts status guestbook
# Show the rollout status
kubectl argo rollouts status guestbook --watch=false
# Watch the rollout until it succeeds, fail if it takes more than 60 seconds
kubectl argo rollouts status --timeout 60s guestbook

View File

@ -13,7 +13,7 @@ kubectl argo rollouts terminate <analysisrun|experiment> RESOURCE_NAME [flags]
## Examples
```shell
# Terminate an analysisRun
# Terminate an AnalysisRun
kubectl argo rollouts terminate analysisrun guestbook-877894d5b-4-success-rate.1
# Terminate a failed experiment

View File

@ -14,7 +14,7 @@ kubectl argo rollouts terminate analysisrun ANALYSISRUN_NAME [flags]
```shell
# Terminate an AnalysisRun
kubectl argo rollouts terminate analysis guestbook-877894d5b-4-success-rate.1
kubectl argo rollouts terminate analysisrun guestbook-877894d5b-4-success-rate.1
```
## Options

View File

@ -16,7 +16,7 @@ kubectl argo rollouts undo ROLLOUT_NAME [flags]
# Undo a rollout
kubectl argo rollouts undo guestbook
# Undo a rollout revision 3
# Undo a rollout to revision 3
kubectl argo rollouts undo guestbook --to-revision=3
```

View File

@ -4,21 +4,21 @@
The GitHub notification service changes commit status using [GitHub Apps](https://docs.github.com/en/developers/apps) and requires specifying the following settings:
* `appID` - the app id
* `installationID` - the app installation id
* `privateKey` - the app private key
* `enterpriseBaseURL` - optional URL, e.g. https://git.example.com/
- `appID` - the app id
- `installationID` - the app installation id
- `privateKey` - the app private key
- `enterpriseBaseURL` - optional URL, e.g. https://git.example.com/
## Configuration
1. Create a GitHub Apps using https://github.com/settings/apps/new
2. Change repository permissions to enable write commit statuses and/or deployments and/or pull requests comments
![2](https://user-images.githubusercontent.com/18019529/108397381-3ca57980-725b-11eb-8d17-5b8992dc009e.png)
3. Generate a private key, and download it automatically
![3](https://user-images.githubusercontent.com/18019529/108397926-d4a36300-725b-11eb-83fe-74795c8c3e03.png)
4. Install app to account
5. Store privateKey in `argo-rollouts-notification-secret` Secret and configure GitHub integration
in `argo-rollouts-notification-configmap` ConfigMap
1. Change repository permissions to enable write commit statuses and/or deployments and/or pull requests comments
![2](https://user-images.githubusercontent.com/18019529/108397381-3ca57980-725b-11eb-8d17-5b8992dc009e.png)
1. Generate a private key, and download it automatically
![3](https://user-images.githubusercontent.com/18019529/108397926-d4a36300-725b-11eb-83fe-74795c8c3e03.png)
1. Install app to account
1. Store privateKey in `argo-rollouts-notification-secret` Secret and configure GitHub integration
in `argo-rollouts-notification-configmap` ConfigMap
```yaml
apiVersion: v1
@ -77,6 +77,7 @@ template.app-deployed: |
requiredContexts: []
autoMerge: true
transientEnvironment: false
reference: v1.0.0
pullRequestComment:
content: |
Application {{.app.metadata.name}} is now running new version of deployments manifests.
@ -84,9 +85,11 @@ template.app-deployed: |
```
**Notes**:
- If the message is set to 140 characters or more, it will be truncated.
- If `github.repoURLPath` and `github.revisionPath` are same as above, they can be omitted.
- Automerge is optional and `true` by default for github deployments to ensure the requested ref is up to date with the default branch.
Setting this option to `false` is required if you would like to deploy older refs in your default branch.
For more information see the [GitHub Deployment API Docs](https://docs.github.com/en/rest/deployments/deployments?apiVersion=2022-11-28#create-a-deployment).
- If `github.pullRequestComment.content` is set to 65536 characters or more, it will be truncated.
- Reference is optional. When set, it will be used as the ref to deploy. If not set, the revision will be used as the ref to deploy.

View File

@ -91,7 +91,7 @@ kubectl argo rollouts promote rollouts-demo
```
After promotion, Rollout will proceed to execute the remaining steps. The remaining rollout steps
in our example are fully automated, so the Rollout will eventually complete steps until it has has
in our example are fully automated, so the Rollout will eventually complete steps until it has
fully transitioned to the new version. Watch the rollout again until it has completed all steps:
```shell
@ -153,7 +153,7 @@ there is no activity with regards to new ReplicaSets becoming created.
When a Rollout has not yet reached its desired state (e.g. it was aborted, or in the middle of
an update), and the stable manifest were re-applied, the Rollout detects this as a rollback
and *not* a update, and will fast-track the deployment of the stable ReplicaSet by skipping
and *not* an update, and will fast-track the deployment of the stable ReplicaSet by skipping
analysis, and the steps.
## Summary
@ -165,7 +165,7 @@ In this guide, we have learned basic capabilities of Argo Rollouts, including:
* Manual promotion
* Manual abortion
The Rollout in this basic example did not utilize a ingress controller or service mesh provider
The Rollout in this basic example did not utilize an ingress controller or service mesh provider
to route traffic. Instead, it used normal Kubernetes Service networking (i.e. kube-proxy) to achieve
an *approximate* canary weight, based on the closest ratio of new to old replica counts.
As a result, this Rollout had a limitation in that it could only achieve a minimum canary

View File

@ -91,7 +91,7 @@ kubectl -n argo-examples port-forward svc/my-svc 8181:80
## 3. Rollout new version
Now its time to deploy new version. Update the rollout with new image.
Now it's time to deploy new version. Update the rollout with new image.
```shell
kubectl argo rollouts set image my-rollout demo=argoproj/rollouts-demo:green -n argo-examples

View File

@ -220,7 +220,7 @@ kubectl argo rollouts get rollout rollouts-demo
## 2. Perform an update
Update the rollout by changing the image, and wait for it to reached the paused state.
Update the rollout by changing the image, and wait for it to reach the paused state.
```shell
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow

View File

@ -62,7 +62,7 @@ spec:
...
```
A combination of both should have comply with each TrafficRouting requirements, in this case:
A combination of both should have to comply with each TrafficRouting requirements, in this case:
```yaml
apiVersion: argoproj.io/v1alpha1
@ -176,7 +176,7 @@ discussed in the following section.
## 2. Perform an update
Now perform an update the rollout by changing the image, and wait for it to reached the paused state.
Now perform an update the rollout by changing the image, and wait for it to reach the paused state.
```shell
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
@ -210,7 +210,7 @@ changes over the original ingress:
1. Two additional
[NGINX specific canary annotations](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#canary)
are added to the annotations.
2. The Ingress rules will have an rule which points the backend to the *canary* service.
2. The Ingress rules will have a rule which points the backend to the *canary* service.
```yaml

View File

@ -109,7 +109,7 @@ kubectl argo rollouts get rollout rollouts-demo
## 2. Perform an update
Update the rollout by changing the image, and wait for it to reached the paused state.
Update the rollout by changing the image, and wait for it to reach the paused state.
```shell
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
@ -130,7 +130,7 @@ changes over the original ingress:
1. Two additional
[NGINX specific canary annotations](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#canary)
are added to the annotations.
2. The Ingress rules will have an rule which points the backend to the *canary* service.
2. The Ingress rules will have a rule which points the backend to the *canary* service.
```yaml

View File

@ -100,7 +100,7 @@ spec:
## 2. Perform an update
Now perform an update the rollout by changing the image, and wait for it to reached the paused state.
Now perform an update the rollout by changing the image, and wait for it to reach the paused state.
```shell
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow

View File

@ -104,7 +104,7 @@ The completion command supports bash, zsh, fish and powershell.
See the [completion command documentation](./generated/kubectl-argo-rollouts/kubectl-argo-rollouts_completion.md) for more details.
## Using the CLI with Docker
## Using the CLI with Docker
The CLI is also available as a container image at [https://quay.io/repository/argoproj/kubectl-argo-rollouts](https://quay.io/repository/argoproj/kubectl-argo-rollouts)
@ -116,7 +116,7 @@ docker run quay.io/argoproj/kubectl-argo-rollouts:master version
## Supported versions
Check [e2e testing file]( https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/e2e.yaml#L40-L44) to see what the Kubernetes version is being fully tested.
Check [e2e testing file](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/testing.yaml#L82-L89) to see what the Kubernetes version is being fully tested.
You can switch to different tags to see what relevant Kubernetes versions were being tested for the respective version.

View File

@ -11,7 +11,6 @@ Here is an overview of how plugins are loaded:
[![Loading of plugins](contributing-assets/plugin-loading.png)](contributing-assets/plugin-loading.png)
The communication protocol uses golang built in net/rpc library so plugins have to be written in golang.
## Plugin Repository
@ -28,7 +27,7 @@ types to exist such as `<org1>/nginx` and `<org2>/nginx`. These names could be b
as `argoproj-labs/rollouts-plugin-metric-sample-prometheus` but it is not a requirement.
There will also be a standard for naming repositories under argoproj-labs in the form of `rollouts-plugin-<type>-<tool>`
where `<type>` is say `metric`, or `trafficrouter` and `<tool>` is the software the plugin is for say nginx.
where `<type>` is one of `metric`, `step`, or `trafficrouter` and `<tool>` is the software the plugin is for, say nginx.
## Plugin Name
@ -55,13 +54,28 @@ data:
args:
- "--log-level"
- "debug"
stepPlugins: |-
- name: "argoproj-labs/canary-step"
location: "file:///tmp/argo-rollouts/canary-step-plugin"
disabled: false
args:
- "--log-level"
- "debug"
```
As you can see there is a field called `name:` under both `metrics` or `trafficrouters` this is the first place where your
As you can see there is a field called `name:` under each plugin type. This is the first place where your
end users will need to configure the name of the plugin. The second `location` is either in the rollout object or the analysis
template which you can see the examples below. The third `args` holds the command line arguments of the plugin.
#### AnalysisTemplate Example
### Configuration Examples
#### AnalysisTemplate
You can see that we use the plugin name under `spec.metrics[].provider.plugin` for analysis template.
You, as a plugin author, can then put any configuration you need under `argoproj-labs/metrics` and you will be able to
look up that config in your plugin via the plugin name key. You will also want to document what configuration options your plugin supports.
```yaml
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
@ -77,7 +91,13 @@ spec:
address: http://prometheus.local
```
#### Traffic Router Example
#### Traffic Router
You can see that we use the plugin name under `spec.strategy.canary.trafficRouting.plugins` for traffic routers.
You, as a plugin author, can then put any configuration you need under `argoproj-labs/metrics` and you will be able to
look up that config in your plugin via the plugin name key. You will also want to document what configuration options your plugin supports.
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
@ -94,18 +114,36 @@ spec:
stableIngress: canary-demo
```
You can see that we use the plugin name under `spec.metrics[].provider.plugin` for analysis template and `spec.strategy.canary.trafficRouting.plugins`
for traffic routers. You as a plugin author can then put any configuration you need under `argoproj-labs/nginx` and you will be able to
look up that config in your plugin via the plugin name key. You will also want to document what configuration options your plugin supports.
#### Step Plugin
You can see that we use the plugin name under `spec.strategy.canary.steps[].plugin.name` for canary steps.
You, as a plugin author, can then put any configuration you need in the plugin object under `config` property and you will receive it
as an arguments when your plugin is called. You will also want to document what configuration options your plugin supports.
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: example-plugin-ro
spec:
strategy:
canary:
steps:
- plugin:
name: argoproj-labs/step-exec
config:
command: echo "hello world"
```
## Plugin Interfaces
Argo Rollouts currently supports two plugin systems as a plugin author your end goal is to implement these interfaces as
a hashicorp go-plugin. The two interfaces are `MetricsPlugin` and `TrafficRouterPlugin` for each of the respective plugins:
Argo Rollouts currently supports three plugin systems. As a plugin author, your end goal is to implement at least one of these interfaces as
a hashicorp go-plugin. The interfaces are `MetricsPlugin`, `TrafficRouterPlugin` and `StepPlugin` for each of the respective plugins:
```go
type MetricProviderPlugin interface {
// InitPlugin initializes the traffic router plugin this gets called once when the plugin is loaded.
// InitPlugin initializes the traffic router plugin. This gets called once when the plugin is loaded.
InitPlugin() RpcError
// Run start a new external system call for a measurement
// Should be idempotent and do nothing if a call has already been started
@ -124,7 +162,7 @@ type MetricProviderPlugin interface {
}
type TrafficRouterPlugin interface {
// InitPlugin initializes the traffic router plugin this gets called once when the plugin is loaded.
// InitPlugin initializes the traffic router plugin. This gets called once when the plugin is loaded.
InitPlugin() RpcError
// UpdateHash informs a traffic routing reconciler about new canary, stable, and additionalDestination(s) pod hashes
UpdateHash(rollout *v1alpha1.Rollout, canaryHash, stableHash string, additionalDestinations []v1alpha1.WeightDestination) RpcError
@ -142,6 +180,19 @@ type TrafficRouterPlugin interface {
// Type returns the type of the traffic routing reconciler
Type() string
}
type StepPlugin interface {
// InitPlugin initializes the canary step plugin. This gets called once when the plugin is loaded.
InitPlugin() RpcError
// Run executes a step plugin for the RpcStepContext and returns the result to the controller or an RpcError for unexpected failures
Run(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError)
// Terminate stops an uncompleted operation started by the Run operation
Terminate(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError)
// Abort reverts the actions performed during the Run operation if necessary
Abort(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError)
// Type returns the type of the step plugin
Type() string
}
```
## Plugin Init Function
@ -161,7 +212,8 @@ for the plugin to use. This will probably affect traffic router plugins more tha
## Sample Plugins
There are two sample plugins within the argo-rollouts repo that you can use as a reference for creating your own plugin.
There are sample plugins within the argo-rollouts repo that you can use as a reference for creating your own plugin.
* [Metrics Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/metrics-plugin-sample)
* [Traffic Router Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/trafficrouter-plugin-sample)
- [Metrics Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/metrics-plugin-sample)
- [Traffic Router Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/trafficrouter-plugin-sample)
- [Step Plugin Sample](https://github.com/argoproj/argo-rollouts/tree/master/test/cmd/step-plugin-sample)

View File

@ -0,0 +1,97 @@
---
title: Parameterized Build system
authors:
- '@kostis-codefresh'
creation-date: 2025-06-24
---
# Parameterized Build system
The build system of Argo Rollouts is currently presenting several challenges for companies that want to keep
internal forks.
This document provides a proposal for making the build system of Argo Rollouts more flexible.
## Summary
There is a need for companies to have an internal fork of Argo Rollouts. This fork needs to follow the upstream project (in order to get new features) but at the same time
allow
- quick security fixes
- testing of upcoming features before releasing them to the upstream OSS fork
- integration with internal systems that are not relevant to the OSS fork.
## Motivation
Currently the [build system of Argo Rollouts](https://github.com/argoproj/argo-rollouts/tree/master/.github/workflows) has several hardcoded parameters. These include
- The Docker registry for the project is hardcoded to [quay.io/argoproj/kubectl-argo-rollouts](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/docker-publish.yml#L44)
- There are mentions on which Golang version to use in [several](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/testing.yaml#L96) [different](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/docker-publish.yml#L70) [places](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/go.yml#L12).
- The Kubernetes API versions of E2E tests [are an inline list](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/testing.yaml#L82)
This makes having a internal fork a more difficult process than needed because any custom changes that happen internally require extra effort if
- they never need to be sent to the upstream project
- they need to be compared with the upstream project (3-way diff)
- they need to be pinned/kept back against the upstream project
## Goals
The goals of this proposal are:
- Detect all places in the build system that have hardcoded values
- Make the different build system configurations a parameter
- Setup default values for the main OSS project
- Allow external organizations to maintain internal forks with minimal effort
## Use cases
Here are some example use cases
### Basic build/push
An external organization should be able to fork the OSS project and push the final image to their own registry instead of the default `quay.io/argoproj`
### Internal security fix
A critical vulnerability has been found and the organization needs to provide a hotfix in the internal fork. The fix could be in
- a standard library of Argo Rollouts
- the version of GoLang
- The version of Kubernetes client
- Any combination of the above.
A developer should be able to apply this fix in the internal fork, and then at the same time send the fix to the upstream OSS project. The assumption is that the OSS
project might not get the fix as fast as the internal fork, so there is a brief time window where the security fix is only in the internal fork while there is still the need
to get new features from the OSS project.
### Internal feature implementation
Same scenario as the security fix but this time code changes in the actual controller are included.
### Permanent changes only for the internal fork
The most complex scenario (and the one presenting more challenges today) is for changes that do not go to the upstream fork and need to stay
in the internal fork for a larger time period.
Examples are
- Using an older Golang version
- Supporting an older version of the Kubernetes client library
- Using an internal fork for a dependency library that will never be OSS
## Security Considerations
There is no impact for the security of the project. In fact, this proposal will allow security conscious organizations to ship security fixes much faster
and in smaller batches to the OSS project.
## Risks and Mitigations
There is no risk in the main project as all changes will happen on the build system. The end result for the main project will be exactly the same
(using default values or having implied configuration files).

View File

@ -0,0 +1,334 @@
---
title: Step Plugin
authors:
- '@agaudreault'
sponsors:
- '@zaller'
creation-date: 2024-03-27
---
# Step Plugin
Step plugins can be used to call code built outside of argo-rollout's codebase to execute actions during a canary rollout.
This document provides technical implementation proposals to avoid implementing rollout steps in Argo Rollouts codebase.
## Summary
Rollout steps need to be implemented natively in Argo Rollout source code.
It makes it difficult for the community to add new rollout steps because their implementation
is coupled with Rollout release cycle. The Rollout maintainers also have to acquire
knowledge on the different technologies used in the steps and validate them on each release.
## Motivation
This section is for explicitly listing the motivation, goals and non-goals of this proposal.
Describe why the change is important and the benefits to users.
### Goals
The goals of this proposal are:
- Update steps outside Rollouts release cycle
- Allow the community experts to maintain their steps
- Allow for a faster step development iteration
- Allow for more features without increasing complexity on the controller
- Allow users to use proprietary steps with Argo Rollouts
### Non-Goals
Implement plugins.
## Proposal
Rollout already has a plugin mechanism for metric providers and traffic routers as
documented in https://argoproj.github.io/argo-rollouts/plugins/. The implementation is based on [hashicorp/go-plugin](https://github.com/hashicorp/go-plugin).
This mechanism can be extended to support the steps plugin.
- Consistent with existing behavior.
- Add a `stepPluginStatuses` array to the `.status.canary` field.
- Users can consult the Rollout object after the execution to get details on their status.
### Use cases
More details in https://github.com/argoproj/argo-rollouts/issues/2685
### Implementation Details/Notes/Constraints
#### Configuration
The plugin will be configured alongside existing plugins.
```yaml
kind: ConfigMap
metadata:
name: argo-rollouts-config
data:
metricProviderPlugins: |-
- name: "argoproj-labs/metrics"
location: "file:///tmp/argo-rollouts/metric-plugin"
args:
- "--log-level"
- "debug"
stepPlugins: |-
- name: "argoproj-labs/curl/v2"
disabled: false
location: "file:///tmp/argo-rollouts/step-plugin"
sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70abc"
args:
- "--log-level"
- "debug"
```
#### Interface
_The interface implementation details related to go-plugin and rpc calls have been omitted for clarity._
```go
type Phase string
const (
PhaseRunning Phase = "Running"
PhaseSuccessful Phase = "Successful"
PhaseFailed Phase = "Failed"
PhaseError Phase = "Error"
)
type StepContext struct {
PluginName string
Config map[string]interface{}
Status map[string]interface{}
}
type StepStatus struct {
Index int
Name string
Phase Phase
Message string
StartedAt Time
FinishedAt Time
Status map[string]interface{}
}
type StepResult struct {
Phase Phase
Message string
RequeueAfter Duration
Status map[string]interface{}
}
type StepPlugin interface {
Init() error
Run(Rollout, StepContext) (StepResult, error)
Terminate(Rollout, StepContext) (StepResult, error)
Abort(Rollout, StepContext) (StepResult, error)
}
```
#### Rollout object (plugin input)
The step will provide rollout specific configuration defined by the users
as a map of key value pairs allowing the user to pass any declarative configs to the plugin.
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: example-rollout
spec:
strategy:
canary:
...
steps:
- setWeight: 20
- plugin:
name: argoproj/curl
abortOnFailure: false # <--- example
progressDeadline: 30s # <--- example
config:
url: https://example.com/
some_key: some_value
- pause: {}
- setWeight: 40
```
#### Rollout Status (plugin output)
The controller will write a new object to the status.
This object will be used to persist the plugin state after the step execution and to allow other steps to use it.
```yaml
status:
canary:
stepPluginStatuses:
- index: 2
name: argoproj/curl
message: Call completed with status code 302
phase: Successful
startedAt: '2024-02-15T20:05:40Z'
finishedAt: '2024-02-15T20:21:40Z'
status: {}
- index: 4
name: argoproj/async-task
message: Waiting for result
phase: Running
startedAt: '2024-02-15T20:05:40Z'
finishedAt: null
status:
id: 12
path: /an/example/property
validated: false
```
### Detailed execution flow
1. **At initialization**
The plugins are loaded based on configuration and started as processes with the provided arguments in the configuration.
The `Init()` method is called for plugins to perform one-time initialization such as creating clients and establishing connections.
2. **A rollout reach the plugin step for the first time**
During the rollout, the controller will use the `currentStepIndex` to find the step to run.
If the step is a plugin, the controller will create a StepContext object based
on the configuration on the Rollouts step object.
The controller will try to retrieve the value of the current `stepPluginStatuses`,
and if it matches the current step index, it will add the persisted state to the context.
It will create a StepStatus object otherwise, set the name and index to the current step,
set the startedAt value to the current time and the phase as Running.
3. **Running the step plugin**
The plugin `Run()` method is called with the StepContext.
The plugin implementation will use the StepContext to perform the necessary logic.
4. **Status is updated**
Based on the return of the Run command, the StepStatus object is updated.
Then, the StepStatus is assigned to the stepPluginStatuses property.
The status is persisted in the object.
5. **Validate step completed**
If the controller current step is of type plugin, the controller will check if the phase is successful,
and if so, go to the next step.
If the step is still running, the controller will requeue a reconcile operation based on the value of `RequeueAfter`.
If the phase is failed, it will update the status and conditions, **aborting** the rollout.
#### Scenarios
##### Step plugin completes successfully
The `stepPluginStatuses` will not contain any object for the current step index, the plugin will perform the desired action successfully and return a successful state.
The state will be persisted and the controller wil execute the next step.
##### Step plugin completes with failed phase
If the step plugin returns a failed phase, the controller will set the rollout to **aborted** and persist the state.
The user will receive the feedback based on the Progressing condition status. This behavior is consistent with existing mechanisms aborting a rollout.
##### Step plugin completes with running phase
If the step plugin returns a running phase, the controller will persist the state, but will not increment the current step index.
The controller will requeue a reconcile operation based on the value of `RequeueAfter` and terminate the current reconciliation.
On the next reconciliation, the persisted state will be passed to the plugin `Run()` method.
##### Step plugin is called multiple times
If an external error happens causing the controller to crash after it called the `Run()` method and before it could persist the status,
the controller will replay the current plugin step, with a new context, like if it was the first time it is called.
> **A step plugin can be called multiple times and operations should be idempotent.**
##### Rollout is fully promoted during a step plugin
If a Rollout is forcefully considered fully promoted while the current step is in a Running phase,
the plugin will call the `Terminate()` method with the current context on the next reconciliation and update the status based on the result.
##### Rollout aborted during a step plugin
If a Rollout is aborted while the current step is in a Running phase, the plugin will call the `Abort()` method with the current context on the next reconciliation.
The controller will call the `Abort()` operation for each step that were executed in the reverse order.
The steps may or may not perform any action during the Abort.
The result of the abort will be saved in the status, overriding the state persisted during the `Run()`.
If the Abort operation has an error, the error is propagated to the controller.
The controller has the responsibility to retry the Abort operation, and eventually proceed with the next step if it never succeeds.
##### The step plugin reports an error
Before returning the error, the status is persisted with the error phase and message. Other properties of the current status remain unmodified so the step can be re-executed with the last known valid status.
For an expected retryable error, the plugin should return a Running phase with a RequeueAfter value to retry the execution.
For an expected un-retryable error, the plugin should return a Failed status.
After the state is persisted, the error is propagated to the controller and the controller error-handling logic will handle the error.
##### The step plugin uses Rollout information
The step plugin may need to have access to the current state of the Rollout. The step plugin will receive a deep copy of the rollout object in parameter.
##### I can investigate my step plugin execution
A user wants to know what happened during their custom step plugin after the execution. They can use the status in the Rollout object.
##### State is shared between plugins
A user wants to use an API to publish information about the rollout. The plugin first calls the API that returns a conversation ID.
Other steps need to use the conversationID during their execution.
The plugin step receives in parameters the full rollout object and the pluginName. This information can be used to retrieve the status of other plugin execution.
A utility function such as `PluginHelper.GetStatuses(rollout, pluginName)` can be implemented and made available to the plugins.
##### I want my rollout to continue event if my plugin failed
A parameter such as `abortOnFailure` can be added to the Rollout plugin step configuration object.
When specified, the controller can use the value to modify the default logic.
##### I dont want my plugin execution time to count towards the progress deadline
A parameter such as `ignoreProgressDeadline` can be added to the Rollout plugin step configuration object.
When specified, the controller can use the value to modify the default logic.
### Security Considerations
- Plugins binary can be validated with the configured `sha256`.
### Risks and Mitigations
- Rollout status size can grow more than expected based on plugins hygiene.
- Object size can be validated with `unsafe.Sizeof(struct)` and a size limit can be imposed.
- Plugins that are failing or causing problems cannot be removed without updating all the Rollouts.
- A `disabled` config can be added globally and ignore the plugin execution if true.
### Upgrade / Downgrade Strategy
It is expected that plugins will be compiled with different versions than the running argo-rollout controller. The plugins version could be either newer or older than the controller.
The hashicorp/go-plugin uses gob encoding with rpc.
> “The source and destination values/types need not correspond exactly. For structs, fields (identified by name) that are in the source but absent from the receiving variable will be ignored. Fields that are in the receiving variable but missing from the transmitted type or value will be ignored in the destination. If a field with the same name is present in both, their types must be compatible. Both the receiver and transmitter will do all necessary indirection and dereferencing to convert between gobs and actual Go values.” - package [encoding/gob](https://pkg.go.dev/encoding/gob)
Plugins should validate the objects they receive in parameters such as the `Rollout` and user confiuguration. If they expect a property to be set and it is not, it is highly probably that the controller's object version does not have that property.
For breaking changes, hashicorp/go-plugin has a `ProtocolVersion` property that can be used in the future.
Plugins can also be added with different names, which would require update to the Rollout CR objects as well.
## Drawbacks
- Gives a lot of power to the plugin and bad plugins could destabilize the rollouts
- If plugins need more permission, the access needs to be given using the Rollout service account.
## Alternatives
- Only implement vetted code in the argo-rollout codebase.
- Create a plugin that calls other containers

View File

@ -24,7 +24,7 @@ Example:
Once the script is executed successfully, a GitHub workflow will start
execution. You can follow its progress under the [Actions](https://github.com/argoproj/argo-rollouts/actions/workflows/release.yaml) tab, the name of the action is `Release`.
1. When the action completes, visit the generated draft [Github releases](https://github.com/argoproj/argo-rollouts/releases) and enter the details about the release:
1. When the action completes, visit the generated draft [GitHub releases](https://github.com/argoproj/argo-rollouts/releases) and enter the details about the release:
* Getting started (copy from previous release and new version)
* Changelog

View File

@ -1,55 +0,0 @@
# Roadmap
The Argo Rollouts roadmap is maintained in Github Milestones on the Github repository.
## Release Cycle
### Schedule
These are the upcoming releases date estimates:
| Release | Release Planning Meeting | Release Candidate 1 | General Availability |
|---------|--------------------------|-----------------------|--------------------------|
| v1.4 | TBD | Monday, Dec. 19, 2022 | Tuesday, Jan. 9, 2023 |
| v1.5 | Monday, Mar. 6, 2023 | Monday, Mar. 20, 2023 | Monday, Apr. 10, 2023 |
| v1.6 | Monday, Jun. 5, 2023 | Monday, Jun. 19, 2023 | Wednesday, Jul. 12, 2023 |
| v1.7 | Monday, Sep. 4, 2023 | Monday, Sep. 18, 2023 | Monday, Oct. 9, 2023 |
### Release Process
#### Minor Releases (e.g. 1.x.0)
A minor Argo Rollouts release occurs four times a year, once every three months. Each General Availability (GA) release is
preceded by several Release Candidates (RCs). The first RC is released three weeks before the scheduled GA date.
These are the approximate release dates:
* The first Monday of January
* The first Monday of April
* The first Monday of July
* The first Monday of October
Dates may be shifted slightly to accommodate holidays. Those shifts should be minimal.
#### Patch Releases (e.g. 1.4.x)
Argo Rollouts patch releases occur on an as-needed basis. Only the three most recent minor versions are eligible for patch
releases. Versions older than the three most recent minor versions are considered EOL and will not receive bug fixes or
security updates.
### Feature Acceptance Criteria
To be eligible for inclusion in a minor release, a new feature must meet the following criteria before the releases RC
date.
If it is a large feature that involves significant design decisions, that feature must be described in a Proposal.
The feature PR must include:
* Tests (passing)
* Documentation
* If necessary, a note in the Upgrading docs for the planned minor release
* The PR must be reviewed, approved, and merged by an Approver.
If these criteria are not met by the RC date, the feature will be ineligible for inclusion in the RC series or GA for
that minor release. It will have to wait for the next minor release.

View File

@ -6,23 +6,23 @@
***
## Release Assets
| Asset | Description |
|-------------------------------------|--------------------------------------------------|
| argo-rollouts-checksums.txt | Checksums of binaries |
| argo-rollouts-cli.intoto.jsonl | Attestation of CLI binaries & manifiest |
| dashboard-install.yaml | Dashboard install |
| install.yaml | Standard installation method |
| kubectl-argo-rollouts-darwin-amd64 | CLI Binary |
| kubectl-argo-rollouts-darwin-arm64 | CLI Binary |
| kubectl-argo-rollouts-linux-amd64 | CLI Binary |
| kubectl-argo-rollouts-linux-arm64 | CLI Binary |
| kubectl-argo-rollouts-windows-amd64 | CLI Binary |
| namespace-install.yaml | Namespace installation |
| notifications-install.yaml | Notification installation |
| rollout_cr_schema.json | Schema |
| sbom.tar.gz | Sbom |
| sbom.tar.gz.pem | Certificate used to sign sbom |
| sbom.tar.gz.sig | Signature of sbom |
| Asset | Description |
|-------------------------------------|---------------------------------------------|
| argo-rollouts-checksums.txt | Checksums of binaries |
| argo-rollouts-cli.intoto.jsonl | Attestation of CLI binaries & manifest |
| dashboard-install.yaml | Dashboard install |
| install.yaml | Standard installation method |
| kubectl-argo-rollouts-darwin-amd64 | CLI Binary |
| kubectl-argo-rollouts-darwin-arm64 | CLI Binary |
| kubectl-argo-rollouts-linux-amd64 | CLI Binary |
| kubectl-argo-rollouts-linux-arm64 | CLI Binary |
| kubectl-argo-rollouts-windows-amd64 | CLI Binary |
| namespace-install.yaml | Namespace installation |
| notifications-install.yaml | Notification installation |
| rollout_cr_schema.json | Schema |
| sbom.tar.gz | Sbom |
| sbom.tar.gz.pem | Certificate used to sign sbom |
| sbom.tar.gz.sig | Signature of sbom |
***
## Verification of container images

View File

@ -10,7 +10,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
kubetesting "k8s.io/client-go/testing"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
)
@ -207,7 +207,7 @@ func TestCreateAnalysisRunWithArg(t *testing.T) {
TemplateName: aTemplates[0].Name,
Args: []v1alpha1.Argument{{
Name: "test",
Value: pointer.StringPtr("sss"),
Value: ptr.To[string]("sss"),
}},
},
}
@ -239,7 +239,7 @@ func TestCreateAnalysisRunWithClusterTemplate(t *testing.T) {
ClusterScope: true,
Args: []v1alpha1.Argument{{
Name: "test",
Value: pointer.StringPtr("sss"),
Value: ptr.To[string]("sss"),
}},
},
}
@ -271,7 +271,7 @@ func TestAnalysisRunFailToResolveArg(t *testing.T) {
Args: []v1alpha1.Argument{{
Name: "test",
Value: pointer.StringPtr("{{not a real substitution}}"),
Value: ptr.To[string]("{{not a real substitution}}"),
}},
},
}
@ -480,7 +480,7 @@ func TestAssessAnalysisRunStatusesAfterTemplateSuccess(t *testing.T) {
func TestFailExperimentWhenAnalysisFails(t *testing.T) {
templates := generateTemplates("bar")
e := newExperiment("foo", templates, "")
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
e.Spec.Analyses = []v1alpha1.ExperimentAnalysisTemplateRef{
{
Name: "success-rate",
@ -493,7 +493,7 @@ func TestFailExperimentWhenAnalysisFails(t *testing.T) {
}
e.Status.Phase = v1alpha1.AnalysisPhaseRunning
e.Spec.Duration = "5m"
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
e.Status.AvailableAt = secondsAgo(60)
rs := templateToRS(e, templates[0], 1)
ar1 := analysisTemplateToRun("success-rate", e, &v1alpha1.AnalysisTemplateSpec{})
@ -660,7 +660,7 @@ func TestDoNotCompleteExperimentWithRemainingRequiredAnalysisRun(t *testing.T) {
func TestCompleteExperimentWithNoRequiredAnalysis(t *testing.T) {
templates := generateTemplates("bar")
e := newExperiment("foo", templates, "1m")
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
e.Spec.Analyses = []v1alpha1.ExperimentAnalysisTemplateRef{
{
Name: "success-rate",
@ -700,7 +700,7 @@ func TestCompleteExperimentWithNoRequiredAnalysis(t *testing.T) {
func TestTerminateAnalysisRuns(t *testing.T) {
templates := generateTemplates("bar")
e := newExperiment("foo", templates, "")
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
e.Spec.Analyses = []v1alpha1.ExperimentAnalysisTemplateRef{
{
Name: "success-rate",

View File

@ -5,7 +5,7 @@ import (
"time"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
"github.com/argoproj/argo-rollouts/utils/conditions"
@ -15,7 +15,7 @@ import (
func TestUpdateProgressingLastUpdateTime(t *testing.T) {
templates := generateTemplates("bar")
templates[0].Replicas = pointer.Int32Ptr(2)
templates[0].Replicas = ptr.To[int32](2)
e := newExperiment("foo", templates, "")
e.Status.TemplateStatuses = []v1alpha1.TemplateStatus{{
Name: "bar",
@ -53,7 +53,7 @@ func TestEnterTimeoutDegradedState(t *testing.T) {
Name: "bar",
Status: v1alpha1.TemplateStatusProgressing,
}}
e.Spec.ProgressDeadlineSeconds = pointer.Int32Ptr(30)
e.Spec.ProgressDeadlineSeconds = ptr.To[int32](30)
prevTime := metav1.NewTime(timeutil.Now().Add(-1 * time.Minute).Truncate(time.Second))
e.Status.TemplateStatuses[0].LastTransitionTime = &prevTime

View File

@ -5,6 +5,8 @@ import (
"sync"
"time"
corev1 "k8s.io/api/core/v1"
log "github.com/sirupsen/logrus"
appsv1 "k8s.io/api/apps/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
@ -79,7 +81,7 @@ type Controller struct {
resyncPeriod time.Duration
}
// ControllerConfig describes the data required to instantiate a new analysis controller
// ControllerConfig describes the data required to instantiate a new experiments controller
type ControllerConfig struct {
KubeClientSet kubernetes.Interface
ArgoProjClientset clientset.Interface
@ -98,7 +100,6 @@ type ControllerConfig struct {
// NewController returns a new experiment controller
func NewController(cfg ControllerConfig) *Controller {
replicaSetControl := controller.RealRSControl{
KubeClient: cfg.KubeClientSet,
Recorder: cfg.Recorder.K8sRecorder(),
@ -318,6 +319,7 @@ func (ec *Controller) syncHandler(ctx context.Context, key string) error {
}
func (ec *Controller) persistExperimentStatus(orig *v1alpha1.Experiment, newStatus *v1alpha1.ExperimentStatus) error {
prevStatus := orig.Status
ctx := context.TODO()
logCtx := logutil.WithExperiment(orig)
patch, modified, err := diff.CreateTwoWayMergePatch(
@ -336,15 +338,27 @@ func (ec *Controller) persistExperimentStatus(orig *v1alpha1.Experiment, newStat
return nil
}
logCtx.Debugf("Experiment Patch: %s", patch)
_, err = ec.argoProjClientset.ArgoprojV1alpha1().Experiments(orig.Namespace).Patch(ctx, orig.Name, patchtypes.MergePatchType, patch, metav1.PatchOptions{})
patched, err := ec.argoProjClientset.ArgoprojV1alpha1().Experiments(orig.Namespace).Patch(ctx, orig.Name, patchtypes.MergePatchType, patch, metav1.PatchOptions{})
if err != nil {
logCtx.Warningf("Error updating experiment: %v", err)
return err
}
logCtx.Info("Patch status successfully")
ec.recordEvent(patched, prevStatus, newStatus)
return nil
}
func (ec *Controller) recordEvent(ex *v1alpha1.Experiment, prevStatus v1alpha1.ExperimentStatus, newStatus *v1alpha1.ExperimentStatus) {
if prevStatus.Phase != newStatus.Phase {
eventType := corev1.EventTypeNormal
switch newStatus.Phase {
case v1alpha1.AnalysisPhaseError, v1alpha1.AnalysisPhaseFailed, v1alpha1.AnalysisPhaseInconclusive:
eventType = corev1.EventTypeWarning
}
ec.recorder.Eventf(ex, record.EventOptions{EventType: eventType, EventReason: "Experiment" + string(newStatus.Phase)}, "Experiment transitioned from %s -> %s", prevStatus.Phase, newStatus.Phase)
}
}
// enqueueIfCompleted conditionally enqueues the AnalysisRun's Experiment if the run is complete
func (ec *Controller) enqueueIfCompleted(obj any) {
run := unstructuredutil.ObjectToAnalysisRun(obj)

View File

@ -31,7 +31,7 @@ import (
core "k8s.io/client-go/testing"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"github.com/argoproj/argo-rollouts/controller/metrics"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
@ -143,7 +143,7 @@ func generateTemplates(imageNames ...string) []v1alpha1.TemplateSpec {
Selector: &metav1.LabelSelector{
MatchLabels: selector,
},
Replicas: pointer.Int32Ptr(1),
Replicas: ptr.To[int32](1),
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: selector,

View File

@ -26,7 +26,7 @@ import (
"k8s.io/client-go/kubernetes"
appslisters "k8s.io/client-go/listers/apps/v1"
v1 "k8s.io/client-go/listers/core/v1"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
)
const (
@ -72,7 +72,6 @@ func newExperimentContext(
resyncPeriod time.Duration,
enqueueExperimentAfter func(obj any, duration time.Duration),
) *experimentContext {
exCtx := experimentContext{
ex: experiment,
templateRSs: templateRSs,
@ -138,7 +137,14 @@ func (ec *experimentContext) reconcileTemplate(template v1alpha1.TemplateSpec) {
// Create service for template if service field is set
if desiredReplicaCount != 0 {
ec.createTemplateService(&template, templateStatus, rs)
} else {
if rs.Status.AvailableReplicas == 0 {
// Check if service should be deleted when ReplicaSet has scaled down to 0 available replicas
svc := ec.templateServices[template.Name]
ec.deleteTemplateService(svc, templateStatus, template.Name)
}
}
} else {
// If service field nil but service exists, then delete it
// Code should not enter this path
@ -158,6 +164,7 @@ func (ec *experimentContext) reconcileTemplate(template v1alpha1.TemplateSpec) {
ec.scaleTemplateRS(rs, template, templateStatus, desiredReplicaCount, experimentReplicas)
templateStatus.LastTransitionTime = &now
}
}
if rs == nil {
@ -273,11 +280,6 @@ func (ec *experimentContext) scaleTemplateRS(rs *appsv1.ReplicaSet, template v1a
if err != nil {
templateStatus.Status = v1alpha1.TemplateStatusError
templateStatus.Message = fmt.Sprintf("Unable to scale ReplicaSet for template '%s' to desired replica count '%v': %v", templateStatus.Name, desiredReplicaCount, err)
} else {
if desiredReplicaCount == 0 && template.Service != nil {
svc := ec.templateServices[template.Name]
ec.deleteTemplateService(svc, templateStatus, template.Name)
}
}
}
@ -319,7 +321,7 @@ func (ec *experimentContext) createTemplateService(template *v1alpha1.TemplateSp
// createReplicaSetForTemplate initializes ReplicaSet with zero replicas for given experiment template
func (ec *experimentContext) createReplicaSetForTemplate(template v1alpha1.TemplateSpec, templateStatus *v1alpha1.TemplateStatus, logCtx *log.Entry, now metav1.Time) {
template.Replicas = pointer.Int32Ptr(0)
template.Replicas = ptr.To[int32](0)
rs, err := ec.createReplicaSet(template, templateStatus.CollisionCount)
if err != nil {
logCtx.Warnf("Failed to create ReplicaSet: %v", err)
@ -416,6 +418,19 @@ func (ec *experimentContext) reconcileAnalysisRun(analysis v1alpha1.ExperimentAn
eventType = corev1.EventTypeWarning
}
ec.recorder.Eventf(ec.ex, record.EventOptions{EventType: eventType, EventReason: "AnalysisRun" + string(newStatus.Phase)}, msg)
// Handle the case where the Analysis Run belongs to an Experiment, and the Experiment is a Step in the Rollout
// This makes sure the rollout gets the Analysis Run events, which will then trigger any subscribed notifications
// #4009
roRef := experimentutil.GetRolloutOwnerRef(ec.ex)
if roRef != nil {
rollout, err := ec.argoProjClientset.ArgoprojV1alpha1().Rollouts(ec.ex.Namespace).Get(context.TODO(), roRef.Name, metav1.GetOptions{})
if err != nil {
ec.log.Warnf("Failed to get parent Rollout of the Experiment '%s': %v", roRef.Name, err)
} else {
ec.recorder.Eventf(rollout, record.EventOptions{EventType: corev1.EventTypeWarning, EventReason: "AnalysisRun" + string(newStatus.Phase)}, msg)
}
}
}
experimentutil.SetAnalysisRunStatus(ec.newStatus, *newStatus)
}()
@ -523,7 +538,6 @@ func (ec *experimentContext) ResolveAnalysisRunArgs(args []v1alpha1.Argument) ([
}
func (ec *experimentContext) calculateStatus() *v1alpha1.ExperimentStatus {
prevStatus := ec.newStatus.DeepCopy()
switch ec.newStatus.Phase {
case "":
ec.newStatus.Phase = v1alpha1.AnalysisPhasePending
@ -568,14 +582,6 @@ func (ec *experimentContext) calculateStatus() *v1alpha1.ExperimentStatus {
}
}
ec.newStatus = calculateExperimentConditions(ec.ex, *ec.newStatus)
if prevStatus.Phase != ec.newStatus.Phase {
eventType := corev1.EventTypeNormal
switch ec.newStatus.Phase {
case v1alpha1.AnalysisPhaseError, v1alpha1.AnalysisPhaseFailed, v1alpha1.AnalysisPhaseInconclusive:
eventType = corev1.EventTypeWarning
}
ec.recorder.Eventf(ec.ex, record.EventOptions{EventType: eventType, EventReason: "Experiment" + string(ec.newStatus.Phase)}, "Experiment transitioned from %s -> %s", prevStatus.Phase, ec.newStatus.Phase)
}
return ec.newStatus
}
@ -636,7 +642,6 @@ func (ec *experimentContext) assessAnalysisRuns() (v1alpha1.AnalysisPhase, strin
// newAnalysisRun generates an AnalysisRun from the experiment and template
func (ec *experimentContext) newAnalysisRun(analysis v1alpha1.ExperimentAnalysisTemplateRef, args []v1alpha1.Argument, dryRunMetrics []v1alpha1.DryRun, measurementRetentionMetrics []v1alpha1.MeasurementRetention, analysisRunMetadata *v1alpha1.AnalysisRunMetadata) (*v1alpha1.AnalysisRun, error) {
if analysis.ClusterScope {
analysisTemplates, clusterAnalysisTemplates, err := ec.getAnalysisTemplatesFromClusterAnalysis(analysis)
if err != nil {
@ -781,7 +786,6 @@ func (ec *experimentContext) getAnalysisTemplatesFromRefs(templateRefs *[]v1alph
templates = append(templates, innerTemplates...)
}
}
}
uniqueTemplates, uniqueClusterTemplates := analysisutil.FilterUniqueTemplates(templates, clusterTemplates)
return uniqueTemplates, uniqueClusterTemplates, nil

View File

@ -17,7 +17,7 @@ import (
kubeinformers "k8s.io/client-go/informers"
k8sfake "k8s.io/client-go/kubernetes/fake"
kubetesting "k8s.io/client-go/testing"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
"github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake"
@ -129,7 +129,7 @@ func TestAddScaleDownDelayToRS(t *testing.T) {
func TestRemoveScaleDownDelayFromRS(t *testing.T) {
templates := generateTemplates("bar")
e := newExperiment("foo", templates, "")
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
e.Status.AvailableAt = now()
e.Status.Phase = v1alpha1.AnalysisPhaseRunning
cond := conditions.NewExperimentConditions(v1alpha1.ExperimentProgressing, corev1.ConditionTrue, conditions.NewRSAvailableReason, "Experiment \"foo\" is running.")
@ -175,12 +175,10 @@ func TestScaleDownRSAfterFinish(t *testing.T) {
inThePast := timeutil.Now().Add(-10 * time.Second).UTC().Format(time.RFC3339)
rs1.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = inThePast
rs2.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = inThePast
f := newFixture(t, e, rs1, rs2, s1)
defer f.Close()
updateRs1Index := f.expectUpdateReplicaSetAction(rs1)
f.expectDeleteServiceAction(s1)
updateRs2Index := f.expectUpdateReplicaSetAction(rs2)
expPatchIndex := f.expectPatchExperimentAction(e)
@ -195,6 +193,60 @@ func TestScaleDownRSAfterFinish(t *testing.T) {
expPatchObj := f.getPatchedExperimentAsObj(expPatchIndex)
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, expPatchObj.Status.Phase)
rs1.Status.AvailableReplicas = 0
rs2.Status.AvailableReplicas = 0
f = newFixture(t, e, rs1, rs2, s1)
defer f.Close()
f.expectDeleteServiceAction(s1)
}
// TestScaleDownRSAWhenSvcNotDeleted verifies that ScaleDownDelaySeconds annotation is added to ReplicaSet that is to be scaled down and service is not deleted because available replicas are not 0
func TestScaleDownRSWhenSvcNotDeleted(t *testing.T) {
tmpl := generateTemplates("template1", "template2")
tmpl[0].Service = &v1alpha1.TemplateService{}
exp := newExperiment("test-exp", tmpl, "")
replicaSet1 := templateToRS(exp, tmpl[0], 1)
replicaSet2 := templateToRS(exp, tmpl[1], 1)
svc := templateToService(exp, tmpl[0], *replicaSet1)
exp.Status.AvailableAt = now()
exp.Status.Phase = v1alpha1.AnalysisPhaseRunning
exp.Status.TemplateStatuses = []v1alpha1.TemplateStatus{
generateTemplatesStatus("template1", 1, 1, v1alpha1.TemplateStatusSuccessful, now()),
generateTemplatesStatus("template2", 1, 1, v1alpha1.TemplateStatusSuccessful, now()),
}
exp.Spec.Terminate = true
exp.Status.TemplateStatuses[0].ServiceName = svc.Name
condition := conditions.NewExperimentConditions(v1alpha1.ExperimentProgressing, corev1.ConditionTrue, conditions.NewRSAvailableReason, "Experiment \"test-exp\" is running.")
exp.Status.Conditions = append(exp.Status.Conditions, *condition)
pastTime := timeutil.Now().Add(-10 * time.Second).UTC().Format(time.RFC3339)
replicaSet1.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = pastTime
replicaSet2.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = pastTime
replicaSet1.Status.AvailableReplicas = 1
replicaSet2.Status.AvailableReplicas = 1
fixture := newFixture(t, exp, replicaSet1, replicaSet2, svc)
defer fixture.Close()
rs1UpdateIdx := fixture.expectUpdateReplicaSetAction(replicaSet1)
rs2UpdateIdx := fixture.expectUpdateReplicaSetAction(replicaSet2)
expPatchIdx := fixture.expectPatchExperimentAction(exp)
fixture.run(getKey(exp, t))
updatedRS1 := fixture.getUpdatedReplicaSet(rs1UpdateIdx)
assert.NotNil(t, updatedRS1)
assert.Equal(t, int32(0), *updatedRS1.Spec.Replicas)
updatedRS2 := fixture.getUpdatedReplicaSet(rs2UpdateIdx)
assert.NotNil(t, updatedRS2)
assert.Equal(t, int32(0), *updatedRS2.Spec.Replicas)
patchedExp := fixture.getPatchedExperimentAsObj(expPatchIdx)
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, patchedExp.Status.Phase)
}
func TestSetAvailableAt(t *testing.T) {
@ -407,7 +459,7 @@ func TestFailAddScaleDownDelay(t *testing.T) {
templates := generateTemplates("bar")
templates[0].Service = &v1alpha1.TemplateService{}
ex := newExperiment("foo", templates, "")
ex.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
ex.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
ex.Status.TemplateStatuses = []v1alpha1.TemplateStatus{
generateTemplatesStatus("bar", 1, 1, v1alpha1.TemplateStatusFailed, now()),
}
@ -429,12 +481,12 @@ func TestFailAddScaleDownDelay(t *testing.T) {
func TestFailAddScaleDownDelayIsConflict(t *testing.T) {
templates := generateTemplates("bar")
ex := newExperiment("foo", templates, "")
ex.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
ex.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
ex.Status.TemplateStatuses = []v1alpha1.TemplateStatus{
generateTemplatesStatus("bar", 1, 1, v1alpha1.TemplateStatusRunning, now()),
}
rs := templateToRS(ex, templates[0], 1)
rs.Spec.Replicas = pointer.Int32(0)
rs.Spec.Replicas = ptr.To[int32](0)
exCtx := newTestContext(ex, rs)
exCtx.templateRSs["bar"] = rs
@ -485,7 +537,7 @@ func TestDeleteOutdatedService(t *testing.T) {
func TestDeleteServiceIfServiceFieldNil(t *testing.T) {
templates := generateTemplates("bar")
templates[0].Replicas = pointer.Int32Ptr(0)
templates[0].Replicas = ptr.To[int32](0)
ex := newExperiment("foo", templates, "")
ex.Status.TemplateStatuses = []v1alpha1.TemplateStatus{
generateTemplatesStatus("bar", 1, 1, v1alpha1.TemplateStatusRunning, now()),

View File

@ -166,17 +166,21 @@ func newReplicaSetFromTemplate(experiment *v1alpha1.Experiment, template v1alpha
newRSTemplate.Labels = labelsutil.CloneAndAddLabel(newRSTemplate.Labels, v1alpha1.DefaultRolloutUniqueLabelKey, podHash)
// Add podTemplateHash label to selector.
newRSSelector := labelsutil.CloneSelectorAndAddLabel(template.Selector, v1alpha1.DefaultRolloutUniqueLabelKey, podHash)
newRSLabels := map[string]string{}
// enrich with template labels
for k, v := range newRSTemplate.Labels {
newRSLabels[k] = v
}
newRSLabels[v1alpha1.DefaultRolloutUniqueLabelKey] = podHash
// The annotations must be different for each template because annotations are used to match
// replicasets to templates. We inject the experiment and template name in the replicaset
// annotations to ensure uniqueness.
rs := appsv1.ReplicaSet{
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("%s-%s", experiment.Name, template.Name),
Namespace: experiment.Namespace,
Labels: map[string]string{
v1alpha1.DefaultRolloutUniqueLabelKey: podHash,
},
Name: fmt.Sprintf("%s-%s", experiment.Name, template.Name),
Namespace: experiment.Namespace,
Labels: newRSLabels,
OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(experiment, controllerKind)},
Annotations: replicaSetAnnotations,
},

View File

@ -1,12 +1,13 @@
package experiments
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
appsv1 "k8s.io/api/apps/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
"github.com/argoproj/argo-rollouts/utils/conditions"
@ -115,7 +116,7 @@ func TestNameCollision(t *testing.T) {
templateStatuses := []v1alpha1.TemplateStatus{
generateTemplatesStatus("bar", 0, 0, "", nil),
}
templateStatuses[0].CollisionCount = pointer.Int32Ptr(1)
templateStatuses[0].CollisionCount = ptr.To[int32](1)
validatePatch(t, patch, "", NoChange, templateStatuses, nil)
}
{
@ -152,7 +153,7 @@ func TestNameCollisionWithEquivalentPodTemplateAndControllerUID(t *testing.T) {
templateStatuses := []v1alpha1.TemplateStatus{
generateTemplatesStatus("bar", 0, 0, "", nil),
}
templateStatuses[0].CollisionCount = pointer.Int32Ptr(1)
templateStatuses[0].CollisionCount = ptr.To[int32](1)
validatePatch(t, patch, "", NoChange, templateStatuses, nil)
}
{
@ -164,3 +165,35 @@ func TestNameCollisionWithEquivalentPodTemplateAndControllerUID(t *testing.T) {
validatePatch(t, patch, "", NoChange, templateStatuses, cond)
}
}
// TestNewReplicaSetFromTemplate tests the creation of a new ReplicaSet from a given template.
// It verifies that the ReplicaSet is correctly initialized with the expected name, namespace,
// annotations, labels, and container specifications based on the provided experiment and template.
// The test ensures that:
// - The ReplicaSet name is a combination of the experiment name and template name.
// - The ReplicaSet namespace matches the experiment namespace.
// - The ReplicaSet annotations include the experiment name and template name.
// - The ReplicaSet labels include the default rollout unique label key and a specific key from the template.
// - The ReplicaSet selector and template labels include the default rollout unique label key.
// - The ReplicaSet container specifications match those defined in the template.
func TestNewReplicaSetFromTemplate(t *testing.T) {
templates := generateTemplates("bar")
template := templates[0]
experiment := newExperiment("foo", templates, "")
collisionCount := int32(0)
rs := newReplicaSetFromTemplate(experiment, template, &collisionCount)
assert.Equal(t, fmt.Sprintf("%s-%s", experiment.Name, template.Name), rs.Name)
assert.Equal(t, experiment.Namespace, rs.Namespace)
assert.Equal(t, experiment.Name, rs.Annotations[v1alpha1.ExperimentNameAnnotationKey])
assert.NotNil(t, rs.ObjectMeta.Labels[v1alpha1.DefaultRolloutUniqueLabelKey])
assert.NotNil(t, rs.ObjectMeta.Labels["key"])
assert.Equal(t, template.Template.ObjectMeta.Labels["key"], rs.ObjectMeta.Labels["key"])
assert.Equal(t, template.Name, rs.Annotations[v1alpha1.ExperimentTemplateNameAnnotationKey])
assert.NotNil(t, rs.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey])
assert.NotNil(t, rs.Spec.Template.ObjectMeta.Labels[v1alpha1.DefaultRolloutUniqueLabelKey])
assert.Equal(t, template.Template.Labels["key"], rs.Spec.Template.Labels["key"])
assert.Equal(t, template.Template.Spec.Containers[0].Name, rs.Spec.Template.Spec.Containers[0].Name)
assert.Equal(t, template.Template.Spec.Containers[0].Image, rs.Spec.Template.Spec.Containers[0].Image)
}

View File

@ -6,12 +6,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
logutil "github.com/argoproj/argo-rollouts/utils/log"
log "github.com/sirupsen/logrus"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
logutil "github.com/argoproj/argo-rollouts/utils/log"
)
var experimentKind = v1alpha1.SchemeGroupVersion.WithKind("Experiment")

243
go.mod
View File

@ -1,68 +1,67 @@
module github.com/argoproj/argo-rollouts
go 1.21
toolchain go1.21.8
go 1.23.4
require (
github.com/antonmedv/expr v1.15.5
github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954
github.com/argoproj/notifications-engine v0.4.1-0.20240403133627-f48567108f01
github.com/argoproj/pkg v0.13.6
github.com/aws/aws-sdk-go-v2 v1.26.1
github.com/aws/aws-sdk-go-v2/config v1.27.10
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.37.0
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5
github.com/aws/smithy-go v1.20.2
github.com/aws/aws-sdk-go-v2 v1.36.6
github.com/aws/aws-sdk-go-v2/config v1.29.14
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.45.4
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3
github.com/aws/smithy-go v1.22.4
github.com/blang/semver v3.5.1+incompatible
github.com/bombsimon/logrusr/v4 v4.1.0
github.com/evanphx/json-patch/v5 v5.9.0
github.com/evanphx/json-patch/v5 v5.9.11
github.com/gogo/protobuf v1.3.2
github.com/golang/mock v1.6.0
github.com/golang/protobuf v1.5.4
github.com/google/uuid v1.6.0
github.com/grpc-ecosystem/grpc-gateway v1.16.0
github.com/hashicorp/go-plugin v1.6.0
github.com/influxdata/influxdb-client-go/v2 v2.13.0
github.com/hashicorp/go-plugin v1.6.3
github.com/influxdata/influxdb-client-go/v2 v2.14.0
github.com/juju/ansiterm v1.0.0
github.com/machinebox/graphql v0.2.2
github.com/mitchellh/mapstructure v1.5.0
github.com/newrelic/newrelic-client-go v1.1.0
github.com/newrelic/newrelic-client-go/v2 v2.54.0
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.18.0
github.com/prometheus/client_model v0.6.0
github.com/prometheus/client_model v0.6.1
github.com/prometheus/common v0.47.0
github.com/prometheus/common/sigv4 v0.1.0
github.com/servicemeshinterface/smi-sdk-go v0.5.0
github.com/sirupsen/logrus v1.9.3
github.com/soheilhy/cmux v0.1.5
github.com/spaceapegames/go-wavefront v1.8.1
github.com/spf13/cobra v1.8.0
github.com/stretchr/testify v1.9.0
github.com/spf13/cobra v1.9.1
github.com/stretchr/testify v1.10.0
github.com/tj/assert v0.0.3
github.com/valyala/fasttemplate v1.2.2
golang.org/x/oauth2 v0.18.0
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80
google.golang.org/grpc v1.62.1
google.golang.org/protobuf v1.33.0
golang.org/x/oauth2 v0.29.0
golang.org/x/sync v0.16.0
google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422
google.golang.org/grpc v1.71.1
google.golang.org/protobuf v1.36.5
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.29.3
k8s.io/apiextensions-apiserver v0.29.3
k8s.io/apimachinery v0.29.3
k8s.io/apiserver v0.29.3
k8s.io/cli-runtime v0.29.3
k8s.io/client-go v0.29.3
k8s.io/code-generator v0.29.3
k8s.io/component-base v0.29.3
k8s.io/klog/v2 v2.110.1
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00
k8s.io/kubectl v0.29.3
k8s.io/kubernetes v1.29.3
k8s.io/utils v0.0.0-20230726121419-3b25d923346b
k8s.io/api v0.30.14
k8s.io/apiextensions-apiserver v0.30.13
k8s.io/apimachinery v0.30.14
k8s.io/apiserver v0.30.14
k8s.io/cli-runtime v0.30.14
k8s.io/client-go v0.30.14
k8s.io/code-generator v0.30.14
k8s.io/component-base v0.30.14
k8s.io/klog/v2 v2.130.1
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff
k8s.io/kubectl v0.30.13
k8s.io/kubernetes v1.30.14
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
sigs.k8s.io/yaml v1.4.0
)
require (
cloud.google.com/go/compute v1.23.3 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
cloud.google.com/go/compute/metadata v0.6.0 // indirect
github.com/PagerDuty/go-pagerduty v1.7.0 // indirect
github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 // indirect
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect
@ -81,24 +80,24 @@ require (
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220708192748-b73dcb041214 // indirect
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df // indirect
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect
github.com/aws/aws-sdk-go v1.44.116 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.10 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.20.4 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chai2010/gettext-go v1.0.2 // indirect
github.com/chainguard-dev/git-urls v1.0.2 // indirect
github.com/cloudflare/circl v1.3.3 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
@ -107,29 +106,28 @@ require (
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
github.com/fatih/color v1.7.0 // indirect
github.com/felixge/httpsnoop v1.0.3 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect
github.com/go-errors/errors v1.4.2 // indirect
github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.22.3 // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
github.com/golang/glog v1.2.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
github.com/golang/glog v1.2.4 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/google/btree v1.1.2 // indirect
github.com/google/cel-go v0.17.7 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/cel-go v0.17.8 // indirect
github.com/google/gnostic-models v0.6.9 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/go-github/v53 v53.0.0 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
@ -138,11 +136,11 @@ require (
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-hclog v0.14.1 // indirect
github.com/hashicorp/go-retryablehttp v0.7.1 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
github.com/hashicorp/yamux v0.1.1 // indirect
github.com/huandu/xstrings v1.3.3 // indirect
github.com/imdario/mergo v0.3.13 // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
@ -153,9 +151,8 @@ require (
github.com/lunixbochs/vtclean v1.0.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-testing-interface v1.0.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/moby/spdystream v0.2.0 // indirect
@ -176,93 +173,99 @@ require (
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/shopspring/decimal v1.2.0 // indirect
github.com/slack-go/slack v0.12.2 // indirect
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/spf13/pflag v1.0.6 // indirect
github.com/stoewer/go-strcase v1.2.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fastjson v1.6.3 // indirect
github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 // indirect
github.com/valyala/fastjson v1.6.4 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
go.etcd.io/etcd/api/v3 v3.5.10 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
go.etcd.io/etcd/client/v3 v3.5.10 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 // indirect
go.opentelemetry.io/otel v1.19.0 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect
go.opentelemetry.io/otel v1.34.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect
go.opentelemetry.io/otel/metric v1.19.0 // indirect
go.opentelemetry.io/otel/sdk v1.19.0 // indirect
go.opentelemetry.io/otel/trace v1.19.0 // indirect
go.opentelemetry.io/otel/metric v1.34.0 // indirect
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
go.opentelemetry.io/otel/trace v1.34.0 // indirect
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.19.0 // indirect
golang.org/x/crypto v0.21.0 // indirect
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
golang.org/x/mod v0.14.0 // indirect
golang.org/x/net v0.22.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/term v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.16.1 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/crypto v0.32.0 // indirect
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 // indirect
golang.org/x/mod v0.20.0 // indirect
golang.org/x/net v0.34.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/term v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.24.0 // indirect
gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect
gomodules.xyz/notify v0.1.1 // indirect
google.golang.org/api v0.149.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/api v0.162.0 // indirect
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/cloud-provider v0.0.0 // indirect
k8s.io/cloud-provider v0.30.13 // indirect
k8s.io/cluster-bootstrap v0.25.8 // indirect
k8s.io/component-helpers v0.29.3 // indirect
k8s.io/controller-manager v0.29.3 // indirect
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect
k8s.io/kms v0.29.3 // indirect
k8s.io/component-helpers v0.30.14 // indirect
k8s.io/controller-manager v0.30.14 // indirect
k8s.io/gengo/v2 v2.0.0-20240826214909-a7b603a56eb7 // indirect
k8s.io/kms v0.30.14 // indirect
k8s.io/kubelet v0.0.0 // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect
sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
)
replace (
github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127
github.com/go-telegram-bot-api/telegram-bot-api/v5 => github.com/OvyFlash/telegram-bot-api/v5 v5.0.0-20240108230938-63e5c59035bf
k8s.io/api v0.0.0 => k8s.io/api v0.29.3
k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.29.3
k8s.io/apimachinery v0.0.0 => k8s.io/apimachinery v0.29.3
k8s.io/apiserver v0.0.0 => k8s.io/apiserver v0.29.3
k8s.io/cli-runtime v0.0.0 => k8s.io/cli-runtime v0.29.3
k8s.io/client-go v0.0.0 => k8s.io/client-go v0.29.3
k8s.io/cloud-provider v0.0.0 => k8s.io/cloud-provider v0.29.3
k8s.io/cluster-bootstrap v0.0.0 => k8s.io/cluster-bootstrap v0.29.3
k8s.io/code-generator v0.0.0 => k8s.io/code-generator v0.29.3
k8s.io/component-base v0.0.0 => k8s.io/component-base v0.29.3
k8s.io/component-helpers v0.0.0 => k8s.io/component-helpers v0.29.3
k8s.io/controller-manager v0.0.0 => k8s.io/controller-manager v0.29.3
k8s.io/cri-api v0.0.0 => k8s.io/cri-api v0.29.3
k8s.io/csi-translation-lib v0.0.0 => k8s.io/csi-translation-lib v0.29.3
k8s.io/kube-aggregator v0.0.0 => k8s.io/kube-aggregator v0.29.3
k8s.io/kube-controller-manager v0.0.0 => k8s.io/kube-controller-manager v0.29.3
k8s.io/kube-proxy v0.0.0 => k8s.io/kube-proxy v0.29.3
k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.29.3
k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.29.3
k8s.io/kubelet v0.0.0 => k8s.io/kubelet v0.29.3
k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.29.3
k8s.io/metrics v0.0.0 => k8s.io/metrics v0.29.3
k8s.io/mount-utils v0.0.0 => k8s.io/mount-utils v0.29.3
k8s.io/pod-security-admission v0.0.0 => k8s.io/pod-security-admission v0.29.3
k8s.io/sample-apiserver v0.0.0 => k8s.io/sample-apiserver v0.29.3
k8s.io/api => k8s.io/api v0.30.14
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.30.14
k8s.io/apimachinery => k8s.io/apimachinery v0.30.14
k8s.io/apiserver => k8s.io/apiserver v0.30.14
k8s.io/cli-runtime => k8s.io/cli-runtime v0.30.14
k8s.io/client-go => k8s.io/client-go v0.30.14
k8s.io/cloud-provider => k8s.io/cloud-provider v0.30.14
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.30.14
k8s.io/code-generator => k8s.io/code-generator v0.30.14
k8s.io/component-base => k8s.io/component-base v0.30.14
k8s.io/component-helpers => k8s.io/component-helpers v0.30.14
k8s.io/controller-manager => k8s.io/controller-manager v0.30.14
k8s.io/cri-api => k8s.io/cri-api v0.30.14
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.30.14
k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.30.14
k8s.io/endpointslice => k8s.io/endpointslice v0.30.14
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.30.14
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.30.14
k8s.io/kube-proxy => k8s.io/kube-proxy v0.30.14
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.30.14
k8s.io/kubectl => k8s.io/kubectl v0.30.14
k8s.io/kubelet => k8s.io/kubelet v0.30.14
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.30.14
k8s.io/metrics => k8s.io/metrics v0.30.14
k8s.io/mount-utils => k8s.io/mount-utils v0.30.14
k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.14
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.14
)
replace k8s.io/kms => k8s.io/kms v0.30.14
replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.30.14
replace k8s.io/sample-controller => k8s.io/sample-controller v0.30.14

Some files were not shown because too many files have changed in this diff Show More