[英]Select branch to build in Jenkins
我的項目中有幾個分支。 是否有可能在Jenkins的工作中進行動態分支選擇? 想法是Jenkins將獲得當前分支的列表並將其顯示為可能的選擇參數。 有沒有辦法做到這一點? 謝謝
我已經為此找到了groovy腳本。 有點修改它。 您需要選擇'groovy script'而不是'Property file'
def gitURL = "ssh://jenkins@phabricator.com/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的想法。
是的,您可以使用擴展選擇參數插件來實現。 安裝插件后,轉到作業的配置頁面。 現在按照下面提到的步驟操作:
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
框中的鍵。
[tom@master ]# cat /data/branch_list
branch_name=master,mainline,branch_A,branch_B,branch_C,branch_N,
請參閱下面的快照,以便更好地理解我上面解釋的內容
現在,如果您已經擁有分支列表,則可以使用上面指定的格式創建屬性文件。 但是,由於分支創建時有發生,因此您需要從版本控制工具中動態獲取列表。 我們使用Git,如果需要,我可以幫助你。 如果您使用其他任何東西,則必須搜索所需的命令。 為了動態獲取分支列表,我設置了一個cron,它繼續檢查Git repo並獲取分支列表。 然后,它使用最新的分支列表填充屬性文件,然后由Jenkins 動態加載。
更新:
我們使用Gitolite並使用git ls-remote
命令訪問分支名稱。
git ls-remote gitolite@git.server.com:repository_name
例如,
[tom@master ~]$ git ls-remote gitolite@git.server.com: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 gitolite@git.server.com: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上(在Master-Slave設置的情況下)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.