Jenkins Git 获取旧提交
Jenkins Git fetch referring to old commit
我正在为 angular 6 应用程序创建 Jenkins CI 流程。
我创建了一个多配置项目。并在配置中选择以下值:
源代码管理:
Git: Repo_URL
要构建的分支:*/master
存储库浏览器:自动
构建触发器:
Gerrit 事件:选中
Gerrit 触发器:
选择服务器:gerrit.*.com
触发于:已创建补丁集
添加的命令包含 Reg Exp:[Rr][Ee][Vv][Ee][Rr][Ii][Ff][Yy]
动态触发器配置:
Gerrit 项目:
类型:Plair 模式:projName
分支机构:
类型:Plair 模式:master
构建环境:
将 Node & npm bin/ 文件夹提供给 PATH:NodeJS 路径
npmrc文件:系统默认
建造:
命令:
回显 $PATH
节点 --version
npm --version
npm install -g @angular/cli
构建
当我提交代码或重新验证时,构建被触发但它正在获取以前的提交而不是触发构建的最新提交。
下面是构建日志:
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/ & Name: origin in SCM -> Git -> Repositores .但仍然面临同样的问题。
问题已通过为 Refspec 提供正确的值解决:refs/changes/:refs/changes/ in SCM -> Git - > 存储库。
要解决此问题,请将前缀 "origin" 添加到您要构建的分支。
像这样:
Branches to build: origin/master
这基本上是由工作区中的某些缓存引起的。
有几个选项可以解决这个问题。
- Delete/clean git 结帐阶段之前的工作区。在 Jenkins
Delete workspace before build starts
的作业配置中有一个选项。此选项在自由式作业中位于 "Build Environment" 下。
- 正如 mkebri 在他们的回答中提到的那样.. 将
origin/
前缀添加到分支名称。这告诉 git 使用 remote
分支。
- 在作业的Git部分的附加行为选项中,您可以添加"Wipe out repository & force clone",这与选项一类似。
- 有可用的插件也可以为您做这些事情
我正在为 angular 6 应用程序创建 Jenkins CI 流程。 我创建了一个多配置项目。并在配置中选择以下值:
源代码管理:
Git: Repo_URL
要构建的分支:*/master
存储库浏览器:自动
构建触发器:
Gerrit 事件:选中
Gerrit 触发器:
选择服务器:gerrit.*.com
触发于:已创建补丁集
添加的命令包含 Reg Exp:[Rr][Ee][Vv][Ee][Rr][Ii][Ff][Yy]
动态触发器配置:
Gerrit 项目:
类型:Plair 模式:projName
分支机构:
类型:Plair 模式:master
构建环境:
将 Node & npm bin/ 文件夹提供给 PATH:NodeJS 路径
npmrc文件:系统默认
建造:
命令:
回显 $PATH
节点 --version
npm --version
npm install -g @angular/cli
构建
当我提交代码或重新验证时,构建被触发但它正在获取以前的提交而不是触发构建的最新提交。
下面是构建日志:
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/ & Name: origin in SCM -> Git -> Repositores .但仍然面临同样的问题。
问题已通过为 Refspec 提供正确的值解决:refs/changes/:refs/changes/ in SCM -> Git - > 存储库。
要解决此问题,请将前缀 "origin" 添加到您要构建的分支。 像这样:
Branches to build: origin/master
这基本上是由工作区中的某些缓存引起的。
有几个选项可以解决这个问题。
- Delete/clean git 结帐阶段之前的工作区。在 Jenkins
Delete workspace before build starts
的作业配置中有一个选项。此选项在自由式作业中位于 "Build Environment" 下。 - 正如 mkebri 在他们的回答中提到的那样.. 将
origin/
前缀添加到分支名称。这告诉 git 使用remote
分支。 - 在作业的Git部分的附加行为选项中,您可以添加"Wipe out repository & force clone",这与选项一类似。
- 有可用的插件也可以为您做这些事情