From 74508f623db9150726424d529dbec306d691d226 Mon Sep 17 00:00:00 2001 From: Gage Larsen Date: Mon, 24 Aug 2026 09:40:47 -0600 Subject: [PATCH] Regenerate CI with xmsconan 2.23.0 CI only. No source, build.toml or version change, and no re-release: 7.0.13 is already published with a complete set of packages, built before any of this landed. xmsconan 2.22.0 made `--wheel-dir` a request build.py must satisfy -- it exits 1 when no complete set of wheels comes out -- while the workflow passed the flag on every build type. `[matrix].pybind_build_types` defaults to Release only, so a Debug leg has no pybind configuration to extract a wheel from, and every Debug leg fails. xmsgrid hit this on 2026-08-21 and xmsmesher on 2026-08-22; xmscore has not pushed since, so it is red on its next run rather than now. xmsconan 2.23.0 gates the flag on `matrix.build_type == 'Release'`, which is how repair, artifact upload and deploy in this workflow were already gated. The fix does not arrive on its own: `build.py` is regenerated on every run and picked up the breaking change through the floating pin, but the workflow itself is committed, so it takes this regeneration to pick up the fix. Also in this regeneration, all from xmsconan 2.23.0: - Third-party actions pinned to commit SHAs with the tag in a trailing comment, in both workflows. A tag is a movable ref in someone else's repository, and these steps run with the workflow's secrets in their environment. - The coverage workflow pins conan to the same `~=2.31.0` series the CI workflow uses. It was installing whatever `pip install conan` resolved, and a conan minor bump can change package_id computation -- a coverage run that resolves different package ids than the build workflow is measuring a different set of binaries. - `actions/setup-python` v2 to v5 on the flake job. - `flake8-tidy-imports` added to the flake job. It registers `banned-modules`, which the generated `.flake8` sets; flake8 ignores config options no installed plugin claims, so the osgeo ban was silently enforcing nothing while the job reported green. - xmsconan floor 2.21.0 to 2.23.0. --- .github/workflows/Coverage.yaml | 16 ++++++-- .github/workflows/XmsCore-CI.yaml | 66 ++++++++++++++++++------------- 2 files changed, 51 insertions(+), 31 deletions(-) diff --git a/.github/workflows/Coverage.yaml b/.github/workflows/Coverage.yaml index 519a079e..2e00ad65 100644 --- a/.github/workflows/Coverage.yaml +++ b/.github/workflows/Coverage.yaml @@ -1,3 +1,11 @@ +# Conan is pinned to the same patch series the CI workflow uses: a conan +# minor bump can change package_id computation, and a coverage run that +# resolves different package ids than the build workflow is measuring a +# different set of binaries. +# +# Third-party actions are pinned to a commit SHA with the tag in a trailing +# comment -- see the header of the CI workflow template for why. +# # Generated by xmsconan_ci — do not edit manually. name: XmsCore-Coverage @@ -44,8 +52,8 @@ jobs: - name: Install Python Dependencies run: | - pip install conan wheel "gcovr>=7,<9" - pip install --upgrade "xmsconan>=2.21.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple + pip install "conan~=2.31.0" wheel "gcovr>=7,<9" + pip install --upgrade "xmsconan>=2.23.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple - name: Setup Conan run: xmsconan_conan_setup --remote-url ${{ env.CONAN_REMOTE_URL }} --login @@ -55,10 +63,10 @@ jobs: # when the workflow runs on a tagged push). - name: Get Tag id: gitTag - uses: little-core-labs/get-git-tag@v3.0.2 + uses: little-core-labs/get-git-tag@2c292ff564c1a61b989e29f0410d131317f89b03 # v3.0.2 if: startsWith(github.ref, 'refs/tags/') - name: Set Coverage Version - uses: allenevans/set-env@v2.0.0 + uses: allenevans/set-env@b68e0a75c99b96b43963b54bc2be13e2f103ad87 # v2.0.0 with: XMS_VERSION: ${{ steps.gitTag.outputs.tag }} if: startsWith(github.ref, 'refs/tags/') diff --git a/.github/workflows/XmsCore-CI.yaml b/.github/workflows/XmsCore-CI.yaml index c3048c10..5f0d13c9 100644 --- a/.github/workflows/XmsCore-CI.yaml +++ b/.github/workflows/XmsCore-CI.yaml @@ -6,6 +6,13 @@ # AQUAPI_URL_DEV - devpi index URL for wheel uploads # AQUAVEO_GITHUB_TOKEN - GitHub token for release asset uploads # +# Third-party actions are pinned to a commit SHA with the tag in a trailing +# comment. A tag is a movable ref in someone else's repository: whoever owns +# it can retarget it at new code, which then runs here with this workflow's +# secrets in its environment. Update a pin by resolving the new tag +# (`gh api repos///commits/ --jq .sha`) and editing the +# template -- not the generated file. +# # Generated by xmsconan_ci — do not edit manually. name: XmsCore-CI @@ -34,15 +41,20 @@ jobs: uses: actions/checkout@v4 # Setup Python - name: Setup Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} # Install Python Dependencies - name: Install Python Dependencies run: | python -m pip install --upgrade pip - pip install flake8 flake8-docstrings flake8-bugbear flake8-import-order pep8-naming - pip install --upgrade "xmsconan>=2.21.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple + # flake8-tidy-imports registers `banned-modules`, which the .flake8 + # generated below sets. flake8 ignores config options no installed + # plugin claims, so without the plugin the osgeo ban was accepted + # and silently enforced nothing -- while this job reported the same + # green as a run that had checked it. + pip install flake8 flake8-docstrings flake8-bugbear flake8-import-order pep8-naming flake8-tidy-imports + pip install --upgrade "xmsconan>=2.23.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple # Generate .flake8 so CI lints with the same config developers use locally. # Do not inline the flake8 settings here: that duplicates .flake8.jinja and # the two copies drift apart silently. @@ -91,7 +103,7 @@ jobs: steps: # Get Correct Version of Xcode - - uses: maxim-lobanov/setup-xcode@v1 + - uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1 with: xcode-version: 16.4 - name: Setup Clang @@ -113,7 +125,7 @@ jobs: # package_id computation and silently detach builds from the binaries # already published to the remote. Bump this deliberately. pip install "conan~=2.31.0" devpi-client wheel - python -m pip install --upgrade "xmsconan>=2.21.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple + python -m pip install --upgrade "xmsconan>=2.23.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple # Setup Conan - name: Setup Conan run: xmsconan_conan_setup --remote-url ${{ env.CONAN_REMOTE_URL }} --login --remove-conancenter @@ -121,11 +133,11 @@ jobs: # Get Tag Name - name: Get Tag id: gitTag - uses: little-core-labs/get-git-tag@v3.0.2 + uses: little-core-labs/get-git-tag@2c292ff564c1a61b989e29f0410d131317f89b03 # v3.0.2 if: startsWith(github.ref, 'refs/tags/') # Set Conan Version - name: Set Conan Version - uses: allenevans/set-env@v2.0.0 + uses: allenevans/set-env@b68e0a75c99b96b43963b54bc2be13e2f103ad87 # v2.0.0 with: CONAN_REFERENCE: 'xmscore/${{ steps.gitTag.outputs.tag }}' XMS_VERSION: ${{ steps.gitTag.outputs.tag }} @@ -135,9 +147,9 @@ jobs: # Check for release branch - name: Get Branch Name id: gitBranch - uses: nelonoel/branch-name@v1.0.1 + uses: nelonoel/branch-name@1ea5c86cb559a8c4e623da7f188496208232e49f # v1.0.1 - name: Change Channel and URL if Release Branch - uses: allenevans/set-env@v2.0.0 + uses: allenevans/set-env@b68e0a75c99b96b43963b54bc2be13e2f103ad87 # v2.0.0 with: CONAN_CHANNEL: stable AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV}} @@ -147,7 +159,7 @@ jobs: run: xmsconan_gen --version ${{ env.XMS_VERSION }} build.toml # Build the Conan Package - name: Build the Conan Packages - run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\" --wheel-dir wheelhouse --artifacts-dir test_artifacts" + run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\"${{ matrix.build_type == 'Release' && ' --wheel-dir wheelhouse' || '' }} --artifacts-dir test_artifacts" shell: bash - name: Upload test artifacts uses: actions/upload-artifact@v4 @@ -180,7 +192,7 @@ jobs: # Get the Release Data - name: Get Release id: git_release - uses: bruceadams/get-release@v1.3.2 + uses: bruceadams/get-release@74c3d60f5a28f358ccf241a00c9021ea16f0569f # v1.3.2 env: GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }} if: startsWith(github.ref, 'refs/tags/') @@ -251,7 +263,7 @@ jobs: # package_id computation and silently detach builds from the binaries # already published to the remote. Bump this deliberately. pip install "conan~=2.31.0" devpi-client wheel - pip install --upgrade "xmsconan>=2.21.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple + pip install --upgrade "xmsconan>=2.23.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple # Setup Conan - name: Setup Conan run: xmsconan_conan_setup --remote-url ${{ env.CONAN_REMOTE_URL }} --login @@ -259,11 +271,11 @@ jobs: # Get Tag Name - name: Get Tag id: gitTag - uses: little-core-labs/get-git-tag@v3.0.2 + uses: little-core-labs/get-git-tag@2c292ff564c1a61b989e29f0410d131317f89b03 # v3.0.2 if: startsWith(github.ref, 'refs/tags/') # Set Conan Version - name: Set Conan Version - uses: allenevans/set-env@v2.0.0 + uses: allenevans/set-env@b68e0a75c99b96b43963b54bc2be13e2f103ad87 # v2.0.0 with: CONAN_REFERENCE: 'xmscore/${{ steps.gitTag.outputs.tag }}' XMS_VERSION: ${{ steps.gitTag.outputs.tag }} @@ -273,9 +285,9 @@ jobs: # Check for release branch - name: Get Branch Name id: gitBranch - uses: nelonoel/branch-name@v1.0.1 + uses: nelonoel/branch-name@1ea5c86cb559a8c4e623da7f188496208232e49f # v1.0.1 - name: Change Channel and URL if Release Branch - uses: allenevans/set-env@v2.0.0 + uses: allenevans/set-env@b68e0a75c99b96b43963b54bc2be13e2f103ad87 # v2.0.0 with: CONAN_CHANNEL: stable AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }} @@ -285,7 +297,7 @@ jobs: run: xmsconan_gen --version ${{ env.XMS_VERSION }} build.toml # Build the Conan Package - name: Build the Conan Packages - run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\" --wheel-dir wheelhouse --artifacts-dir test_artifacts" + run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\"${{ matrix.build_type == 'Release' && ' --wheel-dir wheelhouse' || '' }} --artifacts-dir test_artifacts" shell: bash - name: Upload test artifacts uses: actions/upload-artifact@v4 @@ -318,7 +330,7 @@ jobs: # Get the Release Data - name: Get Release id: git_release - uses: bruceadams/get-release@v1.3.2 + uses: bruceadams/get-release@74c3d60f5a28f358ccf241a00c9021ea16f0569f # v1.3.2 env: GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }} if: startsWith(github.ref, 'refs/tags/') @@ -388,7 +400,7 @@ jobs: python-version: ${{ matrix.python-version }} # Setup Dev Command Prompt env for MSVC - name: Setup MSVC env - uses: ilammy/msvc-dev-cmd@v1 + uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1 with: arch: x64 # Install Python Dependencies @@ -399,10 +411,10 @@ jobs: # package_id computation and silently detach builds from the binaries # already published to the remote. Bump this deliberately. pip install "conan~=2.31.0" devpi-client wheel - python -m pip install --upgrade "xmsconan>=2.21.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple + python -m pip install --upgrade "xmsconan>=2.23.0" -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple # Setup Visual Studio - name: Setup Visual Studio - uses: microsoft/setup-msbuild@v2 + uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2 # Setup Conan - name: Setup Conan run: xmsconan_conan_setup --remote-url ${{ env.CONAN_REMOTE_URL }} --login @@ -410,11 +422,11 @@ jobs: # Get Tag Name - name: Get Tag id: gitTag - uses: little-core-labs/get-git-tag@v3.0.2 + uses: little-core-labs/get-git-tag@2c292ff564c1a61b989e29f0410d131317f89b03 # v3.0.2 if: startsWith(github.ref, 'refs/tags/') # Set Conan Version - name: Set Conan Version - uses: allenevans/set-env@v2.0.0 + uses: allenevans/set-env@b68e0a75c99b96b43963b54bc2be13e2f103ad87 # v2.0.0 with: CONAN_REFERENCE: 'xmscore/${{ steps.gitTag.outputs.tag }}' XMS_VERSION: ${{ steps.gitTag.outputs.tag }} @@ -424,9 +436,9 @@ jobs: # Check for release branch - name: Get Branch Name id: gitBranch - uses: nelonoel/branch-name@v1.0.1 + uses: nelonoel/branch-name@1ea5c86cb559a8c4e623da7f188496208232e49f # v1.0.1 - name: Change Channel and URL if Release Branch - uses: allenevans/set-env@v2.0.0 + uses: allenevans/set-env@b68e0a75c99b96b43963b54bc2be13e2f103ad87 # v2.0.0 with: CONAN_CHANNEL: stable AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }} @@ -436,7 +448,7 @@ jobs: run: xmsconan_gen --version ${{ env.XMS_VERSION }} build.toml # Build the Conan Package - name: Build the Conan Packages - run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\" --wheel-dir wheelhouse --artifacts-dir test_artifacts" + run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\"${{ matrix.build_type == 'Release' && ' --wheel-dir wheelhouse' || '' }} --artifacts-dir test_artifacts" shell: cmd - name: Upload test artifacts uses: actions/upload-artifact@v4 @@ -469,7 +481,7 @@ jobs: # Get the Release Data - name: Get Release id: git_release - uses: bruceadams/get-release@v1.3.2 + uses: bruceadams/get-release@74c3d60f5a28f358ccf241a00c9021ea16f0569f # v1.3.2 env: GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }} if: startsWith(github.ref, 'refs/tags/')