@@ -8,13 +8,11 @@ name: Release
8
8
# - docker hub
9
9
# - devenv ECR
10
10
# - Cloudsmith
11
- concurrency :
12
- group : ${{ github.workflow }}-${{ github.ref }}
13
- cancel-in-progress : ${{ github.event_name == 'pull_request' }}
11
+
12
+ # concurrency:
13
+ # group: ${{ github.workflow }}-${{ github.ref }}
14
+ # cancel-in-progress: ${{ github.event_name == 'pull_request' }}
14
15
on :
15
- # Trigger release every monday at midnight for master CI images
16
- schedule :
17
- - cron : " 0 0 * * 1"
18
16
pull_request :
19
17
push :
20
18
branches :
24
22
- ' v*'
25
23
env :
26
24
GOPRIVATE : github.com/TykTechnologies
27
- VARIATION : inverted
25
+ VARIATION : prod-variation
28
26
DOCKER_BUILD_SUMMARY : false
29
27
DOCKER_BUILD_RECORD_UPLOAD : false
30
28
# startsWith covers pull_request_target too
49
47
rpmvers : ' el/7 el/8 el/9 amazon/2 amazon/2023'
50
48
debvers : ' ubuntu/xenial ubuntu/bionic ubuntu/focal ubuntu/jammy debian/jessie debian/buster debian/bullseye debian/bookworm'
51
49
outputs :
52
- tags : ${{ steps.ci_metadata_ee .outputs.tags }}
50
+ tags : ${{ steps.ci_metadata .outputs.tags }}
53
51
commit_author : ${{ steps.set_outputs.outputs.commit_author}}
54
52
steps :
55
53
- name : Checkout of tyk
@@ -130,12 +128,13 @@ jobs:
130
128
if : ${{ matrix.golang_cross == '1.22-bullseye' }}
131
129
with :
132
130
mask-password : ' true'
133
- - name : Docker metadata for CI
134
- id : ci_metadata_
131
+ - name : Docker metadata for ee CI
132
+ id : ci_metadata_ee
135
133
if : ${{ matrix.golang_cross == '1.22-bullseye' }}
136
134
uses : docker/metadata-action@v5
137
135
with :
138
- images : ${{ steps.ecr.outputs.registry }}/tyk
136
+ images : |
137
+ ${{ steps.ecr.outputs.registry }}/tyk-ee
139
138
flavor : |
140
139
latest=false
141
140
tags : |
@@ -145,112 +144,128 @@ jobs:
145
144
type=semver,pattern={{major}},prefix=v
146
145
type=semver,pattern={{major}}.{{minor}},prefix=v
147
146
type=semver,pattern={{version}},prefix=v
148
- - name : push image to CI
147
+ - name : push ee image to CI
149
148
if : ${{ matrix.golang_cross == '1.22-bullseye' }}
150
149
uses : docker/build-push-action@v6
151
150
with :
152
151
context : " dist"
153
- platforms : linux/amd64,linux/arm64
152
+ platforms : linux/amd64,linux/arm64,linux/s390x
154
153
file : ci/Dockerfile.distroless
155
154
provenance : mode=max
156
155
sbom : true
157
156
push : true
158
157
cache-from : type=gha
159
158
cache-to : type=gha,mode=max
160
- tags : ${{ steps.ci_metadata_ .outputs.tags }}
161
- labels : ${{ steps.tag_metadata .outputs.labels }}
159
+ tags : ${{ steps.ci_metadata_ee .outputs.tags }}
160
+ labels : ${{ steps.ci_metadata_ee .outputs.labels }}
162
161
build-args : |
163
- EDITION=
164
- - name : Docker metadata for CI ee
165
- id : ci_metadata_ee
166
- if : ${{ matrix.golang_cross == '1.22-bullseye' }}
162
+ BUILD_PACKAGE_NAME=tyk-gateway-ee
163
+ - name : Docker metadata for tag push
164
+ id : tag_metadata_ee
167
165
uses : docker/metadata-action@v5
168
166
with :
169
- images : ${{ steps.ecr.outputs.registry }}/tyk-ee
167
+ images : |
168
+ docker.tyk.io/tyk-gateway/tyk-gateway
169
+
170
+ tykio/tyk-gateway
171
+
172
+ tykio/tyk-gateway-ee
170
173
flavor : |
171
174
latest=false
175
+ prefix=v
172
176
tags : |
173
- type=ref,event=branch
174
- type=ref,event=pr
175
- type=sha,format=long
176
- type=semver,pattern={{major}},prefix=v
177
- type=semver,pattern={{major}}.{{minor}},prefix=v
178
- type=semver,pattern={{version}},prefix=v
179
- - name : push image to CI ee
177
+ type=semver,pattern={{major}}.{{minor}}
178
+ type=semver,pattern={{version}}
179
+ labels : |
180
+ org.opencontainers.image.title=Tyk Gateway Enterprise Edition
181
+ org.opencontainers.image.description=Tyk API Gateway Enterprise Edition written in Go, supporting REST, GraphQL, TCP and gRPC protocols
182
+ org.opencontainers.image.vendor=tyk.io
183
+ org.opencontainers.image.version=${{ github.ref_name }}
184
+ - name : push ee image to prod
180
185
if : ${{ matrix.golang_cross == '1.22-bullseye' }}
181
186
uses : docker/build-push-action@v6
182
187
with :
183
188
context : " dist"
184
- platforms : linux/amd64,linux/arm64
189
+ platforms : linux/amd64,linux/arm64,linux/s390x
185
190
file : ci/Dockerfile.distroless
186
191
provenance : mode=max
187
192
sbom : true
188
- push : true
189
193
cache-from : type=gha
190
194
cache-to : type=gha,mode=max
191
- tags : ${{ steps.ci_metadata_ee.outputs.tags }}
192
- labels : ${{ steps.tag_metadata.outputs.labels }}
195
+ push : ${{ startsWith(github.ref, 'refs/tags') }}
196
+ tags : ${{ steps.tag_metadata_ee.outputs.tags }}
197
+ labels : ${{ steps.tag_metadata_ee.outputs.labels }}
193
198
build-args : |
194
- EDITION=-ee
195
- - name : Docker metadata for tag push
196
- id : tag_metadata_
199
+ BUILD_PACKAGE_NAME=tyk-gateway-ee
200
+ - name : Docker metadata for std CI
201
+ id : ci_metadata_std
202
+ if : ${{ matrix.golang_cross == '1.22-bullseye' }}
197
203
uses : docker/metadata-action@v5
198
204
with :
199
205
images : |
200
- tykio/tyk-gateway
201
- docker.tyk.io/tyk-gateway/tyk-gateway
206
+ ${{ steps.ecr.outputs.registry }}/tyk
202
207
flavor : |
203
208
latest=false
204
- prefix=v
205
209
tags : |
206
- type=semver,pattern={{major}}.{{minor}}
207
- type=semver,pattern={{version}}
208
- labels : " org.opencontainers.image.title=tyk-gateway (distroless) \n org.opencontainers.image.description=Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols\n org.opencontainers.image.vendor=tyk.io\n org.opencontainers.image.version=${{ github.ref_name }}\n "
209
- - name : push image to prod
210
+ type=ref,event=branch
211
+ type=ref,event=pr
212
+ type=sha,format=long
213
+ type=semver,pattern={{major}},prefix=v
214
+ type=semver,pattern={{major}}.{{minor}},prefix=v
215
+ type=semver,pattern={{version}},prefix=v
216
+ - name : push std image to CI
210
217
if : ${{ matrix.golang_cross == '1.22-bullseye' }}
211
218
uses : docker/build-push-action@v6
212
219
with :
213
220
context : " dist"
214
- platforms : linux/amd64,linux/arm64
221
+ platforms : linux/amd64,linux/arm64,linux/s390x
215
222
file : ci/Dockerfile.distroless
216
223
provenance : mode=max
217
224
sbom : true
225
+ push : true
218
226
cache-from : type=gha
219
227
cache-to : type=gha,mode=max
220
- push : ${{ startsWith(github.ref, 'refs/tags') }}
221
- tags : ${{ steps.tag_metadata_.outputs.tags }}
222
- labels : ${{ steps.tag_metadata_.outputs.labels }}
228
+ tags : ${{ steps.ci_metadata_std.outputs.tags }}
229
+ labels : ${{ steps.ci_metadata_std.outputs.labels }}
223
230
build-args : |
224
- EDITION=
225
- - name : Docker metadata for tag push ee
226
- id : tag_metadata_ee
231
+ BUILD_PACKAGE_NAME=tyk-gateway
232
+ - name : Docker metadata for tag push
233
+ id : tag_metadata_std
227
234
uses : docker/metadata-action@v5
228
235
with :
229
236
images : |
237
+ docker.tyk.io/tyk-gateway/tyk-gateway
238
+
239
+ tykio/tyk-gateway
240
+
230
241
tykio/tyk-gateway-ee
231
242
flavor : |
232
243
latest=false
233
244
prefix=v
234
245
tags : |
235
246
type=semver,pattern={{major}}.{{minor}}
236
247
type=semver,pattern={{version}}
237
- labels : " org.opencontainers.image.title=tyk-gateway Enterprise Edition (distroless) \n org.opencontainers.image.description=Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols\n org.opencontainers.image.vendor=tyk.io\n org.opencontainers.image.version=${{ github.ref_name }}\n "
238
- - name : push image to prod ee
248
+ labels : |
249
+ org.opencontainers.image.title=Tyk Gateway
250
+ org.opencontainers.image.description=Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols
251
+ org.opencontainers.image.vendor=tyk.io
252
+ org.opencontainers.image.version=${{ github.ref_name }}
253
+ - name : push std image to prod
239
254
if : ${{ matrix.golang_cross == '1.22-bullseye' }}
240
255
uses : docker/build-push-action@v6
241
256
with :
242
257
context : " dist"
243
- platforms : linux/amd64,linux/arm64
258
+ platforms : linux/amd64,linux/arm64,linux/s390x
244
259
file : ci/Dockerfile.distroless
245
260
provenance : mode=max
246
261
sbom : true
247
262
cache-from : type=gha
248
263
cache-to : type=gha,mode=max
249
264
push : ${{ startsWith(github.ref, 'refs/tags') }}
250
- tags : ${{ steps.tag_metadata_ee .outputs.tags }}
251
- labels : ${{ steps.tag_metadata_ee .outputs.labels }}
265
+ tags : ${{ steps.tag_metadata_std .outputs.tags }}
266
+ labels : ${{ steps.tag_metadata_std .outputs.labels }}
252
267
build-args : |
253
- EDITION=-ee
268
+ BUILD_PACKAGE_NAME=tyk-gateway
254
269
- name : save deb
255
270
uses : actions/upload-artifact@v4
256
271
if : ${{ matrix.golang_cross == '1.22-bullseye' }}
@@ -351,6 +366,7 @@ jobs:
351
366
set -eaxo pipefail
352
367
docker run -q --rm -v ~/.docker/config.json:/root/.docker/config.json tykio/gromit policy match ${tags[0]} ${match_tag} 2>versions.env
353
368
echo '# alfa and beta have to come after the override
369
+
354
370
tyk_alfa_image=$tyk_image
355
371
tyk_beta_image=$tyk_image
356
372
ECR=${{steps.ecr.outputs.registry}}
@@ -374,9 +390,37 @@ jobs:
374
390
repository : TykTechnologies/tyk-analytics
375
391
path : tyk-analytics
376
392
token : ${{ secrets.ORG_GH_TOKEN }}
377
- fetch-depth : 1
378
- ref : ${{ env.BASE_REF }}
393
+ fetch-depth : 0
379
394
sparse-checkout : tests/api
395
+ - name : Choosing test code branch
396
+ working-directory : tyk-analytics/tests/api
397
+ run : |
398
+ if [[ ${{ github.event_name }} == "release" ]]; then
399
+ echo "Checking out release tag..."
400
+ TAG_NAME=${{ github.event.release.tag_name }}
401
+ git checkout "$TAG_NAME"
402
+ fi
403
+ if [[ ${{ github.event_name }} == "pull_request" ]]; then
404
+ PR_BRANCH=${{ github.event.pull_request.head.ref }}
405
+ TARGET_BRANCH=${{ github.event.pull_request.base.ref }}
406
+ echo "Looking for PR_BRANCH:$PR_BRANCH or TARGET_BRANCH:$TARGET_BRANCH..."
407
+ if git rev-parse --verify "origin/$PR_BRANCH" >/dev/null 2>&1; then
408
+ echo "PR branch $PR_BRANCH exists. Checking out..."
409
+ git checkout "$PR_BRANCH"
410
+ elif git rev-parse --verify "origin/$TARGET_BRANCH" >/dev/null 2>&1; then
411
+ echo "Target branch $TARGET_BRANCH exists. Checking out..."
412
+ git checkout "$TARGET_BRANCH"
413
+ fi
414
+ fi
415
+ if [[ ${{ github.event_name }} == "push" ]]; then
416
+ PUSH_BRANCH=${{ github.ref_name }}
417
+ echo "Looking for PUSH_BRANCH:$PUSH_BRANCH..."
418
+ if git rev-parse --verify "origin/$PUSH_BRANCH" >/dev/null 2>&1; then
419
+ echo "Push branch $PUSH_BRANCH exists. Checking out..."
420
+ git checkout "$PUSH_BRANCH"
421
+ fi
422
+ fi
423
+ echo "Current commit: $(git rev-parse HEAD)"
380
424
- uses : actions/setup-python@v5
381
425
with :
382
426
cache : ' pip'
@@ -405,20 +449,6 @@ jobs:
405
449
USER_API_SECRET=${{ steps.env_up.outputs.USER_API_SECRET }}
406
450
EOF
407
451
env $(cat pytest.env | xargs) $pytest -m "${{ matrix.envfiles.apimarkers }}"
408
- - name : Upload Playwright Test Report to S3
409
- if : failure() && steps.test_execution.outcome != 'success' && steps.env_up.outcome == 'success'
410
- run : npm run upload_report_to_s3
411
- env :
412
- AWS_ACCESS_KEY_ID : ${{ secrets.UI_AWS_ACCESS_KEY_ID }}
413
- AWS_SECRET_ACCESS_KEY : ${{ secrets.UI_AWS_SECRET_ACCESS_KEY }}
414
- RUN_ID : ' tyk-analytics/${{ github.run_id }}'
415
- working-directory : tyk-analytics/tests/ui
416
- - name : Share S3 report link into summary
417
- if : failure() && steps.test_execution.outcome != 'success' && steps.env_up.outcome == 'success'
418
- run : |
419
- echo "# :clipboard: S3 UI Test REPORT: ${{ matrix.envfiles.db }}-${{ matrix.envfiles.conf }}" >> $GITHUB_STEP_SUMMARY
420
- echo "- Status: ${{ steps.test_execution.outcome == 'success' && ':white_check_mark:' || ':no_entry_sign:' }}" >> $GITHUB_STEP_SUMMARY
421
- echo "- [Link to report](https://tyk-qa-reports.s3.eu-central-1.amazonaws.com/tyk-analytics/${{ github.run_id }}/index.html)" >> $GITHUB_STEP_SUMMARY
422
452
- name : Generate metadata and upload test reports
423
453
id : metadata_report
424
454
if : always() && (steps.test_execution.conclusion != 'skipped')
@@ -538,9 +568,11 @@ jobs:
538
568
load : true
539
569
- name : Test the built container image with api functionality test.
540
570
run : |
541
- docker run -d -p8080:8080 --network ${{ job.container.network }} --rm test-${{ matrix.distro }}-${{ matrix.arch }}
571
+ docker run -d -p8080:8080 --name=test -- network ${{ job.container.network }} --rm test-${{ matrix.distro }}-${{ matrix.arch }}
542
572
sleep 2
543
573
./ci/tests/api-functionality/api_test.sh
574
+ sleep 2
575
+ docker stop test || true
544
576
upgrade-rpm :
545
577
services :
546
578
httpbin.org :
@@ -595,7 +627,7 @@ jobs:
595
627
tags : test-${{ matrix.distro }}-${{ matrix.arch }}
596
628
load : true
597
629
- name : Test the built container image with api functionality test.
598
- run : " docker run -d -p8080:8080 --network ${{ job.container.network }} --rm test-${{ matrix.distro }}-${{ matrix.arch }}\n sleep 2\n ./ci/tests/api-functionality/api_test.sh \n "
630
+ run : " docker run -d -p8080:8080 --name=test -- network ${{ job.container.network }} --rm test-${{ matrix.distro }}-${{ matrix.arch }}\n sleep 2\n ./ci/tests/api-functionality/api_test.sh\n sleep 2 \n docker stop test || true \n "
599
631
release-tests :
600
632
needs :
601
633
- goreleaser
0 commit comments