【发布时间】:2018-10-19 17:38:39
【问题描述】:
社区!
我工作的公司正在转向 git 和 Gitlab-CI。我们有相当大的代码库——下载源代码大约需要 10 分钟,从 nexus 下载补充内容大约需要 20 分钟,然后构建大约需要 50 分钟。所以增量构建是绝对必要的——因此我们可以在几分钟内获取源代码并只构建更新的文件,而不是超过 1 小时。
不幸的是,GitLab 的 CI 默认策略(尤其是 fetch)对增量构建不起作用,因为它们硬编码了“git clean -ffdx”,它会删除所有未跟踪的文件,因此需要完全重建。我最终开发了自己的更新序列:
- git 初始化
- 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 有关):有没有办法获取当前更新中的提交列表?如果在远分支之间移动,这无关紧要,但在更新同一个分支时可能非常有用
【问题讨论】: