Skip to content

ci(vendor): add vendor-drift workflow (step 3 of ingestion plan)#5

Open
estebanzimanyi wants to merge 2 commits into
MobilityDB:masterfrom
estebanzimanyi:ci/vendor-drift-gate
Open

ci(vendor): add vendor-drift workflow (step 3 of ingestion plan)#5
estebanzimanyi wants to merge 2 commits into
MobilityDB:masterfrom
estebanzimanyi:ci/vendor-drift-gate

Conversation

@estebanzimanyi
Copy link
Copy Markdown
Member

@estebanzimanyi estebanzimanyi commented May 20, 2026

Step 3 of docs/MEOS_API_INGESTION_PLAN.md: a CI gate that regenerates vendor/meos-api/ from MEOS-API + MobilityDB master and fails the PR if any committed artefact is stale.

Trigger

  • PRs touching vendor/meos-api/**, Makefile, or the workflow itself
  • Push to master (post-merge sanity)
  • Daily 06:00 UTC cron (surfaces upstream drift with no open PR)
  • workflow_dispatch

Behaviour

The workflow installs clang libclang-dev libjson-c-dev libgsl-dev libproj-dev libgeos-dev postgresql-server-dev-all so libclang's sysroot resolves the same way as a local checkout, runs make vendor-meos-api, and git diff --exit-code -- vendor/meos-api/. On drift it emits:

::error::vendor/meos-api/ is stale. Run `make vendor-meos-api` locally and open a refresh PR.

Stacks on #4 (the make vendor-meos-api Makefile target + the vendored artefacts).

Vendor MobilityAPI's read-only copy of MEOS-API's published catalog +
projection artefacts under `vendor/meos-api/`, plus a Makefile target
`make vendor-meos-api` that regenerates them from upstream.

Files added:

  vendor/meos-api/
    PROVENANCE.json              -- per-artefact source URLs + regenerate cmd
    README.md                    -- refresh procedure
    meos-idl.json                -- 3546 fns / 70 structs / 16 enums
                                    (generated by MEOS-API run.py over
                                    MobilityDB master meos/include headers)
    meos-coverage.json           -- structural worklist (from open PR MobilityDB#4)
    meos-object-model-parity.json -- 29-pair portable-parity (from open PR #10)

The Makefile target clones MEOS-API + MobilityDB shallowly, installs
libclang, runs MEOS-API's `run.py` against MobilityDB's MEOS headers,
and copies the produced JSON artefacts into `vendor/meos-api/`.

Two of the four artefacts (`meos-coverage.json`,
`meos-object-model-parity.json`) currently come from open MEOS-API PR
branches because their generators are not yet on master; PROVENANCE.json
makes that explicit. The Makefile gracefully skips them if absent.

Step 2 of `docs/MEOS_API_INGESTION_PLAN.md`. The drift gate workflow
that fails on stale artefacts is step 3 (separate stacked PR).
Adds `.github/workflows/vendor-drift.yml` which regenerates the
vendored MEOS-API artefacts (`make vendor-meos-api`) on every PR
touching `vendor/meos-api/`, the Makefile, or the workflow itself,
plus on push to master and on a daily 06:00 UTC cron. On drift it
fails with an actionable message:

  ::error::vendor/meos-api/ is stale. Run `make vendor-meos-api`
  locally and open a refresh PR.

This is step 3 of `docs/MEOS_API_INGESTION_PLAN.md` ("CI gate that
regenerates the vendored artefacts and fails the PR if they drift").

Stacks on PR MobilityDB#4 (vendoring + Makefile).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant