ci(release): require all plugins for core publish · openclaw/openclaw@cb765f1
steipete
·
2026-05-29
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -122,6 +122,10 @@ jobs:
|
122 | 122 | echo "publish_openclaw_npm=true requires dispatching this workflow from main, release/YYYY.M.D, or a Tideclaw alpha branch for alpha prereleases." >&2 |
123 | 123 | exit 1 |
124 | 124 | fi |
| 125 | + if [[ "${PUBLISH_OPENCLAW_NPM}" == "true" && "${PLUGIN_PUBLISH_SCOPE}" != "all-publishable" ]]; then |
| 126 | + echo "publish_openclaw_npm=true requires plugin_publish_scope=all-publishable so every publishable official plugin is released with OpenClaw." >&2 |
| 127 | + exit 1 |
| 128 | + fi |
125 | 129 | if [[ "${PLUGIN_PUBLISH_SCOPE}" == "selected" && -z "${PLUGINS}" ]]; then |
126 | 130 | echo "plugin_publish_scope=selected requires plugins." >&2 |
127 | 131 | exit 1 |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -685,10 +685,12 @@ gh workflow run openclaw-release-publish.yml \
|
685 | 685 | ``` |
686 | 686 | |
687 | 687 | Use the lower-level `Plugin NPM Release` and `Plugin ClawHub Release` workflows |
688 | | -only for focused repair or republish work. For a selected plugin repair, pass |
689 | | -`plugin_publish_scope=selected` and `plugins=@openclaw/name` to |
690 | | -`OpenClaw Release Publish`, or dispatch the child workflow directly when the |
691 | | -OpenClaw package must not be published. |
| 688 | +only for focused repair or republish work. `OpenClaw Release Publish` rejects |
| 689 | +`plugin_publish_scope=selected` when `publish_openclaw_npm=true` so the core |
| 690 | +package cannot ship without every publishable official plugin, including |
| 691 | +`@openclaw/diffs-language-pack`. For a selected plugin repair, set |
| 692 | +`publish_openclaw_npm=false` with `plugin_publish_scope=selected` and |
| 693 | +`plugins=@openclaw/name`, or dispatch the child workflow directly. |
692 | 694 | |
693 | 695 | ## NPM workflow inputs |
694 | 696 | |
@@ -710,7 +712,7 @@ OpenClaw package must not be published.
|
710 | 712 | required when `publish_openclaw_npm=true` |
711 | 713 | - `npm_dist_tag`: npm target tag for the OpenClaw package |
712 | 714 | - `plugin_publish_scope`: defaults to `all-publishable`; use `selected` only |
713 | | - for focused repair work |
| 715 | + for focused plugin-only repair work with `publish_openclaw_npm=false` |
714 | 716 | - `plugins`: comma-separated `@openclaw/*` package names when |
715 | 717 | `plugin_publish_scope=selected` |
716 | 718 | - `publish_openclaw_npm`: defaults to `true`; set `false` only when using the |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -141,6 +141,11 @@ export function parseArgs(argv) {
|
141 | 141 | if (options.pluginPublishScope === "selected" && !options.plugins.trim()) { |
142 | 142 | throw new Error("--plugin-publish-scope selected requires --plugins"); |
143 | 143 | } |
| 144 | +if (options.pluginPublishScope === "selected") { |
| 145 | +throw new Error( |
| 146 | +"--plugin-publish-scope selected is only for plugin-only repair publishes; release candidates publish OpenClaw with --plugin-publish-scope all-publishable", |
| 147 | +); |
| 148 | +} |
144 | 149 | if (options.pluginPublishScope === "all-publishable" && options.plugins.trim()) { |
145 | 150 | throw new Error("--plugins is only valid with --plugin-publish-scope selected"); |
146 | 151 | } |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -1304,6 +1304,9 @@ describe("package artifact reuse", () => {
|
1304 | 1304 | expect(workflow).toContain( |
1305 | 1305 | "Full release validation must run rerun_group=all before npm publish", |
1306 | 1306 | ); |
| 1307 | +expect(workflow).toContain( |
| 1308 | +"publish_openclaw_npm=true requires plugin_publish_scope=all-publishable", |
| 1309 | +); |
1307 | 1310 | expect(workflow).toContain("preflight-manifest.json"); |
1308 | 1311 | expect(npmWorkflow).toContain("preflight-manifest.json"); |
1309 | 1312 | expect(npmWorkflow).toContain("Verify full release validation run metadata"); |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -61,6 +61,19 @@ describe("release candidate checklist", () => {
|
61 | 61 | ).toThrow("--plugin-publish-scope selected requires --plugins"); |
62 | 62 | }); |
63 | 63 | |
| 64 | +it("rejects selected plugin publish scope for release candidates", () => { |
| 65 | +expect(() => |
| 66 | +parseArgs([ |
| 67 | +"--tag", |
| 68 | +"v2026.5.14-beta.3", |
| 69 | +"--plugin-publish-scope", |
| 70 | +"selected", |
| 71 | +"--plugins", |
| 72 | +"@openclaw/diffs", |
| 73 | +]), |
| 74 | +).toThrow("release candidates publish OpenClaw with --plugin-publish-scope all-publishable"); |
| 75 | +}); |
| 76 | + |
64 | 77 | it("extracts a workflow run id from gh dispatch output", () => { |
65 | 78 | expect( |
66 | 79 | parseRunIdFromDispatchOutput( |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。