Skip to content

Update CI action versions#6

Open
duducpp wants to merge 22 commits into
mainfrom
feat/ci-improvments
Open

Update CI action versions#6
duducpp wants to merge 22 commits into
mainfrom
feat/ci-improvments

Conversation

@duducpp
Copy link
Copy Markdown
Owner

@duducpp duducpp commented May 14, 2026

Motivation

Keep CI actions on current compatible refs and reduce noisy workflow annotations before GitHub runner changes around Node.js 20 actions.

Summary

Update GitHub Actions refs and tune the test workflow annotation sources.

Changes

  • Update official GitHub actions to current major refs
  • Update third-party CI actions to compatible newer refs
  • Reduce workflow annotations by forcing Node24 for remaining Node20 JavaScript actions, disabling setup-go module cache, selecting the explicit Windows image, using RSPM, and updating Cabal

Impact

  • Affected areas: GitHub Actions workflows
  • Breaking changes: no
  • Migration required: no

Notes

Untracked local markdown audit files are not included in this PR.

Testing

  • Parsed pytest workflow YAML with PyYAML
  • Checked active pytest action refs with git ls-remote
  • Ran actionlint on .github/workflows/pytest.yml

duducpp added 22 commits May 14, 2026 10:29
Motivation: keep GitHub-maintained CI actions on current major refs.

Summary:

- Update checkout to v6 across workflows

- Update setup/cache/pages official actions to current major refs

- Leave third-party action updates unstaged
Motivation: keep non-official CI actions on current compatible refs.

Summary:

- Update Docker action refs to latest major versions

- Update uv, Clojure, Terraform, Julia, and Nix action refs

- Preserve existing action configuration
Motivation: remove noisy CI annotations from the test workflow.

Summary:

- Force Node24 for remaining Node20 JavaScript actions

- Disable setup-go module cache when no go.sum exists

- Use explicit Windows image, RSPM packages, and Cabal 3.14
Motivation: provide a faster sharded CI path for language-server test coverage.

Summary:

- Add pytest-v2 workflow with OS and marker shards

- Add reusable test-shard composite action for tool setup and caches

- Add changed-language detection composite action and extractor
Motivation: keep pytest-v2 and composite action dependencies on current major refs.

Summary:

- Update checkout refs in pytest-v2 to v6

- Update setup and cache actions in test-shard to current majors

- Use major alias for changed-files in detect-ls-changes
Motivation: make the composite test shard action load in GitHub Actions.

Summary:

- Replace unsupported concat expressions with format

- Preserve token-matching behavior for shard tool checks

- Fix validation failure in pytest-v2 shard jobs
- Motivation: fix failing pytest-v2 CI shards from run 25872349805

- Summary: route Nix tests to the shard with Nix installed and make Windows tool lookup explicit

- Changes:

  - exclude nix-marked snapshot test from core shards

  - resolve opam/opam.exe through a helper before OCaml install and verification

  - resolve npm.cmd on Windows for Angular fixture dependency install
- Motivation: fix Windows data shard losing opam after R setup changes the Bash environment

- Summary: persist the exact opam.exe path from setup-ocaml and reuse it in OCaml install checks

- Changes:

  - export OPAM_EXE from a PowerShell step immediately after ocaml/setup-ocaml

  - prefer OPAM_EXE in the composite action opam helper

  - keep fallback discovery for hosted toolcache opam.exe paths
- Motivation: reduce duplicated CI setup and keep lint/type checks separate from shard execution

- Summary: move shared Python setup into a local action and collapse OS test jobs into one matrix

- Changes:

  - add reusable test-setup action for cache directories, Python, uv, and uv sync

  - remove shared setup, lint, and type-check steps from test-shard

  - run lint and type-check as dedicated jobs before the OS/shard test matrix

  - merge linux, windows, and macOS test jobs into a single matrix job
- Motivation: GitHub rejects the composite action when a large run block contains direct workflow expressions.

- Summary: Move shard tool inputs into step env before shell execution.

- Changes:

  - Add SHARD_TOOLS env for guarded shard tool installation.

  - Update has_group to read the shell env var instead of embedding the expression.
- Motivation: Windows data shard failed after OCaml setup hid Rscript, and CI emitted runner/action cache warnings.

- Summary: Restore Windows R path and remove avoidable workflow warnings.

- Changes:

  - Use windows-2025-vs2026 explicitly in the test matrix.

  - Force JavaScript actions to Node 24 for legacy setup-haxe.

  - Disable setup-uv cache save/restore because actions/cache owns the Python cache.

  - Re-add Rscript to PATH inside guarded shard setup on Windows.
- Delete test-shard composite action
- Inline all shard steps directly into pytest-v2.yml matrix job
- Update cache hashFiles keys to reference workflow file only
- Add ensure_windows_julia_path helper mirroring ensure_windows_rscript_path
- Call it in install_julia_language_server and verify_tool_installs
- Fixes: julia: command not found (exit code 127) on windows data shard
- Each install function is now its own step with an if: condition
- Eliminates has_group() dispatch layer; GitHub if: expressions handle routing
- Shared helpers (download_with_retry, run_opam, Windows path fixups) inlined per step
- verify_ocaml_lsp, verify_lsp_paths, verify_fpc split into dedicated steps
- compiled_cpp / compiled_apple groups used directly (no ambiguous compiled substring)
jvm-dotnet → jvm, compiled-cpp → systems, compiled-apple → apple,
niche-beam → beam, niche-script → scripting
- Add GO_VERSION and GOPLS_VERSION env vars; use in setup-go and install
- Fix gopls cache key from static "latest" to versioned key
- Replace gopls@latest install with pinned @v${GOPLS_VERSION}
- Extract has_group() to .github/scripts/has_group.sh; source in two steps
- Source download_with_retry.sh and run_opam.sh where previously inlined
- Replace format()-wrapped compiled conditions with plain contains()
- Set per-shard timeout (60 min for data/systems, 45 for rest)
- Rename "Setup pnpm" step to "Configure pnpm store"
- Remove docker system prune (no Docker daemon on fresh runners)
- Drop || true from ruby-lsp version check so failures surface
- Remove redundant UV_CACHE_DIR env from Install uv step (already in GITHUB_ENV)
- Remove redundant UV_CACHE_DIR env from Install Python environment step
- Remove stale rm -rf .uv-cache calls left over from local-cache approach
- test-setup action already exports UV_CACHE_DIR to GITHUB_ENV
- Drop explicit env block from lint, type-check, and pytest steps
- Drop || true so broken installs surface instead of silently passing
…ble install

- pnpm/action-setup: remove run_install: false (it is the default)
- DeLaGuardo/setup-clojure: comment that numeric tags have no v prefix
- Ansible: uv run pip install -> uv pip install (avoids deprecated path)
- Both scripts were sourced by workflow steps but never tracked in git
- download_with_retry.sh: curl with 5-attempt retry and backoff
- run_opam.sh: opam wrapper that handles Windows exe path resolution
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant