Skip to content

Commit 11822fc

Browse files
committed
fix: preserve staged publish release tags
1 parent 9fed420 commit 11822fc

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

.github/scripts/stage-packages.mjs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,40 @@ function distTag(version) {
7070
return prerelease ? prerelease[1] : "latest";
7171
}
7272

73+
function runGit(args) {
74+
const result = spawnSync("git", args, {
75+
cwd: root,
76+
encoding: "utf8",
77+
stdio: ["ignore", "pipe", "pipe"],
78+
});
79+
process.stdout.write(result.stdout);
80+
process.stderr.write(result.stderr);
81+
if (result.status !== 0) process.exit(result.status || 1);
82+
}
83+
84+
function hasLocalGitTag(tagName) {
85+
const result = spawnSync(
86+
"git",
87+
["rev-parse", "--verify", "--quiet", `refs/tags/${tagName}`],
88+
{
89+
cwd: root,
90+
stdio: "ignore",
91+
}
92+
);
93+
return result.status === 0;
94+
}
95+
96+
function createGitTag(tagName) {
97+
if (hasLocalGitTag(tagName)) {
98+
console.log(`Git tag ${tagName} already exists locally.`);
99+
} else {
100+
runGit(["tag", tagName, "-m", tagName]);
101+
}
102+
103+
// changesets/action parses this line, then pushes the tag and creates the GitHub release.
104+
console.log(`New tag: ${tagName}`);
105+
}
106+
73107
const staged = [];
74108
for (const packageJsonPath of packageJsonPaths()) {
75109
const pkg = readJson(packageJsonPath);
@@ -104,6 +138,9 @@ for (const packageJsonPath of packageJsonPaths()) {
104138
if (result.status !== 0) process.exit(result.status || 1);
105139

106140
const stageId = result.stdout.match(/"stageId"\s*:\s*"([^"]+)"/)?.[1];
141+
const tagName = `${pkg.name}@${pkg.version}`;
142+
createGitTag(tagName);
143+
107144
staged.push({
108145
name: pkg.name,
109146
version: pkg.version,

.github/workflows/release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ jobs:
8888
uses: changesets/action@e0145edc7d9d8679003495b11f87bd8ef63c0cba # v1.5.3
8989
with:
9090
publish: node .github/scripts/stage-packages.mjs
91+
createGithubReleases: true
9192
commitMode: github-api
9293
env:
9394
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)