创建使用 CodeBuild 的管道 (AWS CLI) - AWS CodeBuild

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

创建使用 CodeBuild 的管道 (AWS CLI)

使用以下过程创建用于生成源代码 CodeBuild 的管道。

要使用创建用于部署您构建的源代码或仅测试源代码的管道,您可以调整编辑管道 (AWS CLI) 中的说明和AWS CodePipeline 用户指南中的CodePipeline管道结构参考。 AWS CLI

  1. 在中创建或标识构建项目 CodeBuild。有关更多信息,请参阅 创建构建项目

    重要

    构建项目必须定义构建输出构件设置(即使 CodePipeline 会覆盖这些设置)。有关更多信息,请参阅创建构建项目 (AWS CLI)artifacts 的描述。

  2. 确保您已 AWS CLI 使用与本主题中 AWS 描述的IAM实体之一相对应的访问 AWS 密钥和私有访问密钥配置了。有关更多信息,请参阅《AWS Command Line Interface 用户指南》中的开始设置 AWS Command Line Interface

  3. 创建表示管道结构的JSON格式文件。将文件命名为 create-pipeline.json 或类似名称。例如,这种JSON格式的结构创建了一个管道,其源操作引用了 S3 输入存储桶,生成操作使用 CodeBuild了:

    { "pipeline": { "roleArn": "arn:aws:iam::<account-id>:role/<AWS-CodePipeline-service-role-name>", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "MyApp" } ], "configuration": { "S3Bucket": "<bucket-name>", "S3ObjectKey": "<source-code-file-name.zip>" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "default" } ], "configuration": { "ProjectName": "<build-project-name>" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<CodePipeline-internal-bucket-name>" }, "name": "<my-pipeline-name>", "version": 1 } }

    在此JSON格式化数据中:

    • 的值roleArn必须与您作为先决条件ARN一部分创建或标识的 CodePipeline 服务角色的值相匹配。

    • configurationS3BucketS3ObjectKey 的值假定源代码存储在 S3 存储桶中。有关其他源代码存储库类型的设置,请参阅《AWS CodePipeline 用户指南》中的CodePipeline 管道结构参考

    • 的值ProjectName是您在本过程前面创建的 CodeBuild 生成项目的名称。

    • location 的值是此管道所用的 S3 存储桶的名称。有关更多信息,请参阅AWS CodePipeline 用户指南中的创建用作 S3 存储桶对象存储 CodePipeline的策略

    • name 的值是此管道的名称。所有管道名称对您的账户都必须是唯一的。

    尽管这些数据仅描述了源操作和生成操作,但您可以为与测试、部署生成输出构件、调用 AWS Lambda 函数等相关的活动添加操作。有关更多信息,请参阅《AWS CodePipeline 用户指南》中的 AWS CodePipeline 管道结构参考

  4. 切换到包含该JSON文件的文件夹,然后运行 CodePipelinecreate-pipeline命令,指定文件名:

    aws codepipeline create-pipeline --cli-input-json file://create-pipeline.json
    注意

    您必须在支持的 AWS 区域中创建管道。 CodeBuild 有关更多信息,请参阅Amazon Web Services 一般参考中的 AWS CodeBuild

    JSON格式化的数据出现在输出中,并 CodePipeline 创建管道。

  5. 要获取有关管道状态的信息,请运行 CodePipeline get-pipeline-state命令,指定管道的名称:

    aws codepipeline get-pipeline-state --name <my-pipeline-name>

    在输出中,查找确认构建成功的信息。省略号 (...) 用于显示为简洁起见而省略的数据。

    { ... "stageStates": [ ... { "actionStates": [ { "actionName": "CodeBuild", "latestExecution": { "status": "SUCCEEDED", ... }, ... } ] } ] }

    如果您过早运行此命令,您可能不会看到有关构建操作的信息。您可能需要多次运行此命令,直到管道已完成构建操作的运行。

  6. 成功构建后,请按照以下说明操作,获取构建输出项目。打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/

    注意

    您还可以通过选择 CodeBuild控制台中相关构建详细信息页面上的构建构件链接来获取构建输出工件。要前往此页面,请跳过此过程中的剩余步骤,并参阅查看构建详细信息(控制台)

  7. 在存储桶列表中,请打开管道使用的存储桶。此存储桶的名称应遵循格式 codepipeline-<region-ID>-<random-number>。您可以从create-pipeline.json文件中获取存储桶名称,也可以运行 CodePipeline get-pipeline命令来获取存储桶的名称。

    aws codepipeline get-pipeline --name <pipeline-name>

    在输出中,该 pipeline 对象包含一个 artifactStore 对象,其中包含带有存储桶名称的 location 值。

  8. 打开与您的管道名称相匹配的文件夹 (例如,<pipeline-name>)。

  9. 在该文件夹中,打开名为 default 的文件夹。

  10. 提取文件内容。如果该文件夹中有多个文件,请提取具有最新上一次修改时间戳的文件的内容。(您可能需要为文件指定.zip扩展名,以便可以在系统的ZIP实用程序中使用它。) 构建输出构件将位于文件的提取内容中。