教程:使用带有 CodeCommit 管道源的完整克隆 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:使用带有 CodeCommit 管道源的完整克隆

您可以在中为 CodeCommit 源操作选择完全克隆选项 CodePipeline。使用此选项 CodeBuild 允许在管道构建操作中访问 Git 元数据。

在本教程中,您将创建一个访问 CodeCommit 仓库的管道,对源数据使用完整克隆选项,并运行一个用于克隆仓库并对仓库执行 Git 命令的 CodeBuild 构建。

注意

CodeBuild 操作是唯一支持使用 Git 克隆选项提供的 Git 元数据的下游操作。此外,虽然您的管道可以包含跨账户操作,但操作和 CodeBuild 操作必须位于同一个账户中,完整克隆选项才能成功。 CodeCommit

先决条件

在开始之前,您必须在与您的管道相同的 Amazon 账户和区域中创建 CodeCommit 存储库。

步骤 1:创建自述文件

使用以下步骤将自述文件添加到您的源存储库。README 文件提供了供 CodeBuild 下游操作读取的示例源文件。

添加自述文件
  1. 登录您的存储库并选择您的存储库。

  2. 要创建新文件,请选择添加文件 > 创建文件。将文件命名为 README.md 文件并添加以下文本。

    This is a CodeCommit repository!
  3. 选择提交更改

    确保 README.md 文件位于存储库的根级别。

步骤 2:创建管道并构建项目

在此部分中,您将使用以下操作创建管道:

  • 带有源操作的 CodeCommit 源阶段。

  • 带有生成操作的 Amazon CodeBuild 生成阶段。

使用向导创建管道
  1. 通过 https://console.aws.amazon.com/codepipeline/ 登录主 CodePipeline 机。

  2. 欢迎页面、入门页面或管道页面上,选择创建管道

  3. 步骤 1:选择管道设置管道名称中,输入 MyCodeCommitPipeline

  4. 在本教程中,为管道类型选择 V1。也可以选择 V2;但请注意,不同管道类型具有不同的特性和价格。有关更多信息,请参阅 管道类型

  5. 服务角色中,执行下列操作之一:

    • 选择现有服务角色

    • 选择您现有的 CodePipeline 服务角色。在服务角色策略中,该角色必须有 codecommit:GetRepository IAM 权限。请参阅为 CodePipeline 服务角色添加权限

  6. 高级设置下,保留原定设置值。选择下一步

  7. 步骤 2: 添加源阶段页面上,执行下列操作之一:

    1. 源提供程序中,选择 CodeCommit

    2. 存储库名称中,选择存储库的名称。

    3. 分支名称中,选择您的分支名称。

    4. 确保选择了在源代码更改时启动管道选项。

    5. 输出构件格式下,选择完整克隆,对源存储库启用 Git 克隆选项。只有提供的操作 CodeBuild 才能使用 Git 克隆选项。

    选择下一步

  8. 添加构建阶段中,执行以下操作:

    1. 构建提供程序中,选择 Amazon CodeBuild。允许区域默认为管道区域。

    2. 选择创建项目

    3. 项目名称中,输入此构建项目的名称。

    4. 环境映像中,选择托管映像。对于操作系统,选择 Ubuntu

    5. 对于运行时,选择标准。对于映像,选择 aws/codebuild/standard:5.0

    6. 对于服务角色,选择新建服务角色

      注意

      记下您的 CodeBuild 服务角色的名称。在本教程的最后一步,您会用到此角色名称。

    7. 构建规范下,为构建规范选择插入构建命令。选择切换到编辑器,然后在构建命令下粘贴以下代码。

      version: 0.2 env: git-credential-helper: yes phases: install: #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions. #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails. runtime-versions: nodejs: 12 # name: version #commands: # - command # - command pre_build: commands: - ls -lt - cat README.md build: commands: - git log | head -100 - git status - ls - git describe --all #post_build: #commands: # - command # - command #artifacts: #files: # - location #name: $(date +%Y-%m-%d) #discard-paths: yes #base-directory: location #cache: #paths: # - paths
    8. 选择 “继续” CodePipeline。这将使您返回 CodePipeline 控制台并创建一个使用您的构建命令进行配置的 CodeBuild 项目。该构建项目使用服务角色来管理 Amazon Web Service 权限。此步骤可能需要几分钟时间。

    9. 选择下一步

  9. 步骤 4:添加部署阶段页面上,选择跳过部署阶段,并通过再次选择跳过接受警告消息。选择下一步

  10. 步骤 5:审核中,选择创建管道

步骤 3:更新 CodeBuild 服务角色策略以克隆存储库

初始管道运行将失败,因为您需要更新 CodeBuild 服务角色,使其具有从存储库中提取的权限。

在服务角色策略中添加 codecommit:GitPull IAM 权限。有关在 IAM 控制台中更新策略的说明,请参阅为 CodeCommit源操作添加 CodeBuild GitClone 权限

步骤 4:在构建输出中查看存储库命令

查看构建输出
  1. 成功更新服务角色后,在失败 CodeBuild 阶段选择 “重试”。

  2. 管道成功运行后,在成功的构建阶段上,选择查看详细信息

    在详细信息页面上,选择日志选项卡。查看编 CodeBuild 译输出。这些命令将输出所输入变量的值。

    这些命令输出 README.md 文件内容,列出目录中的文件,克隆存储库,查看日志,然后运行 git describe --all