gpt4 book ai didi

jenkins-pipeline - Jenkins 声明式管道 - 用户输入参数

转载 作者:行者123 更新时间:2023-12-03 23:38:56 27 4
gpt4 key购买 nike

我已经使用 Jenkins 声明性管道查找了一些用户输入参数的示例,但是所有示例都使用脚本化管道。这是我正在尝试工作的代码示例:

pipeline {
agent any

stages {
stage('Stage 1') {
steps {
input id: 'test', message: 'Hello', parameters: [string(defaultValue: '', description: '', name: 'myparam')]
sh "echo ${env}"
}
}
}
}

我似乎不知道如何访问 myparam 变量,如果有人可以帮助我,那就太好了。
谢谢

最佳答案

使用输入时,在全局管道级别使用 agent none 并将代理分配到各个阶段非常重要。将输入过程放在一个单独的阶段,该阶段也使用 agent none。如果您为输入阶段分配一个代理节点,则该代理执行程序将保留在此构建中,直到用户继续或中止构建过程。
这个例子应该有助于使用输入:

def approvalMap             // collect data from approval step

pipeline {
agent none

stages {
stage('Stage 1') {
agent none
steps {

timeout(60) { // timeout waiting for input after 60 minutes
script {
// capture the approval details in approvalMap.
approvalMap = input
id: 'test',
message: 'Hello',
ok: 'Proceed?',
parameters: [
choice(
choices: 'apple\npear\norange',
description: 'Select a fruit for this build',
name: 'FRUIT'
),
string(
defaultValue: '',
description: '',
name: 'myparam'
)
],
submitter: 'user1,user2,group1',
submitterParameter: 'APPROVER'

}
}
}
}
stage('Stage 2') {
agent any

steps {
// print the details gathered from the approval
echo "This build was approved by: ${approvalMap['APPROVER']}"
echo "This build is brought to you today by the fruit: ${approvalMap['FRUIT']}"
echo "This is myparam: ${approvalMap['myparam']}"
}
}
}
}
当输入函数返回时,如果它只有一个参数要返回,则直接返回该值。如果输入中有多个参数,则返回值的映射(哈希、字典)。为了捕获这个值,我们必须使用 groovy 脚本。
将输入代码包装在超时步骤中是一种很好的做法,这样构建就不会长时间处于未解析状态。

关于jenkins-pipeline - Jenkins 声明式管道 - 用户输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46276140/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com