Skip to content

WIP: local CI (make ci-local) and no GitHub CI on PRs - #388

Closed
jsam wants to merge 1 commit into
mainfrom
fm/il-ci-local
Closed

jsam wants to merge 1 commit into
mainfrom
fm/il-ci-local

Conversation

@jsam

@jsam jsam commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Work in progress, parked. The branch holds one empty commit: no file has been changed yet. This description records the analysis done so far and the plan, so the work can resume from here.

Goal

Stop running GitHub CI on pull requests and run the same checks on our own machine instead:

  1. Remove the pull_request triggers from ci.yml, quickstart.yml, docker.yml and full-suite.yml, keeping push and manual dispatch.
  2. Add scripts/ci-local.sh and make ci-local, which run those checks in parallel and post one commit status named ci-local on the tested commit.
  3. Document it in TESTING.md and CONTRIBUTING.

Done

  • Read all four workflows, the Makefile targets they call, and the scripts behind them.
  • Mapped every job to a planned local check (table below).
  • Checked branch protection on main (read-only): it lists no required status checks, so removing the PR triggers will not block merges.
  • Checked this machine's tools: docker, uv, node, npm, rustup, gh and jq are present. cargo-deny, cargo-audit, gitleaks and cargo-tarpaulin are missing, so the script has to install the pinned versions as the workflows did.

Remaining

  • Everything in the three goal items: no workflow, script, Makefile or doc edit exists yet.
  • Run make ci-local on the PR head and add its summary and the posted status here.
  • Run the pipeline and mark the PR ready.

Planned mapping (not implemented yet)

Default run, what an ordinary PR used to get:

Workflow job Planned local check
ci.yml Detect changes Same path filters, computed against the merge base with origin/main; an override forces every check
ci.yml Format make fmt-check
ci.yml Secret scan and hooks make install-gitleaks, make secret-check, make hooks-test
ci.yml Clippy make lint
ci.yml Supply chain Pinned cargo-deny and cargo-audit (same versions and checksums), fresh lockfiles, same commands
ci.yml Tests make unit-test, then affected snapshot specs against the same debug build, then per-binary timings
ci.yml Python SDK (3.10, 3.12) make python-test once per version, each in its own virtualenv
ci.yml JS SDK make pre-pr-js
quickstart.yml README quick starts Local docker build of the engine image under a throwaway name, then scripts/check-quickstarts.sh

Opt-in full run, what a PR labeled release used to get:

Workflow job Planned local check
full-suite.yml Tests (full) make ci-test-all
full-suite.yml Documentation make doc-check
full-suite.yml Website npm ci and npm run build in front/
full-suite.yml Coverage make coverage, make view-coverage
full-suite.yml Python langchain integration make python-test-live, make python-test-examples
full-suite.yml JS SDK query examples make js-test-live
full-suite.yml Python SDK query examples make python-sdk-live
full-suite.yml Performance gate tool make perf-gate-check
full-suite.yml Verified Completions gate make vc-gate
full-suite.yml MSRV cargo +1.88 check --all-features
docker.yml Build (amd64) Local docker build of the engine and gateway targets

Will not run locally, and will be named as such in the summary:

Workflow job Reason
full-suite.yml Performance gate Measurement belongs on the benchmark host (make perf-gate-remote)
full-suite.yml Views benchmark Never ran on PRs (manual perf_gate_only dispatch only); benchmark host
docker.yml Build (arm64) Needs an arm64 runner
docker.yml Merge manifests Tag pushes only, never ran on PRs

Open points for the resume

  • ci.yml has no trigger other than pull_request, so removing it leaves an invalid workflow. Plan: make it manual-dispatch only and drop the PR-only path filter and label conditions.
  • quickstart, python-test-live and python-test-examples use port 8080, and the latter two kill whatever holds it. Plan: the script refuses those checks when the port or the inputlayer container name is taken, instead of clobbering another lane.
  • Rust checks share one target/ and run in sequence in one lane; the other checks run beside it.

Parked before the first edit. The plan and the workflow-to-check mapping
are in the draft pull request description.
@jsam

jsam commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #396, which pauses GitHub CI on PRs and main.

@jsam jsam closed this Oct 6, 2026
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