name: Release to Docker Hub on: release: types: [published] jobs: release: name: Release to Docker Hub runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v3 - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set raw tag id: get_tag run: | TAG=${{ github.event.release.tag_name }} echo "build_tag=${TAG#v}" >> $GITHUB_OUTPUT - name: Set suffix uses: actions/github-script@v6 id: suffix with: result-encoding: string script: | const fullTag = '${{ github.event.release.tag_name }}'; if (fullTag.includes('-')) { const [, fullSuffix] = fullTag.split('-'); const [suffix] = fullSuffix.split('.'); return `-${suffix}`; } else { return ''; } - name: Set Docker tags and labels id: docker_meta uses: docker/metadata-action@v4 with: images: dashpay/dashd tags: | type=match,pattern=v(\d+),group=1 type=match,pattern=v(\d+.\d+),group=1 type=match,pattern=v(\d+.\d+.\d+),group=1 type=match,pattern=v(.*),group=1,suffix= flavor: | suffix=${{ steps.suffix.outputs.result }},onlatest=true - name: Build and push id: docker_build uses: docker/build-push-action@v3 with: context: ./contrib/containers/deploy file: ./contrib/containers/deploy/Dockerfile.GitHubActions.Release push: true provenance: mode=max sbom: true tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }} build-args: | TAG=${{ steps.get_tag.outputs.build_tag }} GITHUB_REPOSITORY=${{ github.repository }} cache-from: type=gha cache-to: type=gha,mode=max platforms: linux/amd64,linux/arm64 - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }}