From 60f3d14bcbe80a4108253d6e025f3efbd6052b19 Mon Sep 17 00:00:00 2001 From: Aaron Shaw Date: Wed, 3 Jul 2024 13:05:36 +0100 Subject: [PATCH] Create compile-docker.yml --- .github/workflows/compile-docker.yml | 118 +++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .github/workflows/compile-docker.yml diff --git a/.github/workflows/compile-docker.yml b/.github/workflows/compile-docker.yml new file mode 100644 index 0000000..e1c31cc --- /dev/null +++ b/.github/workflows/compile-docker.yml @@ -0,0 +1,118 @@ +name: Compile Docker Images + +on: [push] + +jobs: + main: + strategy: + matrix: + include: + - board: "raspberrypi3-64" + arch: "arm64" + version: "v8" + - board: "generic-amd64" + arch: "amd64" + + runs-on: ubuntu-20.04 + permissions: + packages: write + contents: read + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: | + nebraltd/wingbits + ghcr.io/${{ github.repository }} + tags: | + type=sha,prefix=${{ matrix.arch }}- + type=sha,format=long,prefix=${{ matrix.arch }}- + type=raw,value=${{ matrix.arch }}-latest + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v3 + with: + build-args: | + BUILD_BOARD=${{ matrix.board }} + BUILD_ARCH=${{ matrix.arch }} + push: true + labels: ${{ steps.meta.outputs.labels }} + tags: ${{ steps.meta.outputs.tags }} + cache-from: type=registry,ref=nebraltd/wingbits:buildcache + cache-to: type=registry,ref=nebraltd/wingbits:buildcache,mode=max + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} + + multiarch: + needs: main + runs-on: ubuntu-20.04 + permissions: + packages: write + contents: read + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: | + nebraltd/wingbits + ghcr.io/${{ github.repository }} + flavor: | + latest=true + tags: | + type=sha,prefix= + type=sha,format=long,prefix= + + - name: Create multi-arch images + run: | + tags=(${{ steps.meta.outputs.tags }}) + docker buildx imagetools create -t ${tags[0]} -t ${tags[1]} -t ${tags[2]} nebraltd/wingbits:arm64-${{ github.sha }} nebraltd/wingbits:amd64-${{ github.sha }} + docker buildx imagetools create -t ${tags[3]} -t ${tags[4]} -t ${tags[5]} ghcr.io/nebraltd/wingbits:arm64-${{ github.sha }} ghcr.io/nebraltd/wingbits:amd64-${{ github.sha }} + + - name: Update repo description + uses: peter-evans/dockerhub-description@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + short-description: ${{ github.event.repository.description }}