修复github工作流
This commit is contained in:
92
.github/workflows/release.yml
vendored
92
.github/workflows/release.yml
vendored
@@ -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,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user