Skip to content

Commit

Permalink
Improved Docker build action
Browse files Browse the repository at this point in the history
* Split each architecture with a matrix build so each arch builds on
  it's own runner
* Cache all architectures in GHA
* Combine and push in final step
  • Loading branch information
rblaine95 committed Oct 22, 2024
1 parent e7009d5 commit 364d509
Showing 1 changed file with 40 additions and 5 deletions.
45 changes: 40 additions & 5 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,44 @@ env:
jobs:
build:
name: Build
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
arch: [amd64, arm64, armv7]
include:
- arch: amd64
runs-on: ubuntu-latest
platform: linux/amd64
- arch: arm64
runs-on: ubuntu-latest
platform: linux/arm64
# One day, when ARM based Github Hosted Runners are GA...
# https://github.com/github/roadmap/issues/970
# runs-on: ubuntu-latest-arm64
- arch: armv7
runs-on: ubuntu-latest
platform: linux/arm/v7
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
if: ${{ matrix.arch != 'amd64' }}
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6
with:
platforms: ${{ matrix.platform }}
push: false
cache-from: |
type=gha,scope=docker-build-${{ matrix.arch }}
cache-to: |
type=gha,mode=max,scope=docker-build-${{ matrix.arch }}
context: .
combine:
needs: [build]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
Expand All @@ -42,5 +72,10 @@ jobs:
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
cache-from: |
type=gha,scope=docker-package
type=gha,scope=docker-build-amd64
type=gha,scope=docker-build-arm64
type=gha,scope=docker-build-armv7
cache-to: |
type=gha,mode=max,scope=docker-package

0 comments on commit 364d509

Please sign in to comment.