From 1325ec7992c9efcb6ef8ccbd616740807a304d63 Mon Sep 17 00:00:00 2001 From: Andreas Rocznik Date: Fri, 17 Jul 2026 10:48:46 +0300 Subject: [PATCH] Add .github/workflows/docker-build.yml --- .github/workflows/docker-build.yml | 90 ++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/docker-build.yml diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 0000000..0e82ce8 --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,90 @@ +name: 'Tag Build and Push Docker image' +description: 'Tags version in current repo, builds docker image and pushes it to registry' + +on: + workflow_call: + inputs: + registry: # id of input + description: 'docker regisry host name' + required: true + default: 'gitea.phadric.de' + cache-registry: # id of input + description: 'docker regisry host name' + required: true + default: 'imagecache.phadric.de' + image_name: + description: 'name of the dockerimage' + required: true + default: ${{ github.repository }} + checkout: + description: 'checkout repo first' + default: 'true' + tag: + description: 'checkout repo first' + default: 'true' + secrets: + token: + description: 'repo auth token' + required: true + +jobs: + steps: + - name: Checkout repository + if: ${{ inputs.checkout == 'true' }} + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + with: + fetch-depth: '0' + - name: Bump version and push tag + id: tag + if: ${{ inputs.tag == 'true' }} + uses: phadric/github-tag-action@a5250a59655e9f4b0350407380a92c73948f2aec # master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token + DEFAULT_BUMP: patch + GIT_API_TAGGING: false # dont use API + WITH_V: true + PRERELEASE: true + PRERELEASE_SUFFIX: ${{ github.ref_name }} + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0 + with: + flavor: | + latest=${{ github.ref_name == 'main' || github.ref_name == 'master' }} + tags: | + type=ref,event=branch + type=semver,pattern={{version}},value=${{steps.tag.outputs.tag}} + # output 0.1 + type=semver,pattern={{major}}.{{minor}},value=${{steps.tag.outputs.tag}} + # disabled if major zero + type=semver,pattern={{major}},value=${{steps.tag.outputs.tag}},enable=${{ !startsWith(steps.tag.outputs.tag, 'v0.') }} + images: ${{ inputs.registry }}/${{ inputs.image_name }} + - uses: int128/docker-build-cache-config-action@6b41b75cecc2e81696c50ae7c6c0300b51c2bee1 # v1.62.0 + id: cache + with: + image: ${{ inputs.cache-registry }}/${{ inputs.image_name }}-cache + extra-cache-to: image-manifest=true + - name: Setup Docker buildx + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 + - name: Log into registry ${{ inputs.registry }} + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 + with: + registry: ${{ inputs.registry }} + username: ${{ github.actor }} + password: ${{ inputs.token }} + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + platforms: linux/amd64 + labels: ${{ steps.meta.outputs.labels }} + cache-from: | + type=registry,ref=${{ inputs.cache-registry }}/${{ inputs.image_name }}-cache:latest + type=registry,ref=${{ inputs.cache-registry }}/${{ inputs.image_name }}-cache:${{ github.ref_name }} + ${{ steps.cache.outputs.cache-from }} + cache-to: | + ${{ steps.cache.outputs.cache-to }} + type=registry,ref=${{ inputs.cache-registry }}/${{ inputs.image_name }}-cache:latest,mode=max,image-manifest=true \ No newline at end of file