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
-79
View File
@@ -1,79 +0,0 @@
name: release
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
tag:
description: 'Release tag, 例如 v0.1.0(会自动创建 tag 并发布 release'
required: true
type: string
jobs:
build:
# 需要一台带 Windows 的自托管 act_runnerGitea 没有官方 hosted Windows runner
# 默认按 act_runner 常见标签 windows-latest;按你的 runner 实际 label 调整
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Resolve release tag
shell: pwsh
run: |
if ($env:GITHUB_EVENT_NAME -eq 'workflow_dispatch') {
$t = '${{ inputs.tag }}'
} else {
$t = $env:GITHUB_REF_NAME
}
echo "RELEASE_TAG=$t" >> $env:GITHUB_ENV
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Build exe
run: pyinstaller --onefile --uac-admin --console --name df-scope-hold script.py
- name: Package release zip
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path release | Out-Null
Copy-Item dist/df-scope-hold.exe release/
Copy-Item config.ini release/
Copy-Item README.md release/
Compress-Archive -Path release/* -DestinationPath "df-scope-hold-$env:RELEASE_TAG.zip" -Force
echo "ASSET_ZIP=df-scope-hold-$env:RELEASE_TAG.zip" >> $env:GITHUB_ENV
- name: Upload workflow artifact
uses: actions/upload-artifact@v3
with:
name: df-scope-hold-${{ env.RELEASE_TAG }}
path: ${{ env.ASSET_ZIP }}
- name: Extract release notes from CHANGELOG.md
shell: pwsh
run: |
$content = Get-Content CHANGELOG.md -Raw
$escaped = [regex]::Escape($env:RELEASE_TAG)
$pattern = "(?ms)^## \[$escaped\].*?(?=^## |\Z)"
$m = [regex]::Match($content, $pattern)
if ($m.Success) {
$body = ($m.Value -replace '^## .*\r?\n', '').Trim()
} else {
$body = "Release $env:RELEASE_TAG"
}
$date = [DateTime]::UtcNow.ToString('yyyy-MM-dd')
$body = "**发布日期**: $date (UTC)`n`n" + $body
Set-Content -Path release-notes.md -Value $body -Encoding utf8
- name: Create Gitea Release
uses: akkuman/gitea-release-action@v1
with:
tag_name: ${{ env.RELEASE_TAG }}
files: ${{ env.ASSET_ZIP }}
body_path: release-notes.md