From 794cc153d04f17beed9a7dc44f51b8e3fcee67eb Mon Sep 17 00:00:00 2001 From: RedStars071 Date: Wed, 6 Nov 2024 14:13:29 +0100 Subject: [PATCH] refactor(ci): update image tags and streamline workflows for container publishing --- .github/workflows/continuous-delivery.yml | 70 ++++------------------- .github/workflows/publish-stable.yml | 69 ++++------------------ 2 files changed, 22 insertions(+), 117 deletions(-) diff --git a/.github/workflows/continuous-delivery.yml b/.github/workflows/continuous-delivery.yml index 40619b738..9b0720379 100644 --- a/.github/workflows/continuous-delivery.yml +++ b/.github/workflows/continuous-delivery.yml @@ -14,19 +14,16 @@ on: env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} - LATEST_TAG: ${{ github.repository }}:latest - HASH_TAG: ${{ github.repository }}:${{ github.sha }} + LATEST_TAG: ghcr.io/${{ github.repository }}:latest + HASH_TAG: ghcr.io/${{ github.repository }}:${{ github.sha }} jobs: build: - name: Publish WolfStar image to container registries + name: Publish WolfStar latest image to container registry runs-on: ubuntu-latest steps: - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Checkout repository + uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -41,62 +38,19 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push by digest id: build uses: docker/build-push-action@v6 with: labels: ${{ steps.meta.outputs.labels }} + context: . outputs: type=image,name=${{ env.IMAGE_NAME }},push=true tags: | ${{ env.LATEST_TAG }} ${{ env.HASH_TAG }} - - - 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@v4 - 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@v4 - with: - path: /tmp/digests - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3.3.0 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - 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.IMAGE_NAME }}@sha256:%s ' *) - - - name: Inspect image - run: | - docker buildx imagetools inspect ${{ env.LATEST_TAG }} diff --git a/.github/workflows/publish-stable.yml b/.github/workflows/publish-stable.yml index 2637eac13..e3f43fe19 100644 --- a/.github/workflows/publish-stable.yml +++ b/.github/workflows/publish-stable.yml @@ -11,23 +11,17 @@ on: env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} - STABLE_TAG: ${{ github.repository }}:stable + STABLE_TAG: ghcr.io/${{ github.repository }}:latest jobs: build: - name: Publish WolfStar image to container registries + name: Publish WolfStar stable image to container registry runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: - ref: ${{ inputs.commit }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + ref: ${{ github.event.inputs.commit }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -42,61 +36,18 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push by digest id: build uses: docker/build-push-action@v6 with: labels: ${{ steps.meta.outputs.labels }} + context: . outputs: type=image,name=${{ env.IMAGE_NAME }},push=true tags: | ${{ env.STABLE_TAG }} - - - 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@v4 - 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@v4 - with: - path: /tmp/digests - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3.3.0 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - 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.IMAGE_NAME }}@sha256:%s ' *) - - - name: Inspect image - run: | - docker buildx imagetools inspect ${{ env.STABLE_TAG }}