Jenkins 如何为通过参数化触发器插件触发的作业中的发布版本使用一组不同的参数

Jenkins 如何为通过参数化触发器插件触发的作业中的发布版本使用一组不同的参数,jenkins,jenkins-plugins,jenkins-workflow,Jenkins,Jenkins Plugins,Jenkins Workflow,我有一组运行shell脚本的作业。这些脚本的参数可以通过构建中定义的一些选项来选择。 现在我想使用release插件来防止人们意外地从一组“release only”参数中进行选择 所以我基本上需要的是一个构建,有两组不同的参数选择 为了实现这一点,我对作业进行了如下配置: Master Job normal build - choiceParameter name:TEST values:"normal" release build - choiceParameter name:TEST va

我有一组运行shell脚本的作业。这些脚本的参数可以通过构建中定义的一些选项来选择。 现在我想使用release插件来防止人们意外地从一组“release only”参数中进行选择

所以我基本上需要的是一个构建,有两组不同的参数选择

为了实现这一点,我对作业进行了如下配置:

Master Job
normal build
- choiceParameter name:TEST values:"normal"
release build
- choiceParameter name:TEST values:"release"

Child Job
normal build
- choiceParameter name:TEST values:"normal"
release build
- choiceParameter name:TEST values:"release"
MasterJob通过“参数化构建”插件触发ChildJob

当我执行一个正常的构建时,一切正常。 但当我在MasterJob上触发发布构建时,我得到以下异常:

ERROR: Build step failed with exception
java.lang.IllegalArgumentException: Illegal choice for parameter TEST: release
    at hudson.model.ChoiceParameterDefinition.checkValue(ChoiceParameterDefinition.java:75)
    at hudson.model.ChoiceParameterDefinition.createValue(ChoiceParameterDefinition.java:87)
    at hudson.model.ChoiceParameterDefinition.createValue(ChoiceParameterDefinition.java:19)
    at hudson.plugins.parameterizedtrigger.ProjectSpecificParameterValuesActionTransform.convertToDefinedType(ProjectSpecificParameterValuesActionTransform.java:83)
    at hudson.plugins.parameterizedtrigger.ProjectSpecificParameterValuesActionTransform.transformParametersAction(ProjectSpecificParameterValuesActionTransform.java:34)
    at hudson.plugins.parameterizedtrigger.ProjectSpecificParametersActionFactory.getProjectSpecificBuildActions(ProjectSpecificParametersActionFactory.java:32)
    at hudson.plugins.parameterizedtrigger.BuildTriggerConfig.getBuildActions(BuildTriggerConfig.java:290)
    at hudson.plugins.parameterizedtrigger.BuildTriggerConfig.perform2(BuildTriggerConfig.java:336)
    at hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig.perform2(BlockableBuildTriggerConfig.java:57)
    at hudson.plugins.parameterizedtrigger.TriggerBuilder.perform(TriggerBuilder.java:85)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:761)
    at hudson.model.Build$BuildExecution.build(Build.java:203)
    at hudson.model.Build$BuildExecution.doRun(Build.java:160)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:536)
    at hudson.model.Run.execute(Run.java:1741)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:374)
Build step 'Trigger/call builds on other projects' marked build as failure
Finished: FAILURE
修复此错误很容易。我只需要在正常构建中的选项中添加值“release”。但这破坏了这种设置的全部意图


有没有办法让这种设置正常工作?

如果您想让人们限制在生产框上运行任意脚本,可以使用节点标签插件


您可以将作业配置为选择哪个节点(框/机器)用户可以运行作业,这样您可以限制用户在prod env上运行作业。

i优化问题您找到解决方案了吗?