From 372f9b6714ee4fa9d7c65c2b7186aa1d0cb3f54c Mon Sep 17 00:00:00 2001 From: Stefanuk12 <42220813+Stefanuk12@users.noreply.github.com> Date: Fri, 18 Apr 2025 00:34:35 +0100 Subject: [PATCH] refactor: publish registry image --- .github/workflows/registry.yaml | 117 ++++++++------------------------ 1 file changed, 29 insertions(+), 88 deletions(-) diff --git a/.github/workflows/registry.yaml b/.github/workflows/registry.yaml index d013ec2..b1c37af 100644 --- a/.github/workflows/registry.yaml +++ b/.github/workflows/registry.yaml @@ -33,109 +33,50 @@ jobs: version: ${{ steps.read_toml.outputs.value }} registry_image: "ghcr.io/${{ steps.repository_owner.outputs.lowercase }}/registry" - build: + publish-registry-image: + name: Build and publish Docker package runs-on: ubuntu-latest permissions: packages: write - needs: - - prepare - strategy: - fail-fast: false - matrix: - platform: - - linux /amd64 - - linux/arm64 + needs: [ prepare ] + env: + VERSION: ${{ needs.prepare.outputs.version }} steps: - - name: Prepare - run: | - platform=${{ matrix.platform }} - echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + - name: Checkout repository + uses: actions/checkout@v3 - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ needs.prepare.outputs.registry_image }} - - - name: Login to GHCR + - name: Log in to the Container registry uses: docker/login-action@v3 with: registry: https://ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Set Tags + id: set_tags + shell: bash + run: | + TAGS=$({ + echo "${{ needs.prepare.outputs.registry_image }}:${{ github.sha }}" + echo "${{ needs.prepare.outputs.registry_image }}:${{ needs.prepare.outputs.version }}" + if [[ "${{ needs.prepare.outputs.version }}" != *"-"* ]]; then + echo "${{ needs.prepare.outputs.registry_image }}:latest" + fi + }) + echo "tags<> $GITHUB_OUTPUT + echo "$TAGS" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - - name: Build and push by digest - id: build + + - name: Build and push Docker image uses: docker/build-push-action@v6 with: - platforms: ${{ matrix.platform }} - labels: ${{ steps.meta.outputs.labels }} - tags: ${{ needs.prepare.outputs.registry_image }} - outputs: type=image,push-by-digest=true,name-canonical=true,push=true - - - name: Export digest - run: | - mkdir -p ${{ runner.temp }}/digests - digest="${{ steps.build.outputs.digest }}" - touch "${{ runner.temp }}/digests/${digest#sha256:}" - - - name: Upload digest - uses: actions/upload-artifact@v4 - with: - name: digests-${{ env.PLATFORM_PAIR }} - path: ${{ runner.temp }}/digests/* - if-no-files-found: error - retention-days: 1 - - merge: - runs-on: ubuntu-latest - permissions: - packages: write - needs: - - prepare - - build - steps: - - name: Download digests - uses: actions/download-artifact@v4 - with: - path: ${{ runner.temp }}/digests - pattern: digests-* - merge-multiple: true - - - name: Login to GHCR - uses: docker/login-action@v3 - with: - registry: https://ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Set Tags - id: set_tags - shell: bash - run: | - TAGS=$( { - echo "-t ${{ needs.prepare.outputs.registry_image }}:${{ github.sha }}"; - echo "-t ${{ needs.prepare.outputs.registry_image }}:${{ needs.prepare.outputs.version }}"; - if [[ "${{ needs.prepare.outputs.version }}" != *"-"* ]]; then - echo "-t ${{ needs.prepare.outputs.registry_image }}:latest"; - fi; - } | paste -sd " " -) - echo "tags=$TAGS" >> $GITHUB_OUTPUT - - - name: Create manifest list and push - working-directory: ${{ runner.temp }}/digests - run: | - docker buildx imagetools create ${{ steps.set_tags.outputs.tags }} $(printf '${{ needs.prepare.outputs.registry_image }}@sha256:%s ' *) - - - name: Inspect image - run: | - docker buildx imagetools inspect ${{ needs.prepare.outputs.registry_image }}:${{ needs.prepare.outputs.version }} + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.set_tags.outputs.tags }} \ No newline at end of file