如何使用脚本化管道方法在参数化构建中定义Label参数

时间:2019-04-02 09:09:15

标签: jenkins jenkins-pipeline

我正在尝试解决与该问题类似的问题:How to trigger a jenkins build on specific node using pipeline plugin?

在我的情况下,唯一的区别是我触发的作业是另一个脚本化管道作业。因此,建议的解决方案中的第二步不适用于我的情况:

  1. 安装节点和标签参数插件
  2. 在test_job的配置中,选择“此构建已参数化”并添加Label参数,并将参数名称设置为“ node”
  3. 在管道脚本中,使用代码(省略代码)

我的问题是如何定义:

org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterDefinition

脚本化管道参数化作业中的参数(不是通过GUI)。

我尝试过的事情:

properties([[$class         : 'RebuildSettings',
         autoRebuild    : false,
         rebuildDisabled: false],
         parameters([org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterDefinition(name: 'node')])])

2 个答案:

答案 0 :(得分:1)

生成参数化脚本化管道所需代码的最简单方法是:

  1. 转到管道摘要生成器
  2. 选择“属性:设置作业属性”
  3. 选中“此项目已参数化”
  4. 点击“添加参数”并选择“标签”
  5. 点击“生成管道脚本”

这给您:

service.insert(...)

但是对于我来说,这甚至是没有必要的。您需要做的是一个带有自定义名称的常规字符串参数,让我们说“节点”,然后执行以下操作:

legalPerson.setId(null);

答案 1 :(得分:0)

如果您的用例是要在特定的代理节点上执行通用管道,则可以使用“ Agent-Server-parameter”插件,通过该插件可以从下拉列表中添加agent-name参数作为您选择的代理,进入参数化管道(或称为“主”管道),并可以在管道脚本下使用代理名称参数(例如,在主参数化管道内调用sample.groovy)。 对于在管道中(没有GUI)定义的另一个参数(可能是字符串,布尔值,选择)。 请参见下面的示例示例,该示例是我从Master职位调用的。

#!groovy

/* This Groovy implementation is pipeline for a Sample project */

pipeline {
    agent { label params['agent-name'] } //agent can be configured for stage as well.
    options {
        timeout(time: 1, unit: 'HOURS', activity: true)  // abort if nothing happens 
    timestamps()  // prepend timestamps on the console output
    }//option

    parameters {
        booleanParam(
        name:        'BOO_PARAM1',    defaultValue: false,
        description: 'Enable Parameter 1')
        booleanParam(
        name:        'BOO_PARAM2', defaultValue: false,
        description: 'Enable Parameter 2')
        stringParam('MY_PATH', 'C:\SampleProject')
        choiceParam('RUN_JOBON_NODE', ['YES', 'NO'])
    }//parameters

    environment {
        /* Environment Variable definition and its use */
        BOO_PARAM1 = "${params.BOO_PARAM1}"
    }//environment
    stages {
        /* agent is single for complete pipeline but can be changed for stage */
        stage('Hello') {
           when {
                expression { return params.BOO_PARAM1}
            }
            print"Hello Stage on %agent-name%"
        } // Stage
    }//stages
}//pipeline 

注意:构建后阶段不包括在内。 “ agent-server-parameter”插件使您可以利用通用管道(通用阶段)在不同节点上执行。