输入和输出构件 - AWS CodePipeline

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

输入和输出构件

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

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

注意

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

例如:

  1. CodePipeline 在提交源存储库时触发管道运行,提供阶段的输出工件(任何要构建的文件)。

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

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

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

  • 当您使用控制台创建第一个管道时, CodePipeline 会在同一个管道中创建一个 Amazon S3 存储桶AWS 区域,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 CLI 创建或编辑管道,并添加跨区域操作(其 AWS 提供程序与您的管道位于不同区域中的操作),则必须为计划执行操作的每个其他区域提供构件桶。

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

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

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

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

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