我正在使用Jenkins CI,并尝试正确配置我的作业以使用git。
我已经为我的一个作业安装并配置了git插件,当我构建这个作业时,我希望它能拉取我指定的分支的最新更改,然后继续构建过程的其余部分(例如,单元测试等)。
当我查看控制台输出时,我看到
> git fetch --tags --progress ssh://gerrit@git-dev/Util +refs/heads/*:refs/remotes/origin/*
> git rev-parse origin/some_branch^{commit}
Checking out Revision <latest_SHA1> (origin/some_branch)
> git config core.sparsecheckout
> git checkout -f <latest_SHA1>
> git rev-list <latest_SHA1>
我看到插件获取并 checkout 了正确的提交哈希值,但当测试运行时,似乎repo根本没有更新。如果我进入Jenkins的存储库,我会看到最新的更改从未被拉取。
它不是应该在造之前先拉吗?
我在Jenkins机器上安装了git 1.8.5,这是一个推荐版本。https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
在检查了SO上其他类似的问题后,他们的答案对我的问题没有帮助。
6条答案
按热度按时间xfb7svmp1#
将我与工作区未得到清理和使用的情况联系起来:
*源代码管理--〉其他行为--〉 checkout 后清除x1c 0d1x
r8uurelv2#
我相信Jenkins提取了修改并构建在它自己的tmp目录中,所以,尽管Jenkins在它自己的沙箱中正确地构建了新代码,但你的仓库目录并没有得到更新。
我的解决方案是在构建过程中添加一个“git pull”步骤,如下所示:
当一个新的提交被提交到我的GitHub repo时:
1.构建我的项目
如果成功,请执行以下生成后步骤:
1.执行 shell :
显然,如果“pull”命令不起作用,你可以修改“git pull”命令来做任何你需要做的事情。
fykwrbwg3#
对于使用带git插件的Jenkins管道的用户,请在
SCM
部分的Additional Behaviours
下使用Wipe Out repository & force clone
。ca1c2owp4#
我知道这个问题是老问题,但还有另一种方法可以做到这一点。在生成环境部分中,选择“在生成开始前删除工作区”
请看下面的截图,
这实际上每次都会清理工作区,因此您将获得更新的代码。
yfwxisqw5#
尝试使用以下格式插入分支路径:
6yoyoihd6#
只需勾选图像中的复选框: