操作声明 - AWS CodePipeline

操作声明

管道的操作层具有基本结构,包括以下参数和语法。有关更多信息,请参阅《CodePipeline API 指南》中的 ActionDeclaration 对象。

下面的示例以 JSON 和 YAML 格式显示了管道结构的操作层。

YAML
. . . stages: - name: Source actions: - name: Source actionTypeId: category: Source owner: AWS provider: S3 version: '1' runOrder: 1 configuration: PollForSourceChanges: 'false' S3Bucket: amzn-s3-demo-bucket S3ObjectKey: codedeploy_linux.zip outputArtifacts: - name: SourceArtifact inputArtifacts: [] region: us-west-2 namespace: SourceVariables - name: Build actions: - name: Build actionTypeId: category: Build owner: AWS provider: CodeBuild version: '1' runOrder: 1 configuration: EnvironmentVariables: >- [{"name":"ETag","value":"#{SourceVariables.ETag}","type":"PLAINTEXT"}] ProjectName: my-project outputArtifacts: - name: BuildArtifact inputArtifacts: - name: SourceArtifact region: us-west-2 namespace: BuildVariables runOrder: 1 configuration: CustomData: >- Here are the exported variables from the build action: S3 ETAG: #{BuildVariables.ETag} outputArtifacts: [] inputArtifacts: [] region: us-west-2
JSON
. . . "stages": [ { "name": "Source", "actions": [ { "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "provider": "S3", "version": "1" }, "runOrder": 1, "configuration": { "PollForSourceChanges": "false", "S3Bucket": "amzn-s3-demo-bucket", "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" }, "outputArtifacts": [ { "name": "SourceArtifact" } ], "inputArtifacts": [], "region": "us-west-2", "namespace": "SourceVariables" } ] }, { "name": "Build", "actions": [ { "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "provider": "CodeBuild", "version": "1" }, "runOrder": 1, "configuration": { "EnvironmentVariables": "[{\"name\":\"ETag\",\"value\":\"#{SourceVariables.ETag}\",\"type\":\"PLAINTEXT\"}]", "ProjectName": "my-build-project" }, "outputArtifacts": [ { "name": "BuildArtifact" } ], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-west-2", "namespace": "BuildVariables" } ] . . .

有关适用于提供方类型的示例 configuration 详细信息的列表,请参阅每种提供程序类型的有效配置参数

操作结构具有以下要求:

  • 阶段中的所有操作名称都必须是唯一的。

  • 每个管道都需要一个源操作。

  • 不使用连接的源操作可配置为进行更改检测或关闭更改检测。请参阅更改检测方法

  • 这适用于所有操作,无论它们处于同一阶段还是后续阶段,但输入项目不必是提供输出项目的操作的严格意义上的下一个操作。并行操作可以声明不同的输出构件包,这些包又由不同的后续操作使用。

  • 当您使用 Amazon S3 桶作为部署位置时,您还可以指定对象键。对象键可以是文件名(对象)或前缀(文件夹路径)和文件名的组合。您可以使用变量来指定您希望管道使用的位置名称。Amazon S3 部署操作支持在 Amazon S3 对象键中使用以下变量。

    使用 Amazon S3 中的变量
    Variable 控制台输入的示例 输出
    datetime js-application/{datetime}.zip 此格式的 UTC 时间戳:<YYYY>-<MM>-DD>_<HH>-<MM>-<SS>

    例如:

    js-application/2019-01-10_07-39-57.zip

    uuid js-application/{uuid}.zip UUID 是全局唯一标识符,保证不同于任何其他标识符。此格式的 UUID(十六进制格式中的所有位数):<8 位数> – <4 位数> –4 位数> – <4 位数> – <12 位数>

    例如:

    js-application/54a60075-b96a-4bf3-9013-db3a9EXAMPLE.zip

name

操作的名称。

region

对于提供程序为 AWS 服务的操作,指资源的 AWS 区域。

跨区域操作使用 Region 字段指定要创建操作的 AWS 区域。为此操作创建的 AWS 资源必须是在 region 字段中提供的同一区域中创建的。无法创建以下操作类型的跨区域操作:

  • 源操作

  • 按第三方提供方列出的操作

  • 按自定义提供方列出的操作

roleArn

将执行声明的操作的 IAM 服务角色的 ARN。这是通过在管道级别指定的 roleArn 来代入的。

namespace

操作可以使用变量进行配置。您可以使用 namespace 字段为执行变量设置命名空间和变量信息。有关执行变量和操作输出变量的参考信息,请参阅变量参考

actionTypeId

操作类型 ID 由以下四个字段组合而成。

category

管道中的操作或步骤的类型,如源操作。每种操作类型都有一组特定的有效操作提供程序。有关按操作类型划分的有效提供程序列表,请参阅操作结构参考

下列是 CodePipeline 有效的 actionTypeId 类别(操作类型):

  • Source

  • Build

  • Approval

  • Deploy

  • Test

  • Invoke

owner

对于当前受支持的所有操作类型,唯一有效的所有者字符串为 AWSThirdPartyCustom。有关特定操作的有效拥有者字符串,请参阅操作结构参考

有关更多信息,请参阅 CodePipeline API 参考

version

操作的版本。

provider

操作提供程序,如 CodeBuild。

  • 操作类别的有效提供方类型因类别而异。例如,对于源操作类别,有效的提供程序类型为 S3CodeStarSourceConnectionCodeCommitAmazon ECR。此示例显示了使用 S3 提供方的源操作的结构:

    "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3"},

InputArtifacts

该字段包含输入构件结构(如果该操作类别支持)。操作的输入构件必须与前一操作中声明的输出构件完全相符。例如,如果前一操作包含以下声明:

"outputArtifacts": [ { "MyApp" } ],

并且没有其他输出项目,则后一操作的输入项目必须为:

"inputArtifacts": [ { "MyApp" } ],

例如,源操作不能有输入构件,因为它是管道中的第一个操作。不过,源操作总是会有由后续操作处理的输出构件。源操作的输出构件是通过构件存储桶提供的源存储库中的应用程序文件,这些文件经过压缩后由后续操作(如使用构建命令对应用程序文件进行操作的 CodeBuild 操作)进行处理。

以不能有输出构件的操作为例,部署操作没有输出构件,因为这些操作通常是管道中的最后一个操作。

name

操作的输入构件的构件名称。

outputArtifacts

输出构件名称在管道内必须唯一。例如,一个管道可以包括两个操作,一个具有名为 "MyApp" 的输出项目,另一个具有名为 "MyBuiltApp" 的输出项目。但是,管道不能包含两个都具有名为 "MyApp" 的输出项目的操作。

该字段包含输出构件结构(如果该操作类别支持)。操作的输出构件必须与前一操作中声明的输出构件完全相符。例如,如果前一操作包含以下声明:

"outputArtifacts": [ { "MyApp" } ],

并且没有其他输出项目,则后一操作的输入项目必须为:

"inputArtifacts": [ { "MyApp" } ],

例如,源操作不能有输入构件,因为它是管道中的第一个操作。不过,源操作总是会有由后续操作处理的输出构件。源操作的输出构件是通过构件存储桶提供的源存储库中的应用程序文件,这些文件经过压缩后由后续操作(如使用构建命令对应用程序文件进行操作的 CodeBuild 操作)进行处理。

以不能有输出构件的操作为例,部署操作没有输出构件,因为这些操作通常是管道中的最后一个操作。

name

操作的输出构件的构件名称。

configuration(由操作提供程序提供)

操作配置包含适合提供程序类型的详细信息和参数。在以下部分中,示例操作配置参数特定于 S3 源操作。

操作配置和输入/输出构件限制可能因操作提供程序而异。有关按操作提供程序划分的操作配置示例的列表,请参阅操作结构参考每种提供程序类型的有效配置参数中的表。该表提供了每种提供程序类型的操作参考链接,其中详细列出了每个操作的配置参数。有关包含每个操作提供程序的输入和输出构件限制的表,请参阅每种操作类型的有效输入和输出构件

使用操作时需考虑以下事项:

注意

CodeCommit 和 S3 源操作需要已配置的更改检测资源(EventBridge 规则),或使用轮询存储库是否有源更改的选项。对于具有 Bitbucket、GitHub 或 GitHub Enterprise Server 源操作的管道,您不必设置 Webhook 或默认进行轮询。连接操作会为您管理更改检测。

runOrder

一个指示阶段内操作的运行顺序的正整数。阶段中的并行操作显示为具有相同的整数。例如,运行顺序为 2 的两个操作将在该阶段的第一个操作运行后并行运行。

操作的默认 runOrder 值为 1。值必须是正整数 (自然数)。不能使用分数、小数、负数或零。要指定一个操作序列,请对序列中的第一个操作使用最小的数字,然后对其余的每个操作使用逐渐递增的数字。要指定并行操作,请对要并行运行的每个操作使用同一整数。在控制台中,您可以通过在要运行操作的阶段中选择该级别的添加操作组来指定操作串行序列,也可以通过选择添加操作来指定并行序列。操作组是指同一级别中一个或多个操作的运行顺序。

例如,如果您希望一个阶段中的三个操作依次运行,则应将第一个操作的 runOrder 值指定为 1,将第二个操作的 runOrder 值指定为 2,将第三个操作的 runOrder 值指定为 3。但是,如果您希望第二个和第三个操作并行运行,则应将第一个操作的 runOrder 值指定为 1,将第二个和第三个操作的 runOrder 值均指定为 2。

注意

顺序操作的编号不必十分严格。例如,如果您的序列中有三个操作并决定删除第二个操作,则不需要对第三个操作的 runOrder 值重新编号。因为该操作的 runOrder 值 (3) 大于第一个操作的 runOrder 值 (1),所以它将在此阶段中的第一个操作之后连续运行。