--- date: "2025-11-25T18:58:22Z" slug: "project-workflows" sidebar_position: 1 description: "以事件、篩選條件與動作組合,替儲存庫專案自動化重複工作。" --- # 專案工作流程 專案工作流程會在儲存庫專案看板上依據議題或拉取請求觸發的事件自動執行操作。此功能完全在 Gitea 內部運行,不需要外部 Runner 或 Webhook。 擁有專案編輯權限的成員(儲存庫擁有者、維護者與專案管理員)可在專案介面中建立、編輯、複製、啟用或停用工作流程。 ## 開啟工作流程編輯器 1. 進入儲存庫並開啟想要自動化的 **Projects** 看板。 2. 在欄位列表旁選擇 **Workflows** 分頁。 3. 點擊 **New Workflow** 建立事件定義,或選取既有工作流程進行編輯。 4. 選擇事件、加入篩選條件、依序配置需要的動作後儲存。 每個工作流程只屬於當前專案。如需在另一個專案套用相同邏輯,請在該專案重新建立或複製工作流程。 ## 基本概念 - **事件(Event)**:定義何時評估工作流程,例如建立議題或卡片在欄位間移動。 - **篩選條件(Filter)**:可選條件,需符合後才會執行動作,例如標籤或欄位變化。 - **動作(Action)**:當事件與篩選條件成立時 Gitea 要執行的操作,例如新增標籤或移動卡片。 ## 支援的事件 | 事件 | 觸發時機 | | --- | --- | | 新增議題/拉取請求 | 建立新的議題或拉取請求。 | | 關閉議題/拉取請求 | 該議題或拉取請求被關閉。 | | 重新開啟議題/拉取請求 | 已關閉的項目被重新開啟。 | | 加入專案 | 議題或拉取請求被加入此專案。 | | 從專案移除 | 項目被自專案中移除。 | | 欄位變更 | 卡片從某欄移到另一欄。 | | 被要求修改 | 與專案關聯的拉取請求收到修改要求。 | | 稽核通過 | 稽核者批准該拉取請求。 | | 拉取請求已合併 | 該拉取請求被合併。 | 每種事件都可以配置多個工作流程,讓相同觸發條件可以在不同情境下執行不同的自動化步驟。 ## 篩選條件 篩選條件可進一步限制事件是否需要執行。若未設定任何條件,事件發生時工作流程一律會跑。 - **適用對象(Apply to)**:限制僅處理 `issues only`、`pull requests only` 或同時處理。 - **標籤(Labels)**:只有卡片已包含所選標籤之一時才觸發。 - **來源欄位(Move from column)**:只有卡片原先位於指定欄位時才觸發,常與「欄位變更」事件搭配。 - **目標欄位(Move to column)**:只有卡片移入特定欄位時才觸發。 可以同時組合多個篩選條件,例如「帶有 `needs-review` 標籤的拉取請求移入 “Review” 欄位」。 ## 動作 動作會依新增順序逐一執行,可用的動作包含: - **新增標籤(Add labels)**:為議題或拉取請求加上多個標籤。 - **移除標籤(Remove labels)**:刪除不再需要的標籤。 - **移動到欄位(Move to column)**:把卡片移到同一專案看板中的其他欄位。 - **議題狀態(Issue state)**:關閉或重新開啟相關議題或拉取請求。 透過組合多個動作,可以在單一工作流程裡同時完成移動卡片與更新標籤等步驟。 ## 管理工作流程 ### 啟用或停用 每個工作流程都有獨立開關。停用後即使事件被觸發也會被忽略,適合暫停自動化又不想刪除設定時使用。 ### 複製事件工作流程 按下 **Clone** 可以複製目前的工作流程(事件、篩選條件與動作都會被保留)。當你需要針對相同事件建立不同變體時,複製後調整即可快速建立新流程。 ## 範例:自動分流新的錯誤回報 以下設定能讓錯誤議題自動落在待處理區: 1. **事件:** Issues/PRs opened。 2. **篩選條件:** 僅適用 `issues only`;標籤包含 `bug`。 3. **動作:** - 新增標籤 → `needs-triage`。 - 移動到欄位 → “Needs Triage”。 - 議題狀態 → 保持開啟(如有需要也能強制重新開啟以確保可見)。 設定完成後,每當有新的錯誤議題建立,就會立即獲得正確標籤並顯示在指定欄位,維護者能第一時間掌握待分流的項目。 從簡單規則著手,在單一專案驗證成效,再依團隊的重複性工作逐步擴大自動化邏輯。