From 668af4be82a28a728e8f2981e90b7cad224fb2e8 Mon Sep 17 00:00:00 2001 From: Kevin Alvarez Date: Thu, 18 May 2023 18:24:08 +0200 Subject: [PATCH] ci(bin-image): distribute build across runners Signed-off-by: CrazyMax --- .github/workflows/bin-image.yml | 52 ++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/.github/workflows/bin-image.yml b/.github/workflows/bin-image.yml index f8992042cf..9a7e379032 100644 --- a/.github/workflows/bin-image.yml +++ b/.github/workflows/bin-image.yml @@ -24,16 +24,19 @@ jobs: validate-dco: uses: ./.github/workflows/.dco.yml - build: + prepare: runs-on: ubuntu-20.04 - needs: - - validate-dco + outputs: + platforms: ${{ steps.platforms.outputs.matrix }} steps: - name: Checkout uses: actions/checkout@v3 - with: - fetch-depth: 0 + - + name: Create platforms matrix + id: platforms + run: | + echo "matrix=$(docker buildx bake bin-image-cross --print | jq -cr '.target."bin-image-cross".platforms')" >>${GITHUB_OUTPUT} - name: Docker meta id: meta @@ -54,6 +57,40 @@ jobs: type=semver,pattern={{version}} type=ref,event=branch type=ref,event=pr + - + name: Rename meta bake definition file + run: | + mv "${{ steps.meta.outputs.bake-file }}" "/tmp/bake-meta.json" + - + name: Upload meta bake definition + uses: actions/upload-artifact@v3 + with: + name: bake-meta + path: /tmp/bake-meta.json + if-no-files-found: error + retention-days: 1 + + build: + runs-on: ubuntu-20.04 + needs: + - validate-dco + - prepare + strategy: + fail-fast: false + matrix: + platform: ${{ fromJson(needs.prepare.outputs.platforms) }} + steps: + - + name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - + name: Download meta bake definition + uses: actions/download-artifact@v3 + with: + name: bake-meta + path: /tmp - name: Set up QEMU uses: docker/setup-qemu-action@v2 @@ -66,7 +103,8 @@ jobs: with: files: | ./docker-bake.hcl - ${{ steps.meta.outputs.bake-file }} - targets: bin-image-cross + /tmp/bake-meta.json + targets: bin-image set: | + *.platform=${{ matrix.platform }} *.output=type=cacheonly