From 1a44187c0de46b0dc9b6cbf409497ef09a9e0873 Mon Sep 17 00:00:00 2001 From: Joseph Mearman Date: Thu, 17 Sep 2026 10:52:40 +0100 Subject: [PATCH 1/2] ci: add a Linux quality gate as a composite action, run on the self-hosted fleet main.yml currently only runs macOS/Windows/docs jobs on GitHub-hosted runners. Adds a real build+test gate on Linux x86_64, adapted from tools/circleci_ubuntu_arm64.sh's conda+CMake+ctest build (not previously wired into GitHub Actions at all) minus its ASAN-specific suppressions, as a composite action mono's own CI can call against its synced copy of this repo -- matching the pattern already shipped for infrastructure, cluster-api-v2, clusterapi-slurm, clusterapi-slurm-contract, pywr-moea, pywr-utils, and pywr. Runs on gha-ci-runners so it isn't blocked by the org's GitHub-hosted Actions billing block. Leaves the existing macOS/Windows/docs jobs untouched. --- .github/actions/test/action.yml | 30 ++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 16 ++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .github/actions/test/action.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/actions/test/action.yml b/.github/actions/test/action.yml new file mode 100644 index 000000000..2b0cefa09 --- /dev/null +++ b/.github/actions/test/action.yml @@ -0,0 +1,30 @@ +name: Test +description: "Builds pagmo2 from source via conda-provisioned toolchain and CMake, then runs the ctest suite. Extracted so this repo's own CI and mono's synced copy of this repo can call the identical steps locally -- see the \"Sharing CI with the monorepo\" pattern already shipped for the infrastructure repo. This is a new Linux x86_64 quality gate, adapted from the existing tools/circleci_ubuntu_arm64.sh build (not currently wired into GitHub Actions at all -- main.yml only runs the macOS/Windows/docs jobs), without that script's ASAN-specific suppressions and fork_island exclusion, since this gate runs a plain Debug build with no sanitizer. Deliberately scoped to the quality gate only, not the docs-deploy pipeline in main.yml, which stays upstream-shaped." + +inputs: + working-directory: + description: Directory containing the pagmo2 CMake project to build and test + required: false + default: "." + +runs: + using: composite + steps: + - name: install conda toolchain and pagmo2 build dependencies + shell: bash + run: | + wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O miniconda.sh + bash miniconda.sh -b -p "$HOME/miniconda" + echo "$HOME/miniconda/bin" >> "$GITHUB_PATH" + export PATH="$HOME/miniconda/bin:$PATH" + conda create -y -q -p "$HOME/local" c-compiler cxx-compiler cmake eigen nlopt ipopt boost-cpp tbb tbb-devel + echo "PAGMO2_CONDA_PREFIX=$HOME/local" >> "$GITHUB_ENV" + - name: build and test + shell: bash + working-directory: ${{ inputs.working-directory }} + run: | + source "$HOME/miniconda/bin/activate" "$PAGMO2_CONDA_PREFIX" + mkdir -p build && cd build + cmake ../ -DCMAKE_PREFIX_PATH="$PAGMO2_CONDA_PREFIX" -DCMAKE_BUILD_TYPE=Debug -DPAGMO_BUILD_TESTS=yes -DPAGMO_WITH_EIGEN3=yes -DPAGMO_WITH_NLOPT=yes -DPAGMO_WITH_IPOPT=yes + make -j2 VERBOSE=1 + ctest -j4 -V diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..855179931 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,16 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + test: + runs-on: gha-ci-runners + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/test From 5c1321365ce5a0a32fb0c6d60e2e7f1591617366 Mon Sep 17 00:00:00 2001 From: Joseph Mearman Date: Thu, 17 Sep 2026 11:01:30 +0100 Subject: [PATCH 2/2] ci: move build-and-deploydocs onto the self-hosted fleet Its ubuntu-latest job moves to gha-ci-runners so it actually executes instead of sitting blocked behind the org's GitHub-hosted Actions billing block. osx_10_15 and windows-2019 stay GitHub-hosted -- the self-hosted fleet is a Linux-only ARC deployment on k3s, with no macOS or Windows node to route to. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 383f80f88..5106ac1e5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,7 +30,7 @@ jobs: shell: powershell build-and-deploydocs: if: ${{ github.event_name }} == 'push' - runs-on: ubuntu-latest + runs-on: gha-ci-runners steps: - uses: actions/checkout@v2 - name: Install and Build 🔧