gitlab-ci中的增量更新

时间:2018-10-19 17:38:39

标签: git gitlab gitlab-ci

社区!

我正在工作的公司正在向git和Gitlab-CI迈进。我们有相当大的代码库-下载源大约需要10分钟,从关联处下载补充内容大约需要20分钟,然后需要大约50分钟来构建。因此,绝对有必要进行增量构建-因此我们可以在几分钟内而不是> 1h内获取源文件并仅构建更新的文件。

不幸的是,GitLab的CI默认策略(尤其是fetch)对增量构建不起作用,因为它们已经硬编码了“ git clean -ffdx”,它会删除所有未跟踪的文件,因此需要完全重建。我最终开发了自己的更新序列:

  • git init
  • git fetch --tags $ CI_REPOSITORY_URL + refs / heads / :refs / remotes / origin /
  • git config remote.origin.url $ CI_REPOSITORY_URL
  • git checkout -B $ CI_BRANCH_NAME origin / $ CI_BRANCH_NAME

此脚本似乎正在全新计算机上运行(充当克隆),并且正在更新现有存储库。同时,我不确定它是否正常运行,因为它几乎可以静默运行。

问题1:检出到任意分支的顺序正确吗? 问题2:它后面是否需要git merge或git pull命令? 问题3:是否可以通过此特定更新来获取已更改文件的列表(类似于git pull所做的事情)。这在我们以前的CI系统上解决构建问题非常方便 问题4(与#3相关):是否可以获取当前更新中的提交列表?如果在较远的分支之间移动,这是无关紧要的,但是在更新同一分支时可能会很有帮助

1 个答案:

答案 0 :(得分:0)

您应该在CI作业中为支持增量构建的未跟踪文件配置cache属性。您列出的路径将在作业之间进行缓存,以便您可以执行增量构建之类的事情。

快速入门,您只需将untracked设置为true,即可缓存所有未跟踪的文件。

ci_job:
  cache:
    untracked: true