簡體   English   中英

jenkins 中的選擇參數作為 shell 腳本(管道)的輸出

[英]Choice paramter in jenkins as an output from shell script (pipeline)

我正在尋找一種方法來使用 shell 的輸出作為 jenkins 參數,但在管道中,不想使用任何 UI 插件。

例如我想使用命令的輸出

ls /home

作為選擇參數(這樣我就可以從列表中選擇用戶),是否可以做這樣的事情? 它必須在管道中完成,我不是在尋找一些允許您執行類似操作的插件,但是您需要在 UI 中完成所有操作,如果插件支持管道,那么也可以。

管道要運行,需要在管道啟動之前完全定義其參數。

對於解析ls /home輸出的管道,它需要運行並分配一個節點和一個工作空間,這只能管道啟動發生。

因此,您遇到了一種先有雞還是先有蛋的問題,您需要在啟動管道之前運行一些代碼,但在運行該代碼之前不能運行管道。

因此,您的問題歸結為“如何在開始管道之前運行一些任意的 Groovy 腳本?”

有兩種選擇:

  1. ActiveChoice 插件允許您定義返回腳本的參數。 然后 Jenkins 將運行腳本(不要忘記批准它)以向您顯示您的“使用參數構建”頁面。 調試這個是出了名的困難,但這可以很長一段時間。

  2. 或者,您可能希望在運行聲明性(主要)管道之前運行腳本化管道,如本答案中所述 這可能看起來有點像這樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM