Ver código fonte

Merge pull request #45567 from crazy-max/ci-bin-image-distribute

ci(bin-image): distribute build across runners
Sebastiaan van Stijn 2 anos atrás
pai
commit
7a821d4c99
1 arquivos alterados com 45 adições e 7 exclusões
  1. 45 7
      .github/workflows/bin-image.yml

+ 45 - 7
.github/workflows/bin-image.yml

@@ -24,16 +24,19 @@ jobs:
   validate-dco:
   validate-dco:
     uses: ./.github/workflows/.dco.yml
     uses: ./.github/workflows/.dco.yml
 
 
-  build:
+  prepare:
     runs-on: ubuntu-20.04
     runs-on: ubuntu-20.04
-    needs:
-      - validate-dco
+    outputs:
+      platforms: ${{ steps.platforms.outputs.matrix }}
     steps:
     steps:
       -
       -
         name: Checkout
         name: Checkout
         uses: actions/checkout@v3
         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
         name: Docker meta
         id: meta
         id: meta
@@ -54,6 +57,40 @@ jobs:
             type=semver,pattern={{version}}
             type=semver,pattern={{version}}
             type=ref,event=branch
             type=ref,event=branch
             type=ref,event=pr
             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
         name: Set up QEMU
         uses: docker/setup-qemu-action@v2
         uses: docker/setup-qemu-action@v2
@@ -66,7 +103,8 @@ jobs:
         with:
         with:
           files: |
           files: |
             ./docker-bake.hcl
             ./docker-bake.hcl
-            ${{ steps.meta.outputs.bake-file }}
-          targets: bin-image-cross
+            /tmp/bake-meta.json
+          targets: bin-image
           set: |
           set: |
+            *.platform=${{ matrix.platform }}
             *.output=type=cacheonly
             *.output=type=cacheonly