From 553a386765c7b753e41078fa7af836dda504e8d1 Mon Sep 17 00:00:00 2001 From: Sella-GH <147769367+Sella-GH@users.noreply.github.com> Date: Thu, 16 Jan 2025 19:00:00 +0100 Subject: [PATCH] Consolidate the action --- .github/workflows/docker.yml | 322 ++--------------------------------- 1 file changed, 18 insertions(+), 304 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9920b606..0a07bf6e 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -94,175 +94,14 @@ jobs: with: include_lang: "C#,MSBuild script" - docker-build-amd: + docker-build: name: Build Docker Image For ${{ matrix.os }} - ${{ matrix.arch }} needs: [extract_meta] - runs-on: ubuntu-24.04 - strategy: - matrix: - include: - - os: linux - arch: amd64 - - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - - - name: Login to Docker Hub - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Docker meta - id: meta - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 - with: - flavor: latest=${{ contains(github.event.head_commit.message, '[release]') || contains(github.event.ref, 'rel/') }} - images: sellagh/azzybot - tags: type=raw,value=${{ needs.extract_meta.outputs.environment }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - - - name: Log into Docker Hub - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Build and push by digest - id: build - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d # v6.12.0 - env: - DOCKER_BUILD_SUMMARY: false - DOCKER_BUILD_RECORD_UPLOAD: false - with: - build-args: | - CONFIG=${{ needs.extract_meta.outputs.config }} - COMMIT=${{ github.sha }} - TIMESTAMP=${{ needs.extract_meta.outputs.datetime }} - LOC_CS=${{ needs.extract_meta.outputs.loc_cs }} - context: . - file: ${{ needs.extract_meta.outputs.dockerfile }} - labels: ${{ steps.meta.outputs.labels }} - platforms: ${{ matrix.os }}/${{ matrix.arch }} - outputs: type=image,name=sellagh/azzybot,push-by-digest=true,name-canonical=true,push=true - - - name: Export digest - run: | - mkdir -p /tmp/digests - digest="${{ steps.build.outputs.digest }}" - touch "/tmp/digests/${digest#sha256:}" - - - name: Upload digest - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: debian-${{ matrix.os }}-${{ matrix.arch }} - path: /tmp/digests/* - if-no-files-found: error - retention-days: 1 - - docker-build-alpine-amd: - name: Build Docker Alpine Image For ${{ matrix.os }} - ${{ matrix.arch }} - needs: [extract_meta] - runs-on: ubuntu-24.04 - strategy: - matrix: - include: - - os: linux - arch: amd64 - - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - - - name: Login to Docker Hub - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Docker meta - if: ${{ !contains(github.event.head_commit.message, '[release]') && !contains(github.event.head_commit.message, '[pre-release]') && !contains(github.event.ref, 'rel/') }} - id: meta - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 - with: - flavor: latest=false - images: sellagh/azzybot - tags: type=raw,value=${{ needs.extract_meta.outputs.environment_alpine }} - - - name: Docker meta - if: ${{ contains(github.event.head_commit.message, '[release]') || contains(github.event.head_commit.message, '[pre-release]') || contains(github.event.ref, 'rel/') }} - id: meta-latest - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 - with: - flavor: latest=false - images: sellagh/azzybot - tags: | - type=raw,value=${{ needs.extract_meta.outputs.environment_alpine }} - type=raw,value=latest-alpine - - - name: Set up QEMU - uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - - - name: Log into Docker Hub - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Build and push by digest - id: build - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d # v6.12.0 - env: - DOCKER_BUILD_SUMMARY: false - DOCKER_BUILD_RECORD_UPLOAD: false - with: - build-args: | - CONFIG=${{ needs.extract_meta.outputs.config }} - COMMIT=${{ github.sha }} - TIMESTAMP=${{ needs.extract_meta.outputs.datetime }} - LOC_CS=${{ needs.extract_meta.outputs.loc_cs }} - context: . - file: ${{ needs.extract_meta.outputs.dockerfile_alpine }} - labels: ${{ steps.meta.outputs.labels }} - platforms: ${{ matrix.os }}/${{ matrix.arch }} - outputs: type=image,name=sellagh/azzybot,push-by-digest=true,name-canonical=true,push=true - - - name: Export digest - run: | - mkdir -p /tmp/digests - digest="${{ steps.build.outputs.digest }}" - touch "/tmp/digests/${digest#sha256:}" - - - name: Upload digest - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: alpine-${{ matrix.os }}-${{ matrix.arch }} - path: /tmp/digests/* - if-no-files-found: error - retention-days: 1 - - docker-build-arm: - name: Build Docker Image For ${{ matrix.os }} - ${{ matrix.arch }} - needs: [extract_meta] - runs-on: ubuntu-24.04-arm + runs-on: ubuntu-24.04${{ matrix.arch == 'arm64' && '-arm' || '' }} strategy: matrix: - include: - - os: linux - arch: arm64 + os: [debian, alpine] + arch: [amd64, arm64] steps: - name: Checkout @@ -280,95 +119,11 @@ jobs: id: meta uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 with: - flavor: latest=${{ contains(github.event.head_commit.message, '[release]') || contains(github.event.ref, 'rel/') }} - images: sellagh/azzybot - tags: type=raw,value=${{ needs.extract_meta.outputs.environment }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - - - name: Log into Docker Hub - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Build and push by digest - id: build - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d # v6.12.0 - env: - DOCKER_BUILD_SUMMARY: false - DOCKER_BUILD_RECORD_UPLOAD: false - with: - build-args: | - CONFIG=${{ needs.extract_meta.outputs.config }} - COMMIT=${{ github.sha }} - TIMESTAMP=${{ needs.extract_meta.outputs.datetime }} - LOC_CS=${{ needs.extract_meta.outputs.loc_cs }} - context: . - file: ${{ needs.extract_meta.outputs.dockerfile }} - labels: ${{ steps.meta.outputs.labels }} - platforms: ${{ matrix.os }}/${{ matrix.arch }} - outputs: type=image,name=sellagh/azzybot,push-by-digest=true,name-canonical=true,push=true - - - name: Export digest - run: | - mkdir -p /tmp/digests - digest="${{ steps.build.outputs.digest }}" - touch "/tmp/digests/${digest#sha256:}" - - - name: Upload digest - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: debian-${{ matrix.os }}-${{ matrix.arch }} - path: /tmp/digests/* - if-no-files-found: error - retention-days: 1 - - docker-build-alpine-arm: - name: Build Docker Alpine Image For ${{ matrix.os }} - ${{ matrix.arch }} - needs: [extract_meta] - runs-on: ubuntu-24.04-arm - strategy: - matrix: - include: - - os: linux - arch: arm64 - - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - - - name: Login to Docker Hub - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Docker meta - if: ${{ !contains(github.event.head_commit.message, '[release]') && !contains(github.event.head_commit.message, '[pre-release]') && !contains(github.event.ref, 'rel/') }} - id: meta - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 - with: - flavor: latest=false - images: sellagh/azzybot - tags: type=raw,value=${{ needs.extract_meta.outputs.environment_alpine }} - - - name: Docker meta - if: ${{ contains(github.event.head_commit.message, '[release]') || contains(github.event.head_commit.message, '[pre-release]') || contains(github.event.ref, 'rel/') }} - id: meta-latest - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 - with: - flavor: latest=false + flavor: latest=${{ matrix.os == 'debian' && (contains(github.event.head_commit.message, '[release]') || contains(github.event.ref, 'rel/')) || 'false' }} images: sellagh/azzybot tags: | - type=raw,value=${{ needs.extract_meta.outputs.environment_alpine }} - type=raw,value=latest-alpine + type=raw,value=${{ matrix.os == 'debian' && needs.extract_meta.outputs.environment || needs.extract_meta.outputs.environment_alpine }} + ${{ (matrix.os == 'alpine' && contains(github.event.head_commit.message, '[release]') || contains(github.event.ref, 'rel/')) && 'type=raw,value=latest-alpine' || '' }} - name: Set up QEMU uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0 @@ -395,9 +150,9 @@ jobs: TIMESTAMP=${{ needs.extract_meta.outputs.datetime }} LOC_CS=${{ needs.extract_meta.outputs.loc_cs }} context: . - file: ${{ needs.extract_meta.outputs.dockerfile_alpine }} + file: ${{ matrix.os == 'debian' && needs.extract_meta.outputs.dockerfile || needs.extract_meta.outputs.dockerfile_alpine }} labels: ${{ steps.meta.outputs.labels }} - platforms: ${{ matrix.os }}/${{ matrix.arch }} + platforms: linux/${{ matrix.arch }} outputs: type=image,name=sellagh/azzybot,push-by-digest=true,name-canonical=true,push=true - name: Export digest @@ -409,7 +164,7 @@ jobs: - name: Upload digest uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: - name: alpine-${{ matrix.os }}-${{ matrix.arch }} + name: ${{ matrix.os }}-linux-${{ matrix.arch }} path: /tmp/digests/* if-no-files-found: error retention-days: 1 @@ -417,48 +172,17 @@ jobs: merge: name: Creating Docker Release runs-on: ubuntu-24.04 - needs: [extract_meta, docker-build-amd, docker-build-alpine-amd, docker-build-arm, docker-build-alpine-arm] - steps: - - name: Download digests - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 - with: - path: /tmp/digests - pattern: debian-* - merge-multiple: true - - - name: Login to Docker Hub - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - - - name: Docker meta - id: meta - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 - with: - flavor: latest=${{ contains(github.event.head_commit.message, '[release]') || contains(github.event.ref, 'rel/') }} - images: sellagh/azzybot - tags: type=raw,value=${{ needs.extract_meta.outputs.environment }} - - - name: Create manifest list and push - working-directory: /tmp/digests - run: | - docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ - $(printf 'sellagh/azzybot@sha256:%s ' *) + needs: [extract_meta, docker-build] + strategy: + matrix: + os: [debian, alpine] - merge-alpine: - name: Creating Docker Alpine Release - runs-on: ubuntu-24.04 - needs: [extract_meta, docker-build-amd, docker-build-alpine-amd, docker-build-arm, docker-build-alpine-arm] steps: - name: Download digests uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: path: /tmp/digests - pattern: alpine-* + pattern: ${{ matrix.os }}-* merge-multiple: true - name: Login to Docker Hub @@ -471,24 +195,14 @@ jobs: uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - name: Docker meta - if: ${{ !contains(github.event.head_commit.message, '[release]') && !contains(github.event.head_commit.message, '[pre-release]') && !contains(github.event.ref, 'rel/') }} id: meta uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 with: - flavor: latest=false - images: sellagh/azzybot - tags: type=raw,value=${{ needs.extract_meta.outputs.environment_alpine }} - - - name: Docker meta - if: ${{ contains(github.event.head_commit.message, '[release]') || contains(github.event.head_commit.message, '[pre-release]') || contains(github.event.ref, 'rel/') }} - id: meta-latest - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v3.6.1 - with: - flavor: latest=false + flavor: latest=${{ matrix.os == 'debian' && (contains(github.event.head_commit.message, '[release]') || contains(github.event.ref, 'rel/')) || 'false' }} images: sellagh/azzybot tags: | - type=raw,value=${{ needs.extract_meta.outputs.environment_alpine }} - type=raw,value=latest-alpine + type=raw,value=${{ matrix.os == 'debian' && needs.extract_meta.outputs.environment || needs.extract_meta.outputs.environment_alpine }} + ${{ (matrix.os == 'alpine' && contains(github.event.head_commit.message, '[release]') || contains(github.event.ref, 'rel/')) && 'type=raw,value=latest-alpine' || '' }} - name: Create manifest list and push working-directory: /tmp/digests