diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8f669ce..c416d83 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,15 @@ jobs: conan profile detect + # The windows-latest image (windows-2025-vs2026, rolled out ~2026-06-28) + # ships Visual Studio 18 "2026", so Conan auto-selects the + # "Visual Studio 18 2026" CMake generator. abseil pins cmake<4, which + # resolves to cmake 3.31.9 -- a version that doesn't know that generator, + # so abseil's configure fails with "Could not create named generator". + # Force abseil (and only abseil) to build with cmake 4.x, which does + # understand the new generator; every other dependency is left untouched. + Add-Content "$(conan profile path default)" "`n[tool_requires]`nabseil/*: cmake/[>=4]" + conan remote add viamconan https://viam.jfrog.io/artifactory/api/conan/viamconan --index 0 env: diff --git a/.github/workflows/bump-viam-cpp-sdk.yml b/.github/workflows/bump-viam-cpp-sdk.yml new file mode 100644 index 0000000..dd295bb --- /dev/null +++ b/.github/workflows/bump-viam-cpp-sdk.yml @@ -0,0 +1,85 @@ +name: Bump Viam C++ SDK + +# Opens (or updates) a PR bumping the viam-cpp-sdk pin in conanfile.py whenever a +# newer viam-cpp-sdk release is published, polled daily. The SDK is pinned via +# conan, which Dependabot can't track, so this does it explicitly. +# +# The PR is created with the org-level GIT_ACCESS_TOKEN bot secret (the same token +# the viam-python-sdk update_protos workflow uses) rather than the default +# GITHUB_TOKEN. This is deliberate: PRs opened by GITHUB_TOKEN do NOT trigger other +# workflows, so the conan build/test wouldn't run on the bump; the bot token makes +# CI run automatically. + +on: + schedule: + - cron: "0 6 * * *" # daily at 06:00 UTC + workflow_dispatch: {} + +permissions: + contents: write + pull-requests: write + +jobs: + bump: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Resolve latest and current viam-cpp-sdk versions + id: versions + env: + GH_TOKEN: ${{ github.token }} + run: | + set -euo pipefail + # Latest published release of the SDK, tag format "releases/vX.Y.Z". + tag="$(gh release view --repo viamrobotics/viam-cpp-sdk --json tagName --jq .tagName)" + latest="${tag#releases/v}" + # Currently pinned version in conanfile.py, e.g. viam-cpp-sdk/0.31.0 + current="$(grep -oE 'viam-cpp-sdk/[0-9]+\.[0-9]+\.[0-9]+' conanfile.py | head -1 | cut -d/ -f2)" + echo "latest=$latest" >> "$GITHUB_OUTPUT" + echo "current=$current" >> "$GITHUB_OUTPUT" + # Only bump forward (never downgrade). + if [ "$current" != "$latest" ] && \ + [ "$(printf '%s\n%s\n' "$current" "$latest" | sort -V | tail -n1)" = "$latest" ]; then + echo "needed=true" >> "$GITHUB_OUTPUT" + else + echo "needed=false" >> "$GITHUB_OUTPUT" + fi + echo "viam-cpp-sdk: current=$current latest=$latest" + + - name: Update conanfile.py pin + if: steps.versions.outputs.needed == 'true' + run: | + set -euo pipefail + sed -i "s#viam-cpp-sdk/${{ steps.versions.outputs.current }}#viam-cpp-sdk/${{ steps.versions.outputs.latest }}#g" conanfile.py + + - name: Regenerate conan.lock (if present) + if: steps.versions.outputs.needed == 'true' && hashFiles('conan.lock') != '' + run: | + set -euo pipefail + python3 -m pip install --quiet --upgrade conan + conan profile detect --force + conan remote add viamconan https://viam.jfrog.io/artifactory/api/conan/viamconan --index 0 || true + conan lock create . -o "&:with_tests=False" -s:a build_type=Release -s:a compiler.cppstd=17 + + - name: Open / update pull request + if: steps.versions.outputs.needed == 'true' + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.GIT_ACCESS_TOKEN }} + branch: deps/bump-viam-cpp-sdk + delete-branch: true + commit-message: "deps: bump viam-cpp-sdk to ${{ steps.versions.outputs.latest }}" + title: "deps: bump viam-cpp-sdk to ${{ steps.versions.outputs.latest }}" + labels: dependencies + body: | + Bumps the `viam-cpp-sdk` conan pin from + `${{ steps.versions.outputs.current }}` to `${{ steps.versions.outputs.latest }}` + ([viam-cpp-sdk release](https://github.com/viamrobotics/viam-cpp-sdk/releases/tag/releases/v${{ steps.versions.outputs.latest }})). + + - Updates the pin in `conanfile.py`. + - Regenerates `conan.lock` if the repo has one. + + Opened automatically by the **Bump Viam C++ SDK** workflow. Please confirm CI + (the conan build/test) passes before merging.