沿Jenkins管道传递参数

时间:2019-08-12 15:22:33

标签: jenkins jenkins-pipeline

我无法让Jenkins在管道中传递字符串参数。

运行管道时,我输入$ServiceName的字符串值,该作业继续进行,但是它没有将此参数传递给管道中的第一个作业(NEWSERVICE-添加新项)。在'build'阶段的jenkins文件中,我尝试了params.ServiceName$params.ServiceNameenv.ServiceName$env.ServiceName$env:ServiceName。没有运气。

我需要将参数传递给NEWSERVICE作业中的Powershell生成过程(当前仅使用$env:ServiceName回显参数,但始终为空)。任何帮助将不胜感激。

pipeline {
    agent any   
    parameters{
        string(name:  'ServiceName',
            defaultValue: '',
            description: '',)
    }
    stages {                

        stage('Add new Service'){
            steps {

                build(job: "NEWSERVICE - Add New", parameters: [string(name: 'ServiceName', value: params.ServiceName)])

                }
            }
    }
}

2 个答案:

答案 0 :(得分:0)

在管道中,您需要像这样传递字符串参数:

        parameters: [
            [$class: 'StringParameterValue', name: 'ServiceName', value: ServiceName]
        ], 

请参阅此文件以了解在从Jenkinsfile调用作业时传递的不同类型的变量。 https://jenkins.io/doc/pipeline/steps/pipeline-build-step/

答案 1 :(得分:0)

如果您想在 powershell 脚本中使用 Jenkins 环境变量 - 我一直在这样做! - 必须首先在 Jenkins 中设置 env var。换句话说, env.myVar 在 Jenkins 上下文中将在 PowerShell 上下文中显示为 $env:myVar。但是您需要将其设置为 env var,local Jenkins 变量对子脚本不可见(除非作为参数传入)。我在这里有一篇详细的文章:https://stackoverflow.com/a/62538778/556078