Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
6d348cc
Add RustPython generated WASM WS module
jayvdb Jun 16, 2026
503f522
Force driver
jayvdb Jun 16, 2026
67d5617
another win fix
jayvdb Jun 16, 2026
81e8fb2
oxlint & oxfmt, and fixes
jayvdb Jun 16, 2026
946fa95
Build rust-python assets
jayvdb Jun 17, 2026
4c5f3e6
fixes
jayvdb Jun 17, 2026
2afff9c
various fixes
jayvdb Jun 17, 2026
6ccc815
fixes; activate pywasm1
jayvdb Jun 17, 2026
d85174d
Add suse
jayvdb Jun 17, 2026
62c07cf
a few fixes
jayvdb Jun 17, 2026
384cf65
more fixes
jayvdb Jun 17, 2026
73e74e3
fixes
jayvdb Jun 17, 2026
dba572f
two fixes
jayvdb Jun 17, 2026
444d786
a few fixes
jayvdb Jun 17, 2026
6acf928
rm bashisms
jayvdb Jun 17, 2026
349a911
two fixes
jayvdb Jun 17, 2026
3743cbd
stuff
jayvdb Jun 17, 2026
d356827
fixes
jayvdb Jun 17, 2026
f749193
switch to et-rp
jayvdb Jun 17, 2026
5ee1d91
cowsay on nano
jayvdb Jun 17, 2026
321f0b5
two win fixes
jayvdb Jun 17, 2026
8e06f97
more win fixes
jayvdb Jun 17, 2026
53d8f24
remove gen: dep task from the build tasks
jayvdb Jun 17, 2026
995b2cf
more windows fixes
jayvdb Jun 18, 2026
091b08c
narrow gha for faster feedback; fix windows; lint conftest
jayvdb Jun 18, 2026
ec208ee
Add MISE_ENV support to edge-toolkit
jayvdb Jun 18, 2026
8f31bb9
add servercore
jayvdb Jun 18, 2026
cbd1513
fix per-lang skip
jayvdb Jun 18, 2026
c0bc834
two fixes
jayvdb Jun 18, 2026
8448c74
Re-enable langs
jayvdb Jun 18, 2026
fea14fe
fix windows tool paths
jayvdb Jun 18, 2026
24d6931
fixes
jayvdb Jun 18, 2026
dcd7346
windows fixes and shared actions
jayvdb Jun 18, 2026
773555e
disable python on nana, add HELP.md
jayvdb Jun 18, 2026
23a78bc
new approach to fix prefetch hang on windows test.yaml
jayvdb Jun 18, 2026
ef43153
rv buildkit
jayvdb Jun 18, 2026
9990949
another rv
jayvdb Jun 18, 2026
acdc43a
debug mise
jayvdb Jun 18, 2026
d30ae7c
debugging
jayvdb Jun 18, 2026
bc0c483
more diagnostics
jayvdb Jun 18, 2026
eb622b6
Bypass mise file shims for retry inner command
jayvdb Jun 18, 2026
87624a5
Empty MISE_ENV in test.yaml to bisect language toolchain
jayvdb Jun 18, 2026
a96442b
Dump mise shim contents to diagnose setlocal recursion
jayvdb Jun 18, 2026
524633c
Fix pwsh "$name:" parse error in shim diagnostic
jayvdb Jun 18, 2026
bdbb445
Delete self-recursive mise.cmd shim on Windows
jayvdb Jun 18, 2026
5c960b3
Move mise.cmd-removal step AFTER mise install
jayvdb Jun 18, 2026
d4e5d01
Set HOME=USERPROFILE on Windows for mise Tera renderer
jayvdb Jun 18, 2026
a540cca
add .js lang
jayvdb Jun 18, 2026
cb71709
Gate more tests on MISE_ENV-loaded language envs
jayvdb Jun 18, 2026
f5d5668
Bisect: MISE_ENV='rust' on test.yaml
jayvdb Jun 18, 2026
02c2e6e
Bisect: MISE_ENV='rust,python' on test.yaml
jayvdb Jun 18, 2026
63e8dfc
Bisect: MISE_ENV='rust,python,zig' on test.yaml
jayvdb Jun 18, 2026
2ac92b1
Bisect: MISE_ENV='rust,python,zig,java' on test.yaml
jayvdb Jun 18, 2026
4994fb5
Bisect: skip java, try dotnet next
jayvdb Jun 18, 2026
ffacb78
Comment out all use of recur
jayvdb Jun 18, 2026
f74314c
Add per-step timeouts to test.yaml
jayvdb Jun 18, 2026
78b1750
build-ws-wasm-agent: route wasm-pack through mise exec
jayvdb Jun 19, 2026
6092b62
Revert build-ws-wasm-agent `mise exec --` wrapper
jayvdb Jun 19, 2026
177898f
Stable-toolchain wasm-agent + re-enable ubuntu-latest
jayvdb Jun 19, 2026
3a1e0c8
Add +reference-types to wasm_rustflags
jayvdb Jun 19, 2026
0490dbc
Hoist wasm_rustflags from task env to workspace [env]
jayvdb Jun 19, 2026
d5bb7e0
Move build-ws-wasm-agent into config.rust.toml
jayvdb Jun 19, 2026
307b8ec
Move build-et-cli into config.rust.toml
jayvdb Jun 19, 2026
a6d1dfa
Restore build-et-cli to base config, use shell=bash
jayvdb Jun 19, 2026
4d703cf
Use busybox-w32 ash as Windows default shell
jayvdb Jun 19, 2026
b409163
Drop --noprofile --norc from busybox ash invocation
jayvdb Jun 19, 2026
7141deb
Disable mise's vfox backend + pin idiomatic-files off
jayvdb Jun 19, 2026
914c143
Disable chromedriver in [tools]
jayvdb Jun 19, 2026
3ac0d60
Bisect: add js to MISE_ENV; re-enable docker-windows servercore 2025
jayvdb Jun 19, 2026
e52df89
windows fixes and build more binary assets
jayvdb Jun 19, 2026
eb6e488
Drop workflow_dispatch-only gating on new upstream-cache jobs
jayvdb Jun 19, 2026
7e32f61
set windows_default_inline_shell_args
jayvdb Jun 19, 2026
90cd565
Add java to MISE_ENV bisect; set JAVA_HOME on Windows; lift pkgx auge…
jayvdb Jun 19, 2026
cfa309c
Drop empty env block from test.yaml job (regressed from previous push)
jayvdb Jun 19, 2026
576f852
Wire up http:gnupg-w32 from the upstream-cache release
jayvdb Jun 19, 2026
93a198a
augeas Windows: add -Duint=unsigned for the BSD-ism
jayvdb Jun 19, 2026
bf3edc1
augeas Windows: patch augtool.c to skip pwd.h
jayvdb Jun 19, 2026
451f208
Rename upstream-cache config to a single dir
jayvdb Jun 19, 2026
cdd057b
add patch
jayvdb Jun 19, 2026
bc0024e
Park test.yaml + docker-windows.yaml while iterating on augeas
jayvdb Jun 19, 2026
68e7fbc
augeas Windows: shim `uint` in internal.h; wrap sigaction guards
jayvdb Jun 19, 2026
d0a172c
augeas Windows: use a non-zero blob index for the internal.h hunk
jayvdb Jun 19, 2026
8c34e94
augeas Windows: ship a minimal <glob.h> shim for syntax.c
jayvdb Jun 19, 2026
338ad82
update
jayvdb Jun 19, 2026
79108ae
augeas Windows: cygpath -m \$RUNNER_TEMP for libtool -rpath
jayvdb Jun 19, 2026
2b81850
augeas Windows: route the final tar through cygpath -m too
jayvdb Jun 19, 2026
b5a2419
augeas Windows: tar --force-local to silence the host:path heuristic
jayvdb Jun 19, 2026
6c03465
Wire up http:augeas; drop cargo:toml-cli
jayvdb Jun 19, 2026
5734c91
Build augeas from source on all five platforms
jayvdb Jun 20, 2026
48d7717
augeas: relocate binaries + bundle brew deps (macOS/Linux)
jayvdb Jun 20, 2026
93314a1
augeas: update shas to the relocated-builds + set AUGEAS_LENS_LIB
jayvdb Jun 20, 2026
f8691c7
Park every upstream-cache job (if: false on each)
jayvdb Jun 20, 2026
a5c170a
Re-enable test.yaml + docker-windows.yaml on PRs
jayvdb Jun 20, 2026
b8f1fa8
Strip project-name prefix from upstream-cache asset filenames
jayvdb Jun 20, 2026
6d35cf7
Define JAVA_HOME cross-platform in config.java.toml
jayvdb Jun 20, 2026
896f054
Set MISE_JOBS via GITHUB_ENV step on Windows (not step-level env)
jayvdb Jun 20, 2026
d863907
Diagnose JAVA_HOME on Windows runner
jayvdb Jun 20, 2026
b8f5b5f
test.yaml: narrow MISE_ENV to java; diagnose JAVA_HOME via mise early
jayvdb Jun 20, 2026
f9fd252
Move build-ws-wasm-agent back to the global task list
jayvdb Jun 20, 2026
ebea28f
JAVA_HOME: drop the (wrong) jdk-X.Y.Z+N wrapper segment
jayvdb Jun 20, 2026
f44f704
JAVA_HOME (Windows): normalize forward-slash LOCALAPPDATA to backslashes
jayvdb Jun 20, 2026
bdbddf7
JAVA_HOME (Windows): use backtick-quoted tera string for the replace
jayvdb Jun 20, 2026
88388dd
JAVA_HOME diag: hex-dump bash value + drive cmd.exe directly
jayvdb Jun 20, 2026
71c6b93
test.yaml (Windows): run prefetch:java early as a fail-fast
jayvdb Jun 20, 2026
f4a6668
prefetch:java: mirror the JAVA_HOME diag block
jayvdb Jun 20, 2026
7b08dfb
java diag: use /c not //C for cmd.exe
jayvdb Jun 20, 2026
7521635
Park ubuntu rust + servercore docker; expand JAVA_HOME diag
jayvdb Jun 20, 2026
ae26272
java diag: mimic mvn.cmd block + introspect mvn launcher
jayvdb Jun 20, 2026
5764b7b
Use \$MVN (= mvn.cmd on Windows) to skip the bare Unix mvn script
jayvdb Jun 20, 2026
bfcde6b
Re-enable servercore (java-only); restore test.yaml MISE_ENV to all l…
jayvdb Jun 20, 2026
b42dcfd
MVN: prefix cmd.exe /c on Windows; enable all langs in docker lanes
jayvdb Jun 20, 2026
da8d232
MVN: use absolute path to mvn.cmd on Windows
jayvdb Jun 20, 2026
872c212
move rp-wasm to mise tool
jayvdb Jun 20, 2026
af585b8
Clean up Windows-bisect scaffolding now that the root cause is fixed
jayvdb Jun 20, 2026
c0d068b
rp_wasm_dir: OS-conditional install root for Windows
jayvdb Jun 20, 2026
ea7e0d2
rp_wasm_dir: inline get_env, don't cross-reference config.windows.toml
jayvdb Jun 20, 2026
5da8637
another rp_wasm fix
jayvdb Jun 20, 2026
444306b
fix windows containers
jayvdb Jun 20, 2026
90048eb
taplo fmt
jayvdb Jun 20, 2026
2b7dfc0
Post-green cleanup; probe HOME-unset claim empirically
jayvdb Jun 20, 2026
465ed5f
taplo fmt
jayvdb Jun 20, 2026
cefee04
Add free-disk-space-windows action; narrow CI to test.yaml-windows to…
jayvdb Jun 20, 2026
7b03f98
enable windows docker, and disable test step
jayvdb Jun 20, 2026
d5ecac2
docker windows test
jayvdb Jun 21, 2026
144251f
enable all workflows
jayvdb Jun 21, 2026
6e4c003
tidy gha
jayvdb Jun 21, 2026
63da812
fix dependenncy.yaml last commit; minor tidy
jayvdb Jun 21, 2026
7936aee
README correction about .NET
jayvdb Jun 21, 2026
4754acc
Improve docs
jayvdb Jun 22, 2026
7381da2
more reflowing
jayvdb Jun 22, 2026
aa401b2
more reflow
jayvdb Jun 22, 2026
90c436a
more reflow
jayvdb Jun 22, 2026
fd64c9b
slightly more reflow
jayvdb Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
**/target/
**/.DS_Store
services/ws-wasm-agent/pkg/
services/ws-modules/pywasm1/pkg/
services/ws-server/static/models/
**/.zig-cache/
**/zig-out/
Expand Down
27 changes: 13 additions & 14 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ indent_style = tab
indent_size = unset

# License files use the canonical upstream formatting (centred headers, odd
# indent widths, etc.) leave them alone.
# indent widths, etc.) -- leave them alone.
[LICENSE-*]
indent_size = unset
indent_style = unset
Expand All @@ -43,7 +43,7 @@ indent_style = unset
max_line_length = unset
trim_trailing_whitespace = unset

# Upstream WIT packages fetched verbatim their formatting is whatever the
# Upstream WIT packages fetched verbatim -- their formatting is whatever the
# upstream repos use and shouldn't be normalised on our side.
[generated/specs/wit/deps/wasi-*/**]
charset = unset
Expand All @@ -55,22 +55,18 @@ trim_trailing_whitespace = unset
max_line_length = unset

# openapi-python-client emits framework-boilerplate docstrings (e.g. the
# "errors.UnexpectedStatus: If the server returns an undocumented status code
# …" line in every operation) that exceed 120 chars, and continuation lines
# inside the generated function signatures use 3-space indentation that
# clashes with the workspace `indent_size = 2`. ruff format doesn't reflow
# plain-text docstrings or re-indent the templates, so we drop both checks
# for this tree.
# "errors.UnexpectedStatus: If the server returns an undocumented status code ..." line in every operation) that exceed
# 120 chars, and continuation lines inside the generated function signatures use 3-space indentation that
# clashes with the workspace `indent_size = 2`. ruff format doesn't reflow plain-text docstrings or
# re-indent the templates, so we drop both checks for this tree.
[generated/python-rest/**]
indent_size = unset
max_line_length = unset

# datamodel-code-generator renders each Pydantic field's `description=`
# from the schemars `description` (i.e. the source enum's `///` doc
# comment) as a single string literal — `\n`-joined, no implicit
# concatenation. ruff format won't break string literals, so any
# multi-paragraph Rust doc comment on `ClientMessage` / `ServerMessage`
# blows past 120 chars in the generated Python.
# datamodel-code-generator renders each Pydantic field's `description=` from the schemars `description`
# (i.e. the source enum's `///` doc comment) as a single string literal -- `\n`-joined, no implicit
# concatenation. ruff format won't break string literals, so any multi-paragraph Rust doc comment on
# `ClientMessage` / `ServerMessage` blows past 120 chars in the generated Python.
[generated/python-ws/**]
max_line_length = unset

Expand All @@ -79,3 +75,6 @@ max_line_length = unset
# The generator is the source of truth; we don't edit its output by hand.
[generated/zig-rest/**]
max_line_length = unset

[config/upstream-cache/data.toml]
max_line_length = 200
4 changes: 2 additions & 2 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
# Windows runners default to `core.autocrlf=true`, which rewrites LF to
# CRLF at checkout. Multiple formatters in this repo (zig fmt, dprint)
# read CRLF as a diff against their LF-normalized output and report
# every file as "would be reformatted" with no diff, just paths.
# every file as "would be reformatted" -- with no diff, just paths.
# Pinning `eol=lf` workspace-wide makes the checked-out tree match the
# committed bytes on every OS, so the formatters behave identically.
* text=auto eol=lf

# Binaries tracked in this repo never run text conversion on these.
# Binaries tracked in this repo -- never run text conversion on these.
*.png binary
124 changes: 124 additions & 0 deletions .github/actions/free-disk-space-windows/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
---
name: Free disk space
description: >-
Remove safely-unused preinstalled software from the GHA Windows runner's
`C:\` to give downstream `docker build` (which stages HCS layer scratch
on `C:\Windows\SystemTemp`) more headroom. Counterpart to
jlumbroso/free-disk-space on Linux, which doesn't have a Windows path.
Logs disk-free before + after so the reclaimed space is visible.

Enabling all makes approximately 10Gb free.

Caller is responsible for the `if: runner.os == 'Windows'` guard --
every step here uses Git Bash with `C:\` mounted at `/c`; running this
on a non-Windows runner will silently no-op (no /c mount) at best.

inputs:
android:
description: "Remove Android SDK trees (~12 GB)."
required: false
default: "true"
hostedtoolcache-old-pythons:
description: >-
Remove Python 3.9/3.10/3.11/3.12 versions from `hostedtoolcache`
(~2 GB). The repo uses mise's pinned 3.13.
required: false
default: "true"
hostedtoolcache-old-jdks:
description: >-
Remove JDK 8/11/17/21 versions from `hostedtoolcache\Java`
(~1 GB). The repo uses mise's pinned Java 26.
required: false
default: "true"
old-dotnet-sdks:
description: >-
Remove .NET SDK 6.0.x and 7.0.x trees (~1-2 GB). The repo
installs current dotnet via mise.
required: false
default: "true"
misc-sdks:
description: >-
Remove unused preinstalled SDKs (Heroku, MongoDB, PostgreSQL,
Strawberry Perl) -- ~1 GB combined.
required: false
default: "true"
keep-image:
description: >-
Docker image (repo:tag) to preserve during the docker prune.
Empty (default) removes every image.
required: false
default: ""

runs:
using: composite
steps:
- name: Disk usage before
shell: bash --noprofile --norc -euo pipefail {0}
run: df -h /c

- name: Remove Android SDK
if: inputs.android == 'true'
shell: bash --noprofile --norc -euo pipefail {0}
run: |
for p in "/c/Android" "/c/Program Files (x86)/Android"; do
[ -e "$p" ] && { echo "removing $p"; rm -rf -- "$p"; } || true
done

- name: Remove hostedtoolcache old Pythons
if: inputs.hostedtoolcache-old-pythons == 'true'
shell: bash --noprofile --norc -euo pipefail {0}
run: |
shopt -s nullglob
for p in /c/hostedtoolcache/Python/3.{9,10,11,12}*; do
echo "removing $p"
rm -rf -- "$p"
done

- name: Remove hostedtoolcache old JDKs
if: inputs.hostedtoolcache-old-jdks == 'true'
shell: bash --noprofile --norc -euo pipefail {0}
run: |
shopt -s nullglob
for p in /c/hostedtoolcache/Java_Adopt_jdk/{8,11,17,21}.*; do
echo "removing $p"
rm -rf -- "$p"
done

- name: Remove old .NET SDKs
if: inputs.old-dotnet-sdks == 'true'
shell: bash --noprofile --norc -euo pipefail {0}
run: |
shopt -s nullglob
for p in "/c/Program Files/dotnet/sdk/"{6,7}.0.*; do
echo "removing $p"
rm -rf -- "$p"
done

- name: Remove misc SDKs
if: inputs.misc-sdks == 'true'
shell: bash --noprofile --norc -euo pipefail {0}
run: |
pf="/c/Program Files"
pf86="/c/Program Files (x86)"
for p in "$pf/MongoDB" "$pf/PostgreSQL" "$pf86/Heroku" "/c/Strawberry"; do
[ -e "$p" ] && { echo "removing $p"; rm -rf -- "$p"; } || true
done

- name: Prune docker images and builder cache
shell: bash --noprofile --norc -euo pipefail {0}
env:
KEEP_IMAGE: ${{ inputs.keep-image }}
run: |
docker images
for img in $(docker images --format '{{.Repository}}:{{.Tag}}'); do
if [ "$img" != "$KEEP_IMAGE" ]; then
docker rmi -f "$img" || true
fi
done
docker container prune -f
docker network prune -f
docker builder prune -af

- name: Disk usage after
shell: bash --noprofile --norc -euo pipefail {0}
run: df -h /c
74 changes: 74 additions & 0 deletions .github/actions/install-mise-tools/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
name: Install mise tools
description: >-
Runs `install-mise` action, then installs all of the tools in the per-language
toolchains named by the workflow's MISE_ENV (with one retry on transient
HTTP flakes). Shared by check.yaml and test.yaml; the caller must run
`actions/checkout` before this so .mise/config*.toml exists for `mise trust`.

inputs:
github-token:
description: >-
GitHub token forwarded as `$GITHUB_TOKEN` to the mise install steps.
required: true
install-action-tools:
description: >-
Comma-separated tools to co-install via taiki-e/install-action in the
same step as mise. Forwarded to install-mise's `extra-tools` input.
NOT used for `aube` -- install-action's manifest expects an `aubr`
binary that recent aube releases don't ship, so the install resolves
to a cargo source-build that flakes on crates.io SSL. The aube path
below uses the original `mise run setup-aube` (npm-backed, allowed
to fail) which has been the reliable install method.
required: false
default: ""

runs:
using: composite
steps:
- name: Install mise binary
uses: ./.github/actions/install-mise
with:
install-action: ${{ inputs.install-action-tools }}

# Optional npm backend, installed before the main `mise install`.
# Only useful when js env is loaded (it's the backend for npm:* tools, all of which live in config.js.toml); skip
# otherwise to avoid the install cost on workflows that don't need any npm: install. See [tasks.setup-aube] in
# .mise/config.toml for the full rationale.
- name: Install aube (optional npm backend, allowed to fail)
if: contains(env.MISE_ENV, 'js')
continue-on-error: true
shell: bash --noprofile --norc -euo pipefail {0}
env:
GITHUB_TOKEN: ${{ inputs.github-token }}
run: mise run setup-aube

- name: Install mise tools
id: install-mise-tools
continue-on-error: true
shell: bash --noprofile --norc -euo pipefail {0}
env:
GITHUB_TOKEN: ${{ inputs.github-token }}
run: |
mise run preinstall
mise install

- name: Install mise tools (retry)
if: steps.install-mise-tools.outcome == 'failure'
shell: bash --noprofile --norc -euo pipefail {0}
env:
GITHUB_TOKEN: ${{ inputs.github-token }}
run: |
sleep 20
mise install

# Delete mise's auto-generated `mise.cmd` shim on Windows.
# This lets cmd's PATH search fall through to the real `mise.exe` at `~/.cargo/bin/mise.exe` (staged by
# taiki-e/install-action). Must run AFTER `mise install` -- that's the step that creates the shims.
- name: Remove self-recursive mise.cmd shim on Windows
if: runner.os == 'Windows'
shell: bash --noprofile --norc -euo pipefail {0}
run: |
shims="$LOCALAPPDATA/mise/shims"
rm -fv "$shims/mise.cmd" "$shims/mise"
ls "$shims" | grep -i '^mise' || true
54 changes: 54 additions & 0 deletions .github/actions/install-mise/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
name: Install mise
description: >-
Install the mise binary via taiki-e/install-action, and on Windows add mise's
file-shim dir to PATH so subsequent steps can resolve mise-managed tools by
bare name.

inputs:
install-action-tools:
description: >-
Comma-separated tools to co-install via taiki-e/install-action.
required: false
default: ""

runs:
using: composite
steps:
- name: Verify actions/checkout has run
shell: bash --noprofile --norc -euo pipefail {0}
run: git rev-parse --is-inside-work-tree >/dev/null

- name: Install mise
uses: taiki-e/install-action@v2
with:
tool: cargo-binstall,mise@2026.6.5

- name: Install extra tools via install-action
if: inputs.install-action-tools != ''
uses: taiki-e/install-action@v2
with:
tool: ${{ inputs.install-action-tools }}

# Append mise's shims dir to PATH for subsequent steps on Windows.
# taiki-e/install-action's mise manifest stages only `mise.exe`; mise's per-tool `.cmd` "file" shims under
# `%LOCALAPPDATA%\mise\shims` aren't on PATH by default, so tool lookups inside `mise run` fail with
# `'dart' / 'mvn' / 'recur' / 'wasm-pack' / 'zig' is not recognized...`. The companion `mise-shim.exe`
# (single-binary shim) ALSO ships in the Windows zip, but staging it triggers a CreateProcess
# `ERROR_FILENAME_EXCED_RANGE` (os error 206) when mise-shim re-execs mise.exe with the runner's already-long
# PATH inherited -- the file-shim fallback doesn't have this problem (each .cmd shim invokes `mise exec --`
# plainly via cmd).
- name: Add mise shims dir to PATH on Windows
if: runner.os == 'Windows'
shell: bash --noprofile --norc -euo pipefail {0}
# The github-env audit's arbitrary-code-execution shape doesn't apply here.
# The appended value is a hardcoded mise install-dir constant under our control -- no user input flows in.
run: echo "$LOCALAPPDATA\mise\shims" >> "$GITHUB_PATH" # zizmor: ignore[github-env]

- name: Trust mise config
shell: bash --noprofile --norc -euo pipefail {0}
run: mise trust

- name: Show MISE_ENV
shell: bash --noprofile --norc -euo pipefail {0}
run: echo "MISE_ENV=$MISE_ENV"
36 changes: 7 additions & 29 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ concurrency:

defaults:
run:
shell: bash
shell: bash --noprofile --norc -euo pipefail {0}

env:
MISE_ENV: dart,dotnet,java,js,python,rust,zig

jobs:
check:
Expand All @@ -29,35 +32,10 @@ jobs:
fetch-depth: 1
persist-credentials: false

- name: Install mise
uses: taiki-e/install-action@v2
- name: Install mise + tools
uses: ./.github/actions/install-mise-tools
with:
tool: cargo-binstall,mise@2026.6.5

- name: Select all language envs
run: echo "MISE_ENV=$(mise run print-all-langs)" >> "$GITHUB_ENV"

# Optional npm backend, installed before the main `mise install`.
# See [tasks.setup-aube] in .mise/config.toml for the full rationale.
- name: Install aube (optional npm backend, allowed to fail)
continue-on-error: true
run: |
mise settings experimental=true
mise run setup-aube
env:
GITHUB_TOKEN: ${{ github.token }}
MISE_HTTP_TIMEOUT: "120"

- name: Install mise tools
run: |
mise run preinstall
mise install
env:
GITHUB_TOKEN: ${{ github.token }}
# GitHub release downloads occasionally take longer than mise's
# default 30s HTTP timeout; bump it so transient network slowness
# doesn't fail the whole `mise install` step.
MISE_HTTP_TIMEOUT: "120"
github-token: ${{ github.token }}

- name: Prefetch Rust dependencies
run: mise run prefetch:rust
Expand Down
Loading
Loading