将 AWS CodeBuild 与 AWS CodePipeline 结合使用以测试代码和运行构建
通过使用 AWS CodePipeline 测试您的代码并借助 AWS CodeBuild 运行构建,您可以自动执行发布流程。
下表列出了可用于执行这些操作的任务和方法。本主题不介绍如何使用 AWS 开发工具包完成这些任务。
任务 | 可用方法 | 本主题中介绍的方法 |
---|---|---|
借助 CodePipeline 创建可使用 CodeBuild 自动运行构建的持续交付 (CD) 管道 |
|
|
将借助 CodeBuild 实现的测试和构建自动化添加到 CodePipeline 中现有的管道 |
|
|
主题
先决条件
-
回答计划构建中的问题。
-
如果您通过用户(而不是 AWS 根账户或管理员用户)访问 CodePipeline,请向该用户(或该用户所属的 IAM 组)附加名为
AWSCodePipelineFullAccess
的托管策略。建议不使用 AWS 根账户。此策略向用户授予在 CodePipeline 中创建管道的权限。有关更多信息,请参阅《用户指南》中的附加托管策略。注意
向该用户(或该用户所属的 IAM 组)附加策略的 IAM 实体在 IAM 中必须拥有附加策略的权限。有关更多信息,请参阅《用户指南》中的委派权限来管理 IAM 用户、组和凭证。
-
如果您的 AWS 账户中还没有 CodePipeline 服务角色,请创建一个。借助此服务角色,CodePipeline 可代表您与其他 AWS 服务进行交互,包括 AWS CodeBuild。例如,要使用 AWS CLI 创建 CodePipeline 服务角色,请运行 IAM
create-role
命令:对于 Linux、macOS 或 Unix:
aws iam create-role --role-name AWS-CodePipeline-CodeBuild-Service-Role --assume-role-policy-document '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Principal":{"Service":"codepipeline.amazonaws.com"},"Action":"sts:AssumeRole"}}'
对于 Windows:
aws iam create-role --role-name AWS-CodePipeline-CodeBuild-Service-Role --assume-role-policy-document "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codepipeline.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}}"
注意
创建此 CodePipeline 服务角色的 IAM 实体必须拥有在 IAM 中创建服务角色的权限。
-
创建 CodePipeline 服务角色或确定现有角色后,如果该角色还不是该角色策略的一部分,则必须按照《AWS CodePipeline 用户指南》中查看默认 CodePipeline 服务角色策略中所述向该服务角色添加默认 CodePipeline 服务角色策略。
注意
添加此 CodePipeline 服务角色策略的 IAM 实体必须拥有在 IAM 中将服务角色策略添加到服务角色的权限。
-
创建源代码并将其上传到 CodeBuild 和 CodePipeline 支持的存储库类型,如 CodeCommit、Amazon S3、Bitbucket 或 GitHub。源代码应包含构建规范文件,不过您也可在本主题稍后部分定义构建项目时,声明一个构建规范文件。有关更多信息,请参阅Buildspec 参考。
重要
如果您计划使用管道来部署已构建的源代码,则构建输出构件必须与您使用的部署系统兼容。
-
对于 AWS OpsWorks,请参阅《AWS OpsWorks 用户指南》中的应用程序源和将 CodePipeline 与 AWS OpsWorks 结合使用。
-