我正在尝试自动化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>
这反过来将开始验证应该完成的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合并提交的。
答案 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。