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