我有一個要求,我必須從 powershell 腳本加載 powershell 變數并將可變值存盤在 groovy jenkins 管道變數中,然后根據該變數的值使用它來編輯工件的名稱。
powershell 腳本:Variables.ps1(在實際場景中,它有多個變數,但這僅用于示例)
$Version = "22.4"
詹金斯檔案:
pipeline {
agent any
stages {
stage('TestPowershell') {
steps {
script {
def path = "${env.WORKSPACE}\\Power\\Variables.ps1"
echo path
def versionFromPowershell = powershell(returnStdout: true, script: " . '${path}'; return $Version;")
echo versionFromPowershell
}
}
}
}
}
使用此方法時出現錯誤,如下所示:
groovy.lang.MissingPropertyException: No such property: Version for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:251)
at org.kohsuke.groovy.sandbox.impl.Checker$7.call(Checker.java:353)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:357)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:26)
在 vannila powershell 中,腳本可以正常作業并且可以完成作業,但不確定為什么通過 jenkins 構建呼叫時相同的語法不起作用。任何幫助深表感謝!
謝謝
肖位元
uj5u.com熱心網友回復:
您不能在 Groovy 解釋器中插入 Powershell 變數。因此,scriptstep 方法的引數必須包含轉義的變數語法字符,以便該變數Version由 Powershell 而不是 Groovy 解釋:
def versionFromPowershell = powershell(returnStdout: true, script: " . '${path}'; \$Version;")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/527286.html
