创建管道、阶段和操作 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建管道、阶段和操作

您可以使用 Amazon CodePipeline 控制台或 Amazon CLI 创建管道。管道必须包含至少两个阶段。管道的第一个阶段必须是源阶段。管道必须至少有一个其他阶段,可以是构建阶段或部署阶段。

重要

作为创建管道的一部分,CodePipeline 将使用客户提供的 S3 构件存储桶来存放构件。(这与用于 S3 源操作的存储桶不同。) 如果 S3 构件存储桶所在的账户与您的管道账户不同,请确保 S3 构件存储桶归 Amazon Web Services 账户所有,并且安全可靠。

您可以将操作添加到与您管道不同的 Amazon Web Services 区域中的管道。跨区域操作以 Amazon Web Services 服务 作为操作提供方并且操作类型或提供方类型位于不同于管道的 Amazon 区域中。有关更多信息,请参阅 在 CodePipeline 中添加跨区域操作

您还可以创建管道以生成基于容器的应用程序,并将 Amazon ECS 作为部署提供方以部署应用程序。在创建管道以使用 Amazon ECS 部署基于容器的应用程序之前,您必须创建一个映像定义文件,如映像定义文件参考中所述。

当推送源代码更改时,CodePipeline 使用更改检测方法启动您的管道。这些检测方法基于源类型:

  • CodePipeline 使用 Amazon CloudWatch Events 来检测 CodeCommit 源存储库和分支或 S3 源桶中的更改。

注意

在使用控制台创建或编辑管道时,将为您创建更改检测资源。如果使用 Amazon CLI 创建管道,您必须自行创建其他资源。有关更多信息,请参阅 CodeCommit 源操作和 EventBridge

创建自定义管道(控制台)

要在控制台中创建自定义管道,您必须提供源文件位置和有关您将用于操作的提供方的信息。

当您使用控制台创建管道时,必须包括一个源阶段和以下一个或两个阶段:

  • 生成阶段。

  • 部署阶段。

当您使用管道向导时,CodePipeline 将创建阶段的名称(source、build、staging)。这些名称不能更改。您可以为以后添加的阶段使用更具体的名称(例如,BuildToGamma 或 DeployToProd)。

步骤 1:创建管道并为其命名
  1. 通过以下网址登录Amazon Web Services 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

  2. Welcome 页面上,选择 Create pipeline

    如果这是您首次使用 CodePipeline,请选择开始使用

  3. 步骤 1:选择创建选项页面上的创建选项下,选择构建自定义管道选项。选择下一步

  4. 步骤 2:选择管道设置页面上,在管道名称中,输入管道的名称。

    在单个 Amazon 账户中,您在一个 Amazon 区域中创建的每个管道都必须具有唯一名称。名称可重用于不同区域的管道。

    注意

    创建管道后,便无法再更改其名称。有关其他限制的信息,请参阅Amazon CodePipeline 中的限额

  5. 对于管道类型,选择以下选项之一:管道类型有不同的特点和价格。有关更多信息,请参阅 管道类型

    • V1 类型的管道具有 JSON 结构,其中包含标准的管道、阶段和操作级参数。

    • V2 类型的管道与 V1 类型结构相同,并支持其他参数,例如 Git 标签上的触发器和管道级变量。

  6. 服务角色中,执行下列操作之一:

    • 选择新建服务角色,允许 CodePipeline 在 IAM 中创建新的服务角色。

    • 选择现有服务角色以使用已在 IAM 中创建的服务角色。在角色 ARN 中,从列表中选择您的服务角色 ARN。

    注意

    根据您的服务角色的创建时间,您可能需要更新其权限以支持更多的 Amazon Web Services 服务。有关信息,请参阅向 CodePipeline 服务角色添加权限

    有关服务角色及其策略语句的更多信息,请参阅管理 CodePipeline 服务角色

  7. (可选)在变量下,选择添加变量,以添加管道级变量。

    有关管道级变量的更多信息,请参阅变量参考。有关在管道执行时传递的管道级变量的教程,请参阅教程:使用管道级变量

    注意

    虽然添加管道级变量是可选的,但如果使用管道级变量指定了管道而没有提供变量值,管道执行将失败。

  8. (可选)展开高级设置

  9. 构件存储中,执行下列操作之一:

    1. 选择默认位置,将默认构件存储(如指定为默认值的 S3 构件桶)用于为管道选择的 Amazon Web Services 区域 区域中的管道。

    2. 如果您在管道所在的区域中已有构件存储(例如,S3 构件存储桶),请选择自定义位置。在存储桶中,选择存储桶名称。

    注意

    这不是源代码的源存储桶。这是管道的项目存储。每个管道都需要一个单独的构件存储,例如 S3 存储桶。当您创建或编辑管道时,管道区域中必须有一个构件桶,每个运行操作的 Amazon 区域也必须有一个构件桶。

    有关更多信息,请参阅输入和输出构件CodePipeline 管道结构参考

  10. 加密密钥中,执行下列操作之一:

    1. 要使用 CodePipeline 默认 Amazon KMS key 对管道构件存储(S3 桶)中的数据进行加密,请选择默认 Amazon 托管密钥

    2. 要使用客户托管密钥对管道构件存储(S3 桶)中的数据进行加密,请选择客户托管密钥。选择密钥 ID、密钥 ARN 或别名 ARN。

  11. 选择下一步

步骤 2:创建源阶段
  1. 步骤 3:添加源阶段页面上的源提供方中,选择您的源代码存储到的存储库的类型,指定其必需选项。其它字段的显示取决于所选的源提供方,如下所示。

    • 对于 Bitbucket Cloud、GitHub(通过 GitHub 应用程序)、GitHub Enterprise Server、GitLab.com 或 GitLab 自托管

      1. 连接下,选择一个现有连接或创建一个新连接。要创建或管理 GitHub 源操作的连接,请参阅GitHub 连接

      2. 选择要用作管道的源位置的存储库。

        选择添加触发器或对触发器类型进行筛选,以启动管道。有关使用触发器的更多信息,请参阅添加带有代码推送或拉取请求事件类型的触发器。有关使用 glob 模式筛选的更多信息,请参阅使用语法中的 glob 模式

      3. 输出构件格式中,为构件选择格式。

        • 要使用默认方法存储 GitHub 操作的输出构件,请选择 CodePipeline 默认。操作会访问 GitHub 存储库中的文件,并将构件以 ZIP 文件格式存储在管道构件存储中。

        • 要存储包含存储库的 URL 引用的 JSON 文件,以便下游操作可以直接执行 Git 命令,请选择完全克隆。此选项只能由 CodeBuild 下游操作使用。

          如果选择此选项,则需要更新您的 CodeBuild 项目服务角色的权限,如CodePipeline 故障排除所示。如需查看教程以了解如何使用完整克隆选项,请参阅教程:对 GitHub 管道源使用完整克隆

    • 对于 Amazon S3

      1. Amazon S3 位置中,提供 S3 存储桶名称和已启用版本控制的存储桶中对象的路径。存储桶名称和路径的格式与以下内容类似:

        s3://bucketName/folderName/objectName
        注意

        当 Amazon S3 是您的管道的源提供程序时,您可以将一个或多个源文件压缩到单个 .zip 文件中,然后将 .zip 文件上传到源桶。您也可以上传单个解压缩的文件;但是,需要 .zip 文件的下游操作将失败。

      2. 在您选择 S3 源桶后,CodePipeline 会为此管道创建 Amazon CloudWatch Events 规则和 Amazon CloudTrail 跟踪。接受更改检测选项下面的默认值。这样,CodePipeline 就可以使用 Amazon CloudWatch Events 和 Amazon CloudTrail 检测新管道的更改。选择下一步

    • 对于 Amazon CodeCommit

      • 存储库名称中,选择您要用作管道的源位置的 CodeCommit 存储库的名称。在分支名称中,从下拉列表中选择要使用的分支。

      • 输出构件格式中,为构件选择格式。

        • 要使用默认方法存储 CodeCommit 操作的输出构件,请选择 CodePipeline 默认。操作会访问 CodeCommit 存储库中的文件,并将构件以 ZIP 文件格式存储在管道构件存储中。

        • 要存储包含存储库的 URL 引用的 JSON 文件,以便下游操作可以直接执行 Git 命令,请选择完全克隆。此选项只能由 CodeBuild 下游操作使用。

          如果选择此选项,则需要将 codecommit:GitPull 权限添加到您的 CodeBuild 服务角色中,如为 CodeCommit 源操作添加 CodeBuild GitClone 权限所示。您还需要将 codecommit:GetRepository 权限添加到您的 CodePipeline 服务角色中,如向 CodePipeline 服务角色添加权限所示。如需查看教程以了解如何使用完整克隆选项,请参阅教程:对 GitHub 管道源使用完整克隆

      • 在选择 CodeCommit 存储库名称和分支后,更改检测选项中将显示一条消息,以显示将为该管道创建的 Amazon CloudWatch Events 规则。接受更改检测选项下面的默认值。这样,CodePipeline 就可以使用 Amazon CloudWatch Events 检测新管道的更改。

    • 对于 Amazon ECR

      • 存储库名称中,选择 Amazon ECR 存储库的名称。

      • 映像标签中,指定映像名称和版本(如果与最新版本不同)。

      • 输出构件中,选择默认输出构件(如 MyApp),其中包含您希望下一阶段使用的映像名称和存储库 URI 信息。

        有关为使用 CodeDeploy 蓝绿部署的 Amazon ECS 创建管道(包括 Amazon ECR 源阶段)的教程,请参阅教程:创建包含 Amazon ECR 源和 ECS 至 CodeDeploy 部署的管道

      当您在管道中包含一个 Amazon ECR 源阶段时,在您提交更改时,源操作生成 imageDetail.json 文件作为输出构件。有关 imageDetail.json 文件的信息,请参阅适用于 Amazon ECS 蓝绿部署的 imageDetail.json 文件

    注意

    对象和文件类型必须与您计划使用的部署系统(例如 Elastic Beanstalk 或 CodeDeploy)兼容。受支持文件类型可能包括 .zip、.tar 和 .tgz 文件。有关 Elastic Beanstalk 的受支持容器类型的更多信息,请参阅自定义和配置 Elastic Beanstalk 环境支持的平台。有关使用 CodeDeploy 部署修订的更多信息,请参阅上传应用程序修订准备修订

  2. 要将阶段配置为自动重试,请选择启用阶段失败时的自动重试。有关自动重试的更多信息,请参阅配置阶段在失败时自动重试

  3. 选择下一步

步骤 4:创建构建阶段

如果您计划在创建部署阶段,则此步骤是可选的。

  1. 步骤 4:添加生成阶段页面上,执行下列操作之一,然后选择下一步

    • 如果您计划创建测试或部署阶段,请选择跳过构建阶段

    • 要为您的构建阶段选择 Commands 操作,请选择 Commands

      注意

      运行 Commands 操作将在 Amazon CodeBuild 中产生单独的费用。如果您计划在 CodeBuild 操作中插入构建命令,请继续选择其他构建提供程序,然后选择“CodeBuild”。

      Commands 中,输入用于您操作的 Shell 命令。有关 Commands 操作的更多信息,请参阅 Commands 操作参考

    • 要选择其它构建提供程序(例如 CodeBuild),请选择其它提供程序。从构建提供程序中,选择构建服务的自定义操作提供程序,并提供该提供程序的配置详细信息。有关如何添加 Jenkins 作为构建提供程序的示例,请参阅教程:创建一个四阶段管道

    • 构建提供程序中,选择 Amazon CodeBuild

      区域中,选择资源所在的 Amazon 区域。区域字段指定为此操作类型和提供方类型创建 Amazon 资源的位置。仅为操作提供方是 Amazon Web Services 服务 的操作显示此字段。区域字段默认为与管道相同的 Amazon 区域。

      项目名称中选择您的构建项目。如果您已在 CodeBuild 中创建了构建项目,请选择该项目。或者,您可在 CodeBuild 中创建构建项目,然后返回到此任务。按照 CodeBuild 用户指南创建使用 CodeBuild 的管道的说明进行操作。

      构建规范下,CodeBuild buildspec 文件是可选的,您可以改为输入命令。在插入构建命令中,输入用于操作的 Shell 命令。有关使用构建命令的注意事项的更多信息,请参阅Commands 操作参考。如果要在其他阶段运行命令或者命令列表很长,请选择使用 buildspec 文件

      环境变量中,要将 CodeBuild 环境变量添加到构建操作,请选择添加环境变量。每个变量由三个条目组成:

      • 名称中,输入环境变量的名称或键。

      • 中,输入环境变量的值。如果您为变量类型选择参数,请确保此值是您已存储在 Amazon Systems Manager Parameter Store 中的参数的名称。

        注意

        我们强烈建议不要使用环境变量存储敏感值,尤其是 Amazon 凭证。当您使用 CodeBuild 控制台或 Amazon CLI 时,环境变量将以明文显示。对于敏感值,我们建议您改用 参数 类型。

      • (可选)在类型中,输入环境变量的类型。有效值为明文参数。默认值为明文

      (可选)在构建类型中,选择下列选项之一:

      • 要在单个构建操作执行中运行每次构建,请选择单次构建

      • 要在同一个构建操作执行中运行多次构建,请选择批处理构建

      (可选)如果您选择运行批处理构建,则可以选择将批处理中的所有构件合并到一个位置,将所有构建构件放入单个输出构件中。

  2. 要将阶段配置为自动重试,请选择启用阶段失败时的自动重试。有关自动重试的更多信息,请参阅配置阶段在失败时自动重试

  3. 选择下一步

步骤 5:创建测试阶段

如果您计划创建构建或部署阶段,则此步骤是可选的。

  1. 步骤 5:添加测试阶段页面上,执行下列操作之一,然后选择下一步

    • 如果您计划创建构建或部署阶段,请选择跳过测试阶段

    • 测试提供商中,选择测试操作提供商并填写相应的字段。

  2. 选择下一步

步骤 6:创建部署阶段

如果已创建了构建阶段,则此步骤为可选步骤。

  1. 步骤 6:添加部署阶段页面上,执行下列操作之一,然后选择下一步

    • 如果您在前面步骤中创建了构建或测试阶段,则选择跳过部署阶段

      注意

      如果您已跳过构建或测试阶段,则此选项不会显示。

    • 部署提供程序中,选择您为部署提供程序创建的自定义操作。

      区域中,仅对于跨区域操作,选择已在其中创建资源的 Amazon 区域。区域字段指定为此操作类型和提供方类型创建 Amazon 资源的位置。此字段仅在操作提供方是 Amazon Web Services 服务 的情况下对操作显示。区域字段默认为与管道相同的 Amazon 区域。

    • 部署提供程序中,适用于默认提供商的字段如下所示:

      • CodeDeploy

        应用程序名称中,输入或选择现有 CodeDeploy 应用程序的名称。在部署组中,输入应用程序的部署组的名称。选择下一步。您还可以在 CodeDeploy 控制台中创建应用程序和/或部署组。

      • Amazon Elastic Beanstalk

        应用程序名称中,输入或选择现有 Elastic Beanstalk 应用程序的名称。在环境名称中,输入应用程序的环境。选择下一步。您还可以在 Elastic Beanstalk 控制台中创建应用程序和/或环境。

      • Amazon OpsWorks Stacks

        堆栈中,输入或选择要使用的堆栈的名称。在中,选择目标实例所属的层。在 App 中,选择您要更新和部署的应用程序。如果您需要创建一个应用程序,请选择在 Amazon OpsWorks 中创建一个新的

        有关向 Amazon OpsWorks 中的堆栈和层添加应用程序的信息,请参阅 Amazon OpsWorks 用户指南 中的添加应用程序

        有关如何将 CodePipeline 中的简单管道用作您要在 Amazon OpsWorks 层上运行的代码源的端到端示例,请参阅将 CodePipeline 与 Amazon OpsWorks Stacks 结合使用

      • Amazon CloudFormation

        请执行以下操作之一:

        • 操作模式中,选择创建或更新堆栈,输入堆栈名称和模板文件名,然后选择要代入的 Amazon CloudFormation 角色的名称。(可选)输入配置文件的名称,然后选择 IAM 功能选项。

        • 操作模式中,选择创建或替换更改集,输入堆栈名称和更改集名称,然后选择要代入的 Amazon CloudFormation 角色的名称。(可选)输入配置文件的名称,然后选择 IAM 功能选项。

        有关将 Amazon CloudFormation 功能集成到 CodePipeline 中的管道的信息,请参阅 Amazon CloudFormation 用户指南 中的利用 CodePipeline 进行持续交付

      • Amazon ECS

        集群名称中,输入或选择现有 Amazon ECS 集群的名称。在服务名称中,输入或选择在集群上运行的服务的名称。您还可以创建集群和服务。在映像文件名中,键入描述服务的容器和映像的映像定义文件的名称。

        注意

        Amazon ECS 部署操作需要一个 imagedefinitions.json 文件作为部署操作的输入。该文件的默认文件名为 imagedefinitions.json。如果您选择使用不同的文件名,则必须在创建管道部署阶段时提供。有关更多信息,请参阅 适用于 Amazon ECS 标准部署操作的 imagedefinitions.json 文件

        选择下一步

        注意

        确保为 Amazon ECS 集群配置了两个或更多实例。Amazon ECS 集群必须包含至少两个实例,以便一个作为主实例进行维护,另一个用于容纳新部署。

        有关使用管道部署基于容器的应用程序的教程,请参阅教程:使用 CodePipeline 进行持续部署

      • Amazon ECS(蓝/绿)

        输入 CodeDeploy 应用程序和部署组、Amazon ECS 任务定义和 AppSpec 文件信息,然后选择下一步

        注意

        Amazon ECS(蓝/绿) 操作需要 imageDetail.json 文件作为部署操作的输入构件。由于 Amazon ECR 源操作会创建此文件,所以包括 Amazon ECR 源操作的管道无需提供 imageDetail.json 文件。有关更多信息,请参阅 适用于 Amazon ECS 蓝绿部署的 imageDetail.json 文件

        有关为使用 CodeDeploy 对 Amazon ECS 集群进行蓝绿部署而创建管道的教程,请参阅教程:创建包含 Amazon ECR 源和 ECS 至 CodeDeploy 部署的管道

      • Amazon Service Catalog

        如果您要使用控制台中的字段指定配置,请选择输入部署配置,如果您有单独的配置文件,请选择配置文件。输入产品和配置信息,然后选择下一步

        有关使用管道将产品更改部署到 Service Catalog 的教程,请参阅教程:创建部署到 Service Catalog 的管道

      • Alexa Skills Kit

        Alexa Skill ID 中,为您的 Alexa 技能输入技能 ID。在客户端 ID客户端密钥中,输入使用 Login with Amazon(LWA)安全配置文件生成的凭证。在刷新令牌中,输入使用 ASK CLI 命令生成的刷新令牌,以检索刷新令牌。选择下一步

        有关使用管道部署 Alexa 技能并生成 LWA 凭据的教程,请参阅教程:创建部署 Amazon Alexa 技能的管道

      • Amazon S3 ()

        存储桶中,您要使用的 S3 存储桶的名称。如果部署阶段的输入项目是 ZIP 文件,请选择在部署前提取文件。如果选择了在部署前提取文件,则您可以(可选)为要将 ZIP 文件解压缩到的部署路径输入值。如果未选择,则您需要在 S3 对象键中输入一个值。

        注意

        大多数源和构建阶段输出构件都会被压缩。除了 Amazon S3 之外的所有管道源提供方都会先压缩源文件,然后再将它们作为输入构件提供给下一个操作。

        (可选)在标准 ACL 中,输入要应用于部署到 Amazon S3 的对象的标准 ACL

        注意

        应用标准 ACL 将覆盖已应用于对象的任何现有 ACL。

        (可选)在缓存控制中,为从存储桶下载对象的请求指定缓存控制参数。有关有效值的列表,请参阅 HTTP 操作的 Cache-Control 标头字段。要在缓存控件中输入多个值,请在每个值之间使用逗号。您可以在每个逗号后添加一个空格(可选),如本示例所示。

        该图显示了控制台中的缓存控制字段,其中包含以下条目:public, max-age=0, no-transform

        前述示例条目显示在 CLI 中,如下所示:

        "CacheControl": "public, max-age=0, no-transform"

        选择下一步

        有关使用 Amazon S3 部署操作提供方创建管道的教程,请参阅教程:创建以 Amazon S3 作为部署提供程序的管道

  2. 要将阶段配置为自动重试,请选择启用阶段失败时的自动重试。有关自动重试的更多信息,请参阅配置阶段在失败时自动重试

  3. 要将阶段配置为自动回滚,请选择配置阶段失败时的自动回滚。有关自动回滚的更多信息,请参阅配置阶段自动回滚

  4. 选择下一步

步骤 7:审核管道
  • 步骤 7:审核页面上,查看您的管道配置,然后选择创建管道以创建管道,或者选择上一步返回并编辑您的选择。要退出向导而不创建管道,请选择 Cancel

创建了管道后,就可以在控制台中进行查看。管道将在创建之后开始运行。有关更多信息,请参阅 在 CodePipeline 中查看管道和详细信息。有关对管道进行更改的更多信息,请参阅在 CodePipeline 中编辑管道

创建管道(CLI)

要使用 Amazon CLI 创建管道,可以创建一个 JSON 文件来定义管道结构,然后使用 create-pipeline 参数运行 --cli-input-json 命令。

重要

您不能使用 Amazon CLI 创建包含合作伙伴操作的管道。您必须改为使用 CodePipeline 控制台。

有关管道结构的更多信息,请参阅CodePipeline 管道结构参考和 CodePipeline API 参考中的 create-pipeline

要创建 JSON 文件,请使用示例管道 JSON 文件,编辑该文件,然后在运行 create-pipeline 命令时调用该文件。

先决条件

您需要在开始使用 CodePipeline中为 CodePipeline 创建的服务角色的 ARN。运行 create-pipeline 命令时,在管道 JSON 文件中使用 CodePipeline 服务角色 ARN。有关创建服务角色的更多信息,请参阅创建 CodePipeline 服务角色。与控制台不同,在 Amazon CLI 中运行 create-pipeline 命令无法为您创建 CodePipeline 服务角色。服务角色必须已存在。

您需要用于存储管道构件的 S3 存储桶的名称。该存储桶必须与管道位于同一区域。运行 create-pipeline 命令时,可以在管道 JSON 文件中使用存储桶名称。与使用控制台不同,在 create-pipeline 中运行 Amazon CLI 命令不会创建用于存储构件的 S3 存储桶。该存储桶必须已经存在。

注意

您也可以使用 get-pipeline 命令获取该管道的 JSON 结构的副本,然后在纯文本编辑器中修改该结构。

主题
    创建 JSON 文件
    1. 在终端(Linux、macOS 或 Unix)或命令提示符 (Windows) 处,在本地目录中创建新的文本文件。

    2. (可选)您可以添加一个或多个管道级变量。您可以在 CodePipeline 操作的配置中引用此值。您可以在创建管道时添加变量名称和值,也可以在控制台中启动管道时选择赋值。

      注意

      虽然添加管道级变量是可选的,但如果使用管道级变量指定了管道而没有提供变量值,管道执行将失败。

      管道级变量是在管道运行时解析的。所有变量都是不可变的,这意味着它们在赋值后无法更新。已解析值的管道级变量将显示在每个执行的历史记录中。

      您可以使用管道结构中的变量属性提供管道级变量。在以下示例中,变量 Variable1 的值为 Value1

      "variables": [ { "name": "Timeout", "defaultValue": "1000", "description": "description" } ]

      将此结构添加到您的管道 JSON 中,或者添加到以下步骤中的示例 JSON 中。有关变量的更多信息,包括命名空间信息,请参阅变量参考

    3. 在纯文本编辑器中打开该文件并编辑值,以反映您要创建的结构。您必须至少更改管道的名称。您还应考虑是否要更改:

      • 用于存储此管道的构件的 S3 存储桶。

      • 代码的源位置。

      • 部署提供程序。

      • 您希望如何部署代码。

      • 管道的标签。

      下面的两阶段示例管道结构突出显示了您应考虑为您的管道更改的值。您的管道可能包含两个以上的阶段:

      { "pipeline": { "roleArn": "arn:aws:iam::80398EXAMPLE::role/AWS-CodePipeline-Service", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "MyApp" } ], "configuration": { "S3Bucket": "amzn-s3-demo-source-bucket", "S3ObjectKey": "ExampleCodePipelineSampleBundle.zip", "PollForSourceChanges": "false" }, "runOrder": 1 } ] }, { "name": "Staging", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-CodeDeploy-Application", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineDemoFleet" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "codepipeline-us-east-2-250656481468" }, "name": "MyFirstPipeline", "version": 1, "variables": [ { "name": "Timeout", "defaultValue": "1000", "description": "description" } ] }, "triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "tags": { "includes": [ "v1" ], "excludes": [ "v2" ] } } ] } } ] "metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline", "updated": 1501626591.112, "created": 1501626591.112 }, "tags": [{ "key": "Project", "value": "ProjectA" }] }

      此示例通过在管道上包含 Project 标签键和 ProjectA 值来为管道添加标记。有关标记 CodePipeline 中资源的更多信息,请参阅为资源添加标签

      确保按如下所示设置 JSON 文件中的 PollForSourceChanges 参数:

      "PollForSourceChanges": "false",

      CodePipeline 使用 Amazon CloudWatch Events 来检测 CodeCommit 源存储库和分支或 S3 源桶中的更改。下一步包括手动为您的管道创建这些资源的说明。将此标记设置为 false 将禁用定期检查,当您使用建议的更改检测方法时不需要定期检查。

    4. 要在您的管道所在区域之外的区域创建构建、测试或部署操作,您必须向管道结构添加以下内容。有关说明,请参阅在 CodePipeline 中添加跨区域操作

      • Region 参数添加到您的操作的管道结构。

      • 使用 artifactStores 参数为包含操作的每个 Amazon 区域指定一个构件桶。

    5. 如果您对其结构感到满意,请使用类似 pipeline.json 的名称保存您的文件。

    要创建管道
    1. 运行 create-pipeline 命令,并使用 --cli-input-json 参数指定您之前创建的 JSON 文件。

      要使用名为 pipeline.json 的 JSON 文件(包含名称“MySecondPipeline”作为 JSON 文件中的 name 值)创建名为 MySecondPipeline 的管道,命令应类似于以下内容:

      aws codepipeline create-pipeline --cli-input-json file://pipeline.json
      重要

      务必在文件名前包含 file://。此命令中需要该项。

      该命令会返回您创建的整个管道的结构。

    2. 要查看管道,请打开 CodePipeline 控制台并从管道列表中选择管道,也可以使用 get-pipeline-state 命令。有关更多信息,请参阅 在 CodePipeline 中查看管道和详细信息

    3. 如果您使用 CLI 创建管道,您必须手动为您的管道创建建议的更改检测资源:

    使用静态模板创建管道

    您可以在控制台中创建一个管道,使用模板来配置管道,管道中包含您指定的源代码和属性。您必须提供源文件位置以及您将用于操作的源提供方的相关信息。您可以为 Amazon ECR 或 CodeConnections 支持的任何第三方存储库(如 GitHub)指定源操作。

    该模板将在 Amazon CloudFormation 中为您的管道创建一个堆栈,其中包括以下资源:

    • 使用 V2 管道类型创建管道。对于管道类型,选择以下选项之一:管道类型有不同的特点和价格。有关更多信息,请参阅 管道类型

    • 为管道创建服务角色并在模板中引用。

    • 使用默认构件存储创建构件存储,例如在您为管道选择的 Amazon Web Services 区域中为管道指定的默认 S3 构件存储桶。

    要查看用于静态模板创建向导的开源初学者模板集合,请访问存储库:https://github.com/aws/codepipeline-starter-templates

    使用静态模板创建管道时,将根据使用案例的需要在每个模板中配置管道结构。例如,在此过程中使用部署到 Amazon CloudFormation 的模板作为示例。该模板生成一个名为 DeployToCloudFormationService 的管道,其结构如下:

    • 包含源操作的构建阶段,其配置由您在向导中指定。

    • 在 Amazon CloudFormation 中具有部署操作和相关资源堆栈的部署阶段。

    使用静态模板创建管道时,CodePipeline 会创建阶段名称(source、build、staging)。这些名称不能更改。您可以为以后添加的阶段使用更具体的名称(例如,BuildToGamma 或 DeployToProd)。

    步骤 1:访问控制台
    1. 通过以下网址登录Amazon Web Services 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

    2. Welcome 页面上,选择 Create pipeline

      如果这是您首次使用 CodePipeline,请选择开始使用

    步骤 2:选择模板

    选择一个模板来创建具有部署阶段、自动化或 CI 管道的管道。

    1. 步骤 1:选择创建选项页面上,执行以下操作之一,然后选择下一步

      • 如果您计划创建部署阶段,请选择部署。查看部署到 ECR 或 CloudFormation 的模板的选项。在此示例中,选择部署,然后选择部署到 CloudFormation。

      • 如果您计划创建 CI 管道,请选择持续集成。查看 CI 管道的选项,例如构建到 Gradle。

      • 如果您计划创建自动管道,请选择自动化。查看自动化选项,例如安排 python 构建。

    2. 该图显示了在向导中选择了 CloudFormation 部署的选择模板选项
      该图显示了向导中的选择源页面
      该图显示了在向导中选择自动化的选择模板选项
    步骤 3:选择源
    • 步骤 3:选择源页面上的源提供方下,选择您的源代码存储到的存储库的提供方,指定其必需选项,然后选择下一步

      • 对于 Bitbucket Cloud、GitHub(通过 GitHub 应用程序)、GitHub Enterprise Server、GitLab.com 或 GitLab 自托管

        1. 连接下,选择一个现有连接或创建一个新连接。要创建或管理 GitHub 源操作的连接,请参阅GitHub 连接

        2. 选择要用作管道的源位置的存储库。

          选择添加触发器或对触发器类型进行筛选,以启动管道。有关使用触发器的更多信息,请参阅添加带有代码推送或拉取请求事件类型的触发器。有关使用 glob 模式筛选的更多信息,请参阅使用语法中的 glob 模式

        3. 输出构件格式中,为构件选择格式。

          • 要使用默认方法存储 GitHub 操作的输出构件,请选择 CodePipeline 默认。操作会访问 GitHub 存储库中的文件,并将构件以 ZIP 文件格式存储在管道构件存储中。

          • 要存储包含存储库的 URL 引用的 JSON 文件,以便下游操作可以直接执行 Git 命令,请选择完全克隆。此选项只能由 CodeBuild 下游操作使用。

            如果选择此选项,则需要更新您的 CodeBuild 项目服务角色的权限,如CodePipeline 故障排除所示。如需查看教程以了解如何使用完整克隆选项,请参阅教程:对 GitHub 管道源使用完整克隆

      • 对于 Amazon ECR

        • 存储库名称中,选择 Amazon ECR 存储库的名称。

        • 映像标签中,指定映像名称和版本(如果与最新版本不同)。

        • 输出构件中,选择默认输出构件(如 MyApp),其中包含您希望下一阶段使用的映像名称和存储库 URI 信息。

        当您在管道中包含一个 Amazon ECR 源阶段时,在您提交更改时,源操作生成 imageDetail.json 文件作为输出构件。有关 imageDetail.json 文件的信息,请参阅适用于 Amazon ECS 蓝绿部署的 imageDetail.json 文件

      注意

      对象和文件类型必须与您计划使用的部署系统(例如 Elastic Beanstalk 或 CodeDeploy)兼容。受支持文件类型可能包括 .zip、.tar 和 .tgz 文件。有关 Elastic Beanstalk 的受支持容器类型的更多信息,请参阅自定义和配置 Elastic Beanstalk 环境支持的平台。有关使用 CodeDeploy 部署修订的更多信息,请参阅上传应用程序修订准备修订

    步骤 4:配置模板

    在此示例中,选择了部署到 CloudFormation。在此步骤中,为您的模板添加配置。

    该图显示了向导中的配置模板页面
    1. 步骤 4:配置模板堆栈名称中,输入管道的名称。

    2. 编辑适用于您模板的权限的占位符 IAM 策略。

    3. 选择根据模板创建管道

    4. 此时将显示一条消息,说明您的管道资源正在创建中。

    步骤 5:查看管道