Jenkins Git拉取引用旧提交

5
我正在为一个Angular 6应用程序创建Jenkins CI流程。我创建了一个Multi-Configuration项目,并在配置中选择了以下值:
源代码管理: Git: Repo_URL 要构建的分支:*/master 仓库浏览器:自动
构建触发器: Gerrit事件:已选中
Gerrit触发器: 选择一个服务器:gerrit.*.com 触发方式:创建补丁集 包含正则表达式的添加命令:[Rr][Ee][Vv][Ee][Rr][Ii][Ff][Yy]
动态触发器配置: Gerrit项目: 类型: Plain Pattern: projName 分支: 类型: Plain Pattern: master 构建环境: 将Node & npm bin/文件夹提供给PATH: NodeJS路径 npmrc文件:系统默认
构建: 命令: echo $PATH node --version npm --version npm install -g @angular/cli ng build
当我提交代码或重新验证时,Jenkins会触发构建,但它会获取之前的提交而不是最新的提交来触发构建。
以下是构建日志:
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 

针对其他应用程序的Jenkins设置,不同项目类型的设置是有效的。请告诉我在上述配置中出了什么问题。

我还尝试添加Refspec: refs/changes/:refs/changes/和名称:origin在SCM -> Git -> Repositories中。但仍然遇到相同的问题。

4个回答

1
这基本上是由工作区的一些缓存引起的。
有几个选项可以解决这个问题:
1. 在 git checkout 阶段之前删除 / 清理工作区。在 Jenkins 的作业配置中有一个选项:Delete workspace before build starts。这个选项在自由风格作业中属于“构建环境”。 2. 如 mkebri 在他们的答案中提到的,将分支名称添加origin/前缀。这告诉 git 使用remote分支。 3. 在作业的 Git 部分的附加行为选项中,您可以添加“清除仓库和强制克隆”选项,类似选项一。 4. 也有可用的插件可以为您执行这些操作。

1
为解决此问题,请在您要构建的分支前添加前缀“origin”。就像这样:
Branches to build: origin/master

0
问题可以通过在SCM -> Git -> Repositories中提供正确的Refspec值来解决:refs/changes/:refs/changes/

0
如mkebri所说,编辑项目配置->SCM->构建分支有所帮助。要构建任何分支,您可以添加:
origin/*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接