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

找不到从jenkinsfile加载的groovy脚本

何向荣
2023-03-14

目前,我有一个“包罗万象”的jenkinsfile,其中包含各种函数。为了在其他jenkinsfile中重用这些函数,我想将它们放在单独的groovy脚本中,并从jenkinsfile中加载它们。

scmHandler。groovy:

 #!groovy
 def handleCheckout() {
    if (env.gitlabMergeRequestId) {
       echo 'Merge request detected. Merging...'
    }
    ...
 }
 return this;

在jenkinsfile中,我执行以下操作:

<代码>。。。def scmHandler=负载(“测试/scmHandler.groovy”)scmHandler。handleCheckout()

我试图按照这里的说明进行操作,但jenkins不断抱怨没有这样的文件scmHandler。groovy我得到:

<代码>java。io。FileNotFoundException:d:\jenkins\workspace\myJenkinsJob\test\scmHandler。groovy

jenkinsfile和scmHandler。groovy位于要boild的项目的git repo中工作区的一个子目录中,并在master上正确检出:

    /var/lib/jenkins/jobs/myJenkinsJob/workspace@script/test/scmHandler.groovy

但是,我在jenkinsfile在节点{}内执行构建步骤的从节点上找不到它们。在那里我只看到jenkinsfile的旧版本,因为(分离的)签出步骤尚未执行。

如何正确访问handleCheckout。groovy?我错过了什么?

实际上,我发现这是一种在不使用单独库的情况下“包含”外部groovy文件的好方法。

共有1个答案

何峰
2023-03-14

加载scmHandler之前,请使用签出scm。groovy

checkout scm
def scmHandler = load ("test/scmHandler.groovy")
scmHandler.handleCheckout()
 类似资料:
  • 我想将一些常见的阶段移动到groovy文件中,以便其他Jenkinsfile可以使用这些阶段而不必复制它们。 我遇到了一些管道很好地加载groovy文件的问题,但当它使用groovy文件中的函数时,会弹出异常。 这是示例代码,我在jenkins配置中使用管道脚本,而不是在SCM的Jenkinsfile中使用。 和groovy文件。

  • 我有一个jenkins管道,它加载如下groovy实用程序脚本: 当我在主节点上执行管道时,一切都很好。在这种情况下,我可以在管道中使用类Utils中的方法。 当我试图在一个从系统中执行管道时,我的问题出现了。在这种情况下,上述负载会导致错误 Java语言io。IOException:java。io。FileNotFoundException:/var/lib/jenkins/utils/util

  • 我正在Activiti中加载一个具有以下结构的Groovy项目: 剧本groovy公司 傅。groovy公司 我的问题是我的脚本的导入语句:没有被Activiti解决。 我正在Spring容器中使用org运行Activiti。activiti:activiti spring:5.21.0。我的脚本使用org中的groovy脚本引擎进行评估。activiti引擎:5.21.0。 如何让Activit

  • 问题内容: 在我的jenkins管道文件中,我使用从.json文件读取构建配置。但是,这引入了需要 在进程内“脚本批准” 页面上批准的代码。通过GUI执行此操作时,效果很好。 但是,我还有一个脚本会自动设置我的jenkins机器,该机器将创建不需要任何GUI操作即可使用的现成机器。该脚本已使用jenkins脚本控制台批准从属启动命令。在脚本控制台中执行此操作的常规代码如下所示。 效果很好,但现在我

  • 我正在使用gradle和bash脚本在docker图像中构建几个android应用程序。该脚本由运行docker映像的jenkins触发。在bash脚本中,我收集有关构建成功的信息。我想将该信息传递给jenkinsfile的groovy脚本。我试图在docker容器中创建一个txt文件,但jenkinsfile中的groovy脚本找不到该文件。这是我的jenkinsfile的groovy脚本: 在

  • 例如,我有一个包含一些属性的Jenkinsfile 我想在groovy代码中解析上面的Jenkinsfile,以便访问一些属性值。 当我像这样使用GroovyShell时 我得到这个错误 我可能能够通过一些Groovy元编程绕过特定错误,但是,我不确定这是否是正确的方向。我的问题是,在Groovy代码中解析Jenkinsfile的最佳方法是什么?这就是Groovy DSL,我希望它更简单。