本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定階段的條件
您可以指定階段的條件,例如在管道執行中檢查特定變數,然後針對條件接合結果,例如略過階段或失敗階段。您可以設定管道,以在執行期間檢查階段條件,在其中指定階段檢查,然後指定在滿足特定條件時應如何繼續階段。條件包含一或多個可在 中規則清單中使用的規則 CodePipeline。如果條件中的所有規則都成功,則符合條件。您可以設定條件,以便在不符合條件時,指定的結果會接合。
每個條件都有規則集,這是一起評估的一組有序規則。因此,如果一個規則在 條件下失敗,則 條件會失敗。您可以在管道執行期覆寫規則條件。
條件用於特定類型的表達式,且每個表達式都有可用的特定結果選項,如下所示:
-
進入 - 進行檢查的條件,如果符合,允許進入階段。規則與下列結果選項搭配使用:失敗或略過
-
失敗時 - 檢查失敗階段的條件。規則與下列結果選項搭配使用:復原
-
成功時 — 成功時檢查階段的條件。規則與下列結果選項搭配使用:復原或失敗
每個類型條件的一組規則都支援條件。
對於每種類型的條件,都有條件設定的特定動作。動作是成功或失敗條件檢查的結果。例如,進入條件 (進入條件) 會遇到警示 (規則),然後檢查成功,結果 (動作) 是階段項目遭到封鎖。
您也可以使用 AWS CodePipeline 主控台或 AWS CLI 手動復原或重試階段或階段中的動作。請參閱 設定階段的條件。
階段條件的使用案例
階段條件具有多個使用案例,可用於設定 發佈和變更管道中的安全。以下是階段條件的範例使用案例。
-
使用進入條件來定義檢查 CloudWatch警示狀態的條件,如果生產環境未處於運作狀態,則會封鎖變更。
-
使用等待時間為 60 的進入條件,定義當階段中的所有動作成功完成時要評估的條件,然後在 CloudWatch 警示在 60 分鐘內進入ALARM狀態時復原變更。
-
使用成功時條件來定義條件,讓階段成功完成時,規則會檢查目前時間是否在部署時段中,然後部署規則是否成功。
針對階段條件設定的結果考量
階段條件的考量如下:
-
您無法在 onFailure 條件中使用自動階段重試。
-
使用復原結果設定條件時,只有在目前的管道結構版本中可用時,階段才能復原至先前的執行。
-
使用復原結果設定條件時,您無法復原至復原執行類型的目標執行 ID。
-
對於使用略過結果在條件失敗時略過階段的進入條件,僅支援
LambdaInvoke
和VariableCheck
規則。 -
您無法在略過狀態的階段執行手動階段重試。
-
您無法執行手動復原至略過狀態的階段。
-
如果使用略過結果設定條件,則無法覆寫條件。
-
除了略過結果之外,您可以在啟動管道執行時覆寫階段條件。對於使用覆寫的階段條件,執行將執行如下表所述。
-
Type 條件失敗時設定的結果 階段狀態 覆寫行為 實體 失敗 進行中 階段會繼續進行。 實體 略過 略過 不適用。 OnFailure
轉返 失敗 階段失敗。 OnSuccess 轉返 Succeeded 階段會繼續進行。 OnSuccess
失敗 失敗 階段會繼續進行。
針對階段條件設定的規則考量
階段條件可用規則的考量如下:
-
對於
LambdaInvoke
規則,您必須先設定要在規則中使用的 Lambda 函數。當您設定規則時,ARN請準備好 Lambda 函數。 -
對於
CloudWatchAlarm
規則,您必須先設定要在規則中使用的 CloudWatch 事件事件。設定規則時,請ARN準備好事件。
建立項目條件
您可以使用主控台或 設定階段的進入條件CLI。您將為每個條件設定對應的規則和結果。對於復原結果,只有在目前的管道結構版本中啟動先前的執行時,管道才能復原至先前的執行。
這些步驟提供使用監視器規則的範例項目條件。
如需詳細資訊,請參閱 指南 RuleExecution中的條件 RuleTypeId、 和 。 CodePipeline API
建立項目條件 - CloudWatchAlarm 規則範例 (主控台)
您可以設定階段的進入條件,以及您希望階段在符合條件時執行的規則和結果。
設定項目條件 (主控台)
-
完成任何先決條件,例如建立資源ARN,以及提供資源的規則,例如 AWS CloudWatchAlarm。
登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home
開啟 CodePipeline 主控台。 與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。
-
在 Name (名稱) 中,選擇您想編輯的管道名稱。
-
在管道詳細資訊頁面上,選擇 Edit (編輯)。
-
在編輯頁面上,針對您要編輯的動作,選擇編輯階段 。
-
選擇新增項目條件 。顯示階段前進入條件卡,其中包含適用於此條件的失敗選項。
-
選擇新增規則 ,然後完成下列操作。
-
在規則名稱 中,輸入規則的名稱。在此範例中,請輸入
MyAlarmRule
。 -
在規則提供者 中,選擇要新增至您條件的預先設定規則提供者。在此範例中,選擇 AWS CloudWatchAlarm,然後完成下列步驟。
-
在區域 中,選擇您條件的區域或保留預設值。
-
在警示名稱 中,選擇要用於規則 CloudWatch 的資源。您必須已在帳戶中建立 資源。
-
(選用) 在等待時間 中,輸入第一次評估警示處於 ALARM 狀態時 CodePipeline ,將等待的時間量。如果第一次檢查規則時警示狀態為 OK,則規則會立即成功。
-
(選用) 輸入要監控的任何特定警示狀態,並在適當ARN時輸入角色。
-
當您完成階段編輯時,請選擇完成。在管道編輯頁面上,選擇儲存 。
-
-
執行之後,請檢視結果。
使用略過結果和VariableCheck
規則建立項目條件 (主控台)
您可以設定階段的進入條件,以便在不符合進入條件時略過該階段。如果條件失敗,則表示結果接合,然後略過該階段。略過階段時,階段狀態為略過 ,動作狀態為未執行 。如需使用略過結果之階段條件的考量,請參閱 針對階段條件設定的結果考量。
在下列範例中,變數檢查規則會發現值不是相符項目,並略過建置階段。
使用略過結果 (主控台) 設定項目條件
-
完成任何先決條件,例如建立資源ARN,以及提供資源的規則,例如 AWS CloudWatchAlarm。
-
登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home
開啟 CodePipeline 主控台。 與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。
-
在 Name (名稱) 中,選擇您想編輯的管道名稱。
-
在管道詳細資訊頁面上,選擇 Edit (編輯)。
-
在編輯頁面上,針對您要編輯的動作,選擇編輯階段 。
-
選擇新增項目條件 ,然後選擇略過作為結果。
-
選擇 新增規則 ,然後完成下列操作。
-
在規則名稱 中,輸入規則的名稱。在此範例中,請輸入
MyAlarmRule
。 -
在規則提供者 中,選擇要新增至您條件的預先設定規則提供者。在此範例中,選擇 VariableCheck,然後完成下列步驟。
-
在區域 中,選擇您條件的區域或保留預設值。
-
在變數 中,選擇要比較的變數,例如具有第 2 GitHub 版來源動作的
#{SourceVariables.FullRepositoryName}
管道。輸入儲存庫名稱,然後選擇運算子,例如等於 。 -
當您完成階段編輯時,請選擇完成。在管道編輯頁面上,選擇儲存 。
-
-
執行之後,請檢視結果。
-
若要檢閱詳細資訊,請選擇檢閱 。下列範例中的詳細資訊顯示條件的組態結果為略過 ,無法覆寫。由於未符合條件,因此規則狀態為失敗。
建立項目條件 (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 BeforeEntryConditions。 AWS CloudFormation
建立失敗條件
您可以使用主控台或 為階段設定失敗條件CLI。您將為每個條件設定對應的規則和結果。對於復原結果,只有在目前的管道結構版本中啟動先前的執行時,管道才能復原至先前的執行。
建立失敗條件 (主控台)
您可以為階段設定失敗條件,以及您希望階段在符合條件時執行的規則和結果。
設定 On Failure 條件 (主控台)
-
完成任何先決條件,例如建立資源ARN,以及針對提供資源的規則,例如LambdaInvoke規則。
登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home
開啟 CodePipeline 主控台。 與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。
-
在 Name (名稱) 中,選擇您想編輯的管道名稱。
-
在管道詳細資訊頁面上,選擇 Edit (編輯)。
-
在編輯頁面上,針對您要編輯的動作,選擇編輯階段 。
-
選擇新增失敗條件 。失敗條件卡會顯示此條件可用的復原選項。
-
選擇新增規則 ,然後完成下列操作。
-
在規則名稱 中,輸入規則的名稱。在此範例中,請輸入
MyLambdaRule
。 -
在規則提供者 中,選擇要新增至您條件的預先設定規則提供者。在此範例中,選擇 AWS LambdaInvoke,然後完成下列步驟。
-
在區域 中,選擇您條件的區域或保留預設值。
-
在輸入成品 中,選擇來源成品。
-
在函數名稱 中,選擇要用於規則的 Lambda 資源。您必須已在帳戶中建立 資源。
-
(選用) 在使用者參數 中,輸入代表其他組態參數的任何配對。
-
(選用) 在 Role Arn 中,ARN如果已設定,請輸入角色。
-
(選用) 在以分鐘為單位的逾時中,輸入規則在逾時前應等待的時間,以分鐘為單位。
-
當您完成階段編輯時,請選擇完成。在管道編輯頁面上,選擇儲存 。
-
使用重試結果範例建立 onFailure 條件 (主控台)
您可以設定階段 onFailure 的條件,以便在不符合進入條件時重試階段。在此結果中,您可以設定重試模式,指定要重試失敗的動作還是重試失敗的階段。
使用重試結果 (主控台) 設定 onFailure 條件
-
完成任何先決條件,例如建立資源ARN,以及提供資源的規則,例如 AWS CloudWatchAlarm。
-
登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home
開啟 CodePipeline 主控台。 與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。
-
在 Name (名稱) 中,選擇您想編輯的管道名稱。
-
在管道詳細資訊頁面上,選擇 Edit (編輯)。
-
在編輯頁面上,針對您要編輯的動作,選擇編輯階段 。
-
在階段底部,在自動階段組態下:,選擇在階段失敗時啟用自動重試。在重試模式中,選擇重試失敗階段或重試失敗動作 。
-
選擇新增 onFailure 條件,然後選擇新增規則並輸入條件的規則。
-
在規則名稱 中,輸入規則的名稱。在此範例中,請輸入
MyAlarmRule
。 -
在規則提供者 中,選擇要新增至您條件的預先設定規則提供者。在此範例中,選擇 CloudWatchAlarm,然後完成下列步驟。
-
在區域 中,選擇您條件的區域或保留預設值。
-
在警示名稱 中,選擇警示的已設定資源。
-
當您完成階段編輯時,請選擇完成。在管道編輯頁面上,選擇儲存 。
-
-
執行之後,請檢視結果。
建立失敗條件 (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
如需設定失敗條件的詳細資訊,請參閱 使用者指南 OnFailure
StageDeclaration
中的 。 AWS CloudFormation
建立成功條件
您可以使用主控台或 為階段設定 On Success 條件CLI。您將為每個條件設定對應的規則和結果。對於復原結果,只有在目前的管道結構版本中啟動先前的執行時,管道才能復原至先前的執行。
這些步驟提供使用部署時段規則的成功條件範例。
如需詳細資訊,請參閱 指南 RuleExecution中的條件 RuleTypeId、 和 。 CodePipeline API
建立成功條件 (主控台)
您可以為階段設定 On Success 條件,以及您希望階段在符合條件時執行的規則和結果。
設定 On Success 條件 (主控台)
-
完成任何先決條件,例如建立資源,以及提供資源的ARN規則,例如 AWS LambdaRule。
登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home
開啟 CodePipeline 主控台。 與 相關聯的 AWS 帳戶 所有管道的名稱和狀態都會顯示。
-
在 Name (名稱) 中,選擇您想編輯的管道名稱。
-
在管道詳細資訊頁面上,選擇 Edit (編輯)。
-
在編輯頁面上,針對您要編輯的動作,選擇編輯階段 。
-
選擇新增成功條件 。隨即顯示階段成功條件卡。選擇顯示為此條件類型的可用結果的復原或失敗選項。
-
選擇新增規則 ,然後完成下列操作。
-
在規則名稱 中,輸入條件的名稱。在此範例中,請輸入
MyDeploymentRule
。 -
在規則提供者 中,選擇要新增至條件的預先設定規則。在此範例中,選擇 AWS DeploymentWindow,然後完成下列步驟。
-
在區域 中,選擇您條件的區域或保留預設值。
-
在 Cron 中,輸入部署視窗的 Cron 表達式。cron 表達式定義應該允許部署的日期和時間。如需 cron 表達式的參考資訊,請參閱使用 cron 和速率表達式來排程規則 。
-
(選用) 在 中TimeZone,輸入部署時段的時區。
-
-
執行之後,請檢視結果。
建立成功條件 (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
如需設定階段復原失敗條件的詳細資訊,請參閱 使用者指南OnFailure
StageDeclaration
中的 。 AWS CloudFormation
刪除階段條件
您可以刪除已為管道設定的階段條件。
若要刪除階段條件
登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home
開啟 CodePipeline 主控台。 與 相關聯的所有管道的名稱和狀態 AWS 帳戶 都會顯示。
-
在 Name (名稱) 中,選擇您想編輯的管道名稱。
-
在管道詳細資訊頁面上,選擇 Edit (編輯)。
-
在編輯頁面上,針對您要編輯的條件,選擇編輯階段 。
-
在要刪除的條件旁邊,選擇刪除條件 。
覆寫階段條件
您可以覆寫為管道設定的階段條件。在主控台中,當階段和規則正在執行時,您可以選擇覆寫階段條件。這會導致階段執行中
若要覆寫階段條件
-
在此範例中,管道階段正在執行 條件。覆寫按鈕已啟用。
-
在您要覆寫的條件旁邊,選擇覆寫 。
-
若要檢閱詳細資訊,請選擇檢閱 。下列範例中的詳細資訊顯示條件的組態結果為 Fail,已覆寫。由於覆寫,規則狀態為已放棄。