我无法让Jenkins在管道中传递字符串参数。
运行管道时,我输入$ServiceName
的字符串值,该作业继续进行,但是它没有将此参数传递给管道中的第一个作业(NEWSERVICE-添加新项)。在'build'阶段的jenkins文件中,我尝试了params.ServiceName
,$params.ServiceName
,env.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)])
}
}
}
}
答案 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