Skip to content

ci: path-filter extension tests and split TypeScript and R checks - #1941

Merged
eitsupi merged 3 commits into
mainfrom
ci/path-filtered-checks
Nov 14, 2026
Merged

eitsupi merged 3 commits into
mainfrom
ci/path-filtered-checks

Conversation

@eitsupi

@eitsupi eitsupi commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

Summary

The slow extension test workflow currently runs for every change, including documentation and CI-only edits. This PR path-filters it and moves the quick checks into their own workflows.

  • main.yml (tests + VSIX build) runs on push / pull_request only when files that can affect the extension change. It uses a deny-list ('**' followed by exclusions) so new inputs trigger it by default. Excluded: top-level docs, lint/format configs, editor and agent directories, benchmarks, and .github/** except main.yml and the scripts it runs. workflow_call from release.yml is unaffected.
  • New typescript.yml: format (oxfmt), lint (oxlint), and a new typecheck (tsc --noEmit) job, filtered to TypeScript sources, dependency manifests, tsconfig.json, oxc configs, and .gitignore.
  • New r.yml: lintr on R/ and sess/, filtered to those directories. lintr is installed with r-lib/actions/setup-r-dependencies.
  • Both new workflows add workflow_dispatch, contents: read, and cancel superseded PR runs.

main has no required status checks, so skipped workflows do not block merges.

Trade-offs:

  • Lint and format no longer gate release.yml or the latest GitHub release; they run on PRs and pushes.
  • If a documentation-only push lands while a relevant push is still being verified, the existing "main still points to the verified revision" guard skips updating latest, and the documentation push starts no new build. latest then stays behind until the next relevant push.
  • Changes to release.yml / pre-release.yml alone no longer run the extension tests, which do not exercise those workflows anyway.

Run the slow extension test and build workflow only when files that can
affect the extension change, using a deny-list so new inputs still trigger
it. Move formatting and linting into separate typescript and r workflows
with their own path filters, and add a TypeScript type-check job.
@eitsupi
eitsupi marked this pull request as ready for review November 13, 2026 15:00

@renkun-ken renkun-ken left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 9383a5b. No actionable regressions found.

The main workflow's ordered exclusions and re-inclusions retain the current build/test inputs and helper scripts. The TypeScript filters match the current formatter scope and cover compiler, dependency, lint/format, and file-discovery configuration; the R filters include both linted directories and their .lintr files. Reusable release calls remain available through workflow_call. The release/latest behavior changes are documented in the PR.

Validation: parsed the three workflow files and checked representative path-filter cases; local TypeScript formatting and both R lint commands passed. All eight hosted checks passed, including extension tests on macOS, Linux, and Windows, the VSIX build, TypeScript formatting/lint/typecheck, and R lint.

…ecks

# Conflicts:
#	.github/workflows/main.yml
@eitsupi
eitsupi merged commit a788a2b into main Nov 14, 2026
8 of 9 checks passed
@eitsupi
eitsupi deleted the ci/path-filtered-checks branch November 14, 2026 00:11
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.

2 participants