如何在Jenkins Pipeline中向PowerShell脚本传递参数

6
我该如何将变量VAR_A传递给Jenkins Pipeline中嵌入的PowerShell脚本?例如:
def VAR_A = 'test'
def mystatus = powershell(returnStatus: true, script: '''
                Write-Host "My result: '$VAR_A'" '''


withEnv(["VAR_A=test"]) {
def mystatus = powershell(returnStatus: true, script: '''
                Write-Host "My result: '$VAR_A'" '''
}

以下是两个结果的输出: 我的结果:'' 注:我更喜欢在Jenkinsfile中定义我的PowerShell脚本,以保持简单。


2
尝试这个:def mystatus = powershell(returnStatus: true, script: """ Write-Host "我的结果:" $VAR_A""" . 对于环境变量使用$env:VAR_A - dsaydon
这是正确的:$env:VAR_A。谢谢。 - NicolasW
1个回答

10

试一下:

node {
    powershell '''
        $VAR_A = 'test'
        Write-Host "My result: '$VAR_A'"
    '''
    withEnv(["VAR_A=envtest"]) {
        powershell '''
            Write-Host "My result is empty: '$VAR_A'"
            Write-Host "My env result: '$env:VAR_A'"
        '''
    }
}

输出结果为:

My result: 'test'

My result is empty: ''
My env result: 'envtest'

这是在Jenkins 2.73.1上测试过的。

请注意:

  • $VAR_A = 'test' 在第一个 powershell '''...''' 中声明。
  • env: 是访问环境变量所必需的(请参见Microsoft Docs中的about_Environment_Variables)。

同时,请注意变量名和等号之间不支持空格!withEnv(["VAR_A =envtest"])无法正常工作,而withEnv(["VAR_A= envtest"])可以正常工作。 - Moerwald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接