命令
创建条件时,可以添加 Commands 规则。本节提供对规则参数的参考。有关规则和条件的更多信息,请参阅阶段条件是如何运作的?。
您可以使用 Commands 规则来创建成功命令满足规则标准的条件,例如 beforeEntry 条件下成功命令的输出和文件路径。
注意
对于使用跳过结果配置的 beforeEntry 条件,只有以下规则可用:LambdaInvoke 和 VariableCheck。
Commands 规则的注意事项
Commands 规则的注意事项如下。
-
Commands 规则使用与 CodeBuild 操作类似的 CodeBuild 资源,同时允许在虚拟计算实例中执行 Shell 环境命令,而无需关联或创建构建项目。
注意
运行 Commands 规则将在 AWS CodeBuild 中产生单独的费用。
-
由于 CodePipeline 中的 Commands 规则使用 CodeBuild 资源,因此该操作运行的构建将归属于您在 CodeBuild 中账户的构建限制。Commands 规则运行的构建将计入为该账户配置的并发构建限制。
-
根据 CodeBuild 构建,使用 Commands 规则进行构建的超时时间为 55 分钟。
-
计算实例使用 CodeBuild 中的隔离构建环境。
注意
由于隔离构建环境是在账户级别使用的,因此一个实例可能会被重复用于另一个管道的执行。
-
支持除多行格式外的所有格式。输入命令时必须使用单行格式。
-
对于这种规则,CodePipeline 将代入管道服务角色,并使用该角色允许在运行时访问资源。建议配置服务角色,以便将权限范围缩小到操作级别。
-
添加到 CodePipeline 服务角色的权限详见向 CodePipeline 服务角色添加权限。
-
在控制台中查看日志所需的权限详见在 CodePipeline 控制台中查看计算日志所需的权限。在以下示例屏幕中,使用日志链接查看 CloudWatch 日志中的成功运行 Commands 规则的日志。
-
与 CodePipeline 中的其它操作不同,您不需要在操作配置中设置字段,而是在操作配置之外设置操作配置字段。
服务角色策略权限
当 CodePipeline 运行规则时,CodePipeline 会使用管道名称创建一个日志组,如下所示。这样就可以使用管道名称缩小日志资源的权限范围。
/aws/codepipeline/MyPipelineName
如果您使用的是现有的服务角色,要使用 Commands 操作,需要为服务角色添加以下权限。
-
logs:CreateLogGroup
-
logs:CreateLogStream
-
logs:PutLogEvents
在服务角色策略声明中,将权限范围缩小到管道级别,如下例所示。
{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*" }
要在控制台中使用操作详细信息对话框页面查看日志,必须在控制台角色中添加查看日志的权限。有关更多信息,请参阅在 CodePipeline 控制台中查看计算日志所需的权限中的控制台权限策略示例。
规则类型
-
类别:
Rule -
拥有者:
AWS -
提供方:
Commands -
版本:
1
配置参数
- 命令
-
必需:是
您可以为要运行的
Commands规则提供 Shell 命令。在控制台中,命令分行输入。在 CLI 中,命令以单独字符串的形式输入。注意
不支持多行格式,这会导致出现错误消息。在 Commands 字段中输入命令时必须使用单行格式。
下面详细介绍了 Commands 规则使用的默认计算。有关更多信息,请参阅《CodeBuild 用户指南》中的构建环境计算模式和类型参考。
-
CodeBuild 映像:aws/codebuild/amazonlinux2-x86_64-standard:5.0
-
计算类型:Linux Small
-
环境计算类型值:BUILD_GENERAL1_SMALL
-
环境类型值:LINUX_CONTAINER
-
规则配置示例
另请参阅
以下相关资源可在您使用此规则时为您提供帮助。
-
有关规则和条件的更多信息,请参阅《CodePipeline API 指南》中的条件、RuleTypeId 和 RuleExecution。