groovy 脚本中的 Jenkins 变量

Jenkins variable in groovy script

我想在 jenkins 脚本调用的 groovy 文件中使用“$WORSKPACE”变量。但是在 SO 上找到的所有解决方案都失败了:

// KO : Wks = build.getEnvironment(listener).get('WORKSPACE')
// KO : Wks = "${WORKSPACE}"
/* KO :
def thr = Thread.currentThread()
def build = thr?.executable
def envVarsMap = build.parent.builds[0].properties.get("WORKSPACE")
*/

// KO : def build = this.getProperty('binding').getVariable('build')
// KO : Wks = "%WORKSPACE%"

我收到的消息: 脚本不允许使用方法 groovy.lang.GroovyObject setProperty java.lang.String java.lang.Object (JenkinsHelper.name)。管理员可以决定是批准还是拒绝此签名。

是否知道要设置允许 Jenkins 脚本运行的代码或选项?

我的示例案例:

文件 JenkinsHelper.groovy :

    class JenkinsHelper {
     def init(String sln) { 
      Wks = "%WORKSPACE%"
     }
    }
return new JenkinsHelper();

从詹金斯脚本调用:

def helper = load 'C:/.../test.groovy'
helper.init("Mon SLN")

谢谢:)

您应该使用 groovy 风格的环境变量格式,而不是 Windows 风格的格式:

class JenkinsHelper {
 def init(String sln) { 
  Wks = "${WORSKPACE}"
 }
}

这是由 Jenkins In-process Script Approval 引起的,作为对可能执行恶意脚本的保护。

如果您是管理员,请在 Manage Jenkins > Configure System > Global Pipeline 中注册您的管道代码图书馆 来避免这种情况。

参考文献:

  1. https://jenkins.io/doc/book/pipeline/shared-libraries/#global-shared-libraries - 详细介绍编写库。
  2. https://jenkins.io/doc/book/managing/script-approval