-
ship.zone runner v3.0.0
Stablereleased this
2026-10-15 15:41:55 +00:00 | 1 commits to main since this releaseBreaking Changes
- run on Node.js 26.1 or later instead of Deno (runtime)
- The package compiles to
dist_ts/with@git.zone/tsbuild;deno.json,deno.lock,mod.ts
and thejsr:@std/*imports are gone, and every module dependency goes throughts/plugins.ts. - Subprocesses run through
node:child_processwith an explicit environment and SIGTERM-then-SIGKILL
termination; staging capacity readsfs.statfswith the fragment sizefrsize(Node.js 26.1+)
instead of running/usr/bin/stat. - Streamed artifact and cache uploads use the global
fetchhalf-duplex (duplex: 'half'), as
Node.js requires for a stream request body. - The CLI entry is
ts/cli-entry.ts; its usage text names theship-zone-runnerexecutable.
- The package compiles to
- one runner per state directory (state)
- The runner takes an exclusive kernel
flockon<state>/.runner-owner.lockthrough its own helper
(runnerworkspace own-state) before it touches the state directory; a second runner on the same
directory stops at once withRunnerStateOwnedElsewhereError(helper exit code 3), and losing the
helper stops the runner withRunnerStateOwnershipLostError. Many runners per host remain supported. OciExecutor,AttemptStateStore,RegistrationStateStore,scavengeRunnerStagingand
ShipRunner(stateOwnerdependency) take aRunnerStateOwner;registerRunnerDurablyrequires
itsstateStore.- The 2.x advisory
.workspace-helper.lockfile is removed and no longer used. - Staging is scavenged first, right after ownership is taken and before runtime verification.
- The runner takes an exclusive kernel
ITransferArchiveFileOperationsuses Node.js shapes:openReadreturns aFileHandle,
makeTempFile/removetakeIMakeTempOptions/IRemoveOptions(transfer)- the npm
binship-zone-runnerrunsdist_ts/cli-entry.jswith Node.js instead of the Deno bundle
dist_npm/mod.js(cli)pnpm buildchecks that the entry is built and starts with#!/usr/bin/env node
(scripts/verify-npm-entrypoint.ts).
- the package exports only
.(dist_ts/index.js, typesdist_ts/index.d.ts); the./mod.js
subpath and thedist_npm/bundle are removed (exports)
Features
- ship the runner as Node.js 26.11.1 single executables for Linux x64 and arm64 (release)
pnpm run build:binarybundlests/cli-entry.tswith@git.zone/tsbundleand builds
ship-zone-runner-linux-x64andship-zone-runner-linux-arm64with@git.zone/tssea; each
embeds the static workspace helper of its architecture as the sidecarrunnerworkspace, which
the runner reads through@push.rocks/smartsea, and comes with its third-party notices.- A
v*tag runs.gitea/workflows/release.yml, which uploads the executables, their notices,
install.shandSHA256SUMS.txtas release assets. curl -fsSL https://code.foss.global/ship.zone/runner/releases/download/latest/install.sh | sudo bash
installs the executable to/opt/ship-zone-runnerand links/usr/local/bin/ship-zone-runner;
it leaves configuration and state where the runner keeps them.ship-zone-runner --versionprints the version, likeversion.
Maintenance
- tooling:
@git.zone/tsrust4.6, pnpm 12.10.1 - generated native notices replace the hand-kept legal files (legal)
tsrust noticeswritesnative-notices/(Rust crates, jemalloc, the Rust standard library,
musl, libunwind and the GCC runtime), which the package ships and every build checks;
third-party-licenses.mdandmusl-copyright.mdare removed.rust-toolchain.tomlpins Rust 1.95.0 withrust-srcand both musl targets, and the aarch64
musl linker isaarch64-linux-musl-gcc.
- CI builds, type checks and tests on Node.js 26 in
ht-docker-node(ci) - tests run on
@git.zone/tstest8 astest/test.*.node.ts; the build uses@git.zone/tsbuild6 with@types/node26
Downloads
- run on Node.js 26.1 or later instead of Deno (runtime)