Skip to content

Commit 1b6fc64

Browse files
Merge pull request #18 from codefresh-io/CR-7557-sync-v1.1.0
Cr 7557 sync v1.1.0
2 parents 41ae2ed + 9cbc6eb commit 1b6fc64

File tree

257 files changed

+25203
-7242
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

257 files changed

+25203
-7242
lines changed

.github/workflows/docker-publish.yml

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Docker
33
on:
44
push:
55
branches:
6-
- master
6+
# - master # commented due to Codefresh convention
77
- release-*
88

99
# Run tests for any PRs.
@@ -37,31 +37,33 @@ jobs:
3737
with:
3838
images: |
3939
quay.io/codefresh/argo-rollouts
40-
ghcr.io/codefresh-io/argo-rollouts
40+
# ghcr.io/codefresh-io/argo-rollouts
4141
tags: |
4242
type=ref,event=branch
43-
flavor: |
44-
latest=${{ github.ref == 'refs/heads/master' }}
43+
# commented due to Codefresh convention
44+
# flavor: |
45+
# latest=${{ github.ref == 'refs/heads/master' }}
4546

4647
- name: Docker meta (plugin)
4748
id: plugin-meta
4849
uses: docker/metadata-action@v3
4950
with:
5051
images: |
5152
quay.io/codefresh/kubectl-argo-rollouts
52-
ghcr.io/codefresh-io/kubectl-argo-rollouts
53+
# ghcr.io/codefresh-io/kubectl-argo-rollouts
5354
tags: |
5455
type=ref,event=branch
55-
flavor: |
56-
latest=${{ github.ref == 'refs/heads/master' }}
56+
# commented due to Codefresh convention
57+
# flavor: |
58+
# latest=${{ github.ref == 'refs/heads/master' }}
5759

58-
- name: Login to GitHub Container Registry
59-
if: github.event_name != 'pull_request'
60-
uses: docker/login-action@v1
61-
with:
62-
registry: ghcr.io
63-
username: ${{ github.repository_owner }}
64-
password: ${{ secrets.GITHUB_TOKEN }}
60+
# - name: Login to GitHub Container Registry
61+
# if: github.event_name != 'pull_request'
62+
# uses: docker/login-action@v1
63+
# with:
64+
# registry: ghcr.io
65+
# username: ${{ github.repository_owner }}
66+
# password: ${{ secrets.GITHUB_TOKEN }}
6567

6668
- name: Login to Quay.io
6769
if: github.event_name != 'pull_request'

.github/workflows/e2e.yaml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@ name: E2E Tests
33
on:
44
push:
55
branches:
6-
- 'master'
6+
# - 'master' # commented due to Codefresh convention
77
- 'release-*'
88
pull_request:
99
branches:
10-
- 'master'
10+
# - 'master' # commented due to Codefresh convention
1111
- 'release-*'
12+
workflow_dispatch:
13+
inputs:
14+
debug_enabled:
15+
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
16+
required: false
17+
default: false
18+
1219
jobs:
1320
test-e2e:
1421
name: Run end-to-end tests
@@ -35,6 +42,16 @@ jobs:
3542
kubectl apply -k manifests/crds
3643
kubectl apply -f test/e2e/crds
3744
- name: Start controller
38-
run: make start-e2e &
45+
run: make start-e2e 2>&1 | sed -r "s/[[:cntrl:]]\[[0-9]{1,3}m//g" > /tmp/e2e-controller.log &
46+
- name: Setup tmate session
47+
uses: mxschmitt/action-tmate@v3
48+
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled}}
3949
- name: Run e2e tests
4050
run: make test-e2e
51+
if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled) }}
52+
- name: Upload e2e-controller logs
53+
uses: actions/upload-artifact@v2
54+
with:
55+
name: e2e-controller-k8s.log
56+
path: /tmp/e2e-controller.log
57+
if: ${{ failure() }}

.github/workflows/gh-pages.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- name: build
2121
run: |
2222
pip install mkdocs mkdocs_material
23-
make plugin-docs
23+
make docs
2424
mkdocs build
2525
- name: Deploy
2626
uses: peaceiris/actions-gh-pages@v3

.github/workflows/go.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ name: Go
22
on:
33
push:
44
branches:
5-
- "master"
6-
- "release-*"
5+
# - "master"
6+
- "release-*" # Codefresh convention
77
pull_request:
88
branches:
9-
- "master"
9+
# - "master"
10+
- "release-*" # Codefresh convention
1011
jobs:
1112
lint-go:
1213
name: Lint Go code
@@ -55,7 +56,7 @@ jobs:
5556
path: coverage.out
5657

5758
- name: Upload code coverage information to codecov.io
58-
uses: codecov/codecov-action@v1
59+
uses: codecov/codecov-action@v2.0.3
5960
with:
6061
file: coverage.out
6162

@@ -133,6 +134,7 @@ jobs:
133134
run: |
134135
make codegen
135136
make manifests
137+
make docs
136138
137139
- name: Ensure nothing changed
138140
run: git diff --exit-code

.github/workflows/release.yaml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
with:
4545
images: |
4646
quay.io/codefresh/argo-rollouts
47-
ghcr.io/codefresh-io/argo-rollouts
47+
# ghcr.io/codefresh-io/argo-rollouts
4848
tags: |
4949
type=semver,pattern={{version}},prefix=v,value=${{ github.event.inputs.tag }}
5050
flavor: |
@@ -56,19 +56,19 @@ jobs:
5656
with:
5757
images: |
5858
quay.io/codefresh/kubectl-argo-rollouts
59-
ghcr.io/codefresh-io/kubectl-argo-rollouts
59+
# ghcr.io/codefresh-io/kubectl-argo-rollouts
6060
tags: |
6161
type=semver,pattern={{version}},prefix=v,value=${{ github.event.inputs.tag }}
6262
flavor: |
6363
latest=false
6464
65-
- name: Login to GitHub Container Registry
66-
if: github.event_name != 'pull_request'
67-
uses: docker/login-action@v1
68-
with:
69-
registry: ghcr.io
70-
username: ${{ github.repository_owner }}
71-
password: ${{ secrets.GITHUB_TOKEN }}
65+
# - name: Login to GitHub Container Registry
66+
# if: github.event_name != 'pull_request'
67+
# uses: docker/login-action@v1
68+
# with:
69+
# registry: ghcr.io
70+
# username: ${{ github.repository_owner }}
71+
# password: ${{ secrets.GITHUB_TOKEN }}
7272

7373
- name: Login to Quay.io
7474
if: github.event_name != 'pull_request'
@@ -129,7 +129,10 @@ jobs:
129129
files: |
130130
dist/kubectl-argo-rollouts-linux-amd64
131131
dist/kubectl-argo-rollouts-darwin-amd64
132+
dist/kubectl-argo-rollouts-windows-amd64
132133
manifests/install.yaml
133134
manifests/namespace-install.yaml
135+
manifests/notifications-install.yaml
136+
docs/features/kustomize/rollout_cr_schema.json
134137
env:
135138
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
dist/
55
*.iml
66
# delve debug binaries
7+
__debug_bin
78
cmd/**/debug
89
debug.test
910
coverage.out

CHANGELOG.md

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,159 @@
11
# Changelog
22

3+
# v1.1.0
4+
5+
## Notable Features
6+
* Rollout Notifications
7+
* Dynamic scaling of stable ReplicaSet (dynamicStableScale)
8+
* Automated rollbacks without analysis (progressDeadlineAbort)
9+
* Kustomize Open API Schema
10+
* Rollout Dashboard as a Service
11+
* Controlling Scaledown Behavior During Aborts (abortScaleDownDelaySeconds)
12+
* Analysis: AWS CloudWatch Metric Provider
13+
* AWS TargetGroup IP Verification
14+
* Weighted Experiment Canary Steps
15+
* Istio: Multicluster Support
16+
* Istio: TLS Route Support
17+
* Istio: Multiple VirtualServices
18+
* AnalysisRun GC
19+
* Analysis: Graphite Metric Provider
20+
21+
## Changes since v1.0
22+
23+
### Controller
24+
* feat: support dynamic scaling of stable ReplicaSet as inverse of canary weight (#1430)
25+
* fix: promote nil pointer error when there are no steps (#1510)
26+
* feat: support management of multiple Istio VirtualService objects (#1381)
27+
* feat: verify AWS TargetGroup after updating active/stable services (#1348)
28+
* feat: ALB TrafficRouting with experiment step
29+
* feat: TrafficRouting SMI with Experiment Step in Canary (#1351)
30+
* feat: ability to abort an update when exceeding progressDeadlineSeconds (#1397)
31+
* feat: add support for Istio VirtualService spec.tls[] (#1380)
32+
* feat: configurable and more aggressive cleanup of old AnalysisRuns and Experiments (#1342)
33+
* feat: ability to auto-create Services for each template in an Experiment (#1158)
34+
* feat: introduce abortScaleDownDelaySeconds to control scale down of preview/canary upon abort (#1160)
35+
* feat: argo rollout compatibility with emissary and edge stack v2.0 (#1330)
36+
* feat: Add support for Istio multicluster (#1274)
37+
* feat: add workload-ref/generation to rollout (#1198)
38+
* feat: support notifications on rollout events using notifications-engine (#1175)
39+
* chore: add liveness and readiness probe to the install manifests (#1324)
40+
* fix: Nginx ingressClassName passed to canary ingress (#1448)
41+
* fix: canary scaledown event could violate maxUnavailable (#1429)
42+
* fix: analysis runs to wait for all metrics to complete (#1407)
43+
* fix: Promote full did not work against BlueGreen with previewReplicaCount (#1384)
44+
* fix: retarget blue-green previewService before scaling up preview ReplicaSet (#1368)
45+
* fix: zero-value abortScaleDownDelay was not honored with setCanaryScale (#1375)
46+
* fix: abort scaledown stable RS for canary with traffic routing (#1331)
47+
48+
### Analysis
49+
* feat: add support for Graphite metrics provider (#1406)
50+
* feat: Support CloudWatch as a metric provider (#1338)
51+
* fix: Analysis argument validation (#1412)
52+
53+
### Plugin
54+
* feat: create windows version for CLI (#1517)
55+
* feat: provide shell completion. Closes #619 (#1478)
56+
* fix: create analysisrun cmd using template generated name (#1471)
57+
* fix: nil pointer in create analysisrun cmd (#1399)
58+
* fix: lint subcommand for workload ref rollout (#1328)
59+
* fix: undo referenced object for workloadRef rollout (#1275)
60+
61+
### Dashboard
62+
* feat: allow selection of namespace in rollout dashboard (#1291)
63+
* fix(ui): UI crashes on rollout view due to undefined status (#1287)
64+
65+
### Misc
66+
* feat: kustomize rollout: add openapi to doc and examples (#1371)
67+
* feat: add rollout stat row to grafana dashboard (#1343)
68+
69+
## Upgrade Notes
70+
### Difference in scale down behavior during aborts
71+
72+
The v1.1 `abortScaleDownDelaySeconds` feature now allows users full control over the scaling
73+
behavior of the canary/preview ReplicaSet during an abort. Previously in v1.0, it was not possible
74+
to affect this behavior. As part of this feature, v1.1 also fixes some inconsistencies in behavior
75+
with respect to abort scale down.
76+
77+
The most notable change is that upon an abort, the blue-green preview ReplicaSet in v1.1 will now
78+
scale down 30 seconds after the abort, whereas in v1.0 the preview ReplicaSet was left running
79+
indefinitely (without any option to scale it down). If you prefer the v1.0 behavior, you can set
80+
`abortScaleDownDelaySeconds: 0`, which will leave the preview ReplicaSet running indefinitely
81+
on abort:
82+
83+
```yaml
84+
spec:
85+
strategy:
86+
blueGreen:
87+
abortScaleDownDelaySeconds: 0
88+
```
89+
90+
Please read the full
91+
[documentation](https://argoproj.github.io/argo-rollouts/features/scaledown-aborted-rs/) to understand
92+
the differences in canary/preview scaling behavior for aborted Rollouts from v1.0 to v1.1.
93+
94+
# v1.0.6
95+
## Changes since v1.0.4
96+
97+
### Bug Fixes
98+
99+
- fix: replica count for new deployment (#1449)
100+
- fix: Nginx ingressClassName passed to canary ingress (#1448)
101+
- fix: Analysis argument validation (#1412)
102+
- fix: retarget blue-green previewService before scaling up preview ReplicaSet (#1368)
103+
- fix: analysis runs to wait for all metrics to complete (#1407)
104+
- fix: canary scaledown event could violate maxUnavailable (#1429)
105+
- chore: release workflow docker build context should use local path and not git context (#1388)
106+
- chore: github release action was using incorect docker cache (#1387)
107+
108+
# v1.0.4
109+
## Changes since v1.0.3
110+
111+
### Controller
112+
* fix: Promote full did not work against BlueGreen with previewReplicaCount
113+
114+
# v1.0.3
115+
116+
## Changes since v1.0.2
117+
118+
### Controller
119+
120+
* fix: nil pointer dereference when reconciling paused blue-green rollout (#1378)
121+
* fix: Abort rollout doesn't remove all canary pods for setCanaryScale (#1352)
122+
* fix: unsolicited rollout after upgrade from v0.10->v1.0 when pod was using service account (#1367)
123+
* fix: default replica before resolving workloadRef (#1304)
124+
125+
# v1.0.2
126+
127+
## Changes since v1.0.1
128+
129+
### Controller
130+
131+
* feat: allow VirtualService HTTPRoute to be inferred if there is single route (#1273)
132+
* fix: rollout paused longer than progressDeadlineSeconds would briefly degrade (#1268)
133+
* fix: controller would drop fields when updating DestinationRules (#1253)
134+
* fix: the wrong panel title on the sample dashboard (#1260)
135+
* fix: analysis with multiple metrics (#1261)
136+
* fix: Mitigate the bug where items are re-added constantly to the workqueue. #1193 (#1243)
137+
* fix: workload rollout spec is invalid template is not empty (#1224)
138+
* fix: Fix error check in validation for AnalysisTemplates not found (#1249)
139+
* fix: make function call consistent with otherRSs definition (#1171)
140+
141+
### Plugin
142+
143+
* fix: avoid using root user in plugin container (#1256)
144+
145+
146+
# v1.0.1
147+
148+
## Changes since v1.0.0
149+
150+
### Controller
151+
152+
* feat: WebMetric to support string body responses (#1212)
153+
* fix: Modify validation to check Analysis args passed through RO spec (#1215)
154+
* fix: AnalysisRun args could not be resolved from secret (#1213)
155+
156+
3157
# v1.0.0
4158
5159
## Notable Features

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ RUN touch ui/dist/node_modules.marker && \
6363
touch ui/dist/app/index.html && \
6464
find ui/dist
6565

66-
ARG MAKE_TARGET="controller plugin-linux plugin-darwin"
66+
ARG MAKE_TARGET="controller plugin-linux plugin-darwin plugin-windows"
6767
RUN make ${MAKE_TARGET}
6868

6969
####################################################################################################

Dockerfile.dev

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
####################################################################################################
22
# argo-rollouts-dev
33
####################################################################################################
4-
FROM scratch
5-
COPY dist/rollouts-controller-linux-amd64 /bin/rollouts-controller
4+
FROM golang:1.16.3 as builder
5+
6+
RUN apt-get update && apt-get install -y \
7+
ca-certificates && \
8+
apt-get clean && \
9+
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
10+
11+
FROM scratch
12+
13+
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
14+
COPY rollouts-controller-linux-amd64 /bin/rollouts-controller
15+
16+
# Use numeric user, allows kubernetes to identify this user as being
17+
# non-root when we use a security context with runAsNonRoot: true
18+
USER 999
19+
620
ENTRYPOINT [ "/bin/rollouts-controller" ]

0 commit comments

Comments
 (0)