[英]Choice paramter in jenkins as an output from shell script (pipeline)
我正在尋找一種方法來使用 shell 的輸出作為 jenkins 參數,但在管道中,不想使用任何 UI 插件。
例如我想使用命令的輸出
ls /home
作為選擇參數(這樣我就可以從列表中選擇用戶),是否可以做這樣的事情? 它必須在管道中完成,我不是在尋找一些允許您執行類似操作的插件,但是您需要在 UI 中完成所有操作,如果插件支持管道,那么也可以。
管道要運行,需要在管道啟動之前完全定義其參數。
對於解析ls /home
輸出的管道,它需要運行並分配一個節點和一個工作空間,這只能在管道啟動后發生。
因此,您遇到了一種先有雞還是先有蛋的問題,您需要在啟動管道之前運行一些代碼,但在運行該代碼之前不能運行管道。
因此,您的問題歸結為“如何在開始管道之前運行一些任意的 Groovy 腳本?”
有兩種選擇:
ActiveChoice 插件允許您定義返回腳本的參數。 然后 Jenkins 將運行腳本(不要忘記批准它)以向您顯示您的“使用參數構建”頁面。 調試這個是出了名的困難,但這可以很長一段時間。
或者,您可能希望在運行聲明性(主要)管道之前運行腳本化管道,如本答案中所述。 這可能看起來有點像這樣:
def my_choices_list = []
node('master') {
stage('prepare choices') {
// read the folder contents
def my_choices = sh script: "ls -l /home", returnStdout:true
// make a list out of it - I haven't tested this!
my_choices_list = my_choices.trim().split("\n")
}
}
pipeline {
parameters {
choiceParam('OPTION', my_choices_list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.