Skip to content

Commit 00fa5c8

Browse files
authored
chore: push images to ECR (#134)
1 parent e7ecb9e commit 00fa5c8

File tree

3 files changed

+394
-244
lines changed

3 files changed

+394
-244
lines changed

.github/workflows/builds.yml

Lines changed: 39 additions & 244 deletions
Original file line numberDiff line numberDiff line change
@@ -1,258 +1,53 @@
11
name: builds
22
on:
33
release:
4-
types: [ created ]
4+
types: [created]
55
push:
66
branches:
77
- main
88
pull_request:
9+
910
concurrency:
1011
group: ${{ github.workflow }}-${{ github.head_ref || github.sha }}
1112
cancel-in-progress: true
13+
1214
permissions:
1315
id-token: write # allows the JWT to be requested from GitHub's OIDC provider
1416
contents: read # This is required for actions/checkout
15-
env:
16-
arch_amd64: amd64
17-
arch_arm64: arm64
18-
docker_images_keydb: |
19-
name=rudderstack/rudder-keydb
20-
docker_tags_keydb: |
21-
type=ref,event=branch
22-
type=raw,value=${{ github.head_ref }},enable=${{ github.event_name == 'pull_request' }}
23-
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
24-
type=semver,pattern={{version}},enable=${{ github.ref == format('refs/heads/{0}', 'main') || github.event_name == 'release' }}
25-
type=semver,pattern={{major}},enable=${{ github.ref == format('refs/heads/{0}', 'main') || github.event_name == 'release' }}
26-
type=semver,pattern={{major}}.{{minor}},enable=${{ github.ref == format('refs/heads/{0}', 'main') || github.event_name == 'release' }}
27-
docker_images_keydb_scaler: |
28-
name=rudderstack/rudder-keydb-scaler
29-
docker_tags_keydb_scaler: |
30-
type=ref,event=branch
31-
type=raw,value=${{ github.head_ref }},enable=${{ github.event_name == 'pull_request' }}
32-
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
33-
type=semver,pattern={{version}},enable=${{ github.ref == format('refs/heads/{0}', 'main') || github.event_name == 'release' }}
34-
type=semver,pattern={{major}},enable=${{ github.ref == format('refs/heads/{0}', 'main') || github.event_name == 'release' }}
35-
type=semver,pattern={{major}}.{{minor}},enable=${{ github.ref == format('refs/heads/{0}', 'main') || github.event_name == 'release' }}
36-
jobs:
37-
docker-meta-keydb:
38-
runs-on: ubuntu-latest
39-
outputs:
40-
labels: ${{ steps.meta.outputs.labels }}
41-
build-date: ${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
42-
version: ${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
43-
revision: ${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
44-
tags: ${{ steps.meta.outputs.tags }}
45-
arm64_tags: ${{ steps.arm64_meta.outputs.tags }}
46-
arm64_labels: ${{ steps.arm64_meta.outputs.labels }}
47-
amd64_tags: ${{ steps.amd64_meta.outputs.tags }}
48-
amd64_labels: ${{ steps.amd64_meta.outputs.labels }}
49-
steps:
50-
- name: Harden the runner (Audit all outbound calls)
51-
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2
52-
with:
53-
egress-policy: audit
54-
55-
- name: Docker meta
56-
id: meta
57-
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
58-
with:
59-
images: ${{env.docker_images_keydb}}
60-
tags: ${{env.docker_tags_keydb}}
61-
- name: Docker arm64 meta
62-
id: arm64_meta
63-
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
64-
with:
65-
images: ${{env.docker_images_keydb}}
66-
tags: ${{env.docker_tags_keydb}}
67-
flavor: |
68-
suffix=-${{env.arch_arm64}},onlatest=true
69-
- name: Docker amd64 meta
70-
id: amd64_meta
71-
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
72-
with:
73-
images: ${{env.docker_images_keydb}}
74-
tags: ${{env.docker_tags_keydb}}
75-
flavor: |
76-
suffix=-${{env.arch_amd64}},onlatest=true
77-
docker-keydb:
78-
needs:
79-
- docker-meta-keydb
80-
strategy:
81-
matrix:
82-
build-config:
83-
- os: [ self-hosted, Linux, ARM64, ubuntu-22 ]
84-
tags: ${{needs.docker-meta-keydb.outputs.arm64_tags}}
85-
labels: ${{needs.docker-meta-keydb.outputs.arm64_labels}}
86-
platform: linux/arm64
87-
- os: ubuntu-latest
88-
tags: ${{needs.docker-meta-keydb.outputs.amd64_tags}}
89-
labels: ${{needs.docker-meta-keydb.outputs.amd64_labels}}
90-
platform: linux/amd64
91-
runs-on: ${{matrix.build-config.os}}
92-
steps:
93-
- name: Harden the runner (Audit all outbound calls)
94-
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2
95-
with:
96-
egress-policy: audit
97-
98-
- name: Checkout
99-
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
100-
- name: Login to DockerHub
101-
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
102-
with:
103-
username: ${{ secrets.DOCKERHUB_USERNAME }}
104-
password: ${{ secrets.DOCKERHUB_TOKEN }}
105-
- name: Set up Docker Buildx
106-
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
107-
- name: Build, scan and push
108-
uses: rudderlabs/build-scan-push-action@d4991410238cec1b416875f1eb0e7a4565ac29aa # v1.8.2
109-
with:
110-
context: .
111-
platforms: ${{ matrix.build-config.platform }}
112-
push: true
113-
tags: ${{ matrix.build-config.tags }}
114-
labels: ${{ matrix.build-config.labels }}
115-
build-args: |
116-
BUILD_DATE=${{ needs.docker-meta-keydb.outputs.build-date }}
117-
VERSION=${{ needs.docker-meta-keydb.outputs.version }}
118-
COMMIT_HASH=${{ github.sha }}
119-
REVISION=${{ needs.docker-meta-keydb.outputs.revision }}
120-
121-
create-manifest:
122-
runs-on: ubuntu-latest
123-
needs: [ docker-keydb, docker-meta-keydb ]
124-
steps:
125-
- name: Harden the runner (Audit all outbound calls)
126-
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2
127-
with:
128-
egress-policy: audit
12917

130-
- name: Set up Docker Buildx
131-
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
132-
- name: Login to DockerHub
133-
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
134-
with:
135-
username: ${{ secrets.DOCKERHUB_USERNAME }}
136-
password: ${{ secrets.DOCKERHUB_TOKEN }}
137-
- name: Create multi-arch manifest for Docker
138-
run: |
139-
while read -r tag; do
140-
echo "$tag"
141-
arm_tag=$(echo "${{ needs.docker-meta-keydb.outputs.arm64_tags }}" | grep "$tag")
142-
echo "$arm_tag"
143-
amd_tag=$(echo "${{ needs.docker-meta-keydb.outputs.amd64_tags }}" | grep "$tag")
144-
echo "$amd_tag"
145-
docker buildx imagetools create -t $tag $arm_tag $amd_tag
146-
done <<< "${{ needs.docker-meta-keydb.outputs.tags }}"
147-
148-
docker-meta-keydb-scaler:
149-
runs-on: ubuntu-latest
150-
outputs:
151-
labels: ${{ steps.meta.outputs.labels }}
152-
build-date: ${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
153-
version: ${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
154-
revision: ${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
155-
tags: ${{ steps.meta.outputs.tags }}
156-
arm64_tags: ${{ steps.arm64_meta.outputs.tags }}
157-
arm64_labels: ${{ steps.arm64_meta.outputs.labels }}
158-
amd64_tags: ${{ steps.amd64_meta.outputs.tags }}
159-
amd64_labels: ${{ steps.amd64_meta.outputs.labels }}
160-
steps:
161-
- name: Harden the runner (Audit all outbound calls)
162-
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2
163-
with:
164-
egress-policy: audit
165-
166-
- name: Docker meta
167-
id: meta
168-
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
169-
with:
170-
images: ${{env.docker_images_keydb_scaler}}
171-
tags: ${{env.docker_tags_keydb_scaler}}
172-
- name: Docker arm64 meta
173-
id: arm64_meta
174-
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
175-
with:
176-
images: ${{env.docker_images_keydb_scaler}}
177-
tags: ${{env.docker_tags_keydb_scaler}}
178-
flavor: |
179-
suffix=-${{env.arch_arm64}},onlatest=true
180-
- name: Docker amd64 meta
181-
id: amd64_meta
182-
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
183-
with:
184-
images: ${{env.docker_images_keydb_scaler}}
185-
tags: ${{env.docker_tags_keydb_scaler}}
186-
flavor: |
187-
suffix=-${{env.arch_amd64}},onlatest=true
188-
docker-keydb-scaler:
189-
needs:
190-
- docker-meta-keydb-scaler
191-
strategy:
192-
matrix:
193-
build-config:
194-
- os: [ self-hosted, Linux, ARM64, ubuntu-22 ]
195-
tags: ${{needs.docker-meta-keydb-scaler.outputs.arm64_tags}}
196-
labels: ${{needs.docker-meta-keydb-scaler.outputs.arm64_labels}}
197-
platform: linux/arm64
198-
- os: ubuntu-latest
199-
tags: ${{needs.docker-meta-keydb-scaler.outputs.amd64_tags}}
200-
labels: ${{needs.docker-meta-keydb-scaler.outputs.amd64_labels}}
201-
platform: linux/amd64
202-
runs-on: ${{matrix.build-config.os}}
203-
steps:
204-
- name: Harden the runner (Audit all outbound calls)
205-
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2
206-
with:
207-
egress-policy: audit
208-
209-
- name: Checkout
210-
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
211-
- name: Login to DockerHub
212-
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
213-
with:
214-
username: ${{ secrets.DOCKERHUB_USERNAME }}
215-
password: ${{ secrets.DOCKERHUB_TOKEN }}
216-
- name: Set up Docker Buildx
217-
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
218-
- name: Build, scan and push
219-
uses: rudderlabs/build-scan-push-action@d4991410238cec1b416875f1eb0e7a4565ac29aa # v1.8.2
220-
with:
221-
context: .
222-
file: ./Dockerfile-scaler
223-
platforms: ${{ matrix.build-config.platform }}
224-
push: true
225-
tags: ${{ matrix.build-config.tags }}
226-
labels: ${{ matrix.build-config.labels }}
227-
build-args: |
228-
BUILD_DATE=${{ needs.docker-meta-keydb-scaler.outputs.build-date }}
229-
VERSION=${{ needs.docker-meta-keydb-scaler.outputs.version }}
230-
COMMIT_HASH=${{ github.sha }}
231-
REVISION=${{ needs.docker-meta-keydb-scaler.outputs.revision }}
232-
233-
create-manifest-keydb-scaler:
234-
runs-on: ubuntu-latest
235-
needs: [ docker-keydb-scaler, docker-meta-keydb-scaler ]
236-
steps:
237-
- name: Harden the runner (Audit all outbound calls)
238-
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2
239-
with:
240-
egress-policy: audit
241-
242-
- name: Set up Docker Buildx
243-
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
244-
- name: Login to DockerHub
245-
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
246-
with:
247-
username: ${{ secrets.DOCKERHUB_USERNAME }}
248-
password: ${{ secrets.DOCKERHUB_TOKEN }}
249-
- name: Create multi-arch manifest for Docker
250-
run: |
251-
while read -r tag; do
252-
echo "$tag"
253-
arm_tag=$(echo "${{ needs.docker-meta-keydb-scaler.outputs.arm64_tags }}" | grep "$tag")
254-
echo "$arm_tag"
255-
amd_tag=$(echo "${{ needs.docker-meta-keydb-scaler.outputs.amd64_tags }}" | grep "$tag")
256-
echo "$amd_tag"
257-
docker buildx imagetools create -t $tag $arm_tag $amd_tag
258-
done <<< "${{ needs.docker-meta-keydb-scaler.outputs.tags }}"
18+
jobs:
19+
# DockerHub builds
20+
keydb-dockerhub:
21+
uses: ./.github/workflows/docker-build-dockerhub.yml
22+
with:
23+
image_name: rudderstack/rudder-keydb
24+
dockerfile: Dockerfile
25+
secrets:
26+
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
27+
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
28+
29+
keydb-scaler-dockerhub:
30+
uses: ./.github/workflows/docker-build-dockerhub.yml
31+
with:
32+
image_name: rudderstack/rudder-keydb-scaler
33+
dockerfile: Dockerfile-scaler
34+
secrets:
35+
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
36+
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
37+
38+
# ECR builds
39+
keydb-ecr:
40+
uses: ./.github/workflows/docker-build-ecr.yml
41+
with:
42+
image_name: rudderstack/rudder-keydb
43+
dockerfile: Dockerfile
44+
aws_ecr_iam_role_arn: ${{ vars.AWS_ECR_IAM_ROLE_ARN }}
45+
aws_ecr_region: ${{ vars.AWS_ECR_REGION }}
46+
47+
keydb-scaler-ecr:
48+
uses: ./.github/workflows/docker-build-ecr.yml
49+
with:
50+
image_name: rudderstack/rudder-keydb-scaler
51+
dockerfile: Dockerfile-scaler
52+
aws_ecr_iam_role_arn: ${{ vars.AWS_ECR_IAM_ROLE_ARN }}
53+
aws_ecr_region: ${{ vars.AWS_ECR_REGION }}

0 commit comments

Comments
 (0)