

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

# 在 CodePipeline 中啟動管道
<a name="pipelines-about-starting"></a>

您可以根據不同的觸發條件啟動每個管道執行。每個管道執行可以有不同類型的觸發，具體取決於管道的啟動方式。每個執行的觸發類型會顯示在管道的執行歷史記錄中。觸發類型可依來源動作提供者而定，如下所示：

**注意**  
您不能為每個來源動作指定多個觸發。
+ **管道建立**：建立管道時，管道執行會自動啟動。這是**執行歷史記錄**中的`CreatePipeline`觸發類型。
+ **修訂物件的變更**：此類別代表**執行歷史記錄**中的`PutActionRevision`觸發類型。
+ **變更分支上的偵測並遞交程式碼推送**：此類別代表**執行歷史記錄**中的`CloudWatchEvent`觸發類型。當偵測到來源儲存庫中的來源遞交和分支變更時，您的管道就會啟動。此觸發類型使用自動變更偵測。使用此觸發類型的來源動作提供者為 S3 和 CodeCommit。此類型也用於啟動管道的排程。請參閱 [依排程啟動管道](pipelines-trigger-source-schedule.md)。
+ **輪詢來源變更**：此類別代表**執行歷史記錄**中的`PollForSourceChanges`觸發類型。透過輪詢偵測到來源儲存庫中的來源遞交和分支變更時，管道就會啟動。不建議此觸發類型，應遷移以使用自動變更偵測。使用此觸發類型的來源動作提供者為 S3 和 CodeCommit。
+ **第三方來源的 Webhook 事件**：此類別代表**執行歷史記錄**中的`Webhook`觸發類型。當 Webhook 事件偵測到變更時，您的管道就會啟動。此觸發類型使用自動變更偵測。使用此觸發類型的來源動作提供者是針對程式碼推送設定的連線 (Bitbucket Cloud、GitHub、GitHub Enterprise Server、GitLab.com,和 GitLab 自我管理）。
+ **第三方來源的 WebhookV2 事件**：此類別代表**執行歷史記錄**中的`WebhookV2`觸發類型。此類型適用於根據管道定義中定義的觸發條件觸發的執行。偵測到具有指定 Git 標籤的版本時，您的管道會啟動。您可以使用 Git 標籤，以名稱或其他識別符來標記遞交，以協助其他儲存庫使用者了解其重要性。您也可以使用 Git 標籤來識別儲存庫歷史記錄中的特定遞交。此觸發類型會停用自動變更偵測。使用此觸發類型的來源動作提供者是針對 Git 標籤 (Bitbucket Cloud、GitHub、GitHub Enterprise Server 和 GitLab.com).
+ **手動啟動管道**：此類別代表**執行歷史記錄**中的`StartPipelineExecution`觸發類型。您可以使用 主控台或 AWS CLI 手動啟動管道。如需相關資訊，請參閱[手動啟動管道](pipelines-rerun-manually.md)。
+ **RollbackStage**：此類別代表**執行歷史記錄**中的`RollbackStage`觸發類型。您可以使用 主控台或 AWS CLI 手動或自動復原階段。如需相關資訊，請參閱[設定階段復原](stage-rollback.md)。

當您將來源動作新增至使用自動變更偵測觸發類型的管道時，動作會搭配其他資源運作。由於這些額外的資源用於變更偵測，因此建立每個來源動作會在個別區段中詳細說明。如需每個來源提供者的詳細資訊，以及自動化變更偵測所需的變更偵測方法，請參閱 [來源動作和變更偵測方法](change-detection-methods.md)。

**Topics**
+ [手動啟動管道](pipelines-rerun-manually.md)
+ [依排程啟動管道](pipelines-trigger-source-schedule.md)
+ [使用來源修訂覆寫啟動管道](pipelines-trigger-source-overrides.md)

# 手動啟動管道
<a name="pipelines-rerun-manually"></a>

根據預設，建立管道時，以及隨時在來源儲存庫中進行變更時，管道就會自動啟動。​不過，您可能會想要再次透過管道，重新執行最新的修訂版本。您可以使用 CodePipeline 主控台或 AWS CLI 和 **start-pipeline-execution**命令，透過管道手動重新執行最新的修訂。

**Topics**
+ [手動啟動管道 (主控台)](#pipelines-rerun-manually-console)
+ [手動啟動管道 (CLI)](#pipelines-rerun-manually-cli)

## 手動啟動管道 (主控台)
<a name="pipelines-rerun-manually-console"></a>

**手動啟動管道，並透過管道執行最新的修訂版本**

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

1. 在 **Name (名稱)** 中，選擇您想啟動的管道名稱。

1. 在管道詳細資訊頁面上，選擇**發行變更**。如果管道設定為傳遞參數 （管道變數），則選擇**發行變更**會開啟**發行變更**視窗。在**管道變數**中，在管道層級變數的 欄位或欄位中，輸入您要在此管道執行中傳遞的值。如需詳細資訊，請參閱[變數參考](reference-variables.md)。

   ​這將會啟動各來源位置的最新可用修訂版本；這些來源位置透過管道的來源動作指定。

## 手動啟動管道 (CLI)
<a name="pipelines-rerun-manually-cli"></a>

**手動啟動管道，並透過管道執行最近的成品版本**

1. 開啟終端機 (Linux、macOS 或 Unix) 或命令提示字元 AWS CLI (Windows)，然後使用 執行**start-pipeline-execution**命令，指定您要啟動的管道名稱。例如，若要透過名為 *MyFirstPipeline* 的管道開始執行上次變更：

   ```
   aws codepipeline start-pipeline-execution --name MyFirstPipeline
   ```

   若要啟動在管道層級設定變數的管道，請使用 **start-pipeline-execution**命令搭配選用**--variables**引數來啟動管道，並新增將在執行中使用的變數。例如，若要新增值`var1`為 的變數`1`，請使用下列命令：

   ```
   aws codepipeline start-pipeline-execution --name MyFirstPipeline --variables name=var1,value=1 
   ```

1. 請檢視回傳的物件以驗證是否成功。此命令會傳回如下的執行 ID：

   ```
   {
       "pipelineExecutionId": "c53dbd42-This-Is-An-Example"
   }
   ```
**注意**  
啟動管道之後，您可以在 CodePipeline 主控台中或透過執行 **get-pipeline-state**命令來監控其進度。如需詳細資訊，請參閱[檢視管道 （主控台）](pipelines-view-console.md)及[檢視管道詳細資訊與歷程記錄 (CLI)](pipelines-view-cli.md)。

# 依排程啟動管道
<a name="pipelines-trigger-source-schedule"></a>

您可以在 EventBridge 中設定規則，以排程啟動管道。

## 建立排程管道啟動的 EventBridge 規則 （主控台）
<a name="pipelines-trigger-source-schedule-console"></a>

**以排程做為事件來源來建立 EventBridge 規則**

1. 前往 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 開啟 Amazon EventBridge 主控台。

1. 在導覽窗格中，選擇**規則**。

1. 選擇**建立規則**，然後在**規則詳細資訊**下，選擇**排程**。

1. 使用固定頻率或運算式來設定排程。如需詳細資訊，請參閱[適用於規則的排程運算式](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html)。

1. 在 **Targets (目標)** 中，選擇 **CodePipeline**。

1. 輸入此排程管道執行的管道 ARN。
**注意**  
您可以在 主控台**的設定**下找到管道 ARN。請參閱 [檢視管道 ARN 和服務角色 ARN （主控台）](pipelines-settings-console.md)。

1. 選擇下列其中一項來建立或指定 IAM 服務角色，讓 EventBridge 有權叫用與 EventBridge 規則相關聯的目標 （在此情況下，目標是 CodePipeline)。
   + 選擇**為此特定資源建立新角色**，以建立授予 EventBridge 啟動管道執行許可的服務角色。
   + 選擇**使用現有角色**來輸入服務角色，以授予 EventBridge 啟動管道執行的許可。

1. 選擇**設定詳細資訊**。

1. 在 **Configure rule details (設定規則詳細資訊)** 頁面上，輸入規則的名稱和描述，然後選擇 **State (狀態)** 啟用規則。

1. 如果您對此規則感到滿意，請選擇 **Create rule (建立規則)**。

## 建立排程管道啟動的 EventBridge 規則 (CLI)
<a name="pipelines-trigger-source-schedule-cli"></a>

 

若要使用 AWS CLI 建立規則，請呼叫 **put-rule**命令，並指定：
+ 可唯一識別您所建立規則的名稱。此名稱在您使用與 AWS 帳戶相關聯的 CodePipeline 建立的所有管道中必須是唯一的。
+ 適用於規則的排程運算式。

**以排程做為事件來源來建立 EventBridge 規則**

1. 呼叫 **put-rule** 命令，並包含 `--name ` 和 `--schedule-expression` 參數。

   範例：

   下列範例命令使用 **--schedule-expression**來建立稱為 的規則`MyRule2`，以依排程篩選 EventBridge。

   ```
   aws events put-rule --schedule-expression 'cron(15 10 ? * 6L 2002-2005)' --name MyRule2
   ```

1. 若要新增 CodePipeline 做為目標，請呼叫 **put-targets**命令並包含下列參數：
   + `--rule` 參數與您使用 **put-rule** 所建立的 `rule_name` 搭配使用。
   + `--targets` 參數與目標清單中目標的清單 `Id` 和目標管道的 `ARN` 搭配使用。

   以下命令範例指定名為 `MyCodeCommitRepoRule` 的規則，該目標 `Id` 是由數字 1 組成，指出在規則的目標清單中，這是目標 1。此範例命令也會指定管道的範例 `ARN`。儲存庫中若發生變更，管道就會啟動。

   ```
   aws events put-targets --rule MyCodeCommitRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
   ```

1. 授予 EventBridge 使用 CodePipeline 叫用規則的許可。如需詳細資訊，請參閱[使用 Amazon EventBridge 的資源型政策](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html)。

   1. 使用下列範例建立信任政策，以允許 EventBridge 擔任服務角色。將其命名為 `trustpolicyforEB.json`。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "events.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 使用下列命令來建立 `Role-for-MyRule` 角色，並連接信任政策。

      ```
      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
      ```

   1. 為名為 `MyFirstPipeline` 的管道建立許可政策 JSON，如這個範例所示。將許可政策命名為 `permissionspolicyforEB.json`。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "codepipeline:StartPipelineExecution"
                  ],
                  "Resource": [
                      "arn:aws:codepipeline:us-west-2:111122223333:MyFirstPipeline"
                  ]
              }
          ]
      }
      ```

------

   1. 使用執行以下命令，將新的 `CodePipeline-Permissions-Policy-for-EB` 許可政策連接到您所建立的 `Role-for-MyRule` 角色。

      ```
      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforCWE.json
      ```

# 使用來源修訂覆寫啟動管道
<a name="pipelines-trigger-source-overrides"></a>

您可以使用覆寫來啟動具有您為管道執行提供的特定來源修訂 ID 的管道。例如，如果您想要啟動將處理 CodeCommit 來源中特定遞交 ID 的管道，您可以在啟動管道時新增遞交 ID 做為覆寫。

**注意**  
您也可以使用輸入轉換項目建立來源覆寫，以針對管道事件在 EventBridge `revisionValue`中使用 ，其中 `revisionValue` 衍生自物件金鑰、遞交或影像 ID 的來源事件變數。如需詳細資訊，請參閱 [Amazon ECR 來源動作和 EventBridge 資源](create-cwe-ecr-source.md)、 [連線至已啟用事件來源的 Amazon S3 來源動作](create-S3-source-events.md)或 下程序中包含的輸入轉換項目選用步驟[CodeCommit 來源動作和 EventBridge](triggering.md)。

有四種類型的來源修訂`revisionType`：
+ `COMMIT_ID`
+ `IMAGE_DIGEST`
+ `S3_OBJECT_VERSION_ID`
+ `S3_OBJECT_KEY`

**注意**  
對於來源修訂的 `COMMIT_ID`和 `IMAGE_DIGEST`類型，來源修訂 ID 會套用至儲存庫中所有分支的所有內容。

**注意**  
對於來源修訂的 `S3_OBJECT_VERSION_ID`和 `S3_OBJECT_KEY` 類型，其中一種類型可以獨立使用，也可以一起使用，以特定 ObjectKey 和 VersionID 覆寫來源。對於 `S3_OBJECT_KEY`，組態參數`AllowOverrideForS3ObjectKey`需要設定為 `true`。如需 S3 來源組態參數的詳細資訊，請參閱 [組態參數](action-reference-S3.md#action-reference-S3-config)。

**Topics**
+ [使用來源修訂覆寫啟動管道 （主控台）](#pipelines-trigger-source-overrides-console)
+ [使用來源修訂覆寫 (CLI) 啟動管道](#pipelines-trigger-source-overrides-cli)

## 使用來源修訂覆寫啟動管道 （主控台）
<a name="pipelines-trigger-source-overrides-console"></a>

**手動啟動管道，並透過管道執行最新的修訂版本**

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

1. 在 **Name (名稱)** 中，選擇您想啟動的管道名稱。

1. 在管道詳細資訊頁面上，選擇**發行變更**。選擇**版本變更**會開啟**版本變更**視窗。針對**來源修訂覆寫**，選擇箭頭以展開欄位。在**來源**中，輸入來源修訂 ID。例如，如果您的管道有 CodeCommit 來源，請從您要使用的 欄位選擇遞交 ID。  
![\[CodePipeline 中的覆寫畫面範例。\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/overrides.png)

## 使用來源修訂覆寫 (CLI) 啟動管道
<a name="pipelines-trigger-source-overrides-cli"></a>

**手動啟動管道，並透過管道執行成品的指定來源修訂 ID**

1. 開啟終端機 (Linux、macOS 或 Unix) 或命令提示字元 AWS CLI (Windows)，然後使用 執行**start-pipeline-execution**命令，指定您要啟動的管道名稱。您也可以使用 **--source-revisions**引數來提供來源修訂版 ID。來源修訂由 actionName、revisionType 和 revisionValue 組成。有效的 revisionType 值為 `COMMIT_ID | IMAGE_DIGEST | S3_OBJECT_VERSION_ID | S3_OBJECT_KEY`。

   在下列範例中，若要開始透過名為 的管道執行指定的變更**codecommit-pipeline**，下列命令會分類來源動作名稱、修訂類型 `COMMIT_ID`和遞交 ID 為 `78a25c18755ccac3f2a9eec099dEXAMPLE`。

   ```
   aws codepipeline start-pipeline-execution --name codecommit-pipeline --source-revisions actionName=Source,revisionType=COMMIT_ID,revisionValue=78a25c18755ccac3f2a9eec099dEXAMPLE --region us-west-1
   ```

1. 請檢視回傳的物件以驗證是否成功。此命令會傳回如下的執行 ID：

   ```
   {
       "pipelineExecutionId": "c53dbd42-This-Is-An-Example"
   }
   ```
**注意**  
啟動管道之後，您可以在 CodePipeline 主控台中或透過執行 **get-pipeline-state**命令來監控其進度。如需詳細資訊，請參閱[檢視管道 （主控台）](pipelines-view-console.md)及[檢視管道詳細資訊與歷程記錄 (CLI)](pipelines-view-cli.md)。