|
1 | 1 | name: builds |
2 | 2 | on: |
3 | 3 | release: |
4 | | - types: [ created ] |
| 4 | + types: [created] |
5 | 5 | push: |
6 | 6 | branches: |
7 | 7 | - main |
8 | 8 | pull_request: |
| 9 | + |
9 | 10 | concurrency: |
10 | 11 | group: ${{ github.workflow }}-${{ github.head_ref || github.sha }} |
11 | 12 | cancel-in-progress: true |
| 13 | + |
12 | 14 | permissions: |
13 | 15 | id-token: write # allows the JWT to be requested from GitHub's OIDC provider |
14 | 16 | 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 |
129 | 17 |
|
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