AWS CodePipeline构建缺少Git历史记录

时间:2017-11-15 14:28:51

标签: amazon-web-services aws-codepipeline aws-codecommit aws-codebuild

上下文

我有一个CodePipeline设置,它使用CodeCommit和CodeBuild作为源和构建阶段。

我的构建包含一个插件(com.zoltu.git-versioning),它使用Git提交历史记录动态创建构建版本号。

问题:

这在AWS管道上失败,因为它无法在用于执行构建的源中找到任何Git信息。

显然,用于签出源的操作使用省略Git元数据和历史记录的导出。

问题:

如何配置CodeCommit或CodePipeline以执行正确的git clone?我查看了这些组件(以及CodeBuild)的设置,但找不到任何配置来设置结帐操作使用的命令。

是否有人使用包含完整Git元数据的结帐处理CodePipeline构建?

3 个答案:

答案 0 :(得分:4)

CodePipeline中的CodeCommit操作目前无法实现此目的。

https://forums.aws.amazon.com/thread.jspa?threadID=248267

答案 1 :(得分:1)

尽管CodePipeline本身不支持此功能,但是您可以通过在CodeBuild中克隆存储库来 获取信息。

为此,您需要正确设置权限,然后仔细克隆存储库。

权限

要授予克隆存储库的权限,您需要:

  1. 授予您的CodeBuild角色codecommit:GitPull权限以及您的CodeCommit存储库的资源ARN
  2. git-credential-helper: yes放入buildspec文件的env部分中

克隆存储库

要克隆存储库,您需要:

  1. 了解克隆URL和分支(CodeBuild不知道此信息)
  2. git reset返回到CodeBuild是 构建(否则您将在提交和构建之间具有竞争条件)。

    git reset "$CODEBUILD_RESOLVED_SOURCE_VERSION"
    

如果您想举一些例子,我做了detailed writeup of the process,并发表了an example CodePipeline stack showing it in action

答案 2 :(得分:1)

CodePipeline截至十月支持git full clone: https://aws.amazon.com/about-aws/whats-new/2020/09/aws-codepipeline-now-supports-git-clone-for-source-actions/

在控制台中,转到源代码阶段并进行编辑。 您将有一个新选项来完全克隆您的git历史记录。 full clone option

在Terraform中,您必须将其添加到源操作的配置中:

      configuration = {
           RepositoryName       = var.repository_name
           BranchName           = "master"
           OutputArtifactFormat = "CODEBUILD_CLONE_REF"
         }

更多信息:

https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-codecommit-gitclone.html