This repository provides a unified ecosystem CI harness for Rstack projects.
Workflows are scheduled to run automatically every day
- open workflow
- click 'Run workflow' button on top right of the list
- select suite to run in dropdown
- start workflow
- clone this repo
- run
pnpm i - run
pnpm test --stack <stack>to run every suite under the selected stack (rsbuild,rspack,rstest,rslib,rsdoctor) - run
pnpm test --stack rspackto execute all Rspack suites (available stacks:rsbuild,rspack,rstest,rslib,rsdoctor) - run
pnpm test --stack rslibto execute all Rslib suites - run
pnpm test --stack rsbuild pluginsto target a specific suite - or invoke
tsx ecosystem-ci.tsdirectly for advanced commands such asbuild,run-suites, orbisect
The version selection flags apply to the chosen stack:
--tag v2.8.0-beta.1,--branch some-branchor--commit abcd1234pick the stack source to build--release 2.7.13skips the local build and pulls the stack from the registry instead
The repositories are checked out into workspace subdirectory as shallow clones
pnpm test --stack rspack --release nightly <suite>: run a nightly release of the selected stackpnpm test --stack rsbuild --branch main --suite-branch update-rsbuild <suite>: useupdate-rsbuildbranch for the suite to testmainpnpm test --stack rspack modernjs(rspack suites include modernjs, rspress, rsbuild, rslib, rstest, rsdoctor, examples, devserver, plugin, lynx-stack, _selftest)pnpm test --stack rspress rspress-plugins: build Rspress and run the Rspress plugins package builds, documentation builds, unit tests, and Chromium E2E tests
The Rslint suites build and lint Rsbuild, Rslib, and Rstest with type checking enabled. Rsbuild and Rslib exercise Rslint through Rstack; Rstest uses the Rslint CLI directly. The rstack-editor suite runs the editor's unit tests, which load @rslint/core in the lint worker, and its rs lint --type-check, which type-checks the editor against @rslint/core and lints it with that core.
pnpm test --stack rslint --branch main rsbuild
pnpm test --stack rslint --release 0.9.5 rstestSource builds require Go (the version in Rslint's go.mod), Rust, and the initialized typescript-go submodule. The suites install @rslint/core and the matching host native package from packed source builds or a fresh local Verdaccio version, then verify the versions resolved by the actual caller. Independently versioned tsgo server packages use their published versions.
GitHub Actions builds the Rust binding, Go CLI, and rule schemas once in a prepare job. Each suite checks out that same source commit, restores the artifacts, and builds only JavaScript before publishing to its own local Verdaccio registry.
For upstream runs, configure the Repository secret REPO_RSLINT_ECO_CI_GITHUB_TOKEN in web-infra-dev/rslint with Actions read/write access to this repository. Merge this integration before the upstream workflow. History publishing uses this repository's own GITHUB_TOKEN; the dispatch token needs no Contents permission. Existing shared actions are unchanged, so no action release or SHA pin update is required.
- check out the existing suites under
tests/<stack>and add one yourself. Thanks to the shared utilities it is really easy - once you are confidente the suite works, add it to the lists of suites in the workflows
the current utilities focus on pnpm based projects. Consider switching to pnpm or contribute utilities for other pms
This repo ships an eco-ci-selfcheck skill (under .agents/skills/eco-ci-selfcheck/SKILL.md) that audits the latest run of each *-ecosystem-ci-from-commit workflow and returns a table separating eco-ci framework failures from legitimate downstream test failures. Invoke it from whichever coding agent you use that loads .agents/skills/ (in Claude Code: /eco-ci-selfcheck, via the .claude/skills/eco-ci-selfcheck symlink). Requires gh authenticated against rstackjs/rstack-ecosystem-ci.
- Go to
Server settings > Integrations > Webhooksand clickNew Webhook - Give it a name, icon and a channel to post to
- copy the webhook url
- get in touch with admins of this repo so they can add the webhook
Thanks to:
which inspired the development of this project.