我想Parameterized build
在詹金斯做一个.通过这种方式,用户可以从级联菜单中选择他/她想要部署的git分支.
有两种可能的方法:
在文件中编写分支名称并配置Jenkins以读取此文件(project configuration > extend choice parameter and selecting Property file
).
问题:您必须将本地存储库作为远程存储库的镜像,并使此本地存储库与远程存储库保持同步.换句话说,您必须更新包含更新的可用分支名称的文件.这需要cron的预定作业,我不允许使用这种方法.
使用Groovy脚本(project configuration > extend choice parameter and selecting "Groovy script"
).然后你需要一个groovy脚本来检索分支名称,如下所示:branches=master,feature/Feature-1,feature/Feature-2,hotfix/Hotfix-1,release/Release-1
.
我在这里找到了一个groovy脚本,但它不起作用.我在我的机器上安装了groovy.
有谁能够帮我?为了简化故事:我需要一个groovy脚本,它返回远程存储库的可用分支名称.
下面的脚本应该会有所帮助.它基于链接问题的脚本.它使用简单的正则表达式过滤git命令输出,并为指定的git存储库创建分支名称列表.测试grails-core github repo:
def gitURL = "https://github.com/grails/grails-core.git" def command = "git ls-remote -h $gitURL" def proc = command.execute() proc.waitFor() if ( proc.exitValue() != 0 ) { println "Error, ${proc.err.text}" System.exit(-1) } def branches = proc.in.text.readLines().collect { it.replaceAll(/[a-z0-9]*\trefs\/heads\//, '') } println branches