mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix(.github/workflows): run windows mise install under bash, tolerate missing mtimehash (#28020)
Closes coder/internal#1630 (Linear CODAGT-879). ## Problem `test-go-pg (windows-2022)` flaked with `mtimehash: command not found` (exit 127) before any tests ran. The `Install Go mise tools` step ran `retry.sh` (a bash script) without `shell: bash`, so Windows executed it under the default PowerShell shell, which reports success without actually running the install. A warm mise tool cache masks the defect, making it intermittent. #27483 fixed the `ci.yaml` `test-go-pg` step, but two gaps remained. ## Changes - **`nightly-gauntlet.yaml`**: add `shell: bash` to its `Install Go mise tools` step, which had the identical unfixed defect on the `windows-2022` matrix entry (installs `gotestsum` the same way). - **`ci.yaml`**: the `Normalize File and Directory Timestamps` step now warns and skips instead of failing the job when `mtimehash` is missing, since it only optimizes Go test cache hits. This is the follow-up hardening suggested in coder/internal#1630 so a cache helper can never again prevent the tests from running. ## Reproduction and verification on a real Windows runner A temporary workflow on this branch (removed in the final commit) recreated the pre-#27483 step shape on `depot-windows-2022-16` with the mise CI cache disabled to emulate the cache-miss path: - **Repro run [31484281427](https://github.com/coder/coder/actions/runs/31484281427)**: the default-shell install step reported `success` under `pwsh.EXE` with no install output; the subsequent bash step failed with `mtimehash: command not found`, pipeline exit code 127 — exactly matching the flake evidence. - **Verification run [31484905616](https://github.com/coder/coder/actions/runs/31484905616)** (all green): with `shell: bash`, mise builds mtimehash and the exact production `find . -type f ! -path ./.git/\*\* | mtimehash` command runs cleanly. ## Validation - `actionlint` and `make lint/actions/zizmor` pass on the modified workflows. - Pre-commit hooks green on all commits. --- _Generated with [`mux`](https://github.com/coder/mux) • Model: `anthropic:claude-fable-5` • Thinking: `xhigh`_
This commit is contained in:
@@ -605,8 +605,15 @@ jobs:
|
||||
# Normalize file modification timestamps so that go test can use the
|
||||
# cache from the previous CI run. See https://github.com/golang/go/issues/58571
|
||||
# for more details.
|
||||
#
|
||||
# mtimehash only optimizes cache hits, so a missing binary must not
|
||||
# fail the job before any tests run (coder/internal#1630).
|
||||
run: |
|
||||
find . -type f ! -path ./.git/\*\* | mtimehash
|
||||
if command -v mtimehash >/dev/null 2>&1; then
|
||||
find . -type f ! -path ./.git/\*\* | mtimehash
|
||||
else
|
||||
echo "::warning::mtimehash not found; skipping file timestamp normalization (Go test cache may be cold)"
|
||||
fi
|
||||
find . -type d ! -path ./.git/\*\* -exec touch -t 200601010000 {} +
|
||||
|
||||
- name: Normalize Terraform Path for Caching
|
||||
|
||||
@@ -68,6 +68,11 @@ jobs:
|
||||
install-args: "go terraform"
|
||||
|
||||
- name: Install Go mise tools
|
||||
# retry.sh is a bash script, so an explicit shell is required for the
|
||||
# Windows matrix entry. Under the default PowerShell shell the step
|
||||
# reports success without running the install, so gotestsum is
|
||||
# silently missing whenever the mise cache misses (coder/internal#1630).
|
||||
shell: bash
|
||||
run: ./.github/scripts/retry.sh -- mise install --locked go:gotest.tools/gotestsum
|
||||
|
||||
- name: Setup Embedded Postgres Cache Paths
|
||||
|
||||
Reference in New Issue
Block a user