我在我的项目中有几个分支。詹金斯的工作中可以选择动态分支吗? 这个想法是,詹金斯将获得当前分支的列表,并显示它们作为可能的选择参数。有没有办法做到这一点?谢谢选择分支建立在詹金斯
回答
是的,你可以使用Extended Choice Parameter插件。一旦你安装了插件,进入你的作业配置页面。现在按照以下步骤操作:
- 启用复选框
This build is parameterized
。 - 在下拉菜单中,
Add Parameter
,选择Extended Choice Parameter
- 因为你会为构建可以只选择一个分支,离开
Parameter Type
作为Single Select
- 在第
Choose Source for Value
,点击单选按钮Property File
。指定文件的绝对(完整)路径。 - 只是在
Property File
以下,你会看到Property Key
。在这里你必须指定密钥。属性文件采用键值对的形式。 对于离,key=value1,value2,...
正如你可以从下图所示的属性文件内容看,我将使用branch_name
为Property Key
框中的关键。
[[email protected] ]# cat /data/branch_list
branch_name=master,mainline,branch_A,branch_B,branch_C,branch_N,
请参阅下面的快照更好地理解了我上面解释:
现在,如果你已经有了你的分支列表中,您可以创建在上述指定的格式属性文件。但是,由于分支创建会不时发生,因此您需要动态从您的版本控制工具中获取列表。我们使用Git,所以如果需要的话,我可以帮助你。如果你使用其他任何东西,你将不得不搜索所需的命令。要动态获取分支列表,我已经设置了一个cron,它不断检查Git仓库并获取分支列表。然后,它使用最新的分支列表填充属性文件,其然后由Jenkins加载动态。
更新:
我们使用使用git ls-remote
命令Gitolite和访问分支名称。
git ls-remote [email protected]:repository_name
例如,
[[email protected] ~]$ git ls-remote [email protected]:repository_name
08a119f0aec5d4286708d2e16275fcd7d80d2c25 HEAD
a91ef29f1be5bfe373598f6bb20d772dcc65b8ca refs/heads/dev-mob
d138356cf752a46fd8c626229809c9eaae63a719 refs/heads/dev-ssorel
e7d7e2c617c4a42b299b29c0119283813800f1bb refs/heads/dev-omni
3193b36d678f1af2dcc3a291c6313f28ede97149 refs/heads/dev-pay
72fd9d8586708011c763cd7bc4f7bd2a3513a12f refs/heads/dev-sell
39455fc2672039a7f325e9cafe3777ed563368ef refs/heads/dev-apis
a22eb000ffa1ac0fbbf51b6bc8aea31b040567a3 refs/heads/dev-front
78a63105ec754d7ba758af97d542e749ceb9c533 refs/heads/dev-tpsp
82d99796690b6c562872ea68655c74ebc3f0abfb refs/heads/mainline
fd82522f9999cedb11e245b515d480187c2e9cc6 refs/heads/master
过滤出分支名称和填充相同,在键值对的形式的文件,你可以使用这个脚本:
#!/bin/bash
git ls-remote [email protected]:repository_name | grep -v HEAD | cut -d/ -f3 | sort > /data/branch_list_temp
tr '\n' ',' < /data/branch_list_temp | sed "s/^\(.*\)/branch_name=\1/" > /data/branch_list
rm /data/branch_list_temp
PS:确保属性文件在Jenkins Master上(在主从设置的情况下)。
哇,感谢您的快速和详尽的答案!我会尽快尝试。另外,我使用GIT。 – 2014-09-03 12:13:36
如何提取分支名称(以及唯一名称)?我试图使用下面的'git branch -r | sed -e's/origin \ /// g'-e's/HEAD。* // g''。然后解析结果并将它们粘贴到branch_list文件中。我认为可能有更好的办法。 – 2014-09-04 13:13:33
检查更新的答案。 – Technext 2014-09-04 14:07:42
我发现这个groovy脚本。有点修改它。您需要选择'groovy script'而不是'Property file'
def gitURL = "ssh://[email protected]/project.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\//, '')
}
return branches.join(",")
想法是一样的。只有现在你的关键是$ {Branch}在工作中。效果很好。巨大的感谢@Technext的想法。
不客气! :)感谢您发布脚本!会帮助别人。 :) – Technext 2014-09-04 15:46:20
- 1. 詹金斯触发建立分支
- 2. UWP建立在詹金斯
- 3. 建立和詹金斯
- 4. 让詹金斯在git post commit hook后建立特定分支
- 5. 在詹金斯建立分支起源的请求
- 6. 詹金斯不与另一个合并后建立分支
- 7. 获取建立在从詹金斯
- 8. 詹金斯:建立在需求
- 9. 詹金斯构建关闭特定分支(詹金斯的git插件)
- 10. DSL周期性使建立詹金斯
- 11. 詹金斯Maven项目未能建立
- 12. 詹金斯的Git建立失败
- 13. 多选择值选项詹金斯
- 14. 詹金斯触发特定分支
- 15. 詹金斯GitHub插件逆向分支
- 16. 詹金斯在奴隶之间建立分配
- 17. 设置咕噜我选择詹金斯
- 18. 选择生成后步骤詹金斯
- 19. 在詹金斯
- 20. 在詹金斯
- 21. 在詹金斯
- 22. 在詹金斯
- 23. 在詹金斯
- 24. 在詹金斯
- 25. 如何自动合并的Git分支前的詹金斯建立
- 26. 詹金斯Bitbucket分支源插件如何建立只有主人和公关?
- 27. 詹金斯:构建作业的重要分支链条
- 28. 哈德森/詹金斯Git构建所有分支
- 29. 詹金斯相关的构建,共同分支
- 30. 詹金斯构建与java.lang.InterruptedException
您正在使用哪种版本控制工具? – Technext 2014-09-03 08:50:03
GIT + phabricator – 2014-09-03 12:10:23