Jenkins Git插件在构建工作之前没有提取最新的更改

时间:2014-09-10 20:53:18

标签: git plugins jenkins pull

我正在与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>

我看到插件提取并检出了正确的提交哈希值,但是当测试运行时,似乎repo根本没有更新。 如果我进入Jenkins的存储库,我会看到最新的更改从未被删除过。

在尝试构建之前不应该拉动吗?

我的Jenkins机器上安装了git 1.8.5,这是推荐的版本。 https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

在检查了其他类似的声音问题之后,他们的答案对我的问题没有帮助。

6 个答案:

答案 0 :(得分:28)

让我了解工作空间未被清理,使用的场景:

答案 1 :(得分:6)

我相信Jenkins会将这些变化拉出来并构建在自己的tmp目录中。因此,虽然Jenkins正在其自己的沙箱中正确构建新代码,但您的存储库目录并未获得更新。

我的解决方案是添加一个&#34; git pull&#34;像我这样进入构建过程:

当新的提交传递给我的GitHub回购时:
1.构建我的项目

如果成功,请执行以下构建后步骤:
1.执行Shell:

cd /your/repo/directory/
git pull

你可以明显地修改&#34; git pull&#34;命令做任何你需要做的事情,如果“拉”&#39;不适合你。

答案 2 :(得分:0)

我知道问题是陈旧的,但还有另一种方法可以做到这一点。在构建环境部分中,选择&#34; 在构建开始之前删除工作区&#34;

请参阅下面的屏幕截图

enter image description here

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

答案 3 :(得分:0)

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

refs/remotes/<remoteRepoName>/<branchName>

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

答案 4 :(得分:0)

只需勾选图像中的复选框即可。 This Tab saved me the Head aches

答案 5 :(得分:0)

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

enter image description here