diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a9d57328..5bee3e71 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,118 +1,118 @@ -# --- -# name: Workflow - Release - -# on: -# workflow_dispatch: -# inputs: -# release_tag_name: -# description: "Release tag name" -# type: string -# required: true -# workflow_call: -# inputs: -# release_tag_name: -# description: "Release tag name" -# type: string -# required: true -# release: -# types: [published] - -# env: -# REGISTRY_IMAGE: ghcr.io/${{ github.repository }} - -# jobs: -# build: -# runs-on: ubuntu-latest -# strategy: -# fail-fast: false -# matrix: -# platform: -# - linux/amd64 -# - linux/arm64 -# steps: -# - name: Checkout -# uses: actions/checkout@v3 - -# - name: Docker meta -# id: meta -# uses: docker/metadata-action@v4 -# with: -# images: ${{ env.REGISTRY_IMAGE }} -# tags: | -# type=raw,value=${{ inputs.release_tag_name }} - -# - name: Set up QEMU -# uses: docker/setup-qemu-action@v2 - -# - name: Set up Docker Buildx -# uses: docker/setup-buildx-action@v2 - -# - name: Login to GitHub Container Registry -# uses: docker/login-action@v2 -# with: -# registry: ghcr.io -# username: ${{ github.actor }} -# password: ${{ secrets.GITHUB_TOKEN }} - -# - name: Build and push by digest -# id: build -# uses: docker/build-push-action@v4 -# with: -# context: . -# file: Dockerfile -# platforms: ${{ matrix.platform }} -# labels: ${{ steps.meta.outputs.labels }} -# outputs: -# type=image,name=${{ env.REGISTRY_IMAGE -# }},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@v3 -# with: -# name: digests -# path: /tmp/digests/* -# if-no-files-found: error -# retention-days: 1 - -# merge: -# runs-on: ubuntu-latest -# needs: -# - build -# steps: -# - name: Download digests -# uses: actions/download-artifact@v3 -# with: -# name: digests -# path: /tmp/digests - -# - name: Set up Docker Buildx -# uses: docker/setup-buildx-action@v2 - -# - name: Docker meta -# id: meta -# uses: docker/metadata-action@v4 -# with: -# images: ${{ env.REGISTRY_IMAGE }} - -# - name: Login to GitHub Container Registry -# uses: docker/login-action@v2 -# with: -# registry: ghcr.io -# username: ${{ github.actor }} -# password: ${{ secrets.GITHUB_TOKEN }} - -# - 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 '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) - -# - name: Inspect image -# run: | -# docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }} +--- +name: Workflow - Release + +on: + workflow_dispatch: + inputs: + release_tag_name: + description: "Release tag name" + type: string + required: true + workflow_call: + inputs: + release_tag_name: + description: "Release tag name" + type: string + required: true + release: + types: [published] + +env: + REGISTRY_IMAGE: ghcr.io/${{ github.repository }} + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + platform: + - linux/amd64 + - linux/arm64 + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY_IMAGE }} + tags: | + type=raw,value=${{ inputs.release_tag_name }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push by digest + id: build + uses: docker/build-push-action@v4 + with: + context: . + file: Dockerfile + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} + outputs: + type=image,name=${{ env.REGISTRY_IMAGE + }},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@v3 + with: + name: digests + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + merge: + runs-on: ubuntu-latest + needs: + - build + steps: + - name: Download digests + uses: actions/download-artifact@v3 + with: + name: digests + path: /tmp/digests + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY_IMAGE }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - 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 '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) + + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}