diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 39bd3e5..e8da11a 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -2,11 +2,14 @@ name: Build and Publish Docker Image on: push: - branches: [ "main" ] - tags: [ "v*" ] + branches: + - main + tags: + - "v*" pull_request: env: + REGISTRY: ghcr.io IMAGE_NAME: meshcore-multitcp jobs: @@ -18,30 +21,36 @@ jobs: packages: write steps: - - name: Checkout repo + - name: Checkout uses: actions/checkout@v4 - - name: Log in to GitHub Container Registry + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GHCR uses: docker/login-action@v3 with: - registry: ghcr.io + registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata (tags, labels) - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository_owner }}/meshcore-multitcp - tags: | - type=ref,event=branch - type=ref,event=tag - type=sha - type=raw,value=latest,enable={{is_default_branch}} + - name: Determine image tags + id: vars + shell: bash + run: | + if [[ "${GITHUB_REF}" == refs/tags/* ]]; then + TAG="${GITHUB_REF#refs/tags/}" + echo "tags=${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${TAG}" >> "$GITHUB_OUTPUT" + else + echo "tags=${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest" >> "$GITHUB_OUTPUT" + fi + echo "sha_tag=${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:sha-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" - - name: Build and push Docker image - uses: docker/build-push-action@v5 + - name: Build and push + uses: docker/build-push-action@v6 with: context: . push: true - tags: ${{ steps.meta.outputs.tag + tags: | + ${{ steps.vars.outputs.tags }} + ${{ steps.vars.outputs.sha_tag }}