View a markdown version of this page

输入和输出构件 - AWS CodePipeline

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

输入和输出构件

CodePipeline 与开发工具集成以检查代码更改,然后在持续交付流程的所有阶段进行构建和部署。构件是指通过管道中的操作处理的文件,例如包含应用程序代码的文件或文件夹、索引页文件、脚本等。例如,Amazon S3 源操作构件是为管道源操作提供应用程序源代码文件的文件名(或文件路径)。这些文件以 ZIP 文件形式提供,例如以下示例构件名称:SampleApp_Windows.zip。源操作的输出构件,即应用程序源代码文件,是源操作的输出构件,也是下一操作(例如构建操作)的输入构件。又例如,构建操作可能会运行构建命令以编译输入构件(应用程序源代码文件)的应用程序源代码。有关对象参数的详细信息,例如AWS CodeBuild 编译和测试操作参考操作的详细信息,请参阅操作配置参考页面,了解特定 CodeBuild 操作。

操作使用存储在创建管道时选择的 Amazon S3 对象存储桶中的输入和输出项目。 CodePipeline 根据舞台中的操作类型,压缩和传输输入或输出工件的文件。

注意

构件桶与用作管道源文件位置的桶不同,其中所选源操作为 S3。

例如:

  1. CodePipeline 当有人提交到源存储库时,会触发您的管道运行,提供阶段的输出工件(任何待构建的文件)。

  2. 上一步骤中的输出构件(要构建的任意文件)将作为构建阶段的输入构件。构建阶段的输出构件(构建应用程序)可能是为容器构建的更新的应用程序或更新的 Docker 镜像。

  3. 上一步骤中的输出构件(构建应用程序)将作为部署阶段的输入构件,例如, AWS Cloud中的暂存或生产环境。您可以将应用程序部署到部署队列中,也可以将基于容器的应用程序部署到在 ECS 集群中运行的任务。

创建或编辑操作时,您可以为操作指定输入和输出构件。例如,对于具有部署阶段的两阶段管道,在编辑操作中,您可以为部署操作的输入构件选择源操作的构件名称。

  • 当您使用控制台创建第一个管道时,在同 AWS 账户 一个管道中 CodePipeline 创建一个 Amazon S3 存储桶并为所有管道存储项目。 AWS 区域 每次使用控制台在该区域创建另一个管道时,都会在存储桶中为该管道 CodePipeline 创建一个文件夹。在自动化发布过程运行时,它将使用该文件夹来存储管道的项目。此存储桶名为 codepipeline-region-12345EXAMPLE,其中region是您创建管道的 AWS 区域,12345EXAMPLE是一个 12 位数的随机数,可确保存储桶名称的唯一性。

    注意

    如果您在创建管道的区域中已经有一个以 codepipeline-region 开头的存储桶,则将其 CodePipeline 用作默认存储桶。它还遵循字母表顺序;例如 codepipeline-region-abcexample 先于 codepipeline-region-defexample 选择。

    CodePipeline 截断对象名称,这可能会导致某些存储桶名称看起来相似。尽管对象名称似乎被截断,但 CodePipeline 映射到对象存储桶的方式不会受到名称被截断的构件的影响。管道可以正常工作。这不是文件夹或构件的问题。管道名称不能超过 100 个字符。尽管构件文件夹名称似乎已缩短,但它对您的管道来说仍然是唯一的。

    创建或编辑管道时,必须在管道中有一个对象存储桶 AWS 区域, AWS 账户 并且在计划执行操作的每个区域必须有一个对象存储桶。如果使用控制台创建管道或跨区域操作,则在您有操作的区域中, CodePipeline 将配置默认构件存储桶。

    如果您使用创建管道,则可以 AWS CLI 将该管道的项目存储在任何 Amazon S3 存储桶中,只要该存储桶 AWS 账户 与 AWS 区域 管道相同即可。如果您担心超出您的账户允许的 Amazon S3 桶限制,则可以这么做。如果您使用创建或编辑管道,并添加跨区域操作(与您的管道不同的区域的 AWS 提供商执行的操作),则必须为计划执行操作的每个额外区域提供一个对象存储桶。 AWS CLI

  • 每个操作都有一个类型。根据类型,操作可能具有以下一项或两项:

    • 输入项目,它是操作在运行过程中使用或处理的项目。

    • 输出构件,它是操作的输出。

    管道中的每个输出构件必须具有唯一的名称。操作的每个输入项目必须与管道中的以前操作的输出构件匹配,无论该操作直接位于某个阶段中的操作前面,还是相差几个阶段。

    项目可以由多个操作处理。