Skip to content

feat: support pnpm workspace action distributions - #655

Merged
neilime merged 2 commits into
mainfrom
feat/pnpm-workspace-distributions
Nov 11, 2026
Merged

neilime merged 2 commits into
mainfrom
feat/pnpm-workspace-distributions

Conversation

@neilime

@neilime neilime commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

A pnpm workspace can build several committed actions from one root lockfile. The current distribution workflow only installs with npm, accepts one output directory per package, and caps the serialized artifact at 20 MiB. This prevents adoption by meetup-event-automation, whose 22 bundles produce an 87.4 MiB JSON artifact.

This adds pnpm workspace support using the stable ci-github-nodejs 3.0.0 setup-node and get-package-manager actions. They configure tooling and select the locked install and script commands from the first affected package; the common helper executes those commands once per affected package without a shell. Selected packages use the same manager, and root workspaces build once. There is no separate package-manager selector or direct pnpm bootstrap in this workflow.

The shared setup uses install-dependencies: false because installation belongs to the affected-package loop. The existing explicit Node-version selection remains after setup: the shared 3.0.0 action has no version override input, and the workflow must honor its requested runtime. Installation hooks stay disabled by default and can be enabled for approved workspace hooks. Every configured literal output directory must contain its required files.

For larger workspaces, max-artifact-size permits up to 128 MiB of JSON, bounded by 1,000 files and 50 MiB per file. Changes above 20 MiB upload individual Git blobs, preserve the expected parent's tree and create one child commit. GraphQL updateRefs publishes it with beforeOid and force: false; failures do not retry or expose partial commits. Small changes retain createCommitOnBranch and its automatic signing. The large-change Git Data API path does not automatically sign commits, so consumers must check signing rules.

Consumer adoption: cloud-native-aixmarseille/meetup-event-automation#883 (draft pending the upstream merge and stable release).

Validation:

  • Baseline: 94 source tests passed before changes.
  • Final Node.js 24 container: 124 source/workflow tests and 103 isolated-bundle contracts passed, including npm behavior, shared command forwarding, eligible-package setup, shell-syntax rejection, multiple outputs, missing/unauthorized paths, size bounds, failed uploads and atomic ref conflicts.
  • Real consumer probe: executed the pinned shared package-manager detector against the workspace, then used its commands for a frozen pnpm 11.25.0 installation, one package invocation, all 22 outputs validated in an 87.4 MiB artifact; the consumer's independent check:dist passed.
  • npm run check:dist --prefix actions/action-distributions passed after committing the regenerated bundle.
  • make lint for changed action source, metadata, workflow and guides passed; git diff --check passed.

Responsibility and security review: Node.js/package-manager tooling and command selection belong to ci-github-nodejs; distribution input policy remains in DistributionOptions, discovery in DistributionPackages, and large Git-object publication in DistributionCommit. The writer still validates run/actor/PR/head/path policy, never executes PR code, and derives its scope from trusted inputs. Dependency lifecycle hooks only run in the read-only builder. The writer's own size limit applies before parsing downloaded bytes.

The npm-oriented distribution-test workflow is unchanged. Workspace consumers retain their own bundle verification and action integration checks. Metadata and maintained guides are updated; generated action/workflow references are pending the existing main-branch CI Dokumentor release workflow and were not hand-edited. A live Dependabot-to-writer handoff and App authorization must be checked after the callers reach the default branch.

References: shared setup action, shared command detection, pnpm build approvals, Git blob API, GitHub ref update schema.

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Internal - Pull request - Continuous Integration - Test results

Workflow run and full reports · Commit 0a01442

Jobs: 6 success · 0 failure · 0 cancelled · 0 skipped · 0 abandoned.

Test: 273 passed · 0 failed · 0 skipped.

Test details

Test results

Test Results

Status Count
✅ Passed 273
❌ Failed 0
⏭️ Skipped 0
Total 273
Suite Passed Failed Skipped
AstroCheckParser 5 0 0
CheckStyleParser 4 0 0
Cobertura auto-detection 2 0 0
CoberturaParser 3 0 0
Compact category comments 2 0 0
Consolidated reports 2 0 0
Coverage 2 0 0
ESLintParser 3 0 0
JUnitParser 5 0 0
LCOVParser 3 0 0
LintIssue 2 0 0
LoggerService 1 0 0
MarkdownFormatter 2 0 0
Nested JUnit suites 2 0 0
ParserFactory 5 0 0
PathRewriter 14 0 0
PrettierParser 4 0 0
Report exclusions 1 0 0
ReportData 4 0 0
ReportParserCore 2 0 0
ReportParserCore.parseOutputFormats 2 0 0
ReportPathResolver 6 0 0
run 10 0 0
SarifParser 4 0 0
SummaryFormatter 2 0 0
TAPParser 6 0 0
TestResult 4 0 0
Unknown Suite 171 0 0

✅ Pass Rate: 100.0%

Job results and report availability
Job Result Report artifacts
lint success 1
test-action-distributions success 1
test-action-test-action-distribution success 1
test-action-lint-pull-request-title success 1
test-action-parse-ci-reports success 1
test-action-need-fix-to-issue success 1

Only this attempt is included. On partial reruns, rerun all producer jobs for complete reports. CodeQL findings remain in code scanning; other diagnostics remain in the job logs.

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Internal - Pull request - Continuous Integration - Code coverage

Workflow run and full reports · Commit 0a01442

Jobs: 6 success · 0 failure · 0 cancelled · 0 skipped · 0 abandoned.

Coverage: 5 source report(s); percentages remain separate.

Coverage details

Coverage results

ci-reports-1-test-action-distributions-actions-action-distributions-92aab049-e3f2-4c0c-b18c-4a18df8bf979/lcov.info

Coverage

Metric Covered Total Percentage
Lines 829 848 97.76%
Branches 229 236 97.03%
Functions 71 72 98.61%

Overall: 97.76% 🟢
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩

ci-reports-1-test-action-lint-pull-request-title-actions-quality-lint-pull-request-title-9518029e-97c9-49fd-8453-67d7045b0422/lcov.info

Coverage

Metric Covered Total Percentage
Lines 45 45 100.00%
Branches 14 15 93.33%
Functions 1 1 100.00%

Overall: 100.00% 🟢
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩

ci-reports-1-test-action-need-fix-to-issue-actions-need-fix-to-issue-754b5d8e-73f8-49bc-84ce-a68b6295c25a/lcov.info

Coverage

Metric Covered Total Percentage
Lines 95 95 100.00%
Branches 36 36 100.00%
Functions 7 7 100.00%

Overall: 100.00% 🟢
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩

ci-reports-1-test-action-parse-ci-reports-actions-quality-parse-ci-reports-04fe59a0-7a96-4f43-a338-4956e82c0627/lcov.info

Coverage

Metric Covered Total Percentage
Lines 2563 2687 95.39%
Branches 478 578 82.70%
Functions 194 200 97.00%

Overall: 95.39% 🟢
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜

ci-reports-1-test-action-test-action-distribution-actions-quality-test-action-distribution-fd9d394f-9d91-4689-a168-d315c59861c9/lcov.info

Coverage

Metric Covered Total Percentage
Lines 71 71 100.00%
Branches 13 13 100.00%
Functions 4 4 100.00%

Overall: 100.00% 🟢
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩

Job results and report availability
Job Result Report artifacts
lint success 1
test-action-distributions success 1
test-action-test-action-distribution success 1
test-action-lint-pull-request-title success 1
test-action-parse-ci-reports success 1
test-action-need-fix-to-issue success 1

Only this attempt is included. On partial reruns, rerun all producer jobs for complete reports. CodeQL findings remain in code scanning; other diagnostics remain in the job logs.

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Internal - Pull request - Continuous Integration - Lint results

Workflow run and full reports · Commit 0a01442

Jobs: 6 success · 0 failure · 0 cancelled · 0 skipped · 0 abandoned.

Lint: Collected diagnostics and Super-Linter summaries. Execution status is included in the job outcomes.

Super-Linter details

Super-linter summary

Language Validation result
BIOME_FORMAT Pass ✅
BIOME_LINT Pass ✅
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITHUB_ACTIONS_ZIZMOR Pass ✅
GITLEAKS Pass ✅
GIT_COMMITLINT Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
JSCPD Pass ✅
MARKDOWN Pass ✅
MARKDOWN_PRETTIER Pass ✅
NATURAL_LANGUAGE Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅
YAML_PRETTIER Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter
Super-linter revision: 2da136927bd4a73596db63044b504547c62cb854
Super-linter version: 9.0.0

Job results and report availability
Job Result Report artifacts
lint success 1
test-action-distributions success 1
test-action-test-action-distribution success 1
test-action-lint-pull-request-title success 1
test-action-parse-ci-reports success 1
test-action-need-fix-to-issue success 1

Only this attempt is included. On partial reruns, rerun all producer jobs for complete reports. CodeQL findings remain in code scanning; other diagnostics remain in the job logs.

@neilime
neilime merged commit 4140ebb into main Nov 11, 2026
103 of 104 checks passed
@neilime
neilime deleted the feat/pnpm-workspace-distributions branch November 11, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature Introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant