

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

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

# 需要工作流程執行的核准
<a name="workflows-approval"></a>

您可以將工作流程執行設定為需要核准才能繼續。若要達成此目的，您必須將**核准**[閘道](workflows-gates.md)新增至工作流程。*核准閘道*可防止工作流程繼續進行，直到使用者或一組使用者在 CodeCatalyst 主控台中提交一或多個核准。授予所有核准後，閘道會「解鎖」，並允許工作流程執行繼續。

在您的工作流程中使用**核准**閘道，讓您的開發、營運和領導團隊有機會在將您的變更部署到更廣泛的受眾之前檢閱變更。

如需工作流程執行的詳細資訊，請參閱 [執行工作流程](workflows-working-runs.md)。

**Topics**
+ [如何解鎖核准閘道？](#workflows-approval-conditions)
+ [何時使用「核准」閘道](#workflows-approval-when)
+ [誰可以提供核准？](#workflows-approval-who)
+ [如何通知使用者需要核准？](#workflows-approval-notify-methods)
+ [我可以使用「核准」閘道來防止工作流程執行啟動嗎？](#workflows-approval-prevent)
+ [工作流程核准如何使用佇列、取代和平行執行模式？](#workflows-approval-run-mode)
+ [範例：「核准」閘道](workflows-approval-example.md)
+ [新增「核准」閘道](workflows-approval-add.md)
+ [設定核准通知](workflows-approval-notify.md)
+ [核准或拒絕工作流程執行](workflows-approval-approve.md)
+ [「核准」閘道 YAML](approval-ref.md)

## 如何解鎖核准閘道？
<a name="workflows-approval-conditions"></a>

若要解除鎖定**核准**閘道，必須符合下列*所有*條件：
+ **條件 1**：必須提交必要的核准數量。所需的核准數量是可設定的，而且每個使用者都可以提交單一核准。
+ **條件 2**：所有核准都必須在閘道逾時之前提交。閘道會在啟用 14 天後逾時。此期間無法設定。
+ **條件 3**：沒有人必須拒絕工作流程執行。單一拒絕會導致工作流程執行失敗。
+ **條件 4**：（只有在您使用取代的執行模式時才適用。) 執行不得由稍後的執行取代。如需詳細資訊，請參閱[工作流程核准如何使用佇列、取代和平行執行模式？](#workflows-approval-run-mode)。

如果不符合任何條件，CodeCatalyst 會停止工作流程，並將執行狀態設定為**失敗** （在**條件 1** 到 **3** 的情況下） 或**被取代** （在**條件 4 **的情況下）。

## 何時使用「核准」閘道
<a name="workflows-approval-when"></a>

一般而言，您會在工作流程中使用**核准**閘道，將應用程式和其他資源部署到生產伺服器或任何必須驗證品質標準的環境。透過在部署到生產環境之前放置 閘道，您可以讓檢閱者有機會在新軟體修訂版可供公開使用之前進行驗證。

## 誰可以提供核准？
<a name="workflows-approval-who"></a>

任何身為您專案成員且具有**貢獻者**或**專案管理員**角色的使用者都可以提供核准。具有屬於您專案空間之**空間管理員**角色的使用者也可以提供核准。

**注意**  
具有 **Reviewer** 角色的使用者無法提供核准。

## 如何通知使用者需要核准？
<a name="workflows-approval-notify-methods"></a>

若要通知使用者需要核准，您必須：
+ 讓 CodeCatalyst 傳送 Slack 通知給他們。如需詳細資訊，請參閱[設定核准通知](workflows-approval-notify.md)。
+ 前往 CodeCatalyst 主控台中**核准**和**拒絕**按鈕所在的頁面，並將該頁面的 URL 貼到傳送給核准者的電子郵件或簡訊應用程式中。如需如何導覽至此頁面的詳細資訊，請參閱 [核准或拒絕工作流程執行](workflows-approval-approve.md)。

## 我可以使用「核准」閘道來防止工作流程執行啟動嗎？
<a name="workflows-approval-prevent"></a>

是，具有資格。如需詳細資訊，請參閱[我可以使用閘道來防止工作流程執行啟動嗎？](workflows-gates.md#workflows-gates-prevent)。

## 工作流程核准如何使用佇列、取代和平行執行模式？
<a name="workflows-approval-run-mode"></a>

使用佇列、取代或平行執行模式時，**核准**閘道的運作方式與 [動作](workflows-actions.md)類似。我們建議您閱讀 [關於排入佇列的執行模式](workflows-configure-runs.md#workflows-configure-runs-queued)、[關於取代的執行模式](workflows-configure-runs.md#workflows-configure-runs-superseded)、 [關於平行執行模式](workflows-configure-runs.md#workflows-configure-runs-parallel)區段，以熟悉這些執行模式。一旦您對它們有基本的了解，請返回本節以了解這些執行模式在存在**核准**閘道時的運作方式。

存在**核准**閘道時，會依下列方式處理執行：
+ 如果您使用的是[排入佇列的執行模式](workflows-configure-runs.md#workflows-configure-runs-queued)，則執行會在目前在閘道等待核准的執行後方排入佇列。當該閘道解除鎖定 （即所有核准都已授予） 時，佇列中的下一個執行會推進到閘道，並等待核准。此程序會繼續透過閘道one-by-one處理排入佇列的執行。 [Figure 1](#figure-1-workflow-queued-run-mode-ma)會說明此程序。
+ 如果您使用的是[取代的執行模式](workflows-configure-runs.md#workflows-configure-runs-superseded)，則行為與佇列執行模式的行為相同，除了讓 執行在閘道的佇列中堆積之外，較新的執行會取代 （接管） 較早的執行。沒有佇列，而且目前等待核准的任何執行都會取消，並由較新的執行取代。 會[Figure 2](#figure-2-workflow-superseded-run-mode-ma)說明此程序。
+ 如果您使用的是[平行執行模式](workflows-configure-runs.md#workflows-configure-runs-parallel)，則 會平行開始執行，而且不會形成佇列。每個執行都會立即由閘道處理，因為之前沒有執行。 [Figure 3](#figure-3-workflow-parallel-run-mode-ma)會說明此程序。

**圖 1**：「佇列執行模式」和**核准**閘道

![\[「核准」閘道如何與「佇列執行模式」搭配使用\]](http://docs.aws.amazon.com/zh_tw/codecatalyst/latest/userguide/images/flows/runmode-queued-ma.png)


**圖 2**：「超級執行模式」和**核准**閘道

![\[「核准」閘道如何與「更新後的執行模式」搭配使用\]](http://docs.aws.amazon.com/zh_tw/codecatalyst/latest/userguide/images/flows/runmode-superseded-ma.png)


**圖 3**：「平行執行模式」和**核准**閘道

![\[「核准」閘道如何與「平行執行模式」搭配使用\]](http://docs.aws.amazon.com/zh_tw/codecatalyst/latest/userguide/images/flows/runmode-parallel-ma.png)


# 範例：「核准」閘道
<a name="workflows-approval-example"></a>

下列範例示範如何在兩個名為 的動作`Approval_01`之間新增名為 `Staging`的**核准**閘道，以及 `Production`。`Staging` 動作會先執行，再執行`Approval_01`閘道秒，最後執行`Production`動作。只有在`Approval_01`閘道解除鎖定時，才會執行`Production`動作。`DependsOn` 屬性可確保 `Staging`、 `Approval_01`和 `Production`階段依順序執行。

如需**核准**閘道的詳細資訊，請參閱 [需要工作流程執行的核准](workflows-approval.md)。

```
Actions:
  Staging: # Deploy to a staging server
    Identifier: aws/ecs-deploy@v1
    Configuration:
    ...       
  Approval_01:
    Identifier: aws/approval@v1
    DependsOn:
      - Staging
    Configuration:
      ApprovalsRequired: 2 
  Production: # Deploy to a production server
    Identifier: aws/ecs-deploy@v1
    DependsOn:
      - Approval_01
    Configuration:
    ...
```

# 新增「核准」閘道
<a name="workflows-approval-add"></a>

若要將工作流程設定為需要核准，您必須將**核准**閘道新增至工作流程。使用下列指示將**核准**閘道新增至您的工作流程。

如需此閘道的詳細資訊，請參閱 [需要工作流程執行的核准](workflows-approval.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. 選擇**輸入**，然後在**相依**欄位中執行下列動作。

   指定必須成功執行的動作、動作群組或閘道，才能執行此閘道。根據預設，當您將閘道新增至工作流程時，閘道會設定為取決於工作流程中的最後一個動作。如果您移除此屬性，閘道將不會相依於任何項目，而且 會在其他動作之前先執行。
**注意**  
閘道必須設定為在動作、動作群組或閘道之前或之後執行。它無法設定為與其他動作、動作群組和閘道平行執行。

   如需 **依功能而定**的詳細資訊，請參閱 [定序閘道和動作](workflows-gates-depends-on.md)。

1. 選擇 **Configuration** (組態) 索引標籤。

1. 在**閘道名稱**欄位中，執行下列動作。

   指定您要提供閘道的名稱。所有閘道名稱在工作流程中必須是唯一的。閘道名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您不能使用引號在閘道名稱中啟用特殊字元和空格。

1. （選用） 在**核准數量**欄位中，執行下列動作。

   指定解鎖核准閘道所需的**最低核准**數量。最小值為 `1`。上限為 `2`。如果省略，則預設值為 `1`。
**注意**  
如果您想要省略 `ApprovalsRequired` 屬性，請從工作流程定義檔案移除閘道的 `Configuration`區段。

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

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

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

**將「核准」閘道新增至工作流程 (YAML 編輯器）**

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

1. 選擇您的專案。

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

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

1. 選擇**編輯**。

1. 選擇 **YAML**。

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

   ```
   Actions:
     MyApproval_01:
       Identifier: aws/approval@v1
       DependsOn:
         - PreviousAction
       Configuration:
         ApprovalsRequired: 2
   ```

   如需其他範例，請參閱[範例：「核准」閘道](workflows-approval-example.md)。

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

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

------

# 設定核准通知
<a name="workflows-approval-notify"></a>

您可以讓 CodeCatalyst 傳送通知至 Slack 頻道，通知使用者工作流程執行需要核准。使用者會看到通知並按一下其中的連結。此連結會將它們帶往 CodeCatalyst 核准頁面，他們可以在其中核准或拒絕工作流程。

您也可以設定通知，通知使用者工作流程已核准、遭拒，或核准請求已過期。

使用下列指示來設定 Slack 通知。

**開始之前**  
請確定您已將**核准**閘道新增至工作流程。如需詳細資訊，請參閱[新增「核准」閘道](workflows-approval-add.md)。

**傳送工作流程核准通知至 Slack 頻道**

1. 使用 Slack 設定 CodeCatalyst。如需詳細資訊，請參閱[Slack 通知入門](getting-started-notifications.md)。

1. 在包含需要核准之工作流程的 CodeCatalyst 專案中，如果通知尚未啟用，請啟用通知。若要啟用通知：

   1. 導覽至您的專案，然後在導覽窗格中選擇**專案設定**。

   1. 在頂端，選擇**通知**。

   1. 在**通知事件**中，選擇**編輯通知**。

   1. 開啟**工作流程核准待定**，然後選擇 CodeCatalyst 將傳送通知的 Slack 頻道。

   1. （選用） 開啟其他通知，提醒人員核准、拒絕和過期的核准。您可以開啟**工作流程執行已核准**、**工作流程執行遭拒**、**工作流程核准已取代**，以及**工作流程核准逾時**。在每個通知旁，選擇 CodeCatalyst 將傳送通知的 Slack 頻道。

   1. 選擇 **Save** (儲存)。

# 核准或拒絕工作流程執行
<a name="workflows-approval-approve"></a>

包含**核准**閘道的工作流程執行將需要核准或拒絕。使用者可以提供核准或拒絕，從：
+ CodeCatalyst 主控台
+ 團隊成員提供的連結
+ 自動化 Slack 通知

使用者提供核准或拒絕後，此決策將無法復原。

**注意**  
只有特定使用者可以核准或拒絕工作流程執行。如需詳細資訊，請參閱[誰可以提供核准？](workflows-approval.md#workflows-approval-who)。

**開始之前**  
請確定您已將**核准**閘道新增至工作流程。如需詳細資訊，請參閱[新增「核准」閘道](workflows-approval-add.md)。

**從 CodeCatalyst 主控台開始核准或拒絕工作流程執行**

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

1. 選擇您的專案。

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

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

1. 在工作流程圖表中，選擇代表**核准**閘道的方塊。

   側邊面板隨即出現。
**注意**  
此時，您可以視需要將此頁面的 URL 傳送給其他核准者。

1. 在**檢閱決策**下，選擇**核准**或拒絕****。

1. （選用） 在**註解 - 選用**中，輸入註解，指出您核准或拒絕工作流程執行的原因。

1. 選擇**提交**。

**從團隊成員提供的連結開始核准或拒絕工作流程執行**

1. 選擇團隊成員傳送給您的連結。（您可以讓團隊成員閱讀上述程序以取得連結。)

1. 如果系統要求，請登入 CodeCatalyst。

   系統會將您重新導向至工作流程執行核准頁面。

1. 在**檢閱決策**下，選擇**核准**或拒絕****。

1. （選用） 在**註解 - 選用**中，輸入註解，指出您核准或拒絕工作流程執行的原因。

1. 選擇**提交**。

**從自動化 Slack 通知開始核准或拒絕工作流程執行**

1. 確定已設定 Slack 通知。請參閱 [設定核准通知](workflows-approval-notify.md)。

1. 在 Slack 中，在傳送核准通知的管道中，選擇核准通知中的連結。

1. 如果系統要求，請登入 CodeCatalyst。

   系統會將您重新導向至工作流程執行頁面。

1. 在工作流程圖表中，選擇核准閘道。

1. 在**檢閱決策**下，選擇**核准**或拒絕****。

1. （選用） 在**註解 - 選用**中，輸入註解，指出您核准或拒絕工作流程執行的原因。

1. 選擇**提交**。

# 「核准」閘道 YAML
<a name="approval-ref"></a>

以下是**核准**閘道的 YAML 定義。若要了解如何使用此閘道，請參閱 [需要工作流程執行的核准](workflows-approval.md)。

此動作定義以區段的形式存在於更廣泛的工作流程定義檔案中。如需有關此檔案的詳細資訊，請參閱[工作流程 YAML 定義](workflow-reference.md)。

**注意**  
下列大多數 YAML 屬性在視覺化編輯器中都有對應的 UI 元素。若要查詢 UI 元素，請使用 **Ctrl\$1F**。 元素將與其相關聯的 YAML 屬性一起列出。

```
# The workflow definition starts here.
# See 最上層屬性 for details.
        
Name: MyWorkflow
SchemaVersion: 1.0 
Actions:
 
# The 'Approval' gate definition starts here.    
  Approval: 
    Identifier: aws/approval@v1
    DependsOn:
      - another-action
    Configuration:
      ApprovalsRequired: number
```

## Approval
<a name="approval.name"></a>

(必要)

指定您要提供閘道的名稱。工作流程中的所有閘道名稱都必須是唯一的。閘道名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您不能使用引號在閘道名稱中啟用特殊字元和空格。

預設：`Approval_nn`。

對應的 UI：組態索引標籤/**閘道名稱**

## Identifier
<a name="approval.identifier"></a>

(*Approval*/**Identifier**)

(必要)

識別閘道。**核准**閘道支援版本 `1.0.0`。除非您想要縮短版本，否則請勿變更此屬性。如需詳細資訊，請參閱[指定要使用的動作版本](workflows-action-versions.md)。

預設：`aws/approval@v1`。

對應的 UI：工作流程圖表/Approval\$1nn/**aws/approval@v1** 標籤

## DependsOn
<a name="approval.dependson"></a>

(*Approval*/**DependsOn**)

(選用)

指定必須成功執行的動作、動作群組或閘道，才能執行此閘道。根據預設，當您將閘道新增至工作流程時，閘道會設定為取決於工作流程中的最後一個動作。如果您移除此屬性，閘道將不會相依於任何項目，而且 會在其他動作之前先執行。

**注意**  
閘道必須設定為在動作、動作群組或閘道之前或之後執行。它無法設定為與其他動作、動作群組和閘道平行執行。

如需 **依功能而定**的詳細資訊，請參閱 [定序閘道和動作](workflows-gates-depends-on.md)。

對應的 UI：輸入索引標籤/**取決於**

## Configuration
<a name="approval.configuration"></a>

(*Approval*/**Configuration**)

(選用)

您可以在此區段定義閘道的組態屬性。

對應的 UI：**組態**索引標籤

## ApprovalsRequired
<a name="approval.approvals.required"></a>

(*Approval*/Configuration/**ApprovalsRequired**)

(選用)

指定解鎖核准閘道所需的**最低核准**數量。最小值為 `1`。上限為 `2`。如果省略，則預設值為 `1`。

**注意**  
如果您想要省略 `ApprovalsRequired` 屬性，請從工作流程定義檔案移除閘道的 `Configuration`區段。

對應的 UI：組態索引標籤/**核准數目**