修复github工作流

This commit is contained in:
xintaofei
2026-03-09 23:25:11 +08:00
parent 950040ace6
commit f24081bce0

View File

@@ -22,6 +22,7 @@ jobs:
release_id: ${{ steps.release.outputs.release_id }} release_id: ${{ steps.release.outputs.release_id }}
release_url: ${{ steps.release.outputs.release_url }} release_url: ${{ steps.release.outputs.release_url }}
prerelease: ${{ steps.meta.outputs.prerelease }} prerelease: ${{ steps.meta.outputs.prerelease }}
release_body: ${{ steps.release.outputs.release_body }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
@@ -75,6 +76,37 @@ jobs:
const tag = context.ref.replace("refs/tags/", ""); const tag = context.ref.replace("refs/tags/", "");
const { owner, repo } = context.repo; const { owner, repo } = context.repo;
const prerelease = process.env.PRERELEASE === "true"; const prerelease = process.env.PRERELEASE === "true";
const releaseName = `codeg ${tag}`;
const { data: tagRef } = await github.rest.git.getRef({
owner,
repo,
ref: `tags/${tag}`,
});
let commitSha = tagRef.object.sha;
if (tagRef.object.type === "tag") {
const { data: annotatedTag } = await github.rest.git.getTag({
owner,
repo,
tag_sha: commitSha,
});
if (annotatedTag.object.type !== "commit") {
core.setFailed(
`Tag ${tag} points to ${annotatedTag.object.type}, not a commit.`,
);
return;
}
commitSha = annotatedTag.object.sha;
}
const { data: commit } = await github.rest.repos.getCommit({
owner,
repo,
ref: commitSha,
});
const releaseBody =
commit.commit.message?.trim() || "_No commit message._";
let release; let release;
try { try {
@@ -92,12 +124,18 @@ jobs:
} }
release = existing.data; release = existing.data;
if (release.prerelease !== prerelease) { if (
release.prerelease !== prerelease ||
release.name !== releaseName ||
(release.body ?? "").trim() !== releaseBody
) {
const updated = await github.rest.repos.updateRelease({ const updated = await github.rest.repos.updateRelease({
owner, owner,
repo, repo,
release_id: release.id, release_id: release.id,
name: releaseName,
prerelease, prerelease,
body: releaseBody,
}); });
release = updated.data; release = updated.data;
} }
@@ -111,13 +149,8 @@ jobs:
owner, owner,
repo, repo,
tag_name: tag, tag_name: tag,
name: `codeg ${tag}`, name: releaseName,
body: [ body: releaseBody,
`Release channel: ${prerelease ? "Pre-release" : "Stable"}`,
"",
"Assets will be attached automatically by this workflow.",
`Workflow run: https://github.com/${owner}/${repo}/actions/runs/${context.runId}`,
].join("\n"),
draft: true, draft: true,
prerelease, prerelease,
}); });
@@ -128,6 +161,7 @@ jobs:
core.setOutput("release_id", String(release.id)); core.setOutput("release_id", String(release.id));
core.setOutput("release_url", release.html_url); core.setOutput("release_url", release.html_url);
core.setOutput("release_body", releaseBody);
build-tauri: build-tauri:
needs: create-draft-release needs: create-draft-release
@@ -271,6 +305,7 @@ jobs:
with: with:
releaseId: ${{ needs.create-draft-release.outputs.release_id }} releaseId: ${{ needs.create-draft-release.outputs.release_id }}
tagName: ${{ github.ref_name }} tagName: ${{ github.ref_name }}
releaseBody: ${{ needs.create-draft-release.outputs.release_body }}
releaseDraft: true releaseDraft: true
prerelease: ${{ needs.create-draft-release.outputs.prerelease }} prerelease: ${{ needs.create-draft-release.outputs.prerelease }}
tauriScript: pnpm tauri tauriScript: pnpm tauri
@@ -288,6 +323,7 @@ jobs:
with: with:
releaseId: ${{ needs.create-draft-release.outputs.release_id }} releaseId: ${{ needs.create-draft-release.outputs.release_id }}
tagName: ${{ github.ref_name }} tagName: ${{ github.ref_name }}
releaseBody: ${{ needs.create-draft-release.outputs.release_body }}
releaseDraft: true releaseDraft: true
prerelease: ${{ needs.create-draft-release.outputs.prerelease }} prerelease: ${{ needs.create-draft-release.outputs.prerelease }}
tauriScript: pnpm tauri tauriScript: pnpm tauri
@@ -314,51 +350,11 @@ jobs:
const releaseId = Number(process.env.RELEASE_ID); const releaseId = Number(process.env.RELEASE_ID);
const prerelease = const prerelease =
"${{ needs.create-draft-release.outputs.prerelease }}" === "true"; "${{ needs.create-draft-release.outputs.prerelease }}" === "true";
const tag = context.ref.replace("refs/tags/", "");
const { data: tagRef } = await github.rest.git.getRef({
owner,
repo,
ref: `tags/${tag}`,
});
let commitSha = tagRef.object.sha;
if (tagRef.object.type === "tag") {
const { data: annotatedTag } = await github.rest.git.getTag({
owner,
repo,
tag_sha: commitSha,
});
if (annotatedTag.object.type !== "commit") {
core.setFailed(
`Tag ${tag} points to ${annotatedTag.object.type}, not a commit.`,
);
return;
}
commitSha = annotatedTag.object.sha;
}
const { data: commit } = await github.rest.repos.getCommit({
owner,
repo,
ref: commitSha,
});
const commitMessage =
commit.commit.message?.trim() || "_No commit message._";
const body = [
`Release channel: ${prerelease ? "Pre-release" : "Stable"}`,
"",
"## Release notes",
commitMessage,
].join("\n");
await github.rest.repos.updateRelease({ await github.rest.repos.updateRelease({
owner, owner,
repo, repo,
release_id: releaseId, release_id: releaseId,
body,
draft: false, draft: false,
prerelease, prerelease,
}); });