Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3fea48472f | ||
|
|
10b1612fe6 | ||
|
|
703f1d753d |
@@ -1,96 +0,0 @@
|
|||||||
# ============================================================================
|
|
||||||
# 用途:Gitea Actions CI workflow —— 當 PR 開啟或同步(推新 commit)到 master/develop 時,
|
|
||||||
# 自動 checkout 完整 git 歷史、計算下一個語意化版本號(develop 走 beta 預發布),
|
|
||||||
# 接著建立 Gitea Release(副作用:建立 git tag 與 Release),正式版並會清理舊 Release。
|
|
||||||
# 更新時間:2026/07/17 16:49:21
|
|
||||||
# ============================================================================
|
|
||||||
|
|
||||||
# workflow 名稱:顯示於 Gitea Actions 執行清單,方便辨識這條 CI pipeline
|
|
||||||
name: CI
|
|
||||||
|
|
||||||
# 觸發條件設定區塊
|
|
||||||
on:
|
|
||||||
# 以 pull request 事件觸發(非 push),確保版本計算與發布綁定 PR 流程
|
|
||||||
pull_request:
|
|
||||||
# 只有目標分支(base branch)為下列分支的 PR 才會觸發
|
|
||||||
branches:
|
|
||||||
# 正式分支:PR 目標為 master 時發布正式版 Release
|
|
||||||
- master
|
|
||||||
# 開發分支:PR 目標為 develop 時發布 beta 預發布(prerelease)
|
|
||||||
- develop
|
|
||||||
# 只在 PR 開啟(opened)與來源分支推新 commit 同步(synchronize)時觸發,
|
|
||||||
# 避免 reopened/labeled 等其他 PR 事件重複跑 CI
|
|
||||||
types: [opened, synchronize]
|
|
||||||
|
|
||||||
# workflow 層級環境變數:所有 job/step 皆可透過 env.* 取用
|
|
||||||
env:
|
|
||||||
# 目前 repo 名稱,取自 Gitea 事件 payload,供後續步驟組合 Release 名稱等用途
|
|
||||||
REPOSITORY_NAME: ${{ gitea.event.repository.name }}
|
|
||||||
# 是否為 beta(預發布)流程:PR 目標分支為 develop 時為 'true',否則為 'false';
|
|
||||||
# 注意此值為字串型別,後續 if 條件需以字串比較(== 'false')
|
|
||||||
IS_BETA: ${{ gitea.base_ref == 'develop' }}
|
|
||||||
|
|
||||||
# job 定義區塊
|
|
||||||
jobs:
|
|
||||||
# 唯一的 job:建置與發布
|
|
||||||
build:
|
|
||||||
# job 顯示名稱:於 Gitea Actions 介面顯示為 BUILD
|
|
||||||
name: BUILD
|
|
||||||
# 指定 runner 標籤:由標籤為 ubuntu 的 Gitea Actions runner 執行
|
|
||||||
runs-on: ubuntu
|
|
||||||
# 依序執行的步驟
|
|
||||||
steps:
|
|
||||||
# 步驟 1:checkout 原始碼與完整 git 歷史(含所有 tag),
|
|
||||||
# 版本計算需要既有 tag 才能推算下一個版本號
|
|
||||||
- name: 取得存取庫資訊 (含 Tag)
|
|
||||||
# 使用官方 checkout action;vars.ACTION_CHECKOUT_VERSION 為
|
|
||||||
# Gitea 組織/repo 層級變數(Actions variables)提供的 action 版本,集中管理升版
|
|
||||||
uses: actions/checkout@${{ vars.ACTION_CHECKOUT_VERSION }}
|
|
||||||
with:
|
|
||||||
# fetch-depth: 0 代表抓取完整歷史(非 shallow clone),確保 tag 與 commit 歷史齊全
|
|
||||||
fetch-depth: 0
|
|
||||||
# 步驟 2:依既有 tag 計算下一個語意化版本號
|
|
||||||
- name: 計算下一個版本號
|
|
||||||
# 使用自建的 calculate-next-version action(gitea.jsc.idv.tw 私有 Gitea 上的 docker action);
|
|
||||||
# vars.ACTION_CALCULATE_NEXT_VERSION 同為 Gitea 組織/repo 變數提供的版本
|
|
||||||
uses: https://gitea.jsc.idv.tw/docker-actions/calculate-next-version@${{ vars.ACTION_CALCULATE_NEXT_VERSION }}
|
|
||||||
# step id:後續步驟以 steps.calculate-next-version.outputs.value 取得計算結果
|
|
||||||
id: calculate-next-version
|
|
||||||
with:
|
|
||||||
# 傳入是否為 beta:true 時產生預發布版號(例如帶 -beta 後綴),false 時產生正式版號
|
|
||||||
is_beta: ${{ env.IS_BETA }}
|
|
||||||
# 步驟 3:建立 Gitea Release(副作用:建立對應 git tag 與 Release 頁面)
|
|
||||||
# 需人工確認:此步驟在 PR opened/synchronize 就會發布 Release 並打 tag,
|
|
||||||
# 亦即 PR 尚未合併前每次推 commit 都會產生 Release;請確認這是預期行為
|
|
||||||
# (通常發布會放在 push 到 master/develop 或 PR merged 之後)。
|
|
||||||
- name: 發布成品
|
|
||||||
# 使用第三方 akkuman/gitea-release-action 建立 Release;
|
|
||||||
# vars.ACTION_GITEA_RELEASE_VERSION 為 Gitea 組織/repo 變數提供的 action 版本
|
|
||||||
# 需人工確認:此 action 通常需要 GITEA_TOKEN/token 才能建立 Release,
|
|
||||||
# 本設定未見明確傳入 token,請確認 runner 預設 token 權限是否足夠。
|
|
||||||
uses: akkuman/gitea-release-action@${{ vars.ACTION_GITEA_RELEASE_VERSION }}
|
|
||||||
# step 層級環境變數
|
|
||||||
env:
|
|
||||||
# 將上一步計算出的版本號存為 VERSION,供本步驟的 with 參數引用
|
|
||||||
VERSION: ${{ steps.calculate-next-version.outputs.value }}
|
|
||||||
with:
|
|
||||||
# Release 顯示名稱:{repo 名稱} v{版本號}
|
|
||||||
name: "${{ gitea.event.repository.name }} v${{ env.VERSION }}"
|
|
||||||
# 要建立的 git tag 名稱:v{版本號}
|
|
||||||
tag_name: "v${{ env.VERSION }}"
|
|
||||||
# tag 指向的 commit:gitea.sha 為觸發此 workflow 的 commit
|
|
||||||
# 需人工確認:pull_request 事件的 sha 通常是 PR 的 merge commit(暫時性 ref),
|
|
||||||
# 對其打 tag 可能指向未實際合入分支的 commit,請確認 tag 目標是否符合預期。
|
|
||||||
target_commitish: "${{ gitea.sha }}"
|
|
||||||
# 是否標記為預發布:develop 目標的 PR 為 true(beta),master 為 false(正式版)
|
|
||||||
prerelease: ${{ env.IS_BETA }}
|
|
||||||
# 步驟 4:清理舊 Release,避免 Release 清單無限增長
|
|
||||||
- name: 清理舊成品
|
|
||||||
# 使用自建的 clean-old-release action;
|
|
||||||
# vars.ACTION_CLEAN_OLD_RELEASE 為 Gitea 組織/repo 變數提供的 action 版本
|
|
||||||
# 需人工確認:其他兩個自建 action 的變數名皆以 _VERSION 結尾,
|
|
||||||
# 此變數名為 ACTION_CLEAN_OLD_RELEASE(無 _VERSION 後綴),請確認命名是否刻意如此。
|
|
||||||
uses: https://gitea.jsc.idv.tw/docker-actions/clean-old-release@${{ vars.ACTION_CLEAN_OLD_RELEASE }}
|
|
||||||
# 僅在非 beta(正式版,PR 目標為 master)時執行清理;
|
|
||||||
# 因 env.IS_BETA 為字串,故以 == 'false' 比較
|
|
||||||
if: ${{ env.IS_BETA == 'false' }}
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
types: [opened, synchronize]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-antigravity:
|
||||||
|
name: TEST (Antigravity)
|
||||||
|
runs-on: ubuntu
|
||||||
|
steps:
|
||||||
|
- name: 取得存取庫資訊
|
||||||
|
uses: actions/checkout@${{ vars.ACTION_CHECKOUT_VERSION }}
|
||||||
|
- name: 安裝工具
|
||||||
|
uses: https://gitea.jsc.idv.tw/composite-actions/setup-antigravity@${{ vars.ACTION_SETUP_ANTIGRAVITY_VERSION }}
|
||||||
|
- name: 程式碼審查
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
test-codex:
|
||||||
|
name: TEST (Codex)
|
||||||
|
runs-on: ubuntu
|
||||||
|
steps:
|
||||||
|
- name: 取得存取庫資訊
|
||||||
|
uses: actions/checkout@${{ vars.ACTION_CHECKOUT_VERSION }}
|
||||||
|
- name: 安裝工具
|
||||||
|
uses: https://gitea.jsc.idv.tw/composite-actions/setup-codex@${{ vars.ACTION_SETUP_CODEX_VERSION }}
|
||||||
|
- name: 程式碼審查
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
test-claude:
|
||||||
|
name: TEST (Claude)
|
||||||
|
runs-on: ubuntu
|
||||||
|
steps:
|
||||||
|
- name: 取得存取庫資訊
|
||||||
|
uses: actions/checkout@${{ vars.ACTION_CHECKOUT_VERSION }}
|
||||||
|
- name: 安裝工具
|
||||||
|
uses: https://gitea.jsc.idv.tw/composite-actions/setup-claude@${{ vars.ACTION_SETUP_CLAUDE_VERSION }}
|
||||||
|
- name: 程式碼審查
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
Reference in New Issue
Block a user