diff --git a/.github/workflows/README.md b/.github/workflows/README.md index e0af5b2..5c3c966 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -30,15 +30,17 @@ This workflow runs on all branches and pull requests. It: ### Docker Build and Push (`docker-build.yml`) -This workflow builds and pushes Docker images to GitHub Container Registry (ghcr.io), but only when changes are merged to the main branch. +This workflow builds Docker images on pushes and pull requests, and pushes to GitHub Container Registry (ghcr.io) when permissions allow (main/tags and same-repo PRs). **When it runs:** - On push to the main branch - On tag creation (v*) +- On pull requests (build + scan; push only for same-repo PRs) **Key features:** - Builds multi-architecture images (amd64 and arm64) -- Pushes images only on main branch, not for PRs +- Pushes images for main/tags and same-repo PRs +- Skips registry push for fork PRs (avoids package write permission failures) - Uses build caching to speed up builds - Creates multiple tags for each image (latest, semver, sha) diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index d0a2e9c..d61a24e 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -55,6 +55,7 @@ jobs: driver-opts: network=host - name: Log into registry + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} @@ -105,7 +106,7 @@ jobs: with: context: . platforms: linux/amd64,linux/arm64 - push: true + push: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha @@ -128,13 +129,14 @@ jobs: # Wait for image to be available in registry - name: Wait for image availability + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository run: | echo "Waiting for image to be available in registry..." sleep 5 # Add comment to PR with image details - name: Comment PR with image tag - if: github.event_name == 'pull_request' + if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }}