name: 'Tag Build and Push Docker image' on: workflow_call: inputs: registry: # id of input description: 'docker regisry host name' type: string default: 'gitea.phadric.de' cache-registry: # id of input description: 'docker regisry host name' default: 'imagecache.phadric.de' type: string image_name: description: 'name of the dockerimage' required: true type: string checkout: description: 'checkout repo first' default: 'true' type: string tag: description: 'checkout repo first' default: 'true' type: string # secrets: # TOKEN: # description: 'repo auth token' # required: true jobs: build: runs-on: slim steps: - name: Checkout repository if: ${{ inputs.checkout == 'true' }} uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 with: fetch-depth: '0' - name: Bump version and push tag id: tag if: ${{ inputs.tag == 'true' }} uses: anothrNick/github-tag-action@4ed44965e0db8dab2b466a16da04aec3cc312fd8 # 1.75.0 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@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.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@d1b27ffbf29fb93b7239130db030c702198fd52b # v1.64.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: ${{ secrets.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