From 7a89444a8f89a122131c78adbfd102194dbf2950 Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Fri, 16 Jan 2026 08:50:12 +0000 Subject: [PATCH 01/15] Add Docker build workflow on release --- ...g.yml => docker_firedrake-parmmg_main.yml} | 11 ++-- .../docker_firedrake-parmmg_release.yml | 61 +++++++++++++++++++ .github/workflows/reusable_docker_build.yml | 6 +- 3 files changed, 72 insertions(+), 6 deletions(-) rename .github/workflows/{docker_firedrake-parmmg.yml => docker_firedrake-parmmg_main.yml} (89%) create mode 100644 .github/workflows/docker_firedrake-parmmg_release.yml diff --git a/.github/workflows/docker_firedrake-parmmg.yml b/.github/workflows/docker_firedrake-parmmg_main.yml similarity index 89% rename from .github/workflows/docker_firedrake-parmmg.yml rename to .github/workflows/docker_firedrake-parmmg_main.yml index ae4d6b9..d0aae75 100644 --- a/.github/workflows/docker_firedrake-parmmg.yml +++ b/.github/workflows/docker_firedrake-parmmg_main.yml @@ -1,12 +1,11 @@ -name: Build Firedrake Docker container with (Par)Mmg +name: Build Firedrake Docker container with (Par)Mmg (main) on: # Check that Docker build succeeds when these files get changed in an open PR pull_request: paths: - '.github/workflows/reusable_docker_build.yml' - - '.github/workflows/docker_firedrake-parmmg.yml' - - '.github/workflows/reusable_test_suite.yml' + - '.github/workflows/docker_firedrake-parmmg_main.yml' - 'docker/Dockerfile.firedrake-parmmg' - 'docker/Dockerfile.firedrake-um2n' @@ -16,8 +15,7 @@ on: - main paths: - '.github/workflows/reusable_docker_build.yml' - - '.github/workflows/docker_firedrake-parmmg.yml' - - '.github/workflows/reusable_test_suite.yml' + - '.github/workflows/docker_firedrake-parmmg_main.yml' - 'docker/Dockerfile.firedrake-parmmg' - 'docker/Dockerfile.firedrake-um2n' @@ -47,6 +45,7 @@ jobs: dockerfile-path: 'docker/Dockerfile.vanilla' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base:latest' save-docker-image-artifact: 'firedrake-parmmg-base' + firedrake-branch: 'main' docker_parmmg: permissions: @@ -60,6 +59,7 @@ jobs: docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:latest' load-docker-image-artifact: 'firedrake-parmmg-base' save-docker-image-artifact: 'firedrake-parmmg' + firedrake-branch: 'main' docker_um2n: permissions: @@ -72,3 +72,4 @@ jobs: dockerfile-path: 'docker/Dockerfile.firedrake-um2n' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-um2n:latest' load-docker-image-artifact: 'firedrake-parmmg' + firedrake-branch: 'main' diff --git a/.github/workflows/docker_firedrake-parmmg_release.yml b/.github/workflows/docker_firedrake-parmmg_release.yml new file mode 100644 index 0000000..ebb10e4 --- /dev/null +++ b/.github/workflows/docker_firedrake-parmmg_release.yml @@ -0,0 +1,61 @@ +name: Build Firedrake Docker container with (Par)Mmg (release) + +on: + # Check that Docker build succeeds when these files get changed in an open PR + pull_request: + paths: + - '.github/workflows/reusable_docker_build.yml' + - '.github/workflows/docker_firedrake-parmmg_release.yml' + - 'docker/Dockerfile.firedrake-parmmg' + - 'docker/Dockerfile.firedrake-um2n' + + # Build and push the Docker container when these files get changed on the main branch + push: + branches: + - main + paths: + - '.github/workflows/reusable_docker_build.yml' + - '.github/workflows/docker_firedrake-parmmg_release.yml' + - 'docker/Dockerfile.firedrake-parmmg' + - 'docker/Dockerfile.firedrake-um2n' + + # Run test suite at 1AM on the first of the month + schedule: + - cron: '0 1 1 * *' + + # Manually trigger the workflow + workflow_dispatch: + +permissions: {} + +# Stop the workflow if a new run is requested +concurrency: + group: $${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + docker_base: + permissions: + packages: write + uses: ./.github/workflows/reusable_docker_build.yml + with: + # use Dockerfile.vanilla from firedrake to build firedrake-parmmg-base image + # which contains a build of petsc+firedrake with (Par)Mmg libraries included + dockerfile-repo: 'firedrakeproject/firedrake' + dockerfile-path: 'docker/Dockerfile.vanilla' + docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base-release:latest' + save-docker-image-artifact: 'firedrake-parmmg-base-release' + firedrake-branch: 'release' + + docker_parmmg: + permissions: + packages: write + uses: ./.github/workflows/reusable_docker_build.yml + needs: docker_base + with: + # starting from firedrake-parmmg-base, build firedrake-parmmg image + # which includes Animate, Movement, Goalie, and Thetis packages + dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' + docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-release:latest' + load-docker-image-artifact: 'firedrake-parmmg-base-release' + firedrake-branch: 'release' diff --git a/.github/workflows/reusable_docker_build.yml b/.github/workflows/reusable_docker_build.yml index 52de499..9d003f2 100644 --- a/.github/workflows/reusable_docker_build.yml +++ b/.github/workflows/reusable_docker_build.yml @@ -24,6 +24,10 @@ on: description: 'Before the build, load this image as artifact' required: false type: string + firedrake-branch: + description: 'Firedrake branch to build' + required: true + type: string permissions: {} @@ -90,7 +94,7 @@ jobs: tags: ${{ inputs.docker-image-tag }} build-args: | ARCH=default - BRANCH=main + BRANCH=${{ inputs.firedrake-branch }} PETSC_EXTRA_ARGS=--download-eigen --download-metis --download-parmetis --download-mmg --download-parmmg --download-ptscotch - name: Save Docker image From 29f11c8ebbdf32f73612ad59f2cc02fb53688692 Mon Sep 17 00:00:00 2001 From: Stephan Kramer Date: Fri, 16 Jan 2026 13:46:33 +0000 Subject: [PATCH 02/15] Checkout Dockerfile from right firedrake branch --- .github/workflows/docker_firedrake-parmmg_main.yml | 4 +--- .../workflows/docker_firedrake-parmmg_release.yml | 4 +--- .github/workflows/reusable_docker_build.yml | 14 +++++++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/docker_firedrake-parmmg_main.yml b/.github/workflows/docker_firedrake-parmmg_main.yml index d0aae75..c9f1033 100644 --- a/.github/workflows/docker_firedrake-parmmg_main.yml +++ b/.github/workflows/docker_firedrake-parmmg_main.yml @@ -42,10 +42,10 @@ jobs: # use Dockerfile.vanilla from firedrake to build firedrake-parmmg-base image # which contains a build of petsc+firedrake with (Par)Mmg libraries included dockerfile-repo: 'firedrakeproject/firedrake' + dockerfile-branch: 'main' dockerfile-path: 'docker/Dockerfile.vanilla' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base:latest' save-docker-image-artifact: 'firedrake-parmmg-base' - firedrake-branch: 'main' docker_parmmg: permissions: @@ -59,7 +59,6 @@ jobs: docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:latest' load-docker-image-artifact: 'firedrake-parmmg-base' save-docker-image-artifact: 'firedrake-parmmg' - firedrake-branch: 'main' docker_um2n: permissions: @@ -72,4 +71,3 @@ jobs: dockerfile-path: 'docker/Dockerfile.firedrake-um2n' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-um2n:latest' load-docker-image-artifact: 'firedrake-parmmg' - firedrake-branch: 'main' diff --git a/.github/workflows/docker_firedrake-parmmg_release.yml b/.github/workflows/docker_firedrake-parmmg_release.yml index ebb10e4..2093504 100644 --- a/.github/workflows/docker_firedrake-parmmg_release.yml +++ b/.github/workflows/docker_firedrake-parmmg_release.yml @@ -42,10 +42,9 @@ jobs: # use Dockerfile.vanilla from firedrake to build firedrake-parmmg-base image # which contains a build of petsc+firedrake with (Par)Mmg libraries included dockerfile-repo: 'firedrakeproject/firedrake' - dockerfile-path: 'docker/Dockerfile.vanilla' + dockerfile-branch: 'release' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base-release:latest' save-docker-image-artifact: 'firedrake-parmmg-base-release' - firedrake-branch: 'release' docker_parmmg: permissions: @@ -58,4 +57,3 @@ jobs: dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-release:latest' load-docker-image-artifact: 'firedrake-parmmg-base-release' - firedrake-branch: 'release' diff --git a/.github/workflows/reusable_docker_build.yml b/.github/workflows/reusable_docker_build.yml index 9d003f2..96506db 100644 --- a/.github/workflows/reusable_docker_build.yml +++ b/.github/workflows/reusable_docker_build.yml @@ -8,6 +8,11 @@ on: default: ${{ github.repository }} required: false type: string + dockerfile-branch: + description: 'Branch of repo containing Dockerfile' + required: false + default: $${{ github.head }} + type: string dockerfile-path: description: 'Path to the Dockerfile to be built' required: true @@ -24,10 +29,6 @@ on: description: 'Before the build, load this image as artifact' required: false type: string - firedrake-branch: - description: 'Firedrake branch to build' - required: true - type: string permissions: {} @@ -45,6 +46,7 @@ jobs: with: persist-credentials: false repository: ${{ inputs.dockerfile-repo }} + ref: $${{ inputs.dockerfile-branch }} sparse-checkout: ${{ inputs.dockerfile-path }} sparse-checkout-cone-mode: false path: . @@ -92,9 +94,11 @@ jobs: no-cache: true file: ${{ inputs.dockerfile-path }} tags: ${{ inputs.docker-image-tag }} + # build-args are only used by firedrake's Dockerfile.vanilla + # in which case the branch to build is the same as the Dockerfile is from build-args: | ARCH=default - BRANCH=${{ inputs.firedrake-branch }} + BRANCH=${{ inputs.dockerfile-branch }} PETSC_EXTRA_ARGS=--download-eigen --download-metis --download-parmetis --download-mmg --download-parmmg --download-ptscotch - name: Save Docker image From 82f471919ff07d3b3979fb5d56cbfb679a4c6841 Mon Sep 17 00:00:00 2001 From: Stephan Kramer Date: Fri, 16 Jan 2026 13:49:10 +0000 Subject: [PATCH 03/15] Accidentally removed line --- .github/workflows/docker_firedrake-parmmg_release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker_firedrake-parmmg_release.yml b/.github/workflows/docker_firedrake-parmmg_release.yml index 2093504..a2e0236 100644 --- a/.github/workflows/docker_firedrake-parmmg_release.yml +++ b/.github/workflows/docker_firedrake-parmmg_release.yml @@ -42,6 +42,7 @@ jobs: # use Dockerfile.vanilla from firedrake to build firedrake-parmmg-base image # which contains a build of petsc+firedrake with (Par)Mmg libraries included dockerfile-repo: 'firedrakeproject/firedrake' + dockerfile-path: 'docker/Dockerfile.vanilla' dockerfile-branch: 'release' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base-release:latest' save-docker-image-artifact: 'firedrake-parmmg-base-release' From f1dfb2e27931c883b66c0191a5f73383c6e09f42 Mon Sep 17 00:00:00 2001 From: Stephan Kramer Date: Fri, 16 Jan 2026 13:52:10 +0000 Subject: [PATCH 04/15] head_ref not head --- .github/workflows/reusable_docker_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable_docker_build.yml b/.github/workflows/reusable_docker_build.yml index 96506db..b6a3220 100644 --- a/.github/workflows/reusable_docker_build.yml +++ b/.github/workflows/reusable_docker_build.yml @@ -11,7 +11,7 @@ on: dockerfile-branch: description: 'Branch of repo containing Dockerfile' required: false - default: $${{ github.head }} + default: $${{ github.head_ref }} type: string dockerfile-path: description: 'Path to the Dockerfile to be built' From 86e161132dd1a33ea77b75b30714de37e181a571 Mon Sep 17 00:00:00 2001 From: Stephan Kramer Date: Fri, 16 Jan 2026 15:04:46 +0000 Subject: [PATCH 05/15] Single dollar! --- .github/workflows/reusable_docker_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable_docker_build.yml b/.github/workflows/reusable_docker_build.yml index b6a3220..d606dc0 100644 --- a/.github/workflows/reusable_docker_build.yml +++ b/.github/workflows/reusable_docker_build.yml @@ -11,7 +11,7 @@ on: dockerfile-branch: description: 'Branch of repo containing Dockerfile' required: false - default: $${{ github.head_ref }} + default: ${{ github.head_ref }} type: string dockerfile-path: description: 'Path to the Dockerfile to be built' @@ -46,7 +46,7 @@ jobs: with: persist-credentials: false repository: ${{ inputs.dockerfile-repo }} - ref: $${{ inputs.dockerfile-branch }} + ref: ${{ inputs.dockerfile-branch }} sparse-checkout: ${{ inputs.dockerfile-path }} sparse-checkout-cone-mode: false path: . From cfe4c02ea71356a024204f706bbe52621ed0906d Mon Sep 17 00:00:00 2001 From: Stephan Kramer Date: Fri, 16 Jan 2026 15:29:10 +0000 Subject: [PATCH 06/15] Allow longer artifact names. --- .github/workflows/reusable_docker_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable_docker_build.yml b/.github/workflows/reusable_docker_build.yml index d606dc0..3d8b40d 100644 --- a/.github/workflows/reusable_docker_build.yml +++ b/.github/workflows/reusable_docker_build.yml @@ -61,7 +61,7 @@ jobs: - name: Load previously built Docker image if: ${{ inputs.load-docker-image-artifact != null }} run: | - if [[ ! "${{ inputs.load-docker-image-artifact }}" =~ ^firedrake-[a-z-]{1,11}$ ]]; then + if [[ ! "${{ inputs.load-docker-image-artifact }}" =~ ^firedrake-[a-z-]{1,19}$ ]]; then echo "Invalid input for load-docker-image-artifact" exit 1 fi @@ -104,7 +104,7 @@ jobs: - name: Save Docker image if: ${{ inputs.save-docker-image-artifact != null }} run: | - if [[ ! "${{ inputs.save-docker-image-artifact }}" =~ ^firedrake-[a-z-]{1,11}$ ]]; then + if [[ ! "${{ inputs.save-docker-image-artifact }}" =~ ^firedrake-[a-z-]{1,19}$ ]]; then echo "Invalid input for save-docker-image-artifact" exit 1 fi From a9b6d6d99de6be7796c616038fa05f7d4f30dfd8 Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Tue, 20 Jan 2026 08:43:24 +0000 Subject: [PATCH 07/15] Provide and use branch arg for firedrake-parmmg --- .github/workflows/docker_firedrake-parmmg_main.yml | 3 ++- .github/workflows/docker_firedrake-parmmg_release.yml | 1 + docker/Dockerfile.firedrake-parmmg | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker_firedrake-parmmg_main.yml b/.github/workflows/docker_firedrake-parmmg_main.yml index c9f1033..dc7c809 100644 --- a/.github/workflows/docker_firedrake-parmmg_main.yml +++ b/.github/workflows/docker_firedrake-parmmg_main.yml @@ -42,8 +42,8 @@ jobs: # use Dockerfile.vanilla from firedrake to build firedrake-parmmg-base image # which contains a build of petsc+firedrake with (Par)Mmg libraries included dockerfile-repo: 'firedrakeproject/firedrake' - dockerfile-branch: 'main' dockerfile-path: 'docker/Dockerfile.vanilla' + dockerfile-branch: 'main' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base:latest' save-docker-image-artifact: 'firedrake-parmmg-base' @@ -56,6 +56,7 @@ jobs: # starting from firedrake-parmmg-base, build firedrake-parmmg image # which includes Animate, Movement, Goalie, and Thetis packages dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' + dockerfile-branch: 'main' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:latest' load-docker-image-artifact: 'firedrake-parmmg-base' save-docker-image-artifact: 'firedrake-parmmg' diff --git a/.github/workflows/docker_firedrake-parmmg_release.yml b/.github/workflows/docker_firedrake-parmmg_release.yml index a2e0236..b13e15e 100644 --- a/.github/workflows/docker_firedrake-parmmg_release.yml +++ b/.github/workflows/docker_firedrake-parmmg_release.yml @@ -56,5 +56,6 @@ jobs: # starting from firedrake-parmmg-base, build firedrake-parmmg image # which includes Animate, Movement, Goalie, and Thetis packages dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' + dockerfile-branch: 'release' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-release:latest' load-docker-image-artifact: 'firedrake-parmmg-base-release' diff --git a/docker/Dockerfile.firedrake-parmmg b/docker/Dockerfile.firedrake-parmmg index 856aa00..0210779 100644 --- a/docker/Dockerfile.firedrake-parmmg +++ b/docker/Dockerfile.firedrake-parmmg @@ -2,6 +2,9 @@ # and with the main mesh-adaptation packages installed in /root FROM ghcr.io/mesh-adaptation/firedrake-parmmg-base:latest +# Which branch is to be used across all repositories? +ARG BRANCH="main" + WORKDIR /root # Install Thetis @@ -12,6 +15,9 @@ RUN git clone https://github.com/mesh-adaptation/adapt_common.git && \ git clone https://github.com/mesh-adaptation/animate.git && \ git clone https://github.com/mesh-adaptation/movement.git && \ git clone https://github.com/mesh-adaptation/goalie.git && \ + cd animate && git checkout ${BRANCH} && cd .. && \ + cd movement && git checkout ${BRANCH} && cd .. && \ + cd goalie && git checkout ${BRANCH} && cd .. && \ cd animate && git submodule init && git submodule update && cd .. && \ cd movement && git submodule init && git submodule update && cd .. && \ pip install -e adapt_common[dev] && \ From d0907b25524562e1dfd0919a70166cf56aac993d Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Tue, 20 Jan 2026 08:45:00 +0000 Subject: [PATCH 08/15] Use release tag rather than separate Docker image --- .github/workflows/docker_firedrake-parmmg_release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker_firedrake-parmmg_release.yml b/.github/workflows/docker_firedrake-parmmg_release.yml index b13e15e..254bda6 100644 --- a/.github/workflows/docker_firedrake-parmmg_release.yml +++ b/.github/workflows/docker_firedrake-parmmg_release.yml @@ -44,7 +44,7 @@ jobs: dockerfile-repo: 'firedrakeproject/firedrake' dockerfile-path: 'docker/Dockerfile.vanilla' dockerfile-branch: 'release' - docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base-release:latest' + docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base:release' save-docker-image-artifact: 'firedrake-parmmg-base-release' docker_parmmg: @@ -57,5 +57,5 @@ jobs: # which includes Animate, Movement, Goalie, and Thetis packages dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' dockerfile-branch: 'release' - docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-release:latest' + docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:release' load-docker-image-artifact: 'firedrake-parmmg-base-release' From a1ba31814d0700739fb9fb1440cc5e6a10275984 Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Tue, 20 Jan 2026 09:11:50 +0000 Subject: [PATCH 09/15] Update use of tags in test suite --- .github/workflows/reusable_test_suite.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable_test_suite.yml b/.github/workflows/reusable_test_suite.yml index 0b0c1ca..7c0d470 100644 --- a/.github/workflows/reusable_test_suite.yml +++ b/.github/workflows/reusable_test_suite.yml @@ -6,7 +6,7 @@ on: docker-image: description: 'Name of the Firedrake Docker image to use' required: false - default: 'firedrake-parmmg' + default: 'firedrake-parmmg:latest' type: string concurrency: @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 container: - image: ghcr.io/mesh-adaptation/${{ inputs.docker-image }}:latest + image: ghcr.io/mesh-adaptation/${{ inputs.docker-image }} options: --user root env: # Name of the repository that triggered the workflow From 73bcd398867e7f5751ff87999cb6e6360e1df92f Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Wed, 21 Jan 2026 08:38:00 +0000 Subject: [PATCH 10/15] Introduce firedrake-branch argument --- .github/workflows/docker_firedrake-parmmg_main.yml | 6 ++++-- .github/workflows/docker_firedrake-parmmg_release.yml | 8 +++++--- .github/workflows/reusable_docker_build.yml | 9 +++++++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.github/workflows/docker_firedrake-parmmg_main.yml b/.github/workflows/docker_firedrake-parmmg_main.yml index dc7c809..4d67c68 100644 --- a/.github/workflows/docker_firedrake-parmmg_main.yml +++ b/.github/workflows/docker_firedrake-parmmg_main.yml @@ -39,11 +39,12 @@ jobs: packages: write uses: ./.github/workflows/reusable_docker_build.yml with: - # use Dockerfile.vanilla from firedrake to build firedrake-parmmg-base image - # which contains a build of petsc+firedrake with (Par)Mmg libraries included + # use Dockerfile.vanilla from Firedrake to build firedrake-parmmg-base image + # which contains a build of PETSc+Firedrake with (Par)Mmg libraries included dockerfile-repo: 'firedrakeproject/firedrake' dockerfile-path: 'docker/Dockerfile.vanilla' dockerfile-branch: 'main' + firedrake-branch: 'main' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base:latest' save-docker-image-artifact: 'firedrake-parmmg-base' @@ -57,6 +58,7 @@ jobs: # which includes Animate, Movement, Goalie, and Thetis packages dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' dockerfile-branch: 'main' + firedrake-branch: 'main' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:latest' load-docker-image-artifact: 'firedrake-parmmg-base' save-docker-image-artifact: 'firedrake-parmmg' diff --git a/.github/workflows/docker_firedrake-parmmg_release.yml b/.github/workflows/docker_firedrake-parmmg_release.yml index 254bda6..e4910ea 100644 --- a/.github/workflows/docker_firedrake-parmmg_release.yml +++ b/.github/workflows/docker_firedrake-parmmg_release.yml @@ -39,11 +39,12 @@ jobs: packages: write uses: ./.github/workflows/reusable_docker_build.yml with: - # use Dockerfile.vanilla from firedrake to build firedrake-parmmg-base image - # which contains a build of petsc+firedrake with (Par)Mmg libraries included + # use Dockerfile.vanilla from Firedrake to build firedrake-parmmg-base image + # which contains a build of PETSc+Firedrake with (Par)Mmg libraries included dockerfile-repo: 'firedrakeproject/firedrake' dockerfile-path: 'docker/Dockerfile.vanilla' dockerfile-branch: 'release' + firedrake-branch: 'release' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg-base:release' save-docker-image-artifact: 'firedrake-parmmg-base-release' @@ -56,6 +57,7 @@ jobs: # starting from firedrake-parmmg-base, build firedrake-parmmg image # which includes Animate, Movement, Goalie, and Thetis packages dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' - dockerfile-branch: 'release' + dockerfile-branch: 'main' + firedrake-branch: 'release' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:release' load-docker-image-artifact: 'firedrake-parmmg-base-release' diff --git a/.github/workflows/reusable_docker_build.yml b/.github/workflows/reusable_docker_build.yml index 3d8b40d..b47585a 100644 --- a/.github/workflows/reusable_docker_build.yml +++ b/.github/workflows/reusable_docker_build.yml @@ -13,6 +13,11 @@ on: required: false default: ${{ github.head_ref }} type: string + firedrake-branch: + description: 'Branch to pass as the BRANCH build argument when building the Docker container' + required: false + default: ${{ github.head_ref }} + type: string dockerfile-path: description: 'Path to the Dockerfile to be built' required: true @@ -94,11 +99,11 @@ jobs: no-cache: true file: ${{ inputs.dockerfile-path }} tags: ${{ inputs.docker-image-tag }} - # build-args are only used by firedrake's Dockerfile.vanilla + # Build arguments are only used by Firedrake's Dockerfile.vanilla, # in which case the branch to build is the same as the Dockerfile is from build-args: | ARCH=default - BRANCH=${{ inputs.dockerfile-branch }} + BRANCH=${{ inputs.firedrake-branch }} PETSC_EXTRA_ARGS=--download-eigen --download-metis --download-parmetis --download-mmg --download-parmmg --download-ptscotch - name: Save Docker image From 492a73215a285f032cc1d036416dd2829788311d Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Wed, 21 Jan 2026 08:40:34 +0000 Subject: [PATCH 11/15] DO NOT MERGE - temporary dockerfile-branch change for testing --- .github/workflows/docker_firedrake-parmmg_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker_firedrake-parmmg_release.yml b/.github/workflows/docker_firedrake-parmmg_release.yml index e4910ea..9131305 100644 --- a/.github/workflows/docker_firedrake-parmmg_release.yml +++ b/.github/workflows/docker_firedrake-parmmg_release.yml @@ -57,7 +57,7 @@ jobs: # starting from firedrake-parmmg-base, build firedrake-parmmg image # which includes Animate, Movement, Goalie, and Thetis packages dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' - dockerfile-branch: 'main' + dockerfile-branch: '156_main-release' firedrake-branch: 'release' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:release' load-docker-image-artifact: 'firedrake-parmmg-base-release' From 32a95851471a4b058b3f4fb2fc938dc2beecbd94 Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Wed, 21 Jan 2026 08:43:25 +0000 Subject: [PATCH 12/15] Fix Zizmor ignores --- zizmor.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/zizmor.yml b/zizmor.yml index 5f2ed54..d3cda05 100644 --- a/zizmor.yml +++ b/zizmor.yml @@ -2,11 +2,11 @@ rules: template-injection: ignore: # Ignore template injection in cases where we manually check inputs - - reusable_docker_build.yml:56 - - reusable_docker_build.yml:60 - - reusable_docker_build.yml:63 - - reusable_docker_build.yml:104 - - reusable_docker_build.yml:109 + - reusable_docker_build.yml:69 + - reusable_docker_build.yml:73 + - reusable_docker_build.yml:74 + - reusable_docker_build.yml:112 + - reusable_docker_build.yml:117 unpinned-images: ignore: # Ignore unpinned images for trusted Docker images From 6e61f37afe3de2d437680ac26e684b31bd1f432b Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Wed, 21 Jan 2026 17:00:16 +0000 Subject: [PATCH 13/15] Remove outdated comment --- .github/workflows/reusable_docker_build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/reusable_docker_build.yml b/.github/workflows/reusable_docker_build.yml index b47585a..f66e8c9 100644 --- a/.github/workflows/reusable_docker_build.yml +++ b/.github/workflows/reusable_docker_build.yml @@ -99,8 +99,6 @@ jobs: no-cache: true file: ${{ inputs.dockerfile-path }} tags: ${{ inputs.docker-image-tag }} - # Build arguments are only used by Firedrake's Dockerfile.vanilla, - # in which case the branch to build is the same as the Dockerfile is from build-args: | ARCH=default BRANCH=${{ inputs.firedrake-branch }} From 407184846a2707e3ea29e14adc238a03d8ea6778 Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Wed, 21 Jan 2026 17:01:53 +0000 Subject: [PATCH 14/15] Use default dockerfile-branch for firedrake-parmmg --- .github/workflows/docker_firedrake-parmmg_main.yml | 1 - .github/workflows/docker_firedrake-parmmg_release.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/docker_firedrake-parmmg_main.yml b/.github/workflows/docker_firedrake-parmmg_main.yml index 4d67c68..750ae06 100644 --- a/.github/workflows/docker_firedrake-parmmg_main.yml +++ b/.github/workflows/docker_firedrake-parmmg_main.yml @@ -57,7 +57,6 @@ jobs: # starting from firedrake-parmmg-base, build firedrake-parmmg image # which includes Animate, Movement, Goalie, and Thetis packages dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' - dockerfile-branch: 'main' firedrake-branch: 'main' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:latest' load-docker-image-artifact: 'firedrake-parmmg-base' diff --git a/.github/workflows/docker_firedrake-parmmg_release.yml b/.github/workflows/docker_firedrake-parmmg_release.yml index 9131305..14d1db9 100644 --- a/.github/workflows/docker_firedrake-parmmg_release.yml +++ b/.github/workflows/docker_firedrake-parmmg_release.yml @@ -57,7 +57,6 @@ jobs: # starting from firedrake-parmmg-base, build firedrake-parmmg image # which includes Animate, Movement, Goalie, and Thetis packages dockerfile-path: 'docker/Dockerfile.firedrake-parmmg' - dockerfile-branch: '156_main-release' firedrake-branch: 'release' docker-image-tag: 'ghcr.io/mesh-adaptation/firedrake-parmmg:release' load-docker-image-artifact: 'firedrake-parmmg-base-release' From 90b37b4213845eaf8526e5144bd75428d4c71419 Mon Sep 17 00:00:00 2001 From: Joe Wallwork Date: Wed, 21 Jan 2026 17:04:18 +0000 Subject: [PATCH 15/15] Update Zizmor ignores again --- zizmor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zizmor.yml b/zizmor.yml index d3cda05..ab9f8ec 100644 --- a/zizmor.yml +++ b/zizmor.yml @@ -5,8 +5,8 @@ rules: - reusable_docker_build.yml:69 - reusable_docker_build.yml:73 - reusable_docker_build.yml:74 - - reusable_docker_build.yml:112 - - reusable_docker_build.yml:117 + - reusable_docker_build.yml:110 + - reusable_docker_build.yml:115 unpinned-images: ignore: # Ignore unpinned images for trusted Docker images