一千萬個為什麽

搜索

在Jenkins中動態更改參數化管道



在進行更改後,是否可以動態更改參數化管道?

例如,我有一個管道代碼:

properties([
        parameters([
                string(name: 'TARGET_HOST', defaultValue: 'test', description: 'Host on which artifact will be deployed'),
                string(name: 'ARTIFACT_ID', defaultValue: 'test', description: 'Name of artifact which will be doployed'),
                string(name: 'ARTIFACT_VERSION', defaultValue: '1', description: 'Version of artifact which will be deployed')
        ])
])

我決定將TARGET_HOST參數的defaultValue從test更改為1。

在這些更改之後,我需要運行作業以便它應用更改並且僅在進行更改後第二次運行它,我將獲得應用的更改。

有沒有辦法在制作完成後的第一次運行中提取工作?

到目前為止,我找到了一種使用Input結構的方法:

def values = input id: 'Run-test-suites',
        message: 'Workflow Configuration',
        ok: 'Run',
        parameters: [
                [
                        $class      : 'BooleanParameterDefinition',
                        defaultValue: true,
                        name        : 'checkboxVal',
                        description : 'Testing of checkbox param'
                ],
                [
                        $class      : 'StringParameterDefinition',
                        defaultValue: "test",
                        name        : 'stringVal',
                        description : 'Testing of string param'
                ],
                [
                        $class     : 'ChoiceParameterDefinition', choices: '1\n2\n3',
                        name       : 'choiceVal',
                        description: 'Testing of choice parameter'
                ]
        ]

但我希望有更靈活的東西。

轉載註明原文: 在Jenkins中動態更改參數化管道

一共有 1 個回答:

目前您所要求的是不可能的。這是由於Jenkinsfile加載到管道中的方式。

我認為 dolphy 最好說這個StackOverflow答案(我前一段時間保存了這個鏈接以跟蹤它的變化,因為我有同樣的問題):

Jenkins在檢索,解析和運行Jenkins文件之前不知道新參數,唯一的方法是...運行構建。

     

實際上,構建歷史將永遠是Jenkins文件的“一次運行”;當您在Jenkins文件中更改某些內容時,下一個版本將使用“舊”Jenkins文件運行,但在此之後選擇並處理構建的新Jenkins文件。

您還可以關註相關的Jenkins Ticket