Jenkins Git插件在构建作业前未提取最新更改

1tu0hz3e  于 2022-12-21  发布在  Git
关注(0)|答案(6)|浏览(254)

我正在使用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上其他类似的问题后,他们的答案对我的问题没有帮助。

xfb7svmp

xfb7svmp1#

将我与工作区未得到清理和使用的情况联系起来:

*源代码管理--〉其他行为--〉 checkout 后清除x1c 0d1x

r8uurelv

r8uurelv2#

我相信Jenkins提取了修改并构建在它自己的tmp目录中,所以,尽管Jenkins在它自己的沙箱中正确地构建了新代码,但你的仓库目录并没有得到更新。
我的解决方案是在构建过程中添加一个“git pull”步骤,如下所示:
当一个新的提交被提交到我的GitHub repo时:
1.构建我的项目
如果成功,请执行以下生成后步骤:
1.执行 shell :

cd /your/repo/directory/
git pull

显然,如果“pull”命令不起作用,你可以修改“git pull”命令来做任何你需要做的事情。

fykwrbwg

fykwrbwg3#

对于使用带git插件的Jenkins管道的用户,请在SCM部分的Additional Behaviours下使用Wipe Out repository & force clone

ca1c2owp

ca1c2owp4#

我知道这个问题是老问题,但还有另一种方法可以做到这一点。在生成环境部分中,选择“在生成开始前删除工作区
请看下面的截图,

这实际上每次都会清理工作区,因此您将获得更新的代码。

yfwxisqw

yfwxisqw5#

尝试使用以下格式插入分支路径:

refs/remotes/<remoteRepoName>/<branchName>

Tracks/checks out the specified branch.
E.g. refs/remotes/origin/master
6yoyoihd

6yoyoihd6#

只需勾选图像中的复选框:

相关问题