Jenkins无法从TFS Git Repository中找到Pull请求参考规范来构建pr合并

时间:2017-08-29 11:07:21

标签: git jenkins tfs

我正在尝试自动化Jenkins(atm.2.60.3,Team Foundation Server插件 5.121.0,git插件3.5.1,git客户端插件2.5.0)和TFS(15.117.26714.0)

“为所有作业的所有作业/团队状态启用推送触发器”存在于Jenkins配置中,使用“测试”连接按钮时,soap api连接可以正常工作。

我有一个在该TFS服务器上配置了git存储库的Multibranch管道项目;我的主要问题是,扫描refspecs时找不到拉取请求;我的Multibranch管道项目中的refspec是:

Ref Spec

+refs/heads/*:refs/remotes/@{remote}/*

和Ref Spec

+refs/pull/*:refs/remotes/@{remote}/pull/*

我们从TFS 2015更新了,如果我没记错的话,refspecs是

+refs/pull/*:refs/remotes/@{remote}/pr/*

并且使用旧的2015 TFS可以找到pr / refs并获得多分支工作,如

<JENKINSHOST>:8080/job/MultibranchJob/job/pr%252f<PRID>
  • 虽然这是几个月前,我也更新了LTS版本的Jenkins和所有插件。

这反过来将开始验证应该完成的pull请求是否不会破坏构建。 (据我所知,在TFS插件中还没有像在bitbucket和github插件中那样实现拉取请求)

@ {remote} / pr / *和@ {remote} / pull / *似乎都没有找到refspecs。 Jenkins Host有一个自己编译的git版本2.13.3,因为Centos 7 git太旧了,无法与TFS 2017正常通信。

但拉动请求参考规格无处可寻:

Started by user Jenkins admin
[Tue Aug 29 12:49:03 CEST 2017] Starting branch indexing...
 > git rev-parse --is-inside-work-tree # timeout=10
Setting origin to MYOWNTFSGITREPO
 > git config remote.origin.url MYOWNTFSGITREPO # timeout=10
Fetching origin...
Fetching upstream changes from origin
 > git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > git fetch --tags --progress origin +refs/pull/*:refs/remotes/origin/pull/* +refs/heads/*:refs/remotes/origin/* 
using GIT_ASKPASS to set credentials 
 > git ls-remote --symref MYOWNTFSGITREPO # timeout=10
using GIT_ASKPASS to set credentials 
 > git ls-remote MYOWNTFSGITREPO # timeout=10
 > git rev-parse --is-inside-work-tree # timeout=10
Setting origin to MYOWNTFSGITREPO
 > git config remote.origin.url MYOWNTFSGITREPO # timeout=10
Fetching & pruning origin...
Fetching upstream changes from origin
 > git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > git fetch --tags --progress origin +refs/pull/*:refs/remotes/origin/pull/* +refs/heads/*:refs/remotes/origin/*  --prune
Listing remote references...
 > git config --get remote.origin.url # timeout=10
using GIT_ASKPASS to set credentials 
 > git ls-remote -h MYOWNTFSGITREPO # timeout=10
Checking branches...
  Checking branch develop
      ‘Jenkinsfile’ found
    Met criteria
Changes detected: develop (51e43e3456f49506086ad5649282695d9f0eff7d → 6008de4da7d017b35cb73cf28963057b8512584c)
Did not schedule build for branch: develop
  Checking branch master
      ‘Jenkinsfile’ found
    Met criteria
Changes detected: master (5c2f4df13a6cf53700ff1562d5347c31ff2a8d69 → b856b96743870bc80d9523c79922b01bfe0f363b)
Did not schedule build for branch: master
  Checking branch feature/myFeature
      ‘Jenkinsfile’ found
    Met criteria
No changes detected: feature/myFeature (still at 72fa143c6cbf4cf492129ad43f9a0053d5edf785)
Processed 3 branches
[Tue Aug 29 12:49:03 CEST 2017] Finished branch indexing. Indexing took 0.57 sec
Finished: SUCCESS

虽然如果我从我的dev-pc使用git ls-remote:

$ git ls-remote
From MYOWNTFSGITREPO
b856b96743870bc80d9523c79922b01bfe0f363b        HEAD
6008de4da7d017b35cb73cf28963057b8512584c        refs/heads/develop
72fa143c6cbf4cf492129ad43f9a0053d5edf785        refs/heads/feature/myFeature
b856b96743870bc80d9523c79922b01bfe0f363b        refs/heads/master
d6998b37fb29dc5eb6eaac812b8af58e8f31d402        refs/pull/26/merge

是否有可能--prune删除了合并,因为它可能无法访问?但是这个合并应该在两个分支中都有父母用于拉取请求,对吗?

我错过了一些非常明显的东西吗?

回购的扫描工作正常,否则无法找到所有其他分支。

我知道为pull请求创建自己的分支有点hacky,虽然它确实可以验证合并代码的工作原理。如果有更好的方法来实现多分支项目的测试,我绝对愿意采用不同的方法。

编辑:

在我的dev-pc上尝试上面日志中的所有命令;最后一次

git ls-remote -h MYOWNTFSREPO

仅限于头部,是否有可能规避这一点? git ls-remote MYOWNTFSREPO也会给我/ refs / pull // merge,这正是我想要开始构建Pr合并提交的。

1 个答案:

答案 0 :(得分:0)

Multibranch Pieline项目中的拉取请求目前仅支持“GitHub”和“Bitbucket”分支源。使用Git插件无法实现,因为插件只能发现分支,而Github Source Branch Plugin支持“从源发现请求请求”。

  

支持拉请求

     

使用“GitHub”或“Bitbucket”分支源,Multibranch Pipelines可用于验证拉/变   要求。该功能分别由GitHub提供   Branch Source和Bitbucket Branch Source插件。请咨询   他们的文档以获取有关如何使用它们的更多信息   插件。

有关详细信息,请参阅此链接:Branches and Pull Requests