Skip to content

Extract shared CI setup steps into composite actions - #2832

Merged
hahn-kev merged 2 commits into
developfrom
claude/ci-setup-composites
Oct 28, 2026
Merged

hahn-kev merged 2 commits into
developfrom
claude/ci-setup-composites

Conversation

@hahn-kev-bot

@hahn-kev-bot hahn-kev-bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

extracts duplicate steps out of workflows and into composite actions.


AI summary

Follow-up to #2784. pr.yaml was built by copying setup steps out of fw-lite.yaml; this moves the three sequences the two files share into composite actions and points both workflows at them. Nothing about what runs changes.

  • .github/actions/setup-frontend: pnpm, Node with the pnpm store cached on frontend/pnpm-lock.yaml, optional Task (install-task), then pnpm install in frontend/.
  • .github/actions/setup-playwright: browser cache, playwright install --with-deps on a miss, install-deps on a hit. Inputs browsers (default chromium) and working-directory (default frontend). The cache key is built from the browser list (chromium webkit → chromium-webkit), so it matches the old keys and existing caches still hit.
  • .github/actions/setup-dotnet-build: .NET 10, NuGet cache keyed on Directory.Packages.props and Harmony*.props, optional Task.
  • Same pinned SHAs as before. Jobs that ran setup-dotnet without the NuGet cache (apple, android, benchmark, publish-linux, publish-android, e2e) and the Setup Maui one-liners are left as they were. .github/actions/playwright-tests is a different sequence (LexBox Playwright, no browser cache), so it wasn't reused.
  • Triggers: fw-lite.yaml's push paths and the full tier rule (.github/ci-tiers/full/project.json) now include the three composite folders. Before, editing these steps meant editing the workflow files, which already triggered both. Checked with nx show projects --affected --files=<composite> → ["tier-full"].

Step lists, before vs after

Each composite is expanded back into its steps (with install-task resolved), and every step's uses/with/run/working-directory/if is compared against the pre-change workflow. Jobs not listed are unchanged.

Workflow Job Steps before Steps after (in file) After, composites expanded Result
fw-lite.yaml build-and-test 10 8 10 identical
fw-lite.yaml frontend 16 11 16 identical
fw-lite.yaml frontend-component-unit-tests 10 6 10 identical
fw-lite.yaml publish-win 15 14 15 identical
fw-lite.yaml publish-win-web 8 7 8 identical
fw-lite.yaml e2e-test 21 16 21 same steps; Install Task moves after setup-node
pr.yaml dotnet 10 8 10 identical
pr.yaml slow-tests 7 6 7 identical
pr.yaml viewer-checks 15 11 15 identical
pr.yaml viewer-ui-tests 11 6 11 identical except Pick browsers no longer writes the now-unused key output
pr.yaml maui-windows 7 6 7 identical
pr.yaml e2e 19 14 19 same steps; Install Task moves after setup-node

The expanded count leaves out setup-playwright's own cache-key step (one extra shell step per Playwright job).

Test plan

  • actionlint (shellcheck on) clean on both workflows; a misspelled composite input is caught, so actionlint does read the composites' metadata
  • Step-list diff above
  • PR CI run on this PR is green (the composite paths fire the full tier, so every PR CI job runs)
  • gh workflow run fw-lite.yaml --ref <branch> dispatched by Kevin is green (fw-lite.yaml no longer runs on pull requests)

🤖 Generated with Claude Code

hahn-kev and others added 2 commits October 27, 2026 16:55
setup-frontend (pnpm, Node, optional Task, pnpm install), setup-playwright
(browser cache, install on miss, system deps on hit) and setup-dotnet-build
(.NET 10, NuGet cache, optional Task), with the pins the workflows use today.
The full tier also fires when one of them changes, as it did when these steps
lived in pr.yaml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replaces the copied frontend, Playwright and .NET setup blocks with the
composites; the steps that run are unchanged. fw-lite.yaml's push paths now
include the composites.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 53 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 4fb4022c-5a6d-4f62-85f1-bd430c120cce
Commits

Reviewing files that changed from the base of the PR and between cc4e892 and 2755a4e.

Files selected for processing: 7
  • .github/AGENTS.md
  • .github/actions/setup-dotnet-build/action.yml
  • .github/actions/setup-frontend/action.yml
  • .github/actions/setup-playwright/action.yml
  • .github/ci-tiers/full/project.json
  • .github/workflows/fw-lite.yaml
  • .github/workflows/pr.yaml
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the 💻 FW Lite issues related to the fw lite application, not miniLcm or crdt related label Oct 27, 2026
@hahn-kev
hahn-kev merged commit 67be8e9 into develop Oct 28, 2026
39 of 41 checks passed
@hahn-kev
hahn-kev deleted the claude/ci-setup-composites branch October 28, 2026 03:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💻 FW Lite issues related to the fw lite application, not miniLcm or crdt related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants