# 用途:在 pull request 更新時執行 CI,先計算測試用版本號,再用該版本呼叫 Antigravity composite action 並驗證輸出內容。 # 更新日期:2026/06/29 14:21:50 # 定義此 Gitea Actions workflow 顯示的名稱。 name: CI # 宣告觸發 workflow 的事件設定。 on: # 設定 pull request 事件會觸發此 workflow。 pull_request: # 指定 pull request 目標分支的忽略清單,避免 master 分支觸發此 workflow。 branches-ignore: # 忽略目標分支為 master 的 pull request(避免正式分支誤觸 CI)。 - master # 限定只在 pull request 開啟(opened)或同步更新(synchronize,即推新 commit)時觸發。 types: [opened, synchronize] # 定義 workflow 內要執行的 jobs。 jobs: # 建立計算 release tag 版本號的 job,供後續測試 job 使用。 release-tag-version: # 設定版本號 job 在執行介面顯示的名稱。 name: Release Tag Version # 指定此 job 在 ubuntu runner 上執行。 runs-on: ubuntu # 宣告此 job 對外提供的輸出值,讓 needs 此 job 的其他 job 可引用。 outputs: # 將 release-tag-version step 計算出的 version 輸出給需要此 job 的後續 jobs。 version: ${{ steps.release-tag-version.outputs.version }} # 定義版本號 job 的執行步驟。 steps: # 呼叫 composite action 計算測試用版本號。 - name: 計算版本號 # 設定 step id,讓 job outputs 可以引用此 step 的輸出。 id: release-tag-version # 使用內部 release-tag-version action,action 版本由 repository variable ACTION_RELEASE_TAG_VERSION 指定(集中管理版本以便升級)。 uses: https://gitea.jsc.idv.tw/composite-actions/release-tag-version@${{ vars.ACTION_RELEASE_TAG_VERSION }} # 傳入 release-tag-version action 的參數。 with: # 指定計算 beta 版本號,讓後續測試使用預發(pre-release)版本格式,避免佔用正式 tag。 is_beta: 'true' # 建立測試 Antigravity composite action 的 job。 antigravity: # 設定 Antigravity 測試 job 在執行介面顯示的名稱。 name: Antigravity # 指定此 job 在 ubuntu runner 上執行。 runs-on: ubuntu # 宣告此 job 需要先完成 release-tag-version job,才能取得其輸出版本(建立執行順序相依)。 needs: release-tag-version # 定義 Antigravity 測試 job 的執行步驟。 steps: # 使用剛計算出的版本呼叫本 composite action,驗證工具可正常取得模型輸出。 - name: 測試工具 # 設定 step id,讓後續步驟可以引用此 step 的輸出文字(steps.antigravity.outputs.text)。 id: antigravity # 使用本 Antigravity composite action,版本來自前一個 job 輸出的 version,前綴 v 組成 release tag。 uses: https://gitea.jsc.idv.tw/composite-actions/antigravity@v${{ needs.release-tag-version.outputs.version }} # 傳入 Antigravity action 所需的輸入參數。 with: # 傳入 Antigravity OAuth token secret 參照;此處只保留 secret 名稱引用,執行時才解析,不包含 secret 明文。 oauth: ${{ secrets.ANTIGRAVITY_OAUTH }} # 傳入測試提示詞,要求工具回傳目前登入的 Google 帳號電子郵件,作為驗證輸出正確性的依據。 prompt: "請告訴我目前登入的Google帳號,只要電子郵件不要其他任何資訊" - name: 工具書出 run: echo "${{ steps.antigravity.outputs.text }}" # 比對 Antigravity action 的輸出與預期電子郵件,不一致時讓 workflow 失敗。 - name: 檢查輸出 # 只有在 antigravity step 的輸出文字不等於預期 repository variable(ANTIGRAVITY_EMAIL)時才執行下方失敗指令。 if: ${{ steps.antigravity.outputs.text != vars.ANTIGRAVITY_EMAIL }} # 以非零結束碼(exit 1)結束此步驟,讓 CI 明確標示測試失敗。 run: exit 1