我无法使它正常工作。已确认这是SSH问题(请参阅问题评论),并且我无权访问jenkins用户,因此无法为其创建一个
~/.ssh/config。
我用另一种方式解决了它:
- 我安装了可扩展选择参数插件
- 参数名称:TAG_TO_BUILD
- 选择提供者:系统Groovy选择参数
- Groovy系统脚本
。
def feedUrl = 'URL_TO_PHP_script'def gettags = new URL(feedUrl).getText()def tags = []def t1 = []gettags.eachLine {tags.add(it)}for(i in tags) t1.add(i.split()[1].replaceAll('\^\{\}','').replaceAll('refs/tags/', ''))t1 = t1.unique().sort().reverse()return t1- Jenkins可访问的服务器上的PHP脚本(可能是同一台服务器,但nginx与jenkins以不同的用户身份运行,并且我确实具有shell访问权限,因此可以创建
~/.ssh/config
):
。
<?phpexec('git ls-remote -t GIT_URL', $output);print(preg_replace('/[a-z0-9]*trefs/heads//','',implode("n", $output)));?>~/.ssh/config
在运行Web服务器的用户帐户上:
。
Host GIT_SERVER IdentityFile PATH_TO_SSH_PRIVATE_KEY Identitiesonly yes
- 相应的SSH公钥已添加到Git服务器。
这种设置的缺点是非常笨拙。仅使用Git Parameter插件会更加优雅,但这对我来说很不幸。
对我来说,主要优点是我可以测试它的每个部分:
git ls-remote
Shell中的命令:输出SHA和标记引用。php getgittags.php
将所有标签的列表输出到外壳。- 浏览至getgittags.php并验证我是否具有相同的标签列表。
- 可扩展选择参数具有“立即运行脚本”按钮,允许您在保存更改之前进行测试。
- 最后,开始一个参数化的构建。



