Skip to content

Commit bde74fa

Browse files
JW-Albertclaude
andcommitted
ci: 新增 release workflow,推 v* tag 時打包成 GitHub Release
觸發於 v* tag,建置後端 JAR 與前端 dist,透過 softprops/action-gh-release 建立 Release 並附上 vehicle-management-<tag>.jar 與 frontend-dist-<tag>.zip, 變更說明自動產生。與 deploy.yml 並行、互不影響。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 0a7d2f7 commit bde74fa

1 file changed

Lines changed: 62 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Package Release
2+
3+
# 推送 v* tag 時,建置後端 JAR 與前端 dist,打包成一個 GitHub Release。
4+
# 與 deploy.yml 各自獨立並行:deploy.yml 負責部署到 VPS,本檔負責產生 Release 產物。
5+
on:
6+
push:
7+
tags:
8+
- 'v*'
9+
10+
permissions:
11+
contents: write # 建立 Release 需要寫入權限
12+
13+
jobs:
14+
package-release:
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
# ── 1. 取得原始碼 ────────────────────────────────────────────────
19+
- name: Checkout code
20+
uses: actions/checkout@v4
21+
22+
# ── 2. 建置後端 JAR ──────────────────────────────────────────────
23+
- name: Setup Java 21
24+
uses: actions/setup-java@v4
25+
with:
26+
java-version: '21'
27+
distribution: 'temurin'
28+
cache: 'maven'
29+
30+
- name: Build backend JAR (skip tests)
31+
working-directory: backend
32+
run: mvn package -DskipTests --batch-mode --no-transfer-progress
33+
34+
- name: Rename backend JAR with version
35+
run: mv backend/target/vehicle-management-*.jar "backend/target/vehicle-management-${{ github.ref_name }}.jar"
36+
37+
# ── 3. 建置前端 dist ─────────────────────────────────────────────
38+
- name: Setup Node 20
39+
uses: actions/setup-node@v4
40+
with:
41+
node-version: '20'
42+
cache: 'npm'
43+
cache-dependency-path: frontend/package-lock.json
44+
45+
- name: Build frontend
46+
working-directory: frontend
47+
run: |
48+
npm ci
49+
npm run build
50+
51+
- name: Zip frontend dist
52+
run: cd frontend && zip -r "../frontend-dist-${{ github.ref_name }}.zip" dist
53+
54+
# ── 4. 建立 GitHub Release 並附上產物 ────────────────────────────
55+
- name: Create GitHub Release
56+
uses: softprops/action-gh-release@v2
57+
with:
58+
name: ${{ github.ref_name }}
59+
generate_release_notes: true # 自動依 commit 產生變更說明
60+
files: |
61+
backend/target/vehicle-management-${{ github.ref_name }}.jar
62+
frontend-dist-${{ github.ref_name }}.zip

0 commit comments

Comments
 (0)