当前位置: 首页 > 知识库问答 >
问题:

Jenkinsfile声明性管道-没有此类属性管道类

楚墨一
2023-03-14

我已经在Jenkins上创建了一个基本的声明性管道。当我运行构建时,它会抛出以下错误

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)
    at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:159)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
    at WorkflowScript.run(WorkflowScript:2)
    at ___cps.transform___(Native Method)

Jenkins服务器使用最新版本的默认插件设置为默认。Jenkinsfile如下所示

pipeline {
  agent any

   stages {
      stage('Sample Stage') {
          steps {
              sh '''
                ls
              '''
          }
      }
   }
}

当Jenkins读取Jenkinsfile时,看起来管道块失败了,这在Jenkinsfile看起来很混乱。

共有2个答案

董建茗
2023-03-14

发生这种情况是因为您在沙盒模式下运行脚本。管道等功能不会在那里发布。它在脚本安全插件的1.44版本之前就已经不在沙盒中了。

如果您希望运行单分支管道-只需在作业设置页面底部取消标记“使用Groovy Sandbox”。如果您使用的是多分支管道,那么您可能唯一的方法是降级插件。

轩辕季同
2023-03-14

似乎脚本安全插件1.45破坏了所有管道代码

 类似资料:
  • 我有以下管道: 不幸的是,这引发了: groovy.lang.MissingPropertyException:没有这样的属性:org.kohsuke.groovy上的类groovylang.Binding.getVariable(Binding.java:63)的master:org.jenkinsi.plugins.scriptsecurity.sandbox.groovy-SandboxIn

  • 问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建

  • 问题内容: 我的Jenkins 2.19.4使用管道:声明式代理程序API 1.0.1。如果您无法定义变量来分配读取的属性,那么如何使用readProperties? 例如,要捕获SVN版本号,我目前以脚本样式使用以下代码捕获它: 然后我可以使用: 由于以声明式定义svnProp是不合法的,因此如何使用readProperties? 问题答案: 您可以使用标记内的步骤来运行任意管道代码。 所以符合

  • 我有bash脚本构建,标记和推docker图像到存储库。这是我的Jenkinsfile的一部分; 如何使用podTemplate执行我的步骤。当我使用docker容器进行阶段构建BMF后端时,我有这些错误; 无法连接到UNIX:///var/run/Docker.sock上的Docker守护进程。docker守护进程正在运行吗? /home/jenkins/workspace/bmf/bmf-we

  • 问题内容: 我是詹金斯管道技术的新手。我正在定义一个声明性语法管道,但我不知道是否可以解决我的问题,因为我没有找到解决方案。 在此示例中,我需要将变量传递给ansible插件(在旧版本中,我使用ENV_VAR或使用inject plugin将其从文件中注入),该变量来自脚本。 这是我的理想情况(但由于环境{}而无法使用): 我尝试了其他方法来测试环境变量在其他文章中的工作方式,例如: 但“ ech

  • 我是詹金斯管道的新手;我正在定义一个声明性语法管道,我不知道我是否能解决我的问题,因为我没有找到解决方案。 我在其他帖子中尝试了其他方法来测试env var是如何工作的,例如: 但是“echo env.version”返回null。 还尝试了相同的示例:-version=-version=>props.file(并尝试注入它,但没有找到如何注入)