将 AWS CodePipeline 与 AWS CodeBuild 结合使用以测试代码和运行构建 - AWS CodeBuild
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 AWS CodePipeline 与 AWS CodeBuild 结合使用以测试代码和运行构建

通过使用 AWS CodePipeline 测试您的代码并借助 AWS CodeBuild 运行构建,您可以自动执行发布流程。

下表列出了可用于执行这些操作的任务和方法。本主题不介绍如何使用 AWS SDKs 完成这些任务。

任务 可用方法 本主题中介绍的方法
借助 CodePipeline 创建可使用 CodeBuild 自动运行生成的持续交付 (CD) 管道
  • CodePipeline 控制台

  • AWS CLI

  • AWS SDKs

将借助 CodeBuild 实现的测试和生成自动化添加到 CodePipeline 中现有的管道
  • CodePipeline 控制台

  • AWS CLI

  • AWS SDKs

Prerequisites

  1. 回答 计划构建 中的问题。

  2. 如果您通过 IAM 用户(而不是 AWS 根账户或管理员 IAM 用户)访问 CodePipeline,请向该用户(或该用户所属的 IAM 组)附加名为 AWSCodePipelineFullAccess 的托管策略。建议不使用 AWS 根账户。此策略向用户授予在 CodePipeline 中创建管道的权限。有关更多信息,请参阅 用户指南 中的附加托管策略IAM。

    注意

    向该用户(或该用户所属的 IAM 组)附加策略的 IAM 实体在 IAM 中必须拥有附加策略的权限。有关更多信息,请参阅 用户指南IAM 中的委派权限以管理 用户、组和凭证IAM。

  3. 创建 CodePipeline 服务角色(如果您的 AWS 账户未提供此服务角色)。CodePipeline 使用此服务角色代表您与其他 AWS 服务(包括 AWS CodeBuild)进行交互。例如,要使用 AWS CLI 创建 CodePipeline 服务角色,请运行 IAM create-role 命令:

    对于 Linux, OS X, or 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 中创建服务角色的权限。

  4. 在创建 CodePipeline 服务角色或识别现有服务角色后,您必须将默认 CodePipeline 服务角色策略添加到服务角色(如果它还不是该角色的策略的一部分),如 用户指南CodePipeline 中的查看默认 服务角色策略AWS CodePipeline中所述。

    注意

    添加此 CodePipeline 服务角色策略的 IAM 实体必须拥有在 IAM 中将服务角色策略添加到服务角色的权限。

  5. 创建源代码并将其上传到 CodeBuild 和 CodePipeline 支持的存储库类型,例如 CodeCommit、Amazon S3 或 GitHub。(CodePipeline 当前不支持 Bitbucket。) 源代码应包含构建规范文件,但您可在本主题稍后定义构建项目时声明一个构建规范文件。有关更多信息,请参阅构建规范参考

    重要

    如果您计划使用管道来部署已生成的源代码,则构建输出构件必须与您使用的部署系统兼容。