跳过Jenkins中带有参数的选项build

跳过Jenkins中带有参数的选项build,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我在Jenkins文件中有带参数化构建设置的多分支管道。Jenkins中是否有任何选项可用于跳过带参数的构建步骤,即用户可以直接运行作业 换句话说,用户可以使用默认参数值构建作业,而不需要访问参数视图。管理员可以使用Jenkins remote API触发器更改参数。我终于找到了解决问题的插件 首先,Jenkins文件必须配置这个隐藏参数插件。这将隐藏用户端不需要更改的参数 jenkinsfile: properties([[$class: 'ParametersDefinitionProper

我在Jenkins文件中有带参数化构建设置的多分支管道。Jenkins中是否有任何选项可用于跳过带参数的构建步骤,即用户可以直接运行作业

换句话说,用户可以使用默认参数值构建作业,而不需要访问参数视图。管理员可以使用Jenkins remote API触发器更改参数。

我终于找到了解决问题的插件

首先,Jenkins文件必须配置这个隐藏参数插件。这将隐藏用户端不需要更改的参数

jenkinsfile:

properties([[$class: 'ParametersDefinitionProperty', 
        parameterDefinitions: [
            [$class: 'WHideParameterDefinition', name: 'isValid', defaultValue: 'false']
        ]
    ]])
其次,git存储库必须配置webhook,以使用RESTAPI触发Jenkins构建。

我终于找到了解决问题的插件

首先,Jenkins文件必须配置这个隐藏参数插件。这将隐藏用户端不需要更改的参数

jenkinsfile:

properties([[$class: 'ParametersDefinitionProperty', 
        parameterDefinitions: [
            [$class: 'WHideParameterDefinition', name: 'isValid', defaultValue: 'false']
        ]
    ]])

其次,git存储库必须配置webhook,以使用RESTAPI触发Jenkins构建。

还有另一种解决方案,它不需要安装额外的插件

stage ('Setup') {
    try {
        timeout(time: 1, unit: 'MINUTES') {
            userInput = input message: 'Configure build parameters:', ok: '', parameters: [
                [$class: 'hudson.model.ChoiceParameterDefinition', choices: 'staging\nproduction\nfree', description: 'Choose build flavor', name: 'BUILD_FLAVOR'],
                [$class: 'hudson.model.ChoiceParameterDefinition', choices: 'Debug\nRelease', description: 'Choose build type', name: 'BUILD_TYPE'],
                [$class: 'hudson.model.ChoiceParameterDefinition', choices: '4.1.12\n4.1.11\n4.1.10\n4.1.9\n4.1.8\n4.1.4\n3.5.5\n3.1.8\ncore\nOldVersion', description: 'Version Name', name: 'VERSION_NAME'],
                [$class: 'hudson.model.ChoiceParameterDefinition', choices: 'origin/develop\norigin/hotfix/4.1.11\norigin/release/4.1.8\norigin/hotfix/4.1.7\norigin/hotfix/4.1.9\norigin/hotfix/4.1.10\norigin/release/4.1.6\norigin/release/4.1.5\norigin/hotfix/3.5.5', description: 'Git branch', name: 'GIT_BRANCH'],
                [$class: 'BooleanParameterDefinition', defaultValue: false, description: 'Enable Gradle debug?', name: 'DEBUG']
        ] // According to Jenkins Bug: https://issues.jenkins-ci.org/browse/JENKINS-26143
      }
    } catch (err) {
        userInput = [BUILD_FLAVOR: 'staging', BUILD_TYPE: 'Debug',  VERSION_NAME: '4.1.12', GIT_BRANCH: 'origin/develop'] // if an error is caught set these values
    }
}

您可以为supply parameters(供应参数)部分定义一个超时时间,如果超时时间已过且未插入任何条目,“catch”(捕获)部分将设置默认参数,并且构建将在无需任何用户干预的情况下启动。

还有另一个解决方案,它不需要安装额外的插件

stage ('Setup') {
    try {
        timeout(time: 1, unit: 'MINUTES') {
            userInput = input message: 'Configure build parameters:', ok: '', parameters: [
                [$class: 'hudson.model.ChoiceParameterDefinition', choices: 'staging\nproduction\nfree', description: 'Choose build flavor', name: 'BUILD_FLAVOR'],
                [$class: 'hudson.model.ChoiceParameterDefinition', choices: 'Debug\nRelease', description: 'Choose build type', name: 'BUILD_TYPE'],
                [$class: 'hudson.model.ChoiceParameterDefinition', choices: '4.1.12\n4.1.11\n4.1.10\n4.1.9\n4.1.8\n4.1.4\n3.5.5\n3.1.8\ncore\nOldVersion', description: 'Version Name', name: 'VERSION_NAME'],
                [$class: 'hudson.model.ChoiceParameterDefinition', choices: 'origin/develop\norigin/hotfix/4.1.11\norigin/release/4.1.8\norigin/hotfix/4.1.7\norigin/hotfix/4.1.9\norigin/hotfix/4.1.10\norigin/release/4.1.6\norigin/release/4.1.5\norigin/hotfix/3.5.5', description: 'Git branch', name: 'GIT_BRANCH'],
                [$class: 'BooleanParameterDefinition', defaultValue: false, description: 'Enable Gradle debug?', name: 'DEBUG']
        ] // According to Jenkins Bug: https://issues.jenkins-ci.org/browse/JENKINS-26143
      }
    } catch (err) {
        userInput = [BUILD_FLAVOR: 'staging', BUILD_TYPE: 'Debug',  VERSION_NAME: '4.1.12', GIT_BRANCH: 'origin/develop'] // if an error is caught set these values
    }
}

您可以为supply parameters(供应参数)部分定义一个超时,如果超时过期且未插入任何条目,“catch”(捕获)部分将设置默认参数,并且构建将在无需任何用户干预的情况下启动。

您应该先创建一个choice(选择)参数,然后使用它来选择和执行步骤


管道{
任何代理人
参数{
选择(
选项:“真\n假”,
描述:“我的操作是否应该运行?”,
名称:'操作')
}
舞台{
阶段(“阶段名称”){
什么时候{
表达式{params.ACTION=='true'}
}
台阶{
回声“我的行动跑!”
}
}
}
}

您应该首先创建一个choice参数,然后使用它来选择和单步执行


管道{
任何代理人
参数{
选择(
选项:“真\n假”,
描述:“我的操作是否应该运行?”,
名称:'操作')
}
舞台{
阶段(“阶段名称”){
什么时候{
表达式{params.ACTION=='true'}
}
台阶{
回声“我的行动跑!”
}
}
}
}

另一个选项是使用groovy elvis操作符检查参数ENV变量是否已设置。如果参数为空/未设置,则可以使用默认值

这不需要额外的插件,并且解决了在新分支的第一次构建中没有显示参数的问题

它也不会引入等待用户输入的暂停/延迟(与其他建议答案之一的情况一样)


另一个选项是使用groovy elvis操作符检查是否设置了参数ENV变量。如果参数为空/未设置,则可以使用默认值

这不需要额外的插件,并且解决了在新分支的第一次构建中没有显示参数的问题

它也不会引入等待用户输入的暂停/延迟(与其他建议答案之一的情况一样)


这应该可以通过浏览器UI、webhooks和RESTAPI实现。这些对你不起作用吗?@MattSchuchard:你能详细说明一下你的建议吗?我可以运行RESTAPI并处理webhook。我对你说的浏览器用户界面不太了解。这应该可以通过浏览器用户界面、webhooks和RESTAPI实现。这些对你不起作用吗?@MattSchuchard:你能详细说明一下你的建议吗?我可以运行RESTAPI并处理webhook。我对你说的浏览器用户界面不太了解。请注意:params.ACTION是一个选择参数(字符串)。如果您使用的是真/假参数(布尔值),那么您需要params.ACTION==True(不带引号)。请注意:params.ACTION是一个选择参数(字符串)。如果使用的是真/假参数(布尔值),则需要params.ACTION==True(不带引号)。