ci(vendor): add a vendor-drift workflow #2
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Vendor drift (MEOS-API) | |
| # Re-runs the `make vendor-meos-api` target against the live MEOS-API master | |
| # and fails if the vendored artefacts under `vendor/meos-api/` are out of date. | |
| # | |
| # Surfaces upstream changes as actionable PR diffs instead of letting them | |
| # silently rot. The CI failure message tells the maintainer to run | |
| # | |
| # make vendor-meos-api | |
| # | |
| # locally and submit a refresh PR. | |
| # | |
| # Step 3 of `docs/MEOS_API_INGESTION_PLAN.md`. | |
| on: | |
| pull_request: | |
| paths: | |
| - 'vendor/meos-api/**' | |
| - 'Makefile' | |
| - '.github/workflows/vendor-drift.yml' | |
| push: | |
| branches: [master] | |
| schedule: | |
| # Daily 06:00 UTC — pings the maintainer if MEOS-API master moves and the | |
| # vendored copy goes stale, even without a MobilityAPI PR open. | |
| - cron: '0 6 * * *' | |
| workflow_dispatch: | |
| jobs: | |
| vendor-drift: | |
| name: Refresh & diff vendored artefacts | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # libclang (the Python wheel) bundles the .so but not the system C | |
| # headers — without them, `size_t` and friends from <stddef.h> degrade | |
| # to `int` during the catalog parse, which would show up as a false | |
| # drift on every CI run. Install system clang dev headers so libclang | |
| # gets the same sysroot resolution as a local checkout. | |
| - name: Install clang system headers for libclang sysroot | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y --no-install-recommends clang libclang-dev | |
| - name: Refresh vendored MEOS-API artefacts from master | |
| run: make vendor-meos-api | |
| - name: Detect drift | |
| id: drift | |
| run: | | |
| if git diff --exit-code -- vendor/meos-api/; then | |
| echo "drift=false" >> "$GITHUB_OUTPUT" | |
| echo "::notice::vendor/meos-api/ is up to date with MEOS-API master." | |
| else | |
| echo "drift=true" >> "$GITHUB_OUTPUT" | |
| echo "::error::vendor/meos-api/ is stale. Run \`make vendor-meos-api\` locally and open a refresh PR." | |
| git diff --stat -- vendor/meos-api/ | |
| exit 1 | |
| fi |