Skip to content

Commit e439033

Browse files
committed
feat: Enable manual release triggering and update existing releases (启用手动触发发布并更新现有发布)
- Added `workflow_dispatch` trigger for manual release creation/update (添加 `workflow_dispatch` 触发器以手动创建/更新发布) - Added inputs for specifying tag name and release ID for manual triggers (为手动触发器添加了用于指定标签名称和发布 ID 的输入) - Updated release creation/update logic to handle both automatic and manual triggers (更新了发布创建/更新逻辑以处理自动和手动触发器) - Added `update_release` job to upload artifacts to existing releases when triggered manually (添加了 `update_release` 作业,以便在手动触发时将工件上传到现有版本) - Modified `create_release` job to only run when triggered automatically or when creating a new release manually (修改了 `create_release` 作业,使其仅在自动触发或手动创建新版本时运行) - Set `base-href` in `flutter build web` command to root `/` (将 `flutter build web` 命令中的 `base-href` 设置为根目录 `/`) - Added environment variables to determine trigger type and release information (添加了环境变量以确定触发类型和发布信息) - Added if condition to conditionally execute `create_release` and `update_release` jobs (添加了 if 条件以有条件地执行 `create_release` 和 `update_release` 作业)
1 parent cc0760d commit e439033

File tree

1 file changed

+64
-2
lines changed

1 file changed

+64
-2
lines changed

.github/workflows/release.yml

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,29 @@ name: Release Build
33
on:
44
release:
55
types: [created]
6+
workflow_dispatch:
7+
inputs:
8+
tag_name:
9+
description: 'Release tag name (e.g., v1.0.0)'
10+
required: true
11+
type: string
12+
release_id:
13+
description: 'Release ID (optional, for existing releases)'
14+
required: false
15+
type: string
616

717
# 设置工作流权限
818
permissions:
919
contents: write # 允许写入内容(推送、创建 Release 等)
1020
pages: write # 允许部署到 GitHub Pages
1121
id-token: write # 允许 OIDC 令牌生成
1222

23+
# 获取当前触发类型(自动发布还是手动触发)
24+
env:
25+
IS_WORKFLOW_DISPATCH: ${{ github.event_name == 'workflow_dispatch' }}
26+
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name || github.ref_name }}
27+
RELEASE_ID: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release_id || github.event.release.id }}
28+
1329
jobs:
1430
build:
1531
name: Build Desktop & Web
@@ -102,7 +118,7 @@ jobs:
102118
run: |
103119
cd Flutter/json_to_dart
104120
flutter config --enable-web
105-
flutter build web --release --web-renderer html --base-href "/JsonToDart/"
121+
flutter build web --release --web-renderer html
106122
107123
- name: Deploy to GitHub Pages
108124
uses: JamesIves/github-pages-deploy-action@v4
@@ -113,8 +129,11 @@ jobs:
113129
target-folder: .
114130

115131
create_release:
116-
name: Create Release
132+
name: Create/Update Release
117133
needs: [build, deploy_web]
134+
if: >
135+
github.event_name != 'workflow_dispatch' ||
136+
(github.event_name == 'workflow_dispatch' && github.event.inputs.release_id == '')
118137
runs-on: ubuntu-latest
119138
steps:
120139
- name: Download all artifacts
@@ -126,9 +145,52 @@ jobs:
126145
id: create_release
127146
uses: softprops/action-gh-release@v1
128147
with:
148+
tag_name: ${{ env.RELEASE_TAG }}
149+
name: Release ${{ env.RELEASE_TAG }}
129150
files: |
130151
artifacts/linux-release/linux.tar.gz
131152
artifacts/macos-release/macos.zip
132153
artifacts/windows-release/windows.zip
154+
generate_release_notes: true
155+
draft: false
156+
prerelease: false
133157
env:
134158
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
159+
160+
update_release:
161+
name: Update Release
162+
needs: [build, create_release]
163+
if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_id != ''
164+
runs-on: ubuntu-latest
165+
steps:
166+
- name: Download all artifacts
167+
uses: actions/download-artifact@v3
168+
with:
169+
path: artifacts
170+
171+
- name: Upload to existing Release
172+
uses: svenstaro/upload-release-action@v2
173+
with:
174+
repo_token: ${{ secrets.GITHUB_TOKEN }}
175+
release_id: ${{ env.RELEASE_ID }}
176+
file: artifacts/linux-release/linux.tar.gz
177+
asset_name: linux.tar.gz
178+
overwrite: true
179+
180+
- name: Upload macOS artifact to Release
181+
uses: svenstaro/upload-release-action@v2
182+
with:
183+
repo_token: ${{ secrets.GITHUB_TOKEN }}
184+
release_id: ${{ env.RELEASE_ID }}
185+
file: artifacts/macos-release/macos.zip
186+
asset_name: macos.zip
187+
overwrite: true
188+
189+
- name: Upload Windows artifact to Release
190+
uses: svenstaro/upload-release-action@v2
191+
with:
192+
repo_token: ${{ secrets.GITHUB_TOKEN }}
193+
release_id: ${{ env.RELEASE_ID }}
194+
file: artifacts/windows-release/windows.zip
195+
asset_name: windows.zip
196+
overwrite: true

0 commit comments

Comments
 (0)