在 CodePipeline 中编辑管道 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 CodePipeline 中编辑管道

管道描述您希望 Amazon CodePipeline 遵循的发布过程,包括必须完成的阶段和操作。您可以编辑管道以添加或删除这些元素。不过,在编辑管道时,无法更改某些值,例如管道名称或管道元数据。

您可以使用管道编辑页面编辑管道类型、变量和触发器。还可以在管道中添加或更改阶段和操作。

与创建管道不同,编辑管道不会通过管道重新运行最新的修订。如果要通过刚刚编辑的管道运行最新修订,您必须手动重新运行它。否则,编辑的管道将在您下次对在源阶段中配置的源位置进行更改时运行。有关信息,请参阅手动启动管道

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

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

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

注意

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

编辑管道(控制台)

您可以使用 CodePipeline 控制台来添加、编辑或删除管道中的阶段,以及添加、编辑或删除某个阶段中的操作。

更新管道时,CodePipeline 会正常完成所有正在运行的操作,然后让运行操作已完成的阶段和管道执行失败。更新管道后,您需要重新运行管道。有关运行管道的更多信息,请参阅手动启动管道

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

    将会显示所有与您的 Amazon 账户关联的管道的名称。

  2. Name 中,选择您要编辑的管道的名称。这将打开管道的详细视图,包括管道每个阶段中每个操作的状态。

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

  4. 要编辑管道类型,请在编辑:管道属性卡上选择编辑。选择以下选项之一,然后选择完成

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

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

    管道类型有不同的特点和价格。有关更多信息,请参阅 管道类型

  5. 要编辑管道变量,请在编辑:变量卡上选择编辑变量。添加或更改管道级别的变量,然后选择完成

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

    注意

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

  6. 要编辑管道触发器,请在编辑:触发器卡上选择编辑触发器。添加或更改触发器,然后选择完成

    有关添加触发器的更多信息,请参阅创建与 Bitbucket Cloud、GitHub(通过 GitHub 应用程序)、GitHub Enterprise Server、GitLab.com 或 GitLab 自托管的连接的步骤,例如 GitHub 连接

  7. 要在编辑页面上编辑阶段和操作,请执行以下操作之一:

    • 要编辑阶段,请选择编辑阶段。您可以添加与现有操作串行或并行运行的操作 :

      您还可以为这些操作选择编辑图标,在此视图中编辑操作。要删除某个操作,请选择该操作上的删除图标。

    • 要编辑某个操作,请选择该操作的编辑图标,然后在编辑操作上更改这些值。标记为星号(*)的项目都是必填的。

      • 对于 CodeCommit 存储库名称和分支,将显示一条消息,指明将为此管道创建 Amazon CloudWatch Events 规则。如果您删除 CodeCommit 源,则会显示一条消息,指明将删除 Amazon CloudWatch Events 规则。

      • 对于 Amazon S3 源桶,将显示一条消息,指明将为此管道创建 Amazon CloudWatch Events 规则和 Amazon CloudTrail 跟踪。如果您删除 Amazon S3 源,则会显示一条消息,指明将删除 Amazon CloudWatch Events 规则和 Amazon CloudTrail 跟踪。如果 Amazon CloudTrail 跟踪正由其他管道使用,则不会删除跟踪,但将删除数据事件。

    • 要添加阶段,请在管道中您要添加阶段的时间点选择 + 添加阶段。为阶段提供一个名称,然后向该阶段至少添加一个操作。标记为星号(*)的项目都是必填的。

    • 要删除阶段,请选择该阶段上的删除图标。阶段及其所有操作都将被删除。

    • 要将阶段配置为在失败时自动回滚,请选择编辑阶段,然后选中配置阶段失败时的自动回滚复选框。

    例如,如果您想要向管道中的阶段添加一系列操作:

    1. 在您要添加操作的阶段中,选择编辑阶段,然后选择 + 添加操作组

    2. 编辑操作操作名称中,键入操作的名称。操作提供程序按类别显示提供程序选项。查找类别(例如部署)。在类别下,选择提供方(例如 )Amazon CodeDeploy。在区域中,选择您已在其中创建或计划在其中创建资源的 Amazon 区域。区域字段指定为此操作类型和提供方类型创建 Amazon 资源的位置。此字段仅在操作提供方是 Amazon Web Services 服务 的情况下对操作显示。区域字段默认为与管道相同的 Amazon 区域。

      有关添加操作提供程序和使用每个提供程序的默认字段的示例,请参阅创建自定义管道(控制台)

      要向阶段中添加 CodeBuild 作为构建操作或测试操作,请参阅 CodeBuild 用户指南 中的将 CodePipeline 与 CodeBuild 结合使用以测试代码和运行构建

      注意

      有些操作提供程序(如 GitHub)要求您连接到该提供程序的网站,然后您才能完成操作的配置。当您连接到提供商的网站时,请确保您使用该网站的凭证。不要使用您的 Amazon 凭证。

    3. 配置完操作后,请选择保存

    注意

    您无法在控制台视图中重命名阶段。您可以添加具有您要更改的名称的阶段,然后删除旧阶段。确保您已添加在该阶段需要的所有操作,然后再删除旧操作。

  8. 编辑完您的管道后,请选择保存以返回到摘要页面。

    重要

    当您保存自己的更改后,便无法撤消这些更改。您必须重新编辑管道。如果当您保存更改时,修订正在通过您的管道运行,则运行将无法完成。如果您希望特定提交或更改通过编辑后的管道运行,则必须手动通过管道运行它。否则,下一个提交或更改将通过管道自动运行。

  9. 要测试您的操作,请选择发布更改来处理通过管道的提交并将更改提交至管道的源阶段中指定的源。或者,按照 手动启动管道 中的步骤操作以使用 Amazon CLI 手动发布更改。

编辑管道(Amazon CLI)

您可以使用 update-pipeline 命令编辑管道。

更新管道时,CodePipeline 会正常完成所有正在运行的操作,然后让运行操作已完成的阶段和管道执行失败。更新管道后,您需要重新运行管道。有关运行管道的更多信息,请参阅手动启动管道

重要

虽然您可以使用 Amazon CLI 来编辑包含合作伙伴操作的管道,但不得手动编辑合作伙伴操作本身的 JSON。如果这样做,在更新管道后,合作伙伴操作将失败。

编辑管道
  1. 打开终端会话(Linux、macOS 或 Unix)或命令提示符 (Windows),然后运行 get-pipeline 命令以将管道结构复制到 JSON 文件中。例如,对于名为 MyFirstPipeline 的管道,输入以下命令:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    该命令不会返回任何结果,但您创建的文件将出现在您运行命令所在的目录中。

  2. 在任何纯文本编辑器中打开 JSON 文件,修改文件结构以反映您要对管道所进行的更改。例如,您可以添加或删除阶段,或者在现有阶段中添加另一个操作。

    以下示例介绍如何在 pipeline.json 文件中添加另一个部署阶段。此阶段会在名为 Staging 的第一个部署阶段之后运行。

    注意

    这只是文件的一部分,而不是整个结构。有关更多信息,请参阅 CodePipeline 管道结构参考

    , { "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 } ] }, { "name": "Production", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-Second-Deployment", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineProductionFleet" }, "runOrder": 1 } ] } ] }

    有关使用 CLI 在管道中添加审批操作的信息,请参阅向 CodePipeline 中的管道添加手动审批操作

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

    "PollForSourceChanges": "false",

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

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

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

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

  4. 如果您正在使用通过 get-pipeline 命令检索到的管道结构,则必须在 JSON 文件中修改结构。您必须从文件中删除 metadata 行以便 update-pipeline 命令可以使用它。从 JSON 文件中的管道结构中删除该部分("metadata": { } 行以及 "created""pipelineARN""updated" 字段)。

    例如,从结构中删除以下各行:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    保存该文件。

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

  6. 要应用更改,请运行 update-pipeline 命令,指定管道 JSON 文件:

    重要

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

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    该命令会返回编辑后的管道的整个结构。

    注意

    update-pipeline 命令会停止管道。如果在运行 update-pipeline 命令时正在通过管道运行修订,则该运行会被停止。您必须手动启动管道,通过更新后的管道运行此修订。

  7. 打开 CodePipeline 控制台,并选择您刚编辑的管道。

    管道将显示您的更改。当您下一次更改源位置时,管道会通过管道修订后的结构运行该修订。

  8. 要通过管道修订后的结构手动运行最新修订,请运行 start-pipeline-execution 命令。有关更多信息,请参阅 手动启动管道

有关管道结构和预期值的更多信息,请参阅CodePipeline 管道结构参考Amazon CodePipeline API 参考