如何将Jenkins配置为使用git archive而不是Gerrit的git clone?

如何将Jenkins配置为使用git archive而不是Gerrit的git clone?,git,jenkins,gerrit,Git,Jenkins,Gerrit,我们有一个使用Jenkins配置的自动构建系统,与Gerrit集成。目前的瓶颈之一是,由于存储库的大小,Jenkins需要大约3.5分钟才能完成每个构建的“git克隆”。使用“git archive”进行相同的签出大约需要12秒 Jenkins的gerrit插件可以配置为使用“git存档”吗?这将大大缩短我们的构建时间。虽然使用未修改版本的Git插件似乎不可能,但我确实通过两个步骤完成了这一点: 1) Change SCM to "None" for the particular job. 2)

我们有一个使用Jenkins配置的自动构建系统,与Gerrit集成。目前的瓶颈之一是,由于存储库的大小,Jenkins需要大约3.5分钟才能完成每个构建的“git克隆”。使用“git archive”进行相同的签出大约需要12秒


Jenkins的gerrit插件可以配置为使用“git存档”吗?这将大大缩短我们的构建时间。

虽然使用未修改版本的Git插件似乎不可能,但我确实通过两个步骤完成了这一点:

1) Change SCM to "None" for the particular job.
2) Add a build step at the beginning to checkout using "git archive"
下面是步骤2)的示例


快速浏览一下git插件的源代码就会说“不”,因为我相信这是克隆的原因,而不是Gerrit触发插件。然而,可能的好处是git插件的“快速远程轮询”选项(在“高级”下)——尽管我不确定这是否会为您保存一个初始克隆。据我所知,常见的git插件仅
pull
更改。一个完整的克隆体看起来太大了。然而,即使是克隆人,3分钟似乎也太长了。请确保您不使用
http:
作为协议(以及类似协议),它当前会为每次签出进行克隆-3分钟似乎很长,但它在存储库中的历史超过5年,每次签出超过300 MB。您真的需要为每次生成进行新的克隆吗?还是詹金斯克隆了你却不知道为什么?我们还使用Jenkins和Gerrit,Jenkins只从Gerrit获取更改,不克隆整个存储库。Jenkins做了一个克隆,我不知道为什么,虽然它似乎是Git SCM插件的一部分,但这意味着我们不能使用SCM轮询。还有别的选择吗?
git archive --format=tar --remote=git://host/repo ${GERRIT_REFSPEC} > ${BUILD_ID}.tar && tar xvf ${BUILD_ID}.tar && rm ${BUILD_ID}.tar