Skip to content

Commit 4ff06df

Browse files
committed
[Test] Use composite action to build image
1 parent 7b8bc30 commit 4ff06df

File tree

2 files changed

+88
-92
lines changed

2 files changed

+88
-92
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Build image
2+
inputs:
3+
target:
4+
required: true
5+
image_name:
6+
required: true
7+
push_image:
8+
required: true
9+
build_arch:
10+
required: true
11+
docker_registry:
12+
required: false
13+
docker_username:
14+
required: false
15+
docker_password:
16+
required: false
17+
runs:
18+
using: "composite"
19+
steps:
20+
- name: Install qemu for multi arch build
21+
shell: bash
22+
run: docker run --privileged --rm tonistiigi/binfmt --install all
23+
- name: Setup container builder
24+
shell: bash
25+
run: |
26+
docker buildx create \
27+
--name container-builder \
28+
--driver docker-container \
29+
--bootstrap --use
30+
- name: docker login
31+
if: ${{ inputs.push_image == 'true' }}
32+
env:
33+
DOCKER_USERNAME: ${{ inputs.docker_username }}
34+
DOCKER_PASSWORD: ${{ inputs.docker_password }}
35+
DOCKER_REGISTRY: ${{ inputs.docker_registry }}
36+
shell: bash
37+
run: |
38+
printf "$DOCKER_PASSWORD" | docker login --password-stdin --username "$DOCKER_USERNAME" $DOCKER_REGISTRY
39+
- run: make build-image BUILD_ARCH=$BUILD_ARCH PUSH_IMAGE=$PUSH_IMAGE TARGET=$TARGET IMAGE_NAME=$IMAGE_NAME
40+
shell: bash
41+
env:
42+
TARGET: ${{ inputs.target }}
43+
IMAGE_NAME: ${{ inputs.image_name }}
44+
PUSH_IMAGE: ${{ inputs.push_image }}
45+
BUILD_ARCH: ${{ inputs.build_arch }}
46+
- name: docker logout
47+
if: ${{ always() }}
48+
env:
49+
DOCKER_REGISTRY: ${{ inputs.docker_registry }}
50+
shell: bash
51+
run: |
52+
docker logout $DOCKER_REGISTRY

.github/workflows/ci.yaml

Lines changed: 36 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -120,64 +120,36 @@ jobs:
120120
runs-on: ubuntu-24.04
121121
needs: portal-test
122122
env:
123-
TARGET: portal
124-
IMAGE_NAME: quay.io/theauthgear/authgear-portal
125123
PUSH_IMAGE: "${{ (github.repository == 'authgear/authgear-server' && github.event_name == 'push') && 'true' || 'false' }}"
126-
BUILD_ARCH: amd64
127124
steps:
128125
- uses: actions/checkout@v4
129-
- name: Install qemu for multi arch build
130-
run: docker run --privileged --rm tonistiigi/binfmt --install all
131-
- name: Setup container builder
132-
run: |
133-
docker buildx create \
134-
--name container-builder \
135-
--driver docker-container \
136-
--bootstrap --use
137-
- name: docker login
138-
if: ${{ github.repository == 'authgear/authgear-server' && github.event_name == 'push' }}
139-
env:
140-
DOCKER_USERNAME: ${{ secrets.QUAY_USERNAME }}
141-
DOCKER_PASSWORD: ${{ secrets.QUAY_ROBOT_TOKEN }}
142-
run: |
143-
printf "$DOCKER_PASSWORD" | docker login --password-stdin --username "$DOCKER_USERNAME" quay.io
144-
- run: make build-image BUILD_ARCH=$BUILD_ARCH PUSH_IMAGE=$PUSH_IMAGE TARGET=$TARGET IMAGE_NAME=$IMAGE_NAME
145-
- name: docker logout
146-
if: ${{ always() }}
147-
run: |
148-
docker logout quay.io
126+
- uses: ./.github/actions/build-image
127+
with:
128+
target: portal
129+
image_name: quay.io/theauthgear/authgear-portal
130+
push_image: "${{ env.PUSH_IMAGE }}"
131+
build_arch: amd64
132+
docker_registry: quay.io
133+
docker_username: "${{ env.PUSH_IMAGE == 'true' && secrets.QUAY_USERNAME || '' }}"
134+
docker_password: "${{ env.PUSH_IMAGE == 'true' && secrets.QUAY_ROBOT_TOKEN || '' }}"
149135

150136
portal-image-arm64:
151137
if: ${{ (github.repository == 'authgear/authgear-server' && github.event_name == 'push') }}
152138
runs-on: ubuntu-24.04
153139
needs: portal-test
154140
env:
155-
TARGET: portal
156-
IMAGE_NAME: quay.io/theauthgear/authgear-portal
157141
PUSH_IMAGE: "${{ (github.repository == 'authgear/authgear-server' && github.event_name == 'push') && 'true' || 'false' }}"
158-
BUILD_ARCH: arm64
159142
steps:
160143
- uses: actions/checkout@v4
161-
- name: Install qemu for multi arch build
162-
run: docker run --privileged --rm tonistiigi/binfmt --install all
163-
- name: Setup container builder
164-
run: |
165-
docker buildx create \
166-
--name container-builder \
167-
--driver docker-container \
168-
--bootstrap --use
169-
- name: docker login
170-
if: ${{ github.repository == 'authgear/authgear-server' && github.event_name == 'push' }}
171-
env:
172-
DOCKER_USERNAME: ${{ secrets.QUAY_USERNAME }}
173-
DOCKER_PASSWORD: ${{ secrets.QUAY_ROBOT_TOKEN }}
174-
run: |
175-
printf "$DOCKER_PASSWORD" | docker login --password-stdin --username "$DOCKER_USERNAME" quay.io
176-
- run: make build-image BUILD_ARCH=$BUILD_ARCH PUSH_IMAGE=$PUSH_IMAGE TARGET=$TARGET IMAGE_NAME=$IMAGE_NAME
177-
- name: docker logout
178-
if: ${{ always() }}
179-
run: |
180-
docker logout quay.io
144+
- uses: ./.github/actions/build-image
145+
with:
146+
target: portal
147+
image_name: quay.io/theauthgear/authgear-portal
148+
push_image: "${{ env.PUSH_IMAGE }}"
149+
build_arch: arm64
150+
docker_registry: quay.io
151+
docker_username: "${{ env.PUSH_IMAGE == 'true' && secrets.QUAY_USERNAME || '' }}"
152+
docker_password: "${{ env.PUSH_IMAGE == 'true' && secrets.QUAY_ROBOT_TOKEN || '' }}"
181153

182154
portal-image:
183155
if: ${{ (github.repository == 'authgear/authgear-server' && github.event_name == 'push') }}
@@ -286,63 +258,35 @@ jobs:
286258
runs-on: ubuntu-24.04
287259
needs: ["authgear-test", "authui-test"]
288260
env:
289-
TARGET: authgear
290-
IMAGE_NAME: quay.io/theauthgear/authgear-server
291261
PUSH_IMAGE: "${{ (github.repository == 'authgear/authgear-server' && github.event_name == 'push') && 'true' || 'false' }}"
292-
BUILD_ARCH: amd64
293262
steps:
294263
- uses: actions/checkout@v4
295-
- name: Install qemu for multi arch build
296-
run: docker run --privileged --rm tonistiigi/binfmt --install all
297-
- name: Setup container builder
298-
run: |
299-
docker buildx create \
300-
--name container-builder \
301-
--driver docker-container \
302-
--bootstrap --use
303-
- name: docker login
304-
if: ${{ github.repository == 'authgear/authgear-server' && github.event_name == 'push' }}
305-
env:
306-
DOCKER_USERNAME: ${{ secrets.QUAY_USERNAME }}
307-
DOCKER_PASSWORD: ${{ secrets.QUAY_ROBOT_TOKEN }}
308-
run: |
309-
printf "$DOCKER_PASSWORD" | docker login --password-stdin --username "$DOCKER_USERNAME" quay.io
310-
- run: make build-image BUILD_ARCH=$BUILD_ARCH PUSH_IMAGE=$PUSH_IMAGE TARGET=$TARGET IMAGE_NAME=$IMAGE_NAME
311-
- name: docker logout
312-
if: ${{ always() }}
313-
run: |
314-
docker logout quay.io
264+
- uses: ./.github/actions/build-image
265+
with:
266+
target: authgear
267+
image_name: quay.io/theauthgear/authgear-server
268+
push_image: "${{ env.PUSH_IMAGE }}"
269+
build_arch: amd64
270+
docker_registry: quay.io
271+
docker_username: "${{ env.PUSH_IMAGE == 'true' && secrets.QUAY_USERNAME || '' }}"
272+
docker_password: "${{ env.PUSH_IMAGE == 'true' && secrets.QUAY_ROBOT_TOKEN || '' }}"
315273
authgear-image-arm64:
316274
if: ${{ (github.repository == 'authgear/authgear-server' && github.event_name == 'push') }}
317275
runs-on: ubuntu-24.04
318276
needs: ["authgear-test", "authui-test"]
319277
env:
320-
TARGET: authgear
321-
IMAGE_NAME: quay.io/theauthgear/authgear-server
322278
PUSH_IMAGE: "${{ (github.repository == 'authgear/authgear-server' && github.event_name == 'push') && 'true' || 'false' }}"
323-
BUILD_ARCH: arm64
324279
steps:
325280
- uses: actions/checkout@v4
326-
- name: Install qemu for multi arch build
327-
run: docker run --privileged --rm tonistiigi/binfmt --install all
328-
- name: Setup container builder
329-
run: |
330-
docker buildx create \
331-
--name container-builder \
332-
--driver docker-container \
333-
--bootstrap --use
334-
- name: docker login
335-
if: ${{ github.repository == 'authgear/authgear-server' && github.event_name == 'push' }}
336-
env:
337-
DOCKER_USERNAME: ${{ secrets.QUAY_USERNAME }}
338-
DOCKER_PASSWORD: ${{ secrets.QUAY_ROBOT_TOKEN }}
339-
run: |
340-
printf "$DOCKER_PASSWORD" | docker login --password-stdin --username "$DOCKER_USERNAME" quay.io
341-
- run: make build-image BUILD_ARCH=$BUILD_ARCH PUSH_IMAGE=$PUSH_IMAGE TARGET=$TARGET IMAGE_NAME=$IMAGE_NAME
342-
- name: docker logout
343-
if: ${{ always() }}
344-
run: |
345-
docker logout quay.io
281+
- uses: ./.github/actions/build-image
282+
with:
283+
target: authgear
284+
image_name: quay.io/theauthgear/authgear-server
285+
push_image: "${{ env.PUSH_IMAGE }}"
286+
build_arch: arm64
287+
docker_registry: quay.io
288+
docker_username: "${{ env.PUSH_IMAGE == 'true' && secrets.QUAY_USERNAME || '' }}"
289+
docker_password: "${{ env.PUSH_IMAGE == 'true' && secrets.QUAY_ROBOT_TOKEN || '' }}"
346290

347291
authgear-image:
348292
if: ${{ (github.repository == 'authgear/authgear-server' && github.event_name == 'push') }}

0 commit comments

Comments
 (0)