Skip to content

Commit

Permalink
Consolidate the action
Browse files Browse the repository at this point in the history
  • Loading branch information
Sella-GH committed Jan 16, 2025
1 parent 8925a7f commit 553a386
Showing 1 changed file with 18 additions and 304 deletions.
322 changes: 18 additions & 304 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -409,56 +164,25 @@ 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

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
Expand All @@ -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
Expand Down

0 comments on commit 553a386

Please sign in to comment.