教程:对 CodeCommit 管道源使用完整克隆
您可以在 CodePipeline 中为 CodeCommit 源操作选择完整克隆选项。使用此选项允许 CodeBuild 在管道构建操作中访问 Git 元数据。
在本教程中,您将创建一个管道,它会访问 CodeCommit 存储库,对源数据使用完整克隆选项,并运行 CodeBuild 构建来克隆存储库并对存储库执行 Git 命令。
注意
CodeBuild 操作是唯一支持通过 Git 克隆选项使用 Git 元数据的下游操作。此外,虽然您的管道可以包含跨账户操作,但是 CodeCommit 操作和 CodeBuild 操作必须位于同一账户中,完整克隆选项才能成功。
重要
作为创建管道的一部分,CodePipeline 将使用客户提供的 S3 构件存储桶来存放构件。(这与用于 S3 源操作的存储桶不同。) 如果 S3 构件存储桶所在的账户与您的管道账户不同,请确保 S3 构件存储桶归 AWS 账户所有,并且安全可靠。
先决条件
开始之前,您必须先在与管道相同的 AWS 账户和区域中创建 CodeCommit 存储库。
步骤 1:创建自述文件
使用以下步骤将自述文件添加到您的源存储库。自述文件提供了一个 CodeBuild 下游操作的示例源文件以供阅读。
添加自述文件
-
登录您的存储库并选择您的存储库。
-
要创建新文件,请选择添加文件 > 创建文件。将文件命名为
README.md文件并添加以下文本。This is a CodeCommit repository! -
选择提交更改。
确保
README.md文件位于存储库的根级别。
步骤 2:创建管道并构建项目
在此部分中,您将使用以下操作创建管道:
-
包含 CodeCommit 源操作的源阶段。
-
AWS CodeBuild 构建操作的构建阶段。
使用向导创建管道
-
在 https://console.aws.amazon.com/codepipeline/
登录 CodePipeline 控制台。 -
在欢迎页面、入门页面或管道页面上,选择创建管道。
-
在步骤 1:选择创建选项页面上的创建选项下,选择构建自定义管道选项。选择下一步。
-
在步骤 2:选择管道设置的管道名称中,输入
MyCodeCommitPipeline。 -
CodePipeline 提供 V1 和 V2 类型的管道,它们在特性和价格上有所不同。在控制台中,您只能选择 V2 类型。有关更多信息,请参阅管道类型。有关 CodePipeline 的定价信息,请参阅定价
。 -
在服务角色中,执行下列操作之一:
-
选择现有服务角色。
-
选择您现有的 CodePipeline 服务角色。在服务角色策略中,该角色必须有
codecommit:GetRepositoryIAM 权限。请参阅向 CodePipeline 服务角色添加权限。
-
-
在高级设置下,保留原定设置值。选择下一步。
-
在步骤 3:添加源阶段页面上,执行以下操作:
-
在源提供程序中,选择 CodeCommit。
-
在存储库名称中,选择存储库的名称。
-
在分支名称中,选择您的分支名称。
-
确保选择了在源代码更改时启动管道选项。
-
在输出构件格式下,选择完整克隆,对源存储库启用 Git 克隆选项。只有 CodeBuild 提供的操作才能使用 Git 克隆选项。
选择下一步。
-
-
在步骤 4:添加构建阶段中,执行以下操作:
-
在构建提供程序中,选择 AWS CodeBuild。允许区域默认为管道区域。
-
选择创建项目。
-
在项目名称中,输入此构建项目的名称。
-
在环境映像中,选择托管映像。对于操作系统,选择 Ubuntu。
-
对于运行时,选择标准。对于映像,选择 aws/codebuild/standard:5.0。
-
对于服务角色,选择新建服务角色。
注意
记下您的 CodeBuild 服务角色的名称。在本教程的最后一步,您会用到此角色名称。
-
在构建规范下,为构建规范选择插入构建命令。选择切换到编辑器,然后在构建命令下粘贴以下代码。
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 -
选择前往 CodePipeline。这将返回到 CodePipeline 控制台并创建一个 CodeBuild 项目,该项目将您的构建命令用于配置。该构建项目使用服务角色来管理 AWS 服务权限。此步骤可能需要几分钟时间。
-
选择下一步。
-
-
在步骤 5:添加测试阶段中,选择跳过测试阶段,并通过再次选择跳过接受警告消息。
选择下一步。
-
在步骤 6:添加部署阶段页面上,选择跳过部署阶段,并通过再次选择跳过接受警告消息。选择下一步。
-
在步骤 7:审核中,选择创建管道。
步骤 3:更新 CodeBuild 服务角色策略以克隆存储库
初始管道运行将失败,因为您需要更新 CodeBuild 服务角色,使其具有从存储库中提取的权限。
在服务角色策略中添加 codecommit:GitPull IAM 权限。有关在 IAM 控制台中更新策略的说明,请参阅为 CodeCommit 源操作添加 CodeBuild GitClone 权限。
步骤 4:在构建输出中查看存储库命令
查看构建输出
-
成功更新服务角色后,在失败的 CodeBuild 阶段上选择重试。
-
管道成功运行后,在成功的构建阶段上,选择查看详细信息。
在详细信息页面上,选择日志选项卡。查看 CodeBuild 构建输出。这些命令将输出所输入变量的值。
这些命令输出
README.md文件内容,列出目录中的文件,克隆存储库,查看日志,然后运行git describe --all。