创建使用 CodeBuild 的管道 (AWS CLI)
执行以下步骤,创建使用 CodeBuild 来构建源代码的管道。
要使用 AWS CLI 创建可部署已构建的源代码或仅测试源代码的管道,您可以调整编辑管道 (AWS CLI) 中的说明和《AWS CodePipeline 用户指南》中的CodePipeline 管道结构参考。
-
创建或标识 CodeBuild 中的构建项目。有关更多信息,请参阅 创建构建项目。
重要
构建项目必须定义构建输出构件设置(即使 CodePipeline 覆盖它们)。有关更多信息,请参阅创建构建项目 (AWS CLI)中
artifacts
的描述。 -
请确保您已使用与本主题中所述的 IAM 实体之一对应的 AWS 访问密钥和 AWS 秘密访问密钥配置 AWS CLI。有关更多信息,请参阅《AWS Command Line Interface 用户指南》中的开始设置 AWS Command Line Interface。
-
创建代表管道结构的 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
的值必须与您作为先决条件的一部分创建或标识的 CodePipeline 服务角色 ARN 相匹配。 -
configuration
中S3Bucket
和S3ObjectKey
的值假定源代码存储在 S3 存储桶中。有关其他源代码存储库类型的设置,请参阅《AWS CodePipeline 用户指南》中的 CodePipeline 管道结构参考。 -
ProjectName
的值是您之前在此过程中创建的 CodeBuild 构建项目的名称。 -
location
的值是此管道所用的 S3 存储桶的名称。有关更多信息,请参阅《AWS CodePipeline 用户指南》中的为用作 CodePipeline 构件存储的 S3 存储桶创建策略。 -
name
的值是此管道的名称。所有管道名称对您的账户都必须是唯一的。
尽管此数据仅介绍源操作和构建操作,但您可以为与测试、部署构建输出项目和调用 AWS Lambda 函数等相关的活动添加操作。有关更多信息,请参阅《AWS CodePipeline 用户指南》中的 AWS CodePipeline 管道结构参考。
-
-
切换到包含 JSON 文件的文件夹,然后运行 CodePipeline create-pipeline 命令,并指定文件名:
aws codepipeline create-pipeline --cli-input-json file://create-pipeline.json
注意
您必须在支持 CodeBuild 的 AWS 区域中创建管道。有关更多信息,请参阅《Amazon Web Services 一般参考》中的 AWS CodeBuild。
输出中将显示 JSON 格式的数据,并且 CodePipeline 会创建管道。
-
要获取有关管道状态的信息,请运行 CodePipeline get-pipeline-state 命令,指定管道名称:
aws codepipeline get-pipeline-state --name
<my-pipeline-name>
在输出中,查找确认构建成功的信息。省略号 (
...
) 用于显示为简洁起见而省略的数据。{ ... "stageStates": [ ... { "actionStates": [ { "actionName": "CodeBuild", "latestExecution": { "status": "SUCCEEDED", ... }, ... } ] } ] }
如果您过早运行此命令,您可能不会看到有关构建操作的信息。您可能需要多次运行此命令,直到管道已完成构建操作的运行。
-
成功构建后,请按照以下说明操作,获取构建输出项目。通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 注意
您还可以通过在 控制台的相关构建详细信息页面上选择构建构件链接来获取构建输出项目。要前往此页面,请跳过此过程中的剩余步骤,并参阅查看构建详细信息(控制台)。
-
在存储桶列表中,请打开管道使用的存储桶。此存储桶的名称应遵循格式
codepipeline-
。您可以从<region-ID>
-<random-number>
create-pipeline.json
文件中获取存储桶的名称,或您可以通过运行 CodePipeline get-pipeline 命令获取该存储桶的名称。aws codepipeline get-pipeline --name
<pipeline-name>
在输出中,该
pipeline
对象包含一个artifactStore
对象,其中包含带有存储桶名称的location
值。 -
打开与您的管道名称相匹配的文件夹 (例如,
)。<pipeline-name>
-
在该文件夹中,打开名为
default
的文件夹。 -
提取文件内容。如果该文件夹中有多个文件,请提取具有最新上一次修改时间戳的文件的内容。(您可能需要为文件提供
.zip
扩展名,这样,您可以将其用于您系统内的 ZIP 实用工具。) 构建输出构件将位于文件的提取内容中。