name: 'Tag Build and Push Docker image' description: 'Tags verion in current repo, builds docker image and pushes it to registry' 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 }} token: description: 'repo auth token' required: true checkout: description: 'checkout repo first' default: 'true' tag: description: 'checkout repo first' default: 'true' runs: using: "composite" 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@fb186e80c08f14a2e56ed9105d4594562bff013f # v1.40.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@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 - name: Log into registry ${{ inputs.registry }} uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.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@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 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