feat: GitHub Actions 构建后同步发布到 Gitea Releases
release / build (push) Cleared cancelled status from deprecated Gitea Actions runs

构建只在 GitHub windows-latest 上跑一次,产物通过 Gitea REST API 上传到
Gitea Releases,让国内无法访问 GitHub 的用户也能下载到 exe。

- .github/workflows/release.yml: 新增 Mirror release to Gitea 步骤,
  调用 /api/v1/repos/.../releases 创建发布并上传 zip 资产;
  GITEA_TOKEN 未配置时仅警告跳过,不阻断 GitHub release
- .gitea/workflows/release.yml: 删除。Gitea NAS 上的 Linux runner 无法
  交叉编译 Windows exe,本仓库不再使用 Gitea Actions
- README: 在下载步骤列出 Gitea / GitHub 双下载渠道
- CHANGELOG: v0.1.0 条目同步更新
This commit is contained in:
2026-05-07 14:54:43 +08:00
parent 3510024e99
commit 407b63e45b
4 changed files with 50 additions and 81 deletions
+43
View File
@@ -79,3 +79,46 @@ jobs:
tag_name: ${{ env.RELEASE_TAG }}
files: ${{ env.ASSET_ZIP }}
body_path: release-notes.md
- name: Mirror release to Gitea
shell: pwsh
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
GITEA_URL: https://git.zhengchentao.win
GITEA_OWNER: zhengchen.tao
GITEA_REPO: df-scope-hold
run: |
if (-not $env:GITEA_TOKEN) {
Write-Warning "secrets.GITEA_TOKEN 未配置,跳过 Gitea release 同步"
exit 0
}
$headers = @{ Authorization = "token $env:GITEA_TOKEN" }
$baseUrl = "$env:GITEA_URL/api/v1/repos/$env:GITEA_OWNER/$env:GITEA_REPO"
# 同 tag 已存在则先删(含其 assets),允许 re-run 覆盖发布
try {
$existing = Invoke-RestMethod -Method Get -Uri "$baseUrl/releases/tags/$env:RELEASE_TAG" -Headers $headers -ErrorAction Stop
Write-Host "覆盖已存在的 Gitea release id=$($existing.id)"
Invoke-RestMethod -Method Delete -Uri "$baseUrl/releases/$($existing.id)" -Headers $headers | Out-Null
} catch {
if ($_.Exception.Response.StatusCode.value__ -ne 404) { throw }
}
# 创建 release。tag 不存在时 Gitea 按 target_commitish 自动建 tag
$bodyContent = Get-Content release-notes.md -Raw
$payload = @{
tag_name = $env:RELEASE_TAG
name = $env:RELEASE_TAG
body = $bodyContent
draft = $false
prerelease = $false
target_commitish = $env:GITHUB_SHA
} | ConvertTo-Json
$release = Invoke-RestMethod -Method Post -Uri "$baseUrl/releases" -Headers $headers -ContentType 'application/json' -Body $payload
Write-Host "已创建 Gitea release id=$($release.id)"
# 上传 zip 资产
$assetName = [uri]::EscapeDataString($env:ASSET_ZIP)
Invoke-RestMethod -Method Post -Uri "$baseUrl/releases/$($release.id)/assets?name=$assetName" -Headers $headers -Form @{ attachment = Get-Item $env:ASSET_ZIP } | Out-Null
Write-Host "已上传 $env:ASSET_ZIP 到 Gitea release"