本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为舞台配置条件
您可以为阶段指定条件,例如检查管道运行中的特定变量,然后为该条件输入结果,例如跳过该阶段或该阶段失败。可以将管道设置为在运行期间检查阶段条件,您可以在其中指定阶段的检查,然后指定在满足某些条件时该阶段应如何继续。条件包含一条或多条规则,这些规则可在中的规则列表中找到 CodePipeline。如果条件中的所有规则都成功,则该条件即得到满足。您可以配置条件,以便在不满足条件时,指定结果生效。
每个条件都有一个规则集,该规则集是一组有序的规则,可以一起评估。因此,如果一条规则在该条件下失败,则该条件失败。您可以在管道运行时覆盖规则条件。
条件用于特定类型的表达式,每个表达式都有特定的结果选项,如下所示:
-
入场-进行检查的条件,如果满足这些条件,则允许进入舞台。规则使用以下结果选项:“失败” 或 “跳过”
-
失败时-在舞台失败时对其进行检查的条件。规则使用以下结果选项:回滚
-
On Success-成功时对阶段进行检查的条件。规则使用以下结果选项:“回滚” 或 “失败”
每种条件类型都有一组规则来支持条件。
对于每种类型的条件,都有由条件设置的特定操作。该操作是条件检查成功或失败的结果。例如,进入条件(进入条件)遇到警报(规则),则检查成功,结果(操作)是阶段进入被阻止。
您也可以使用 AWS CodePipeline 控制台或手动 AWS CLI 回滚或重试阶段中的某个阶段或操作。请参阅 为舞台配置条件。
舞台条件的用例
阶段条件有多个用例,用于在管道中设置释放和更改安全性。以下是舞台条件的示例用例。
-
使用 Entry 条件定义一个条件,该条件将检查 CloudWatch警报状态,如果生产环境未处于正常状态,警报状态将阻止更改。
-
使用等待时间为 60 的进入条件来定义一个条件,当一个阶段中的所有操作都成功完成时,要进行评估,然后如果 CloudWatch 警报在 60 分钟内进入ALARM状态,则回滚更改。
-
使用 On Success 条件定义一个条件,这样当该阶段成功完成时,该规则将检查当前时间是否在部署窗口中,然后在规则成功时进行部署。
针对阶段条件配置的结果的注意事项
舞台条件的注意事项如下:
-
您不能对 onFailure 条件使用自动阶段重试。
-
在配置带有 Rollback 结果的条件时,只有在当前工作流结构版本中可用的情况下,该阶段才能回滚到之前的执行。
-
使用回滚结果配置条件时,您无法回滚到回滚执行类型的目标执行 ID。
-
对于在条件失败时使用 “跳过” 结果跳过该阶段的条目条件,仅支持
LambdaInvoke
和VariableCheck
规则。 -
您无法在处于 “已跳过” 状态的舞台上执行手动阶段重试。
-
您无法手动回滚到处于 “已跳过” 状态的阶段。
-
如果条件配置为 “跳过” 结果,则无法覆盖该条件。
-
除了 “跳过结果” 之外,您可以在开始执行管道时覆盖阶段条件。对于使用重写的阶段条件,执行将如下表所示。
-
类型 条件失败时的配置结果 舞台状态 重写行为 条目 Fail 进行中 舞台继续进行。 条目 跳过 Skipped 不适用。 OnFailure
回滚 失败 舞台失败了。 OnSuccess 回滚 成功 舞台继续进行。 OnSuccess
Fail 失败 舞台继续进行。
为阶段条件配置的规则的注意事项
阶段条件的可用规则的注意事项如下:
-
对于
LambdaInvoke
规则,您必须首先配置要在规则中使用的 Lambda 函数。在配置规则时,请ARN准备好提供 Lambda 函数。 -
对于
CloudWatchAlarm
规则,必须先配置要在规则中使用 CloudWatch 的事件事件。配置规则时,请ARN准备好提供事件。
创建入境条件
您可以使用控制台或配置舞台的进入条件CLI。您将为每个条件配置相应的规则和结果。对于回滚结果,只有在当前管道结构版本中启动之前的执行时,管道才能回滚到之前的执行。
这些步骤提供了使用监控规则的输入条件示例。
有关更多信息,请参阅CodePipeline API《指南》RuleExecution中的 “状况” 和。RuleTypeId
创建进入条件- CloudWatchAlarm 规则示例(控制台)
您可以为阶段配置进入条件,以及您希望该阶段在满足条件时执行的规则和结果。
配置进入条件(控制台)
-
完成所有先决条件,例如创建资源和ARN提供资源的规则,例如AWS CloudWatchAlarm。
登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home
。 将显示与您 AWS 账户 关联的所有管道的名称和状态。
-
在 Name 中,选择您要编辑的管道的名称。
-
在管道详细信息页中,选择编辑。
-
在 “编辑” 页面上,对于要编辑的操作,选择 “编辑阶段”。
-
选择 “添加输入条件”。此时将显示 “进入舞台之前” 条件卡,其中包含适用于该条件的 “失败” 选项。
-
选择添加规则,然后完成以下操作。
-
在规则名称中,输入规则的名称。在此示例中,请输入
MyAlarmRule
。 -
在规则提供者中,选择要添加到您的条件的预配置规则提供程序。在本示例中,选择 AWS CloudWatchAlarm,然后完成以下步骤。
-
在 “区域” 中,根据您的条件选择区域或保留默认值。
-
在警报名称中,选择要用于规则的 CloudWatch 资源。您必须已经在自己的账户中创建了资源。
-
(可选)在等待时间中,输入首次评估警报时如果警报处于ALARM状态 CodePipeline 将要等待的时间。如果首次检查规则时警报状态为 OK,则规则将立即成功。
-
(可选)输入要监控的任何特定警报状态,并根据ARN需要输入角色。
-
编辑完舞台后,选择 “完成”。在管道编辑页面上,选择保存。
-
-
运行后,查看结果。
使用 “跳过” 结果和VariableCheck
规则创建进入条件(控制台)
您可以为阶段配置进入条件,这样如果不满足进入条件,则跳过该阶段。如果条件失败,则结果将启动并跳过该阶段。跳过阶段时,舞台状态为 “已跳过”,操作状态为 “未运行”。有关带有 “跳过” 结果的阶段条件的注意事项,请参阅针对阶段条件配置的结果的注意事项。
在以下示例中,变量检查规则发现该值不匹配,因此跳过了生成阶段。
使用 “跳过” 结果配置进入条件(控制台)
-
完成所有先决条件,例如创建资源和ARN提供资源的规则,例如AWS CloudWatchAlarm。
-
登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home
。 将显示与您 AWS 账户 关联的所有管道的名称和状态。
-
在 Name 中,选择您要编辑的管道的名称。
-
在管道详细信息页中,选择编辑。
-
在 “编辑” 页面上,对于要编辑的操作,选择 “编辑阶段”。
-
选择 “添加输入条件”,然后选择 “跳过” 作为结果。
-
选择添加规则,然后完成以下操作。
-
在规则名称中,输入规则的名称。在此示例中,请输入
MyAlarmRule
。 -
在规则提供者中,选择要添加到您的条件的预配置规则提供程序。在本示例中,选择 VariableCheck,然后完成以下步骤。
-
在 “区域” 中,根据您的条件选择区域或保留默认值。
-
在变量中,选择要与之比较
#{SourceVariables.FullRepositoryName}
的变量,例如具有 GitHub 版本 2 源操作的管道。输入存储库名称并选择运算符,例如 Equals。 -
编辑完舞台后,选择 “完成”。在管道编辑页面上,选择保存。
-
-
运行后,查看结果。
-
要查看详细信息,请选择 “查看”。以下示例中的详细信息显示,该条件的配置结果为 “跳过”,该结果无法覆盖。由于不满足条件,规则状态为 “失败”。
创建入境条件 (CLI)
要使用配置入口条件,请使用命令创建或更新管道,详见创建管道、阶段和操作和中在中编辑管道 CodePipeline。 AWS CLI
配置条件和一个或多个规则 (CLI)
-
打开终端(Linux、macOS 或 Unix)或命令提示符 (Windows),然后使用运行
update-pipeline
命令,在管道结构中指定失败条件。 AWS CLI 以下示例为名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" } ] } ] }
}有关为阶段回滚配置成功条件的更多信息,请参阅《CodePipeline API参考》SuccessConditions中的。
创建入境条件 (CFN)
AWS CloudFormation 要用于配置进入条件,请使用beforeEntry
参数。进入后,舞台将运行规则并执行结果。
beforeEntry: Result: FAIL
-
更新模板,如以下代码段所示。以下示例使用名
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 条件的更多信息,请参阅 BeforeEntryConditions《AWS CloudFormation 用户指南》
StageDeclaration
中的AWSCodePipeline::: Pipelin e。
创建失败时条件
您可以使用控制台或为阶段配置 On Failure 条件CLI。您将为每个条件配置相应的规则和结果。对于回滚结果,只有在当前管道结构版本中启动之前的执行时,管道才能回滚到之前的执行。
创建失败时条件(控制台)
您可以为阶段配置 On Failure 条件,以及您希望该阶段在满足条件时执行的规则和结果。
配置 “出现故障” 条件(控制台)
-
完成所有先决条件,例如创建资源和ARN提供资源的规则(例如LambdaInvoke规则)。
登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home
。 将显示与您 AWS 账户 关联的所有管道的名称和状态。
-
在 Name 中,选择您要编辑的管道的名称。
-
在管道详细信息页中,选择编辑。
-
在 “编辑” 页面上,对于要编辑的操作,选择 “编辑阶段”。
-
选择 “添加失败条件”。将显示失败状况卡,其中包含适用于此情况的 “回滚” 选项。
-
选择添加规则,然后完成以下操作。
-
在规则名称中,输入规则的名称。在此示例中,请输入
MyLambdaRule
。 -
在规则提供者中,选择要添加到您的条件的预配置规则提供程序。在本示例中,选择 AWS LambdaInvoke,然后完成以下步骤。
-
在 “区域” 中,根据您的条件选择区域或保留默认值。
-
在输入构件中,选择源构件。
-
在函数名称中,选择要用于规则的 Lambda 资源。您必须已经在自己的账户中创建了资源。
-
(可选)在用户参数中,输入代表其他配置参数的任意对。
-
(可选)在 Role Arn 中,输入角色(ARN如果已配置)。
-
(可选)在以分钟为单位的超时时间中,输入规则在超时之前应等待的时间(以分钟为单位)。
-
编辑完舞台后,选择 “完成”。在管道编辑页面上,选择保存。
-
使用 “重试” 结果示例创建 onFailure 条件(控制台)
您可以为阶段配置 onFailure 条件,以便在不满足进入条件时重试该阶段。作为此结果的一部分,您可以配置重试模式,指定是重试失败的操作还是重试失败的阶段。
使用重试结果配置 onFailure 条件(控制台)
-
完成所有先决条件,例如创建资源和ARN提供资源的规则,例如AWS CloudWatchAlarm。
-
登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home
。 将显示与您 AWS 账户 关联的所有管道的名称和状态。
-
在 Name 中,选择您要编辑的管道的名称。
-
在管道详细信息页中,选择编辑。
-
在 “编辑” 页面上,对于要编辑的操作,选择 “编辑阶段”。
-
在舞台底部的自动舞台配置:下,选择在舞台失败时启用自动重试。在 “重试” 模式下,选择 “重试失败阶段” 或 “重试失败的操作”。
-
选择添加 onFailure 条件,然后选择添加规则并为该条件输入规则。
-
在规则名称中,输入规则的名称。在此示例中,请输入
MyAlarmRule
。 -
在规则提供者中,选择要添加到您的条件的预配置规则提供程序。在本示例中,选择 CloudWatchAlarm,然后完成以下步骤。
-
在 “区域” 中,根据您的条件选择区域或保留默认值。
-
在警报名称中,为警报选择已配置的资源。
-
编辑完舞台后,选择 “完成”。在管道编辑页面上,选择保存。
-
-
运行后,查看结果。
创建失败时条件 (CLI)
要使用配置失败时条件,请使用命令创建或更新管道,详见创建管道、阶段和操作和中在中编辑管道 CodePipeline。 AWS CLI
配置条件和一个或多个规则 (CLI)
-
打开终端(Linux、macOS 或 Unix)或命令提示符 (Windows),然后使用运行
update-pipeline
命令,在管道结构中指定失败条件。 AWS CLI 以下示例为名Deploy
为的阶段配置 On Failure 条件:{ "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" } ] } ] }
}有关配置故障条件的更多信息,请参阅《CodePipeline API参考》FailureConditions中的。
创建失败时条件 (CFN)
AWS CloudFormation 要用于配置 “失败” 条件,请使用OnFailure
参数。成功后,舞台将执行规则并执行结果。
OnFailure: Result: ROLLBACK
-
更新模板,如以下代码段所示。以下示例使用名
MyMonitorRule
为的规则配置 OnFailure 条件: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《AWS CloudFormation 用户指南》
StageDeclaration
中的。
创建 “成功时” 条件
您可以使用控制台或为阶段配置 On Success 条件CLI。您将为每个条件配置相应的规则和结果。对于回滚结果,只有在当前管道结构版本中启动之前的执行时,管道才能回滚到之前的执行。
这些步骤提供了使用部署窗口规则的 On Success 条件示例。
有关更多信息,请参阅CodePipeline API《指南》RuleExecution中的 “状况” 和。RuleTypeId
创建成功时条件(控制台)
您可以为阶段配置 On Success 条件,以及您希望该阶段在满足条件时执行的规则和结果。
配置 “成功时” 条件(控制台)
-
完成所有先决条件,例如创建资源和ARN提供资源的规则,例如 AWS LambdaRule。
登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home
。 将显示与您 AWS 账户 关联的所有管道的名称和状态。
-
在 Name 中,选择您要编辑的管道的名称。
-
在管道详细信息页中,选择编辑。
-
在 “编辑” 页面上,对于要编辑的操作,选择 “编辑阶段”。
-
选择添加成功条件。将显示 “在舞台上成功条件” 卡片。选择显示为该条件类型的可用结果的 “回滚” 或 “失败” 选项。
-
选择添加规则,然后完成以下操作。
-
在规则名称中,输入条件的名称。在此示例中,请输入
MyDeploymentRule
。 -
在规则提供者中,选择要添加到您的条件的预配置规则。在本示例中,选择 AWS DeploymentWindow,然后完成以下步骤。
-
在 “区域” 中,根据您的条件选择区域或保留默认值。
-
在 Cron 中,输入部署窗口的 cron 表达式。cron 表达式定义了应允许部署的日期和时间。有关 cron 表达式的参考信息,请参阅使用 cron 和速率表达式调度规则。
-
(可选)在中 TimeZone,输入部署窗口的时区。
-
-
运行后,查看结果。
创建 “成功时” 条件 (CLI)
要使用 AWS CLI 来配置 On Success 条件,请使用命令创建或更新管道,详见创建管道、阶段和操作和中在中编辑管道 CodePipeline。
配置条件和一个或多个规则 (CLI)
-
打开终端(Linux、macOS 或 Unix)或命令提示符 (Windows),然后使用运行
update-pipeline
命令,在管道结构中指定失败条件。 AWS CLI 以下示例为名为的分阶段配置 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" } ] } ] } }
有关配置成功条件的更多信息,请参阅《CodePipeline API参考》SuccessConditions中的。
创建 “成功时” 条件 (CFN)
AWS CloudFormation 要使用配置成功条件,请使用OnSuccess
参数。成功后,舞台将执行规则并执行结果。
OnSuccess: Result: ROLLBACK
-
更新模板,如以下代码段所示。以下示例使用名
MyDeploymentWindowRule
为的规则配置 OnSuccess 条件: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《AWS CloudFormation 用户指南》
StageDeclaration
中的。
删除舞台条件
您可以删除已为管道配置的阶段条件。
删除阶段条件
登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home
。 将显示与您 AWS 账户 关联的所有管道的名称和状态。
-
在 Name 中,选择您要编辑的管道的名称。
-
在管道详细信息页中,选择编辑。
-
在编辑页面上,对于要编辑的条件,选择编辑阶段。
-
在要删除的条件旁边,选择删除条件。
重写舞台条件
您可以覆盖已为管道配置的阶段条件。在控制台中,当阶段和规则运行时,您可以选择覆盖阶段条件。这会导致舞台运行
重写舞台条件
-
在此示例中,管道阶段在条件下运行。“覆盖” 按钮已启用。
-
在要覆盖的条件旁边,选择覆盖。
-
要查看详细信息,请选择 “查看”。以下示例中的详细信息显示该条件的配置结果为 Fail,该结果已被覆盖。由于改写,规则状态为 “已放弃”。