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

将外部Groovy文件与Jenkins管道一起使用

通寂离
2023-03-14

关于Jenkins管道和Groovy方法,我这里有两个问题。首先,我有多个共享公共方法的构建,所以我认为最好将所有这些都放在一个类中,然后为每个构建导入文件。

Groovy脚本中的一段代码如下所示

import groovy.json.JsonSlurperClassic;
import groovy.json.JsonSlurper;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.HashSet;
import java.util.Set;
import java.io.Serializable;

Map get_var() {
      def gradleVars = readFile "${env.WORKSPACE}/gradle-client/gradle.properties"
      Properties properties = new Properties();
      InputStream is = new ByteArrayInputStream(gradleVars.getBytes());
      properties.load(is)

      def sdk_version = "SDKVersion"
      def SDK_VERSION = properties."$sdk_version"

    return [sdk_version: "$SDK_VERSION"}
}

在我的管道脚本中,我有

def groovyMethod = load("release_pipeline.groovy")
// Call method
groovyMethod.getVar()

我遇到的第一个问题是如何在我的方法中使用${env. WORKSPACE},其次,当我收到错误时,如何在我的脚本中使用readFile

哈德逊。远程处理。ProxyException:groovy。lang.MissingMethodException:没有方法的签名:Helpers。readFile()

我真的是新来的Groovy和Java。

共有1个答案

姜磊
2023-03-14

请尝试以下方法:

def getVar() {
  def properties = new Properties()
  File propertiesFile = new File("${System.getenv['WORKSPACE']}/gradle-client/gradle.properties")
  properties.load(propertiesFile.newDataInputStream())


  return [sdk_version: properties.SDKVersion]

}

可能看起来,您有不同的方法名称get_var(),并且您正在尝试使用getVar()

我不确定上面的脚本中的错误来自哪里

非常棒。lang.MissingMethodException:没有方法的签名:Helpers。readFile()

编辑:基于OP注释

请看看这是否有帮助:

def workspace = Thread.currentThread().executable.workspace.toString()
 类似资料:
  • 我对Jenkins pipeline非常陌生,我正在Groovy中构建一个小型共享库<在这种情况下,我试图提出一些单元测试,然后我必须模拟管道对象。 基本上,我有一个Groovy类,其中包含一个方法,该方法使用凭据执行一些操作: 因此,当谈到这个方法的单元测试时,我创建了一个PipelineMock Groovy类来(尝试)用凭据和用户名密码模拟

  • 我有以下Groovy脚本作为Jenkins管道的一部分 权限。棒极了 作为Jenkins管道的一部分,我将这个文件加载到另一个Groovy文件中,并调用get_job_permissions作为参数通过其中一个枚举。 pipeline.groovy Jenkins在这方面失败,并出现以下错误(我已经验证了在本例中'Script3'是使用enum参数获取_job_权限的调用)。 我知道脚本加载和调用

  • 首先,我是新来的Java,Groovy和Jenkins,所以请对我有耐心;) 我正在准备一个带有管道支持的Jenkins服务器,以备将来在构建环境中使用。我们使用一种特殊的内部脚本语言,为此我必须用java编写一个包装器。只有在Groovy中才能完成这项工作,我们必须使用这种特殊的语言。 我尝试过很多方法将java库引用到这个jenkins项目中,但都没有成功。我主要是在https://githu

  • 根据Andrew Bayer的说法,您不应该向其他人注入声明性管道。将来可能会有人支持它,但可能不会。 我目前正在尝试在管道中启动一个管道,但我想知道我需要做什么才能使它工作。jenkins网页上的文档说明,如果新作业或管道与第一个作业或管道位于同一文件夹中,则可以从直接名称或绝对路径调用它。我已经尝试了所有不同的方法,目前我正在尝试一个文件的绝对路径,我刚刚检查过它一秒钟前存在,但它说它不存在。

  • 问题内容: 我们如何在Jenkins管道的Groovy脚本中传递参数? 我已经写了xyz.groovy,它可以很好地加载和执行,但是我想在其中传递参数而不是重复工作。我尝试传递负载’../xyz.groovy’param1param2但没有运气。 xyz.groovy 问题答案: 您是否在用参数调用的Groovy中创建方法?

  • 我正在尝试在我的Jenkins管道中使用groovy-postbuild-plugin,我可以让它显示纯文本,但我不能使用它的参数。 所以这是有效的: 但是这个没有: 这是我得到的错误: