【问题标题】:How to pass groovy variable to powershell in Jenkins pipeline?如何在 Jenkins 管道中将 groovy 变量传递给 powershell?
【发布时间】:2019-04-02 20:48:25
【问题描述】:

我正在尝试将 groovy 变量传递给 jenkins 管道内的 powershell 脚本,所有这些都在同一个地方,但我不知道如何。我尝试了不同的方法但没有成功。

我需要这个来获取批准 PIPELINE 步骤的人的姓名并将其传递给与 SQL SERVER 连接的 powershell

    stage('Step1'){
      steps{ 
        script{
         def approverDEV
         approverDEV = input id: 'test', message: 'Hello', ok: 'Proceed?', parameters: [choice(choices: 'apple\npear\norange', description: 'Select a fruit for this build', name: 'FRUIT'), string(defaultValue: '', description: '', name: 'myparam')], submitter: 'user1,user2,group1', submitterParameter: 'APPROVER'

          echo "This build was approved by: ${approverDEV['APPROVER']}"
        }
      }
    }

stage('Step2'){
  steps{ 
    script{
      powershell ('''
       # Example echo "${approverDEV['APPROVER']}"
       # BUT THIS DOESN'T WORK :(
      ''')
    }
  }
}

我希望输出是存储在变量 GROOVYapproverDEV 中的批准者的名称

【问题讨论】:

  • 未评估的单引号字符串。使用双引号:""" $a """
  • 但这些都不是问题的方式
  • 那么不清楚是什么问题...
  • @daggett 对不起,我的错,你有理由。谢谢!!!

标签: jenkins groovy


【解决方案1】:

Dagett 是正确的,在 powershell 脚本周围使用双引号,然后将评估变量:

script{
  powershell ("""
   # Example echo "${approverDEV['APPROVER']}"
   # BUT THIS DOESN'T WORK :(
  """)
}

在 Groovy 中使用三重双引号称为“多行 GString”。在 GString 中,变量将在创建实际字符串之前进行评估。

【讨论】:

  • 谢谢!你有理由。 @daggett。谢谢
  • 我还有另一个问题。如果我在执行作业时在内部声明一个变量 powshell,我会遇到下一个问题:没有这样的属性:类的参数:WorkflowScript script{ powershell (""" $Params = "Hello Word!" """) }
  • 不太确定,但听起来变量不在范围内。它是一个 Groovy 变量吗?否则,如果它打算作为一个 powershell 变量,你可能需要 escaoe。
猜你喜欢
  • 2018-01-24
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多