Jenkins Git fetch指的是旧的提交



我正在为angular 6应用程序创建Jenkins CI流。我创建了一个多配置项目。并在配置中选择以下值:

源代码管理:
Git:Repo_URL
要构建的分支:*/master
存储库浏览器:自动

生成触发器:
Gerrit事件:已检查

Gerrit触发器:
选择服务器:Gerrit.*.com
触发器:创建的补丁集
添加的命令包含Reg Exp:[Rr][Ee][Vv][Ee][Rr][Ii][Ff][Yy]

动态触发器配置:
Gerrit项目:
类型:Plair Pattern:projName
分支:
Type:Plair Pattern:master

构建环境:
提供节点&npm-bin/文件夹到PATH:NodeJS路径
npmrc文件:系统默认

构建:
命令:
echo$PATH
节点-版本
npm-版本ng构建

当我提交代码或进行反向验证时,构建会被触发,但它会获取上一次提交,而不是触发构建的最新提交。

以下是构建日志:

10:55:56 Cloning the remote Git repository      
10:55:56 Cloning repository ssh://rmp-bot@***       
10:55:56  > git init /var/lib/jenkins/workspace/application_name/Patchset-Sonar-CI-master # timeout=10          
10:55:56 Fetching upstream changes from ssh://rmp-bot@***             
10:55:56  > git --version # timeout=10        
10:55:56 using GIT_SSH to set credentials Gerrit ssh user              
10:55:56  > git fetch --tags --progress ssh://rmp-bot@***   +refs/heads/*:refs/remotes/origin/*                           
10:55:57  > git config remote.origin.url ssh://rmp-bot@*** # timeout=10
10:55:57  > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10            
10:55:57  > git config remote.origin.url ssh://rmp-bot@*** # timeout=10           
10:55:57 Fetching upstream changes from ssh://rmp-bot@***        
10:55:57 using GIT_SSH to set credentials Gerrit ssh user               
10:55:57  > git fetch --tags --progress ssh://rmp-bot@***  +refs/heads/*:refs/remotes/origin/*                   
10:55:57  > git rev-parse refs/remotes/origin/master^{commit} # timeout=10          
10:55:57  > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10                
10:55:57 Checking out Revision fc96e9e083c368ff963114914fede303d885ae6a (refs/remotes/origin/master)           
10:55:57  > git config core.sparsecheckout # timeout=10                 
10:55:57  > git checkout -f fc96e9e083c368ff963114914fede303d885ae6a 

不同项目类型的设置适用于其他Applications Jenkins设置。请让我知道上面的配置出了什么问题。

我还尝试添加Refspec:refs/changes/:refs/changes/&名称:来源于SCM->Git->存储库。但仍然面临着同样的问题。

要解决此问题,请在要构建的分支中添加前缀"origin"。像这样:

Branches to build: origin/master

这基本上是由工作区中的一些缓存引起的。

有几个选项可以解决此问题。

  1. 在git签出阶段之前删除/清理工作区。JenkinsDelete workspace before build starts中的作业配置中有一个选项。此选项位于自由式作业中的"构建环境"下
  2. 正如mkebri在他们的回答中提到的。。将origin/前缀添加到分支名称。这个命令告诉git使用remote分支
  3. 在作业的Git部分的附加行为选项中,您可以添加"擦除存储库并强制克隆",这与选项一类似
  4. 有一些插件也可以为你做这些事情

通过在SCM->Git->Repository中为Refspec:refs/changes/:refs/changes/提供适当的值,可以解决该问题。

最新更新