From 5487976a213fc3032ae7cc9e1fc7981a7235e9e4 Mon Sep 17 00:00:00 2001 From: bbassie <17990055+bbassie@users.noreply.github.com> Date: Wed, 9 Sep 2026 17:56:01 +0000 Subject: [PATCH 1/2] Add a Node.js CI workflow that builds and tests inside clusterio The packages use workspace:^ and catalog: versions, so they only resolve inside a clusterio checkout with this repository under external_plugins. The workflow clones clusterio master, checks this repository out into external_plugins/ExpCluster, runs pnpm install (which runs every prepare script), then runs the tap suites. A last step wipes dist and runs tsc --build in each package on its own. pnpm install builds packages in dependency order, which is why the missing project references fixed in #473 went unnoticed. On the tree before #473 this step fails with the same five TS2307 errors. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/node.yml | 49 ++++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/node.yml diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml new file mode 100644 index 00000000..24e1fd98 --- /dev/null +++ b/.github/workflows/node.yml @@ -0,0 +1,49 @@ +name: Node.js CI + +on: + push: + pull_request: + +env: + # The packages use workspace:^ and catalog: versions, so they only resolve + # inside a clusterio checkout with this repository under external_plugins + CLUSTERIO_REPOSITORY: clusterio/clusterio + CLUSTERIO_REF: master + +jobs: + test: + runs-on: ubuntu-latest + timeout-minutes: 20 + defaults: + run: + working-directory: external_plugins/ExpCluster + steps: + - name: Checkout clusterio + uses: actions/checkout@v4 + with: + repository: ${{ env.CLUSTERIO_REPOSITORY }} + ref: ${{ env.CLUSTERIO_REF }} + - name: Checkout ExpCluster into the workspace + uses: actions/checkout@v4 + with: + path: external_plugins/ExpCluster + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install and build the workspace + working-directory: . + run: pnpm install --no-frozen-lockfile + - name: Run tests + run: pnpm --filter "@expcluster/*" run test + - name: Build each package on its own + run: | + # pnpm install runs prepare in dependency order, which hides a missing + # project reference (#473). Building from an empty dist one package at + # a time fails unless every cross package import is referenced. + for pkg in exp_*/; do + rm -rf exp_*/dist + echo "::group::${pkg%/}" + (cd "$pkg" && pnpm exec tsc --build) + echo "::endgroup::" + done diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9fa851c4..216a5196 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,7 +9,7 @@ For developers wanting to add features please follow these guidelines: - Lua is checked with [emmylua](https://github.com/EmmyLuaLs/emmylua-analyzer-rust), configured by `.emmyrc.json`. Install the EmmyLua extension rather than sumnekolua / luals, and use factoriomod-debug to generate the factorio api types. Note that an inline cast must be written `--[[@as T]]`, the spaced form is not parsed. - Changes should be made on your own fork and merged into `main` through a pull request. - Each pull request should be limited to one feature or a few bug fixes and link to the related issue page. -- Pull requests are automatically linted and documentation checked. +- Pull requests are automatically linted, then built and tested against the latest clusterio `master`. - Pull requests are manually reviewed to maintain code and language quality. - New features should have the branch names: `feature/feature-name` - Bug fixes should have the branch names: `fix/bug-name` From 2048de6244c80bd3494e6913e3f28724d55ddcc5 Mon Sep 17 00:00:00 2001 From: Cooldude2606 <25043174+Cooldude2606@users.noreply.github.com> Date: Fri, 11 Sep 2026 23:41:04 +0100 Subject: [PATCH 2/2] Small changes to node ci --- .github/workflows/node.yml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml index 24e1fd98..80d77eff 100644 --- a/.github/workflows/node.yml +++ b/.github/workflows/node.yml @@ -9,38 +9,40 @@ env: # inside a clusterio checkout with this repository under external_plugins CLUSTERIO_REPOSITORY: clusterio/clusterio CLUSTERIO_REF: master + # Node version to use for the tests. This is used by the setup-node action + NODE_VERSION: lts/* jobs: test: runs-on: ubuntu-latest - timeout-minutes: 20 + timeout-minutes: 5 defaults: run: working-directory: external_plugins/ExpCluster steps: - - name: Checkout clusterio + - name: Checkout Clusterio uses: actions/checkout@v4 with: repository: ${{ env.CLUSTERIO_REPOSITORY }} ref: ${{ env.CLUSTERIO_REF }} - - name: Checkout ExpCluster into the workspace + - name: Checkout ExpCluster uses: actions/checkout@v4 with: path: external_plugins/ExpCluster - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: lts/* - - name: Install and build the workspace + node-version: ${{ env.NODE_VERSION }} + - name: Install and build working-directory: . run: pnpm install --no-frozen-lockfile - name: Run tests run: pnpm --filter "@expcluster/*" run test - - name: Build each package on its own + - name: Run reference checks run: | - # pnpm install runs prepare in dependency order, which hides a missing - # project reference (#473). Building from an empty dist one package at - # a time fails unless every cross package import is referenced. + # pnpm install runs prepare in dependency order, which hides missing + # project references. Building from an empty dist one package at a time + # will fail unless every cross package import is referenced correctly. for pkg in exp_*/; do rm -rf exp_*/dist echo "::group::${pkg%/}"