Skip to content

Move lint to a parallel CI job#26645

Open
frankmueller-msft wants to merge 3 commits intomicrosoft:mainfrom
frankmueller-msft:perf/parallel-lint-ci-job
Open

Move lint to a parallel CI job#26645
frankmueller-msft wants to merge 3 commits intomicrosoft:mainfrom
frankmueller-msft:perf/parallel-lint-ci-job

Conversation

@frankmueller-msft
Copy link
Contributor

Summary

  • Removes lint from ci:build's serial dependency chain in fluidBuild.config.cjs, so it no longer blocks compilation/docs/manifests
  • Adds lint as a taskTest entry in build-client.yml, running it as an independent parallel job after the build stage completes
  • Local build task still includes lint — this only affects CI
  • Follows the approach proven in PR Test CI build optimizations #25321 (CraigMacomber's PoC) and endorsed during PR ci: skip CJS api-extractor checks on PR builds #26596 review

What this does NOT change

  • build task (local dev) — still includes lint
  • lint task definition — unchanged
  • taskLint parameter — stays false (we use taskTest instead of the include-build-lint.yml template)
  • Other pipelines (build-tools, server, etc.) — unaffected

Test plan

  • Verify ci:build no longer includes lint in its dependency chain
  • Verify build (local dev) still includes lint
  • CI pipeline runs lint as a separate parallel job after build completes
  • All lint checks pass in the new parallel job

🤖 Generated with Claude Code

Remove lint from ci:build's serial dependency chain and run it as a
parallel taskTest job in the build-client pipeline. The local `build`
task still includes lint. This follows the approach from PR microsoft#25321 and
the discussion in PR microsoft#26596.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Copilot AI review requested due to automatic review settings March 4, 2026 19:22
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR moves lint out of the serial ci:build dependency chain so it no longer blocks compilation, docs, and manifest generation in CI. Lint is instead added as a parallel job (taskTest entry) that runs independently after the build stage completes. Local build task behavior is unchanged.

Changes:

  • lint is removed from ci:build's dependsOn in fluidBuild.config.cjs (replaced with a comment explaining the move)
  • lint is added as a taskTest entry { name: "lint", jobName: "Lint" } in build-client.yml, running in its own parallel job
  • A stale comment about AreTheTypesWrong potentially being moved to the "pack" stage is removed

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
fluidBuild.config.cjs Removes lint from ci:build dependencies; local build task retains lint
tools/pipelines/build-client.yml Adds lint as a taskTest parallel job entry and updates taskLint comment

# to the "pack" stage since it can use the already-packed packages in that case. As it is the pipeline packs some
# packages twice.
# This check must be run after the build, since it relies on built files being present.
- { name: "lint", jobName: "Lint" }
Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

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

The lint task is run via include-test-task.yml when placed in taskTest, which does not set the BASELINE_BROWSER_MAPPING_IGNORE_OLD_DATA: 1 environment variable. Previously, when lint ran through include-build-lint.yml, this variable was explicitly set (line 44) to suppress "data is over two months old" warnings from the browserslist transitive dependency baseline-browser-mapping. Without this variable, the new parallel lint job will emit 100+ identical warnings per build run (one per package), as documented in the comment in include-build-lint.yml. The include-test-task.yml template should be updated to pass this env var when running lint, or the variable should be added somewhere that applies to all tasks in the parallel job.

Suggested change
- { name: "lint", jobName: "Lint" }
- { name: "lint", jobName: "Lint", environment: { BASELINE_BROWSER_MAPPING_IGNORE_OLD_DATA: 1 } }

Copilot uses AI. Check for mistakes.
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