Skip to content

Commit 20b6fe4

Browse files
author
Gromit
committed
Auto generated from templates by gromit
1 parent 35f58ac commit 20b6fe4

File tree

4 files changed

+175
-127
lines changed

4 files changed

+175
-127
lines changed

.github/workflows/release.yml

+104-72
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,11 @@ name: Release
88
# - docker hub
99
# - devenv ECR
1010
# - 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' }}
1415
on:
15-
# Trigger release every monday at midnight for master CI images
16-
schedule:
17-
- cron: "0 0 * * 1"
1816
pull_request:
1917
push:
2018
branches:
@@ -24,7 +22,7 @@ on:
2422
- 'v*'
2523
env:
2624
GOPRIVATE: github.com/TykTechnologies
27-
VARIATION: inverted
25+
VARIATION: prod-variation
2826
DOCKER_BUILD_SUMMARY: false
2927
DOCKER_BUILD_RECORD_UPLOAD: false
3028
# startsWith covers pull_request_target too
@@ -49,7 +47,7 @@ jobs:
4947
rpmvers: 'el/7 el/8 el/9 amazon/2 amazon/2023'
5048
debvers: 'ubuntu/xenial ubuntu/bionic ubuntu/focal ubuntu/jammy debian/jessie debian/buster debian/bullseye debian/bookworm'
5149
outputs:
52-
tags: ${{ steps.ci_metadata_ee.outputs.tags }}
50+
tags: ${{ steps.ci_metadata.outputs.tags }}
5351
commit_author: ${{ steps.set_outputs.outputs.commit_author}}
5452
steps:
5553
- name: Checkout of tyk
@@ -130,12 +128,13 @@ jobs:
130128
if: ${{ matrix.golang_cross == '1.22-bullseye' }}
131129
with:
132130
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
135133
if: ${{ matrix.golang_cross == '1.22-bullseye' }}
136134
uses: docker/metadata-action@v5
137135
with:
138-
images: ${{ steps.ecr.outputs.registry }}/tyk
136+
images: |
137+
${{ steps.ecr.outputs.registry }}/tyk-ee
139138
flavor: |
140139
latest=false
141140
tags: |
@@ -145,112 +144,128 @@ jobs:
145144
type=semver,pattern={{major}},prefix=v
146145
type=semver,pattern={{major}}.{{minor}},prefix=v
147146
type=semver,pattern={{version}},prefix=v
148-
- name: push image to CI
147+
- name: push ee image to CI
149148
if: ${{ matrix.golang_cross == '1.22-bullseye' }}
150149
uses: docker/build-push-action@v6
151150
with:
152151
context: "dist"
153-
platforms: linux/amd64,linux/arm64
152+
platforms: linux/amd64,linux/arm64,linux/s390x
154153
file: ci/Dockerfile.distroless
155154
provenance: mode=max
156155
sbom: true
157156
push: true
158157
cache-from: type=gha
159158
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 }}
162161
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
167165
uses: docker/metadata-action@v5
168166
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
170173
flavor: |
171174
latest=false
175+
prefix=v
172176
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
180185
if: ${{ matrix.golang_cross == '1.22-bullseye' }}
181186
uses: docker/build-push-action@v6
182187
with:
183188
context: "dist"
184-
platforms: linux/amd64,linux/arm64
189+
platforms: linux/amd64,linux/arm64,linux/s390x
185190
file: ci/Dockerfile.distroless
186191
provenance: mode=max
187192
sbom: true
188-
push: true
189193
cache-from: type=gha
190194
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 }}
193198
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' }}
197203
uses: docker/metadata-action@v5
198204
with:
199205
images: |
200-
tykio/tyk-gateway
201-
docker.tyk.io/tyk-gateway/tyk-gateway
206+
${{ steps.ecr.outputs.registry }}/tyk
202207
flavor: |
203208
latest=false
204-
prefix=v
205209
tags: |
206-
type=semver,pattern={{major}}.{{minor}}
207-
type=semver,pattern={{version}}
208-
labels: "org.opencontainers.image.title=tyk-gateway (distroless) \norg.opencontainers.image.description=Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols\norg.opencontainers.image.vendor=tyk.io\norg.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
210217
if: ${{ matrix.golang_cross == '1.22-bullseye' }}
211218
uses: docker/build-push-action@v6
212219
with:
213220
context: "dist"
214-
platforms: linux/amd64,linux/arm64
221+
platforms: linux/amd64,linux/arm64,linux/s390x
215222
file: ci/Dockerfile.distroless
216223
provenance: mode=max
217224
sbom: true
225+
push: true
218226
cache-from: type=gha
219227
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 }}
223230
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
227234
uses: docker/metadata-action@v5
228235
with:
229236
images: |
237+
docker.tyk.io/tyk-gateway/tyk-gateway
238+
239+
tykio/tyk-gateway
240+
230241
tykio/tyk-gateway-ee
231242
flavor: |
232243
latest=false
233244
prefix=v
234245
tags: |
235246
type=semver,pattern={{major}}.{{minor}}
236247
type=semver,pattern={{version}}
237-
labels: "org.opencontainers.image.title=tyk-gateway Enterprise Edition (distroless) \norg.opencontainers.image.description=Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols\norg.opencontainers.image.vendor=tyk.io\norg.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
239254
if: ${{ matrix.golang_cross == '1.22-bullseye' }}
240255
uses: docker/build-push-action@v6
241256
with:
242257
context: "dist"
243-
platforms: linux/amd64,linux/arm64
258+
platforms: linux/amd64,linux/arm64,linux/s390x
244259
file: ci/Dockerfile.distroless
245260
provenance: mode=max
246261
sbom: true
247262
cache-from: type=gha
248263
cache-to: type=gha,mode=max
249264
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 }}
252267
build-args: |
253-
EDITION=-ee
268+
BUILD_PACKAGE_NAME=tyk-gateway
254269
- name: save deb
255270
uses: actions/upload-artifact@v4
256271
if: ${{ matrix.golang_cross == '1.22-bullseye' }}
@@ -351,6 +366,7 @@ jobs:
351366
set -eaxo pipefail
352367
docker run -q --rm -v ~/.docker/config.json:/root/.docker/config.json tykio/gromit policy match ${tags[0]} ${match_tag} 2>versions.env
353368
echo '# alfa and beta have to come after the override
369+
354370
tyk_alfa_image=$tyk_image
355371
tyk_beta_image=$tyk_image
356372
ECR=${{steps.ecr.outputs.registry}}
@@ -374,9 +390,37 @@ jobs:
374390
repository: TykTechnologies/tyk-analytics
375391
path: tyk-analytics
376392
token: ${{ secrets.ORG_GH_TOKEN }}
377-
fetch-depth: 1
378-
ref: ${{ env.BASE_REF }}
393+
fetch-depth: 0
379394
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)"
380424
- uses: actions/setup-python@v5
381425
with:
382426
cache: 'pip'
@@ -405,20 +449,6 @@ jobs:
405449
USER_API_SECRET=${{ steps.env_up.outputs.USER_API_SECRET }}
406450
EOF
407451
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
422452
- name: Generate metadata and upload test reports
423453
id: metadata_report
424454
if: always() && (steps.test_execution.conclusion != 'skipped')
@@ -538,9 +568,11 @@ jobs:
538568
load: true
539569
- name: Test the built container image with api functionality test.
540570
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 }}
542572
sleep 2
543573
./ci/tests/api-functionality/api_test.sh
574+
sleep 2
575+
docker stop test || true
544576
upgrade-rpm:
545577
services:
546578
httpbin.org:
@@ -595,7 +627,7 @@ jobs:
595627
tags: test-${{ matrix.distro }}-${{ matrix.arch }}
596628
load: true
597629
- 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 }}\nsleep 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 }}\nsleep 2\n./ci/tests/api-functionality/api_test.sh\nsleep 2\ndocker stop test || true \n"
599631
release-tests:
600632
needs:
601633
- goreleaser

ci/Dockerfile.distroless

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# Generated by: gromit policy
22

3-
FROM debian:bookworm-slim as DEB
3+
FROM debian:bookworm-slim AS deb
44
ARG TARGETARCH
5-
ARG EDITION
5+
ARG BUILD_PACKAGE_NAME
66

77
ENV DEBIAN_FRONTEND=noninteractive
88

9-
COPY *${TARGETARCH}.deb /
10-
RUN rm -f /*fips*.deb && dpkg -i /tyk-gateway${EDITION}_*${TARGETARCH}.deb && rm /*.deb
9+
COPY ${BUILD_PACKAGE_NAME}*${TARGETARCH}.deb /
10+
RUN dpkg -i /${BUILD_PACKAGE_NAME}_*${TARGETARCH}.deb && rm /*.deb
1111

1212
FROM gcr.io/distroless/base-debian12:latest
1313

14-
COPY --from=DEB /opt/tyk-gateway /opt/tyk-gateway
14+
COPY --from=deb /opt/tyk-gateway /opt/tyk-gateway
1515

1616
ARG PORTS
1717
EXPOSE $PORTS

ci/Dockerfile.std

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
FROM debian:bookworm-slim
44
ARG TARGETARCH
5+
ARG BUILD_PACKAGE_NAME
56

67
ENV DEBIAN_FRONTEND=noninteractive
78

@@ -20,8 +21,8 @@ RUN rm -rf /root/.cache \
2021
&& find /usr/lib -type f -name '*.a' -o -name '*.o' -delete
2122

2223
# Comment this to test in dev
23-
COPY *${TARGETARCH}.deb /
24-
RUN rm -f /*fips*.deb && dpkg -i /tyk-gateway*${TARGETARCH}.deb && rm /*.deb
24+
COPY ${BUILD_PACKAGE_NAME}*${TARGETARCH}.deb /
25+
RUN dpkg -i /${BUILD_PACKAGE_NAME}*${TARGETARCH}.deb && rm /*.deb
2526

2627
ARG PORTS
2728

0 commit comments

Comments
 (0)