

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將觸發條件新增至工作流程
<a name="workflows-add-trigger-add"></a>

使用下列指示，將推送、提取或排程觸發新增至 Amazon CodeCatalyst 工作流程。

關於觸發條件的詳細資訊，請參閱 [使用觸發程序自動啟動工作流程執行](workflows-add-trigger.md)。

------
#### [ Visual ]<a name="workflows-add-trigger-add-console"></a>

**新增觸發條件 （視覺化編輯器）**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在工作流程圖表中，選擇**來源**和**觸發**方塊。

1. 在組態窗格中，選擇**新增觸發**條件。

1. 在**新增觸發**條件對話方塊中，提供欄位中的資訊，如下所示。

    **觸發類型** 

   指定觸發的類型。您可以使用下列其中一個值：
   + **推送** （視覺化編輯器） 或 `PUSH`(YAML 編輯器）

     當變更推送到您的來源儲存庫時，推送觸發會啟動工作流程執行。工作流程執行將使用您推送*到*的分支中的檔案 （即目的地分支）。
   + **提取請求** （視覺化編輯器） 或 `PULLREQUEST`(YAML 編輯器）

     提取請求觸發會在來源儲存庫中開啟、更新或關閉提取請求時啟動工作流程執行。工作流程執行將使用您*從*中提取的分支中的檔案 （即來源分支）。
   + **排程** （視覺化編輯器） 或 `SCHEDULE`(YAML 編輯器）

     排程觸發會根據您指定的 Cron 表達式所定義的排程啟動工作流程。將針對來源儲存庫中的每個分支，使用分支的 檔案啟動個別的工作流程執行。（若要限制觸發啟動的分支，請使用**分支**欄位 （視覺化編輯器） 或 `Branches` 屬性 (YAML 編輯器）。)

     設定排程觸發時，請遵循下列準則：
     + 每個工作流程僅使用一個排程觸發。
     + 如果您已在 CodeCatalyst 空間中定義多個工作流程，建議您排定最多 10 個工作流程同時啟動。
     + 請務必在執行之間設定具有足夠時間的觸發條件 cron 表達式。如需詳細資訊，請參閱[Expression](workflow-reference.md#workflow.triggers.expression)。

   如需範例，請參閱 [範例：工作流程中的觸發條件](workflows-add-trigger-examples.md)。

    **提取請求的事件** 

   只有在您選取**提取請求**觸發類型時，才會顯示此欄位。

   指定將啟動工作流程執行的提取請求事件類型。以下是有效值：
   + **提取請求已建立** （視覺化編輯器） 或 `OPEN`(YAML 編輯器）

     建立提取請求時，會啟動工作流程執行。
   + **提取請求已關閉** （視覺化編輯器） 或 `CLOSED`(YAML 編輯器）

     關閉提取請求時，會啟動工作流程執行。`CLOSED` 事件的行為很棘手，最好透過範例了解。如需詳細資訊，請參閱[範例：具有提取、分支和「關閉」事件的觸發](workflows-add-trigger-examples.md#workflows-add-trigger-examples-push-pull-close)。
   + **進行新的修訂以提取請求 **（視覺化編輯器） 或 `REVISION`(YAML 編輯器）

     建立提取請求的修訂時，會啟動工作流程執行。第一個修訂會在建立提取請求時建立。之後，每次有人將新的遞交推送到提取請求中指定的來源分支時，都會建立新的修訂。如果您在提取請求觸發中包含`REVISION`事件，您可以省略該`OPEN`事件，因為 `REVISION` 是 的超集`OPEN`。

   您可以在相同的提取請求觸發中指定多個事件。

   如需範例，請參閱 [範例：工作流程中的觸發條件](workflows-add-trigger-examples.md)。

    **排程** 

   只有在您選取**排程**觸發類型時，才會顯示此欄位。

   指定 cron 表達式，描述您希望排程工作流程執行的時間。

   CodeCatalyst 中的 Cron 表達式使用以下六欄位語法，其中每個欄位以空格分隔：

   *分鐘* *小時* *days-of-month* *日 年* ** *days-of-week* 

   **Cron 表達式的範例**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codecatalyst/latest/userguide/workflows-add-trigger-add.html)

   在 CodeCatalyst 中指定 Cron 表達式時，請務必遵循下列準則：
   + 指定每個`SCHEDULE`觸發的單一 Cron 表達式。
   + 在 YAML 編輯器中以雙引號 (`"`) 括住 Cron 表達式。
   + 以國際標準時間 (UTC) 指定時間。不支援其他時區。
   + 在執行之間設定至少 30 分鐘。不支援更快速的節奏。
   + 指定*days-of-month*或*days-of-week*欄位，但不能同時指定兩者。如果您在其中一個欄位中指定值或星號 (`*`)，則必須在另一個欄位中使用問號 (`?`)。星號表示「全部」，問號表示「任何」。

    如需 Cron 表達式的更多範例，以及 `?`、 `*`和 等萬用字元的相關資訊`L`，請參閱《*Amazon EventBridge 使用者指南*》中的 [Cron 表達式參考](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cron-expressions.html)。EventBridge 和 CodeCatalyst 中的 Cron 表達式的運作方式完全相同。

   如需排程觸發的範例，請參閱 [範例：工作流程中的觸發條件](workflows-add-trigger-examples.md)。

    **分支**和**分支模式** 

   (選用)

   在您的來源儲存庫中指定觸發器監控的分支，以便知道何時啟動工作流程執行。您可以使用 regex 模式來定義分支名稱。例如，使用 `main.*` 來比對以 開頭的所有分支`main`。

   要指定的分支會根據觸發類型而有所不同：
   + 對於推送觸發，指定您要推送*的*分支，也就是*目的地*分支。每個相符分支將使用相符分支中的檔案啟動一個工作流程執行。

     範例: `main.*`, `mainline` 
   + 對於提取請求觸發，指定您要推送*的*分支，也就是*目的地*分支。每個相符分支都會啟動一個工作流程執行，並使用來源分支 (*而非*相符分支） 中的工作流程定義檔案和**來源**檔案。

     範例：`main.*`、`mainline`、 `v1\-.*`（符合開頭為 的分支`v1-`)
   + 針對排程觸發，指定包含您希望排程執行使用之檔案的分支。每個相符分支都會啟動一個工作流程執行，並使用相符分支中的工作流程定義檔案和來源檔案。

     範例: `main.*`, `version\-1\.0` 
**注意**  
如果您*未*指定分支，觸發會監控來源儲存庫中的所有分支，並將使用工作流程定義檔案和來源檔案啟動工作流程執行：  
您推送*到*的分支 （適用於推送觸發）。如需詳細資訊，請參閱[範例：簡單的程式碼推送觸發程序](workflows-add-trigger-examples.md#workflows-add-trigger-examples-push-simple)。
您要*從中*提取的分支 （用於提取請求觸發）。如需詳細資訊，請參閱[範例：簡易的提取請求觸發程序](workflows-add-trigger-examples.md#workflows-add-trigger-examples-pull-simple)。
所有分支 （用於排程觸發）。您的來源儲存庫中的每個分支都會啟動一個工作流程執行。如需詳細資訊，請參閱[範例：簡單的排程觸發](workflows-add-trigger-examples.md#workflows-add-trigger-examples-schedule-simple)。

   如需分支和觸發程序的詳細資訊，請參閱 [觸發和分支的使用準則](workflows-add-trigger-considerations.md)。

   如需更多範例，請參閱[範例：工作流程中的觸發條件](workflows-add-trigger-examples.md)。

    **檔案已變更** 

   只有在您選取**推送**或**提取請求**觸發類型時，才會顯示此欄位。

   指定觸發器監控的來源儲存庫中的檔案或資料夾，以了解何時啟動工作流程執行。您可以使用規則表達式來比對檔案名稱或路徑。

   如需範例，請參閱 [範例：工作流程中的觸發條件](workflows-add-trigger-examples.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------
#### [ YAML ]

**新增觸發 (YAML 編輯器）**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 使用下列範例做為指南，新增`Triggers`區段和基礎屬性。如需詳細資訊，請參閱《[Triggers](workflow-reference.md#triggers-reference)》中的 [工作流程 YAML 定義](workflow-reference.md)。

   程式碼推送觸發程序可能如下所示：

   ```
   Triggers:
     - Type: PUSH
       Branches:
         - main
   ```

   提取請求觸發程序可能如下所示：

   ```
   Triggers:
     - Type: PULLREQUEST
       Branches:
         - main.*
       Events: 
         - OPEN
         - REVISION
         - CLOSED
   ```

   排程觸發程序可能如下所示：

   ```
   Triggers:
     - Type: SCHEDULE
       Branches:
         - main.*
       # Run the workflow at 1:15 am (UTC+0) every Friday until the end of 2023
       Expression: "15 1 ? * FRI 2022-2023"
   ```

   如需您可以在 `Expression` 屬性中使用的 cron 表達式的更多範例，請參閱 [Expression](workflow-reference.md#workflow.triggers.expression)。

   如需推送、提取請求和排程觸發程序的更多範例，請參閱 [範例：工作流程中的觸發條件](workflows-add-trigger-examples.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------