Skip to content

Commit 8179a58

Browse files
authored
feat: add multi-architecture support for Docker builds and scans
feat: add multi-architecture support for Docker builds and scans
2 parents ed04a86 + 103a0af commit 8179a58

3 files changed

Lines changed: 14 additions & 34 deletions

File tree

.github/workflows/ci-cd.yaml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,17 @@ jobs:
3232
docker-build-and-image-scan:
3333
if: github.event_name == 'push'
3434
needs: test
35-
uses: milsman2/python-app-template/.github/workflows/docker-build-and-scan.yaml@main
35+
uses: ./.github/workflows/docker-build-and-scan.yaml
3636
with:
3737
DOCKER_PATH_CONTEXT: .
3838
DOCKER_BUILD_DOCKERFILE: ./Dockerfile
3939
DOCKER_TAGS: ${{ vars.DOCKER_USERNAME }}/${{ vars.DOCKER_REPOSITORY }}:${{ github.sha }}
40-
DOCKER_LOAD_BOOL: false
41-
DOCKER_PUSH_BOOL: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') }}
4240
DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME }}
4341
secrets: inherit
44-
4542
release:
4643
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')
4744
needs: [test, docker-build-and-image-scan]
48-
uses: milsman2/python-app-template/.github/workflows/release.yaml@main
45+
uses: ./.github/workflows/release.yaml
4946
permissions:
5047
contents: write
5148
secrets: inherit

.github/workflows/docker-build-and-scan.yaml

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,50 +12,35 @@ on:
1212
DOCKER_TAGS:
1313
required: true
1414
type: string
15-
DOCKER_LOAD_BOOL:
16-
required: false
17-
type: boolean
18-
default: false
19-
DOCKER_PUSH_BOOL:
20-
required: false
21-
type: boolean
22-
default: false
2315
DOCKER_USERNAME:
2416
required: true
2517
type: string
2618

2719
jobs:
2820
build-and-scan:
21+
runs-on: ubuntu-latest
2922
env:
3023
DOCKER_PATH_CONTEXT: ${{ inputs.DOCKER_PATH_CONTEXT }}
3124
DOCKER_BUILD_DOCKERFILE: ${{ inputs.DOCKER_BUILD_DOCKERFILE }}
3225
DOCKER_TAGS: ${{ inputs.DOCKER_TAGS }}
33-
DOCKER_LOAD_BOOL: ${{ inputs.DOCKER_LOAD_BOOL }}
34-
DOCKER_PUSH_BOOL: ${{ inputs.DOCKER_PUSH_BOOL }}
3526
DOCKER_USERNAME: ${{ inputs.DOCKER_USERNAME }}
36-
runs-on: ubuntu-latest
3727
steps:
38-
- name: Checkout repository
39-
uses: actions/checkout@v6
40-
- name: Set up QEMU
41-
uses: docker/setup-qemu-action@v4
42-
- name: Set up Docker Buildx
43-
uses: docker/setup-buildx-action@v4
44-
- name: Login to DockerHub
45-
uses: docker/login-action@v4
28+
- uses: actions/checkout@v6
29+
- uses: docker/setup-qemu-action@v4
30+
- uses: docker/setup-buildx-action@v4
31+
- uses: docker/login-action@v4
4632
with:
4733
username: ${{ env.DOCKER_USERNAME }}
4834
password: ${{ secrets.DOCKERHUB_TOKEN }}
49-
- name: Build (and maybe push) Docker image
35+
- name: Build & push multi-arch image
5036
uses: docker/build-push-action@v7
5137
with:
52-
context: ${{ env.DOCKER_PATH_CONTEXT }}
53-
file: ${{ env.DOCKER_BUILD_DOCKERFILE}}
54-
load: ${{ env.DOCKER_LOAD_BOOL }}
55-
push: ${{ env.DOCKER_PUSH_BOOL }}
56-
tags: ${{ env.DOCKER_TAGS }}
57-
- name: Run Trivy vulnerability scanner (remote)
58-
if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') }}
38+
context: ${{ env.DOCKER_PATH_CONTEXT }}
39+
file: ${{ env.DOCKER_BUILD_DOCKERFILE }}
40+
platforms: linux/amd64,linux/arm64
41+
push: true
42+
tags: docker.io/${{ env.DOCKER_TAGS }}
43+
- name: Run Trivy vulnerability scanner (multi-arch manifest)
5944
uses: aquasecurity/trivy-action@0.35.0
6045
with:
6146
image-ref: docker.io/${{ env.DOCKER_TAGS }}

.github/workflows/release.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,5 @@ jobs:
9393
with:
9494
DOCKER_PATH_CONTEXT: ${{ inputs.DOCKER_PATH_CONTEXT }}
9595
DOCKER_BUILD_DOCKERFILE: ${{ inputs.DOCKER_BUILD_DOCKERFILE }}
96-
DOCKER_LOAD_BOOL: false
9796
DOCKER_TAGS: ${{ inputs.DOCKER_USERNAME }}/${{ inputs.DOCKER_REPOSITORY }}:${{ needs.Semantic-Release.outputs.tag }}
98-
DOCKER_PUSH_BOOL: true
9997
DOCKER_USERNAME: ${{ inputs.DOCKER_USERNAME }}

0 commit comments

Comments
 (0)