为舞台配置条件 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为舞台配置条件

创建条件时,就是要指定如果发现了配置规则要查找的问题时应该发生什么。可以将管道设置为在运行期间检查阶段条件,您可以在其中指定阶段的检查,然后指定在满足某些条件时该阶段应如何继续。条件包含一条或多条规则,这些规则可在中的规则列表中找到 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 规则示例(控制台)

您可以为阶段配置进入条件,以及您希望该阶段在满足条件时执行的规则和结果。

配置进入条件(控制台)
  1. 完成所有先决条件,例如创建资源和ARN提供资源的规则,例如Amazon CloudWatchAlarm

  2. 登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

    将显示与您 Amazon Web Services 账户 关联的所有管道的名称和状态。

  3. Name 中,选择您要编辑的管道的名称。

  4. 在管道详细信息页中,选择编辑

  5. 编辑页面上,对于要编辑的操作,选择编辑阶段

  6. 选择 “添加输入条件”。此时将显示 “进入舞台之前” 条件卡,其中包含适用于该条件的 “失败” 选项。

  7. 选择添加规则,然后完成以下操作。

    1. 规则名称中,输入规则的名称。在此示例中,请输入 MyAlarmRule

    2. 规则提供者中,选择要添加到您的条件的预配置规则提供程序。在本示例中,选择 Amazon CloudWatchAlarm,然后完成以下步骤。

    3. 在 “区域” 中,根据您的条件选择区域或保留默认值。

    4. 警报名称中,选择要用于规则的 CloudWatch 资源。您必须已经在自己的账户中创建了资源。

    5. (可选)在等待时间中,输入首次评估警报时如果警报处于ALARM状态 CodePipeline 将要等待的时间。如果首次检查规则时警报状态为 OK,则规则将立即成功。

    6. (可选)输入要监控的任何特定警报状态,并根据ARN需要输入角色。

    7. 编辑完舞台后,选择 “完成”。在管道编辑页面上,选择保存

  8. 运行后,查看结果。

创建入境条件 (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

    有关配置故障条件的更多信息,请参阅OnFailureAmazon CloudFormation 用户指南StageDeclaration中的。

创建失败时条件

您可以使用控制台或为阶段配置 On Failure 条件CLI。您将为每个条件配置相应的规则和结果。对于回滚结果,只有在当前管道结构版本中启动之前的执行时,管道才能回滚到之前的执行。

创建失败时条件(控制台)

您可以为阶段配置 On Failure 条件,以及您希望该阶段在满足条件时执行的规则和结果。

配置 “出现故障” 条件(控制台)
  1. 完成所有先决条件,例如创建资源和ARN提供资源的规则(例如LambdaInvoke规则)。

  2. 登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

    将显示与您 Amazon Web Services 账户 关联的所有管道的名称和状态。

  3. Name 中,选择您要编辑的管道的名称。

  4. 在管道详细信息页中,选择编辑

  5. 编辑页面上,对于要编辑的操作,选择编辑阶段

  6. 选择 “添加失败条件”。将显示失败状况卡,其中包含适用于此情况的 “回滚” 选项。

  7. 选择 “添加规则”,然后完成以下操作。

    1. 规则名称中,输入规则的名称。在此示例中,请输入 MyLambdaRule

    2. 规则提供者中,选择要添加到您的条件的预配置规则提供程序。在本示例中,选择 Amazon LambdaInvoke,然后完成以下步骤。

    3. 在 “区域” 中,根据您的条件选择区域或保留默认值。

    4. 输入构件中,选择源构件。

    5. 函数名称中,选择要用于规则的 Lambda 资源。您必须已经在自己的账户中创建了资源。

    6. (可选)在用户参数中,输入代表其他配置参数的任意对。

    7. (可选)在 Role Arn 中,输入角色(ARN如果已配置)。

    8. (可选)在以分钟为单位的超时时间中,输入规则在超时之前应等待的时间(以分钟为单位)。

    9. 编辑完舞台后,选择 “完成”。在管道编辑页面上,选择保存

创建失败时条件 (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

    有关配置故障条件的更多信息,请参阅OnFailureAmazon CloudFormation 用户指南StageDeclaration中的。

创建 “成功时” 条件

您可以使用控制台或为阶段配置 On Success 条件CLI。您将为每个条件配置相应的规则和结果。对于回滚结果,只有在当前管道结构版本中启动之前的执行时,管道才能回滚到之前的执行。

这些步骤提供了使用部署窗口规则的 On Success 条件示例。

有关更多信息,请参阅CodePipeline API《指南》RuleExecution中的 “状况” 和。RuleTypeId

创建成功时条件(控制台)

您可以为阶段配置 On Success 条件,以及您希望该阶段在满足条件时执行的规则和结果。

配置 “成功时” 条件(控制台)
  1. 完成所有先决条件,例如创建资源和ARN提供资源的规则,例如 Amazon LambdaRule。

  2. 登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

    将显示与您 Amazon Web Services 账户 关联的所有管道的名称和状态。

  3. Name 中,选择您要编辑的管道的名称。

  4. 在管道详细信息页中,选择编辑

  5. 编辑页面上,对于要编辑的操作,选择编辑阶段

  6. 选择添加成功条件。将显示 “在舞台上成功条件” 卡片。选择显示为该条件类型的可用结果的 “回滚” 或 “失败” 选项。

  7. 选择 “添加规则”,然后完成以下操作。

    1. 规则名称中,输入条件的名称。在此示例中,请输入 MyDeploymentRule

    2. 规则提供者中,选择要添加到您的条件的预配置规则。在本示例中,选择 Amazon DeploymentWindow,然后完成以下步骤。

    3. 在 “区域” 中,根据您的条件选择区域或保留默认值。

    4. 在 Cron 中,输入部署窗口的 cron 表达式。cron 表达式定义了应允许部署的日期和时间。有关 cron 表达式的参考信息,请参阅使用 cron 和速率表达式调度规则

    5. (可选)在中 TimeZone,输入部署窗口的时区。

  8. 运行后,查看结果。

    中的示例条件 CodePipeline。

创建成功时条件 (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

    有关为阶段回滚配置故障条件的更多信息,请参阅OnFailureAmazon CloudFormation 用户指南StageDeclaration中的。

删除阶段条件

您可以删除已为管道配置的阶段条件。

删除阶段条件
  1. 登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

    将显示与您 Amazon Web Services 账户 关联的所有管道的名称和状态。

  2. Name 中,选择您要编辑的管道的名称。

  3. 在管道详细信息页中,选择编辑

  4. 编辑页面上,对于要编辑的条件,选择编辑阶段

  5. 在要删除的条件旁边,选择删除条件

重写阶段条件

您可以覆盖已为管道配置的阶段条件。在控制台中,当阶段和规则运行时,您可以选择覆盖阶段条件。这会导致舞台运行

覆盖阶段条件
  1. 在此示例中,管道阶段在条件下运行。“覆盖” 按钮已启用。

    中的示例条件 CodePipeline。
  2. 在要覆盖的条件旁边,选择覆盖

    中的示例条件 CodePipeline。
  3. 要查看详细信息,请选择查看。以下示例中的详细信息显示该条件的配置结果为 Fail,该结果已被覆盖。由于改写,规则状态为 “已放弃”。

    一个示例条件详细信息页面,其中显示了被覆盖的条件。 CodePipeline