Add select-mode, version, pack and publish sub-actions (#656)

* Add select-mode, version, and publish sub-actions

* Rename

* No github-token needed for select-mode for now

* extend select-mode with publish-plan check and upload

* Rename base-branch to pr-base-branch

* add `pack` subaction

* `--from-pack` support in the publish subaction

* rename CLI arg

* update rolldown config

* rename pack dir input/output

* tweak retendion days

---------

Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
This commit is contained in:
Bjorn Lu
2026-06-23 06:42:37 +00:00
committed by GitHub
co-authored by Mateusz Burzyński
parent 5649ff41b8
commit a12d90de83
18 changed files with 1487 additions and 24 deletions
+67
View File
@@ -0,0 +1,67 @@
import fs from "node:fs/promises";
import os from "node:os";
import * as core from "@actions/core";
import { Git } from "../git.ts";
import { setupOctokit } from "../octokit.ts";
import { runPublish } from "../run.ts";
import { downloadArtifact } from "../utils.ts";
try {
await main();
} catch (err) {
core.setFailed((err as Error).message);
}
async function main() {
const githubToken = core.getInput("github-token", { required: true });
const script = core.getInput("script");
const packDirArtifactId = core.getInput("pack-dir-artifact-id");
const createGithubReleases = core.getBooleanInput("create-github-releases");
// If the user needs to change the cwd, set `working-directory` in the step instead
const cwd = process.cwd();
const octokit = setupOctokit(githubToken);
// NOTE: Always pass octokit here as publish does not need a commit-mode
const git = new Git({ octokit, cwd });
const fromPackDir = packDirArtifactId
? await downloadArtifact(
process.env.RUNNER_TEMP ?? (await fs.realpath(os.tmpdir())),
Number(packDirArtifactId),
"changeset-pack",
)
: undefined;
const result = await runPublish({
script,
githubToken,
git,
octokit,
createGithubReleases,
cwd,
fromPackDir,
});
if (result.published) {
core.setOutput("published", "true");
core.setOutput(
"published-packages",
JSON.stringify(result.publishedPackages),
);
} else {
core.setOutput("published", "false");
}
if (result.exitCode !== 0) {
throw new Error(
`Publish command exited with code ${result.exitCode}${
result.published
? `, but some packages were published: ${result.publishedPackages
.map((p) => `${p.name}@${p.version}`)
.join(", ")}`
: ""
}`,
);
}
}