From d508bc41bfca4446cabab1f1b8bb50a6f49205cd Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Mon, 29 Jun 2026 10:59:17 +0100 Subject: [PATCH] Fix PR docker CI when the base image changes (#6809) # Description of Changes - Fix PR CI for base-image changes: the embedded build's buildx container builder could not resolve the locally-built `stirling-pdf-base:pr-test` and tried to pull it from a registry, failing the build - `test-build-docker.yml`: when the base changed, build the embedded image with the docker driver (`docker build`) so the locally-built base resolves from the daemon image store - `docker-compose-tests.yml`: when the base changed, skip the buildx container builder + gha cache so `test.sh`'s local base build resolves via the default docker driver --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs (if functionality has heavily changed) - [ ] I have read the section Add New Translation Tags (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally --------- Co-authored-by: James Brunton --- .github/workflows/docker-compose-tests.yml | 8 ++++++++ .github/workflows/test-build-docker.yml | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-compose-tests.yml b/.github/workflows/docker-compose-tests.yml index faa3c2a280..155b990b32 100644 --- a/.github/workflows/docker-compose-tests.yml +++ b/.github/workflows/docker-compose-tests.yml @@ -64,11 +64,19 @@ jobs: gradle-version: 9.6.0 cache-disabled: true + # When the PR changes the base image, test.sh builds it locally + # (stirling-pdf-base:local) into the daemon image store. A buildx + # container builder can't see that store, so skip it here and let + # `docker buildx build` fall back to the default docker driver, which + # resolves the local base. The gha cache backend is also skipped (its + # runtime token isn't exposed) since the docker driver can't use it. - name: Set up Docker Buildx + if: inputs.docker-base-changed != 'true' uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 # Expose ACTIONS_RUNTIME_TOKEN / ACTIONS_RESULTS_URL for docker buildx type=gha cache backend. - name: Expose GitHub runtime for Buildx cache + if: inputs.docker-base-changed != 'true' uses: crazy-max/ghaction-github-runtime@04d248b84655b509d8c44dc1d6f990c879747487 # v4.0.0 - name: Install Docker Compose diff --git a/.github/workflows/test-build-docker.yml b/.github/workflows/test-build-docker.yml index 4fd00a494c..b6a081bb1e 100644 --- a/.github/workflows/test-build-docker.yml +++ b/.github/workflows/test-build-docker.yml @@ -155,6 +155,19 @@ jobs: echo "platforms=linux/amd64,linux/arm64/v8" >> "$GITHUB_OUTPUT" fi + # Base-changed PRs build the embedded image with the local docker driver + # so the locally-built stirling-pdf-base:pr-test (in the daemon image + # store) resolves. A buildx container builder cannot see it and would try + # to pull it from a registry, which fails. Single-platform, no gha cache. + - name: Build ${{ matrix.docker-rev }} against local base (PR base change) + if: github.event_name == 'pull_request' && inputs.docker-base-changed == 'true' + run: | + DOCKER_BUILDKIT=1 docker build \ + --build-arg BASE_IMAGE=${{ steps.build-params.outputs.base_image }} \ + --file ./${{ matrix.docker-rev }} \ + --tag stirling-pdf-embedded:pr-test \ + . + - name: Build ${{ matrix.docker-rev }} (Depot) if: env.USE_DEPOT == 'true' uses: depot/build-push-action@98e78adca7817480b8185f474a400b451d74e287 # v1.16.0 @@ -169,8 +182,10 @@ jobs: provenance: true sbom: true + # Fork PRs that did NOT change the base use the buildx container builder + # (multi-platform + gha cache) against the published base image. - name: Build ${{ matrix.docker-rev }} (Docker fork fallback) - if: env.USE_DEPOT != 'true' + if: env.USE_DEPOT != 'true' && inputs.docker-base-changed != 'true' uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 with: builder: ${{ steps.buildx.outputs.name }}