🐛 fix(ci): 修复 dev 预发布因重复 tag 导致的发布失败

- 将 dev-latest 预发布前的清理步骤改为 actions/github-script
- 显式按 GitHub API 删除已存在的 release 与 tags/dev-latest 引用
- 移除对未维护 delete-tag-and-release 动作的依赖
- 保持 dev-latest 固定预发布标签语义不变
- 避免 softprops/action-gh-release 在 finalizing release 阶段因 tag_name already_exists 失败
This commit is contained in:
Syngnat
2026-04-09 12:30:13 +08:00
parent 35944d58f8
commit 67fe3e3017

View File

@@ -576,13 +576,49 @@ jobs:
echo "version=${DEV_VERSION}" >> "$GITHUB_OUTPUT"
# 删除旧的 dev pre-release保持只有最新一个
- name: Delete Previous Dev Release
uses: dev-drprasad/delete-tag-and-release@v1.1
continue-on-error: true
- name: Reset Previous Dev Release
uses: actions/github-script@v7
with:
tag_name: dev-latest
delete_release: true
github_token: ${{ secrets.GITHUB_TOKEN }}
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const tag = 'dev-latest';
const ref = `tags/${tag}`;
const { owner, repo } = context.repo;
try {
const release = await github.rest.repos.getReleaseByTag({
owner,
repo,
tag,
});
core.info(`Deleting existing release ${release.data.id} for tag ${tag}`);
await github.rest.repos.deleteRelease({
owner,
repo,
release_id: release.data.id,
});
} catch (error) {
if (error.status === 404) {
core.info(`No existing release found for tag ${tag}`);
} else {
throw error;
}
}
try {
await github.rest.git.deleteRef({
owner,
repo,
ref,
});
core.info(`Deleted ref ${ref}`);
} catch (error) {
if (error.status === 404) {
core.info(`No existing ref found for ${ref}`);
} else {
throw error;
}
}
- name: Create Dev Pre-release
uses: softprops/action-gh-release@v2