設定階段的條件 - AWS CodePipeline

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

設定階段的條件

您可以指定階段的條件,例如在管道執行中檢查特定變數,然後針對條件接合結果,例如略過階段或失敗階段。您可以設定管道,以在執行期間檢查階段條件,在其中指定階段檢查,然後指定在滿足特定條件時應如何繼續階段。條件包含一或多個可在 中規則清單中使用的規則 CodePipeline。如果條件中的所有規則都成功,則符合條件。您可以設定條件,以便在不符合條件時,指定的結果會接合。

每個條件都有規則集,這是一起評估的一組有序規則。因此,如果一個規則在 條件下失敗,則 條件會失敗。您可以在管道執行期覆寫規則條件。

條件用於特定類型的表達式,且每個表達式都有可用的特定結果選項,如下所示:

  • 進入 - 進行檢查的條件,如果符合,允許進入階段。規則與下列結果選項搭配使用:失敗略過

  • 失敗時 - 檢查失敗階段的條件。規則與下列結果選項搭配使用:復原

  • 成功時 — 成功時檢查階段的條件。規則與下列結果選項搭配使用:復原失敗

每個類型條件的一組規則都支援條件。

對於每種類型的條件,都有條件設定的特定動作。動作是成功或失敗條件檢查的結果。例如,進入條件 (進入條件) 會遇到警示 (規則),然後檢查成功,結果 (動作) 是階段項目遭到封鎖。

您也可以使用 AWS CodePipeline 主控台或 AWS CLI 手動復原或重試階段或階段中的動作。請參閱 設定階段的條件。

階段條件的使用案例

階段條件具有多個使用案例,可用於設定 發佈和變更管道中的安全。以下是階段條件的範例使用案例。

  • 使用進入條件來定義檢查 CloudWatch警示狀態的條件,如果生產環境未處於運作狀態,則會封鎖變更。

  • 使用等待時間為 60 的進入條件,定義當階段中的所有動作成功完成時要評估的條件,然後在 CloudWatch 警示在 60 分鐘內進入ALARM狀態時復原變更。

  • 使用成功時條件來定義條件,讓階段成功完成時,規則會檢查目前時間是否在部署時段中,然後部署規則是否成功。

針對階段條件設定的結果考量

階段條件的考量如下:

  • 您無法在 onFailure 條件中使用自動階段重試。

  • 使用復原結果設定條件時,只有在目前的管道結構版本中可用時,階段才能復原至先前的執行。

  • 使用復原結果設定條件時,您無法復原至復原執行類型的目標執行 ID。

  • 對於使用略過結果在條件失敗時略過階段的進入條件,僅支援 LambdaInvokeVariableCheck規則。

  • 您無法在略過狀態的階段執行手動階段重試。

  • 您無法執行手動復原至略過狀態的階段。

  • 如果使用略過結果設定條件,則無法覆寫條件。

  • 除了略過結果之外,您可以在啟動管道執行時覆寫階段條件。對於使用覆寫的階段條件,執行將執行如下表所述。

  • Type 條件失敗時設定的結果 階段狀態 覆寫行為
    實體 失敗 進行中 階段會繼續進行。
    實體 略過 略過 不適用。

    OnFailure

    轉返 失敗 階段失敗。
    OnSuccess 轉返 Succeeded 階段會繼續進行。

    OnSuccess

    失敗 失敗 階段會繼續進行。

針對階段條件設定的規則考量

階段條件可用規則的考量如下:

  • 對於LambdaInvoke規則,您必須先設定要在規則中使用的 Lambda 函數。當您設定規則時,ARN請準備好 Lambda 函數。

  • 對於CloudWatchAlarm規則,您必須先設定要在規則中使用的 CloudWatch 事件事件。設定規則時,請ARN準備好事件。

建立項目條件

您可以使用主控台或 設定階段的進入條件CLI。您將為每個條件設定對應的規則和結果。對於復原結果,只有在目前的管道結構版本中啟動先前的執行時,管道才能復原至先前的執行。

這些步驟提供使用監視器規則的範例項目條件。

如需詳細資訊,請參閱 指南 RuleExecution中的條件 RuleTypeId、 和 。 CodePipeline API

建立項目條件 - CloudWatchAlarm 規則範例 (主控台)

您可以設定階段的進入條件,以及您希望階段在符合條件時執行的規則和結果。

設定項目條件 (主控台)
  1. 完成任何先決條件,例如建立資源ARN,以及提供資源的規則,例如 AWS CloudWatchAlarm

  2. 登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home 開啟 CodePipeline 主控台。

    與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。

  3. Name (名稱) 中,選擇您想編輯的管道名稱。

  4. 在管道詳細資訊頁面上,選擇 Edit (編輯)

  5. 編輯頁面上,針對您要編輯的動作,選擇編輯階段

  6. 選擇新增項目條件 顯示階段前進入條件卡,其中包含適用於此條件的失敗選項。

  7. 選擇新增規則 ,然後完成下列操作。

    1. 規則名稱 中,輸入規則的名稱。在此範例中,請輸入 MyAlarmRule

    2. 規則提供者 中,選擇要新增至您條件的預先設定規則提供者。在此範例中,選擇 AWS CloudWatchAlarm,然後完成下列步驟。

    3. 區域 中,選擇您條件的區域或保留預設值。

    4. 警示名稱 中,選擇要用於規則 CloudWatch 的資源。您必須已在帳戶中建立 資源。

    5. (選用) 在等待時間 中,輸入第一次評估警示處於 ALARM 狀態時 CodePipeline ,將等待的時間量。如果第一次檢查規則時警示狀態為 OK,則規則會立即成功。

    6. (選用) 輸入要監控的任何特定警示狀態,並在適當ARN時輸入角色。

    7. 當您完成階段編輯時,請選擇完成。在管道編輯頁面上,選擇儲存

  8. 執行之後,請檢視結果。

使用略過結果和VariableCheck規則建立項目條件 (主控台)

您可以設定階段的進入條件,以便在不符合進入條件時略過該階段。如果條件失敗,則表示結果接合,然後略過該階段。略過階段時,階段狀態為略過 ,動作狀態為未執行 。如需使用略過結果之階段條件的考量,請參閱 針對階段條件設定的結果考量

在下列範例中,變數檢查規則會發現值不是相符項目,並略過建置階段。

使用略過結果 (主控台) 設定項目條件
  1. 完成任何先決條件,例如建立資源ARN,以及提供資源的規則,例如 AWS CloudWatchAlarm

  2. 登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home 開啟 CodePipeline 主控台。

    與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。

  3. Name (名稱) 中,選擇您想編輯的管道名稱。

  4. 在管道詳細資訊頁面上,選擇 Edit (編輯)

  5. 編輯頁面上,針對您要編輯的動作,選擇編輯階段

  6. 選擇新增項目條件 ,然後選擇略過作為結果。

  7. 選擇 新增規則 ,然後完成下列操作。

    1. 規則名稱 中,輸入規則的名稱。在此範例中,請輸入 MyAlarmRule

    2. 規則提供者 中,選擇要新增至您條件的預先設定規則提供者。在此範例中,選擇 VariableCheck,然後完成下列步驟。

      使用 的範例發行程序 CodePipeline。
    3. 區域 中,選擇您條件的區域或保留預設值。

    4. 變數 中,選擇要比較的變數,例如具有第 2 GitHub 版來源動作的#{SourceVariables.FullRepositoryName}管道。輸入儲存庫名稱,然後選擇運算子,例如等於

    5. 當您完成階段編輯時,請選擇完成。在管道編輯頁面上,選擇儲存

  8. 執行之後,請檢視結果。

    使用 的範例發行程序 CodePipeline。
  9. 若要檢閱詳細資訊,請選擇檢閱 。下列範例中的詳細資訊顯示條件的組態結果為略過 ,無法覆寫。由於未符合條件,因此規則狀態為失敗

    顯示 中略過結果條件的範例條件詳細資訊頁面 CodePipeline。

建立項目條件 (CLI)

若要使用 AWS CLI 來設定 Entry 條件,請使用 命令來建立或更新管道,如 建立管道、階段和動作和 所述在 中編輯管道 CodePipeline

設定條件和規則或規則 (CLI)
  • 開啟終端機 (Linux、macOS 或 Unix) 或命令提示字元 AWS CLI (Windows),然後使用 執行update-pipeline命令,在管道結構中指定失敗條件。下列範例為名為 的階段設定進入條件Deploy

    { "name": "Deploy", "actions": [ { "name": "Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "S3", "version": "1" }, "runOrder": 1, "configuration": { "BucketName": "MyBucket", "Extract": "false", "ObjectKey": "object.xml" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1", "namespace": "DeployVariables" } ], "beforeEntry": { "conditions": [ { "result": "FAIL", "rules": [ { "name": "MyAlarmRule", "ruleTypeId": { "category": "Rule", "owner": "AWS", "provider": "CloudWatchAlarm", "version": "1" }, "configuration": { "AlarmName": "CWAlarm", "WaitTime": "1" }, "inputArtifacts": [], "region": "us-east-1" } ] } ] } }

    如需設定階段復原成功條件的詳細資訊,請參閱 參考 SuccessConditions中的 。 CodePipeline API

建立項目條件 (CFN)

若要使用 AWS CloudFormation 來設定 Entry 條件,請使用 beforeEntry 參數。進入時,階段會執行規則並執行結果。

beforeEntry: Result: FAIL
  • 更新範本,如下列程式碼片段所示。下列範例使用名為 的規則設定 Entry 條件MyMonitorRule

    Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: S3 Version: '1' RunOrder: 1 Configuration: BucketName: MyBucket Extract: 'false' ObjectKey: object.xml OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: us-east-1 Namespace: DeployVariables BeforeEntry: Conditions: - Result: FAIL Rules: - Name: MyMonitorRule RuleTypeId: Category: Rule Owner: AWS Provider: CloudWatchAlarm Version: '1' Configuration: AlarmName: CWAlarm WaitTime: '1' InputArtifacts: [] Region: us-east-1

    如需設定 beforeEntry 條件的詳細資訊,請參閱 使用者指南 StageDeclaration 中的 AWS::CodePipeline::Pipeline BeforeEntryConditionsAWS CloudFormation

建立失敗條件

您可以使用主控台或 為階段設定失敗條件CLI。您將為每個條件設定對應的規則和結果。對於復原結果,只有在目前的管道結構版本中啟動先前的執行時,管道才能復原至先前的執行。

建立失敗條件 (主控台)

您可以為階段設定失敗條件,以及您希望階段在符合條件時執行的規則和結果。

設定 On Failure 條件 (主控台)
  1. 完成任何先決條件,例如建立資源ARN,以及針對提供資源的規則,例如LambdaInvoke規則。

  2. 登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home 開啟 CodePipeline 主控台。

    與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。

  3. Name (名稱) 中,選擇您想編輯的管道名稱。

  4. 在管道詳細資訊頁面上,選擇 Edit (編輯)

  5. 編輯頁面上,針對您要編輯的動作,選擇編輯階段

  6. 選擇新增失敗條件 失敗條件卡會顯示此條件可用的復原選項。

  7. 選擇新增規則 ,然後完成下列操作。

    1. 規則名稱 中,輸入規則的名稱。在此範例中,請輸入 MyLambdaRule

    2. 規則提供者 中,選擇要新增至您條件的預先設定規則提供者。在此範例中,選擇 AWS LambdaInvoke,然後完成下列步驟。

    3. 區域 中,選擇您條件的區域或保留預設值。

    4. 輸入成品 中,選擇來源成品。

    5. 函數名稱 中,選擇要用於規則的 Lambda 資源。您必須已在帳戶中建立 資源。

    6. (選用) 在使用者參數 中,輸入代表其他組態參數的任何配對。

    7. (選用) 在 Role Arn 中,ARN如果已設定,請輸入角色。

    8. (選用) 在以分鐘為單位的逾時中,輸入規則在逾時前應等待的時間,以分鐘為單位。

    9. 當您完成階段編輯時,請選擇完成。在管道編輯頁面上,選擇儲存

使用重試結果範例建立 onFailure 條件 (主控台)

您可以設定階段 onFailure 的條件,以便在不符合進入條件時重試階段。在此結果中,您可以設定重試模式,指定要重試失敗的動作還是重試失敗的階段。

使用重試結果 (主控台) 設定 onFailure 條件
  1. 完成任何先決條件,例如建立資源ARN,以及提供資源的規則,例如 AWS CloudWatchAlarm

  2. 登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home 開啟 CodePipeline 主控台。

    與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。

  3. Name (名稱) 中,選擇您想編輯的管道名稱。

  4. 在管道詳細資訊頁面上,選擇 Edit (編輯)

  5. 編輯頁面上,針對您要編輯的動作,選擇編輯階段

  6. 在階段底部,在自動階段組態下:,選擇在階段失敗時啟用自動重試。重試模式中,選擇重試失敗階段重試失敗動作

    在 中為階段設定重試模式 CodePipeline。
  7. 選擇新增 onFailure 條件,然後選擇新增規則並輸入條件的規則。

    1. 規則名稱 中,輸入規則的名稱。在此範例中,請輸入 MyAlarmRule

    2. 規則提供者 中,選擇要新增至您條件的預先設定規則提供者。在此範例中,選擇 CloudWatchAlarm,然後完成下列步驟。

    3. 區域 中,選擇您條件的區域或保留預設值。

    4. 警示名稱 中,選擇警示的已設定資源。

    5. 當您完成階段編輯時,請選擇完成。在管道編輯頁面上,選擇儲存

  8. 執行之後,請檢視結果。

建立失敗條件 (CLI)

若要使用 AWS CLI 設定失敗時條件,請使用 命令來建立或更新管道,如 建立管道、階段和動作和 中詳述在 中編輯管道 CodePipeline

設定條件和規則或規則 (CLI)
  • 開啟終端機 (Linux、macOS 或 Unix) 或命令提示字元 AWS CLI (Windows),然後使用 執行update-pipeline命令,在管道結構中指定失敗條件。下列範例為名為 的階段設定 On Failure 條件Deploy

    { "name": "Deploy", "actions": [ { "name": "Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "S3", "version": "1" }, "runOrder": 1, "configuration": { "BucketName": "MyBucket", "Extract": "false", "ObjectKey": "object.xml" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1", "namespace": "DeployVariables" } ], "onFailure": { "conditions": [ { "result": "ROLLBACK", "rules": [ { "name": "MyLambdaRule", "ruleTypeId": { "category": "Rule", "owner": "AWS", "provider": "LambdaInvoke", "version": "1" }, "configuration": { "FunctionName": "my-function" }, "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1" } ] } ] } }

    如需設定失敗條件的詳細資訊,請參閱 參考 FailureConditions中的 。 CodePipeline API

建立失敗條件 (CFN)

若要使用 AWS CloudFormation 設定失敗條件,請使用 OnFailure 參數。成功時,階段會執行規則並執行結果。

OnFailure: Result: ROLLBACK
  • 更新範本,如下列程式碼片段所示。下列範例使用名為 的規則設定 OnFailure 條件MyMonitorRule

    name: Deploy actions: - name: Deploy actionTypeId: category: Deploy owner: AWS provider: S3 version: '1' runOrder: 1 configuration: BucketName: MyBucket Extract: 'false' ObjectKey: object.xml outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1 namespace: DeployVariables onFailure: conditions: - result: ROLLBACK rules: - name: MyMonitorRule ruleTypeId: category: Rule owner: AWS provider: CloudWatchAlarm version: '1' configuration: AlarmName: AlarmOnHelloWorldInvocation AlarmStates: ALARM WaitTime: '1' inputArtifacts: [] region: us-east-1

    如需設定失敗條件的詳細資訊,請參閱 使用者指南 OnFailureStageDeclaration中的 。 AWS CloudFormation

建立成功條件

您可以使用主控台或 為階段設定 On Success 條件CLI。您將為每個條件設定對應的規則和結果。對於復原結果,只有在目前的管道結構版本中啟動先前的執行時,管道才能復原至先前的執行。

這些步驟提供使用部署時段規則的成功條件範例。

如需詳細資訊,請參閱 指南 RuleExecution中的條件 RuleTypeId、 和 。 CodePipeline API

建立成功條件 (主控台)

您可以為階段設定 On Success 條件,以及您希望階段在符合條件時執行的規則和結果。

設定 On Success 條件 (主控台)
  1. 完成任何先決條件,例如建立資源,以及提供資源的ARN規則,例如 AWS LambdaRule。

  2. 登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home 開啟 CodePipeline 主控台。

    與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。

  3. Name (名稱) 中,選擇您想編輯的管道名稱。

  4. 在管道詳細資訊頁面上,選擇 Edit (編輯)

  5. 編輯頁面上,針對您要編輯的動作,選擇編輯階段

  6. 選擇新增成功條件 。隨即顯示階段成功條件卡。選擇顯示為此條件類型的可用結果的復原失敗選項。

  7. 選擇新增規則 ,然後完成下列操作。

    1. 規則名稱 中,輸入條件的名稱。在此範例中,請輸入 MyDeploymentRule

    2. 規則提供者 中,選擇要新增至條件的預先設定規則。在此範例中,選擇 AWS DeploymentWindow,然後完成下列步驟。

    3. 區域 中,選擇您條件的區域或保留預設值。

    4. Cron 中,輸入部署視窗的 Cron 表達式。cron 表達式定義應該允許部署的日期和時間。如需 cron 表達式的參考資訊,請參閱使用 cron 和速率表達式來排程規則

    5. (選用) 在 中TimeZone,輸入部署時段的時區。

  8. 執行之後,請檢視結果。

    中的範例條件 CodePipeline。

建立成功條件 (CLI)

若要使用 AWS CLI 設定成功時條件,請使用 命令來建立或更新管道,如 建立管道、階段和動作和 中詳述在 中編輯管道 CodePipeline

設定條件和規則或規則 (CLI)
  • 開啟終端機 (Linux、macOS 或 Unix) 或命令提示字元 AWS CLI (Windows),然後使用 執行update-pipeline命令,在管道結構中指定失敗條件。下列範例會為名為 的分段設定 On Success 條件Deploy,其中規則名為 MyDeploymentRule

    { "name": "Deploy", "actions": [ { "name": "Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "S3", "version": "1" }, "runOrder": 1, "configuration": { "BucketName": "MyBucket", "Extract": "false", "ObjectKey": "object.xml" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1", "namespace": "DeployVariables" } ], "onSuccess": { "conditions": [ { "result": "FAIL", "rules": [ { "name": "MyAlarmRule", "ruleTypeId": { "category": "Rule", "owner": "AWS", "provider": "CloudWatchAlarm", "version": "1" }, "configuration": { "AlarmName": "CWAlarm", "WaitTime": "1" }, "inputArtifacts": [], "region": "us-east-1" } ] } ] } }

    如需設定成功條件的詳細資訊,請參閱 參考 SuccessConditions中的 。 CodePipeline API

建立 On Success 條件 (CFN)

若要使用 AWS CloudFormation 設定 On Success 條件,請使用 OnSuccess 參數。成功時,階段會執行規則並執行結果。

OnSuccess: Result: ROLLBACK
  • 更新範本,如下列程式碼片段所示。下列範例使用名為 的規則設定 OnSuccess 條件MyDeploymentWindowRule

    name: Deploy actions: - name: Deploy actionTypeId: category: Deploy owner: AWS provider: S3 version: '1' runOrder: 1 configuration: BucketName: MyBucket Extract: 'false' ObjectKey: object.xml outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1 namespace: DeployVariables onSuccess: conditions: - result: FAIL rules: - name: MyMonitorRule ruleTypeId: category: Rule owner: AWS provider: CloudWatchAlarm version: '1' configuration: AlarmName: CWAlarm WaitTime: '1' inputArtifacts: [] region: us-east-1

    如需設定階段復原失敗條件的詳細資訊,請參閱 使用者指南OnFailureStageDeclaration中的 。 AWS CloudFormation

刪除階段條件

您可以刪除已為管道設定的階段條件。

若要刪除階段條件
  1. 登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home 開啟 CodePipeline 主控台。

    與 相關聯的所有管道的名稱和狀態 AWS 帳戶 都會顯示。

  2. Name (名稱) 中,選擇您想編輯的管道名稱。

  3. 在管道詳細資訊頁面上,選擇 Edit (編輯)

  4. 編輯頁面上,針對您要編輯的條件,選擇編輯階段

  5. 在要刪除的條件旁邊,選擇刪除條件

覆寫階段條件

您可以覆寫為管道設定的階段條件。在主控台中,當階段和規則正在執行時,您可以選擇覆寫階段條件。這會導致階段執行中

若要覆寫階段條件
  1. 在此範例中,管道階段正在執行 條件。覆寫按鈕已啟用。

    中的範例條件 CodePipeline。
  2. 在您要覆寫的條件旁邊,選擇覆寫

    中的範例條件 CodePipeline。
  3. 若要檢閱詳細資訊,請選擇檢閱 。下列範例中的詳細資訊顯示條件的組態結果為 Fail,已覆寫。由於覆寫,規則狀態為已放棄。

    顯示 中覆寫條件的範例條件詳細資訊頁面 CodePipeline。