Jenkins 多分支管道失败,因为它在 Groovy 沙箱中运行
Jenkins Multibranch Pipeline fails because it runs in Groovy Sandbox
我的 Jenkins CI/CD 构建配置工作正常,在我上次拉取请求之前没有任何变化,我需要让它再次工作。
Multibranch Pipeline 从 BitBucket SCM 配置为 运行 a jenkinsfile
但现在失败并出现以下错误;
groovy.lang.MissingPropertyException: No such property: pipeline for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:130)
Script Security Plugin 已安装,进程中脚本批准没有列出要批准的内容。
Permissive Script Security Plugin 已安装,jenkins.xml
已修改为包含 运行 的 -Dpermissive-script-security.enabled=true
标志 .war
。
这些是以前基于
实施和工作的
作为测试,我创建了一个管道作业,它允许启用和禁用 Groovy 沙箱。这是使用我的管道脚本的以下简化版本配置的;
#!groovy
pipeline {
agent any
environment {
VERSION = "${env.MAJOR_VERSION}.${env.MINOR_VERSION}"
BUILD_LABEL = "MyProject ${env.VERSION} Build #${env.BUILD_NUMBER}"
BUILD_SOURCESDIRECTORY = "${WORKSPACE}\src"
}
options {
copyArtifactPermission('MyProject-Deploy')
buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5'))
}
parameters {
string (
defaultValue: '3',
description: 'MyProject Major Version',
name : 'MAJOR_VERSION')
string (
defaultValue: '7',
description: 'MyProject Minor Version',
name : 'MINOR_VERSION')
}
stages {
stage('Checkout Source') {
steps {
echo('checkout scm')
}
}
}
}
如果我启用了 Use Groovy Sandbox
和 运行 作业,我会得到同样的错误;
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] End of Pipeline
groovy.lang.MissingPropertyException: No such property: pipeline for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:130)
如果我禁用 Use Groovy Sandbox
管道脚本成功完成;
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in C:\Jenkins-Workspace\Pipeline-Test
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Checkout Source)
[Pipeline] echo
checkout scm
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
- 如何确保我有一个干净的 Jenkins 配置?
- 我应该尝试将 Jenkins 从 v2.121.3 降级吗?
尝试将 Script Security 插件从 v1.45 降级到 v1.44 并重新启动 Jenkins。
虽然我没有使用 Permissive Script Security 插件,但在更新插件后我自己 运行 进入了这个。
它已在脚本安全插件的 1.46 版中修复。
我的 Jenkins CI/CD 构建配置工作正常,在我上次拉取请求之前没有任何变化,我需要让它再次工作。
Multibranch Pipeline 从 BitBucket SCM 配置为 运行 a jenkinsfile
但现在失败并出现以下错误;
groovy.lang.MissingPropertyException: No such property: pipeline for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:130)
Script Security Plugin 已安装,进程中脚本批准没有列出要批准的内容。
Permissive Script Security Plugin 已安装,jenkins.xml
已修改为包含 运行 的 -Dpermissive-script-security.enabled=true
标志 .war
。
这些是以前基于
作为测试,我创建了一个管道作业,它允许启用和禁用 Groovy 沙箱。这是使用我的管道脚本的以下简化版本配置的;
#!groovy
pipeline {
agent any
environment {
VERSION = "${env.MAJOR_VERSION}.${env.MINOR_VERSION}"
BUILD_LABEL = "MyProject ${env.VERSION} Build #${env.BUILD_NUMBER}"
BUILD_SOURCESDIRECTORY = "${WORKSPACE}\src"
}
options {
copyArtifactPermission('MyProject-Deploy')
buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5'))
}
parameters {
string (
defaultValue: '3',
description: 'MyProject Major Version',
name : 'MAJOR_VERSION')
string (
defaultValue: '7',
description: 'MyProject Minor Version',
name : 'MINOR_VERSION')
}
stages {
stage('Checkout Source') {
steps {
echo('checkout scm')
}
}
}
}
如果我启用了 Use Groovy Sandbox
和 运行 作业,我会得到同样的错误;
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] End of Pipeline
groovy.lang.MissingPropertyException: No such property: pipeline for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:130)
如果我禁用 Use Groovy Sandbox
管道脚本成功完成;
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in C:\Jenkins-Workspace\Pipeline-Test
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Checkout Source)
[Pipeline] echo
checkout scm
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
- 如何确保我有一个干净的 Jenkins 配置?
- 我应该尝试将 Jenkins 从 v2.121.3 降级吗?
尝试将 Script Security 插件从 v1.45 降级到 v1.44 并重新启动 Jenkins。
虽然我没有使用 Permissive Script Security 插件,但在更新插件后我自己 运行 进入了这个。
它已在脚本安全插件的 1.46 版中修复。