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

如何在groovy类(而不是Jenkinsfile)中访问管道DSL?

秦景福
2023-03-14

我想在groovy类中访问“bat”或“echo”之类的管道步骤,但我并不真正了解“script”变量的用法。这是一个只有这个类的非常小的存储库,我在groovy测试中调用这个类(spock测试)。有人能告诉我“script”变量的正确用法以及调用应该是什么样子吗?

软件安装。groovy公司

class SoftwareInstallation implements Serializable {
  Script script

def runInstallationJar(repoDir){
    def exitValues=[]
    def configFiles=['software1.xml', 'software2.xml']
    configFiles.each {
        def status = script.bat returnStatus: true, script: " java -jar ${repoDir}\\resources\\software.jar --inputxml=${repoDir}\\resources\\${it}"
        script.echo "Return status : ${status}"
        if (status){
            log 'success'
        }else{
            log 'failure'
        }
        exitValues.add(status)
    }
    return exitValues
}

}

ps-我有一个Jenkinsfile,但它只包含一个gradle调用来运行测试。

共有1个答案

厉永宁
2023-03-14

本文中有一个关于使用共享库进行扩展的示例。

在那里,您可以找到以下代码:

package org.foo
class Utilities implements Serializable {
  def steps
  Utilities(steps) {this.steps = steps}
  def mvn(args) {
    steps.sh "${steps.tool 'Maven'}/bin/mvn -o ${args}"
  }
}
@Library('utils') import org.foo.Utilities
def utils = new Utilities(this)
node {
  utils.mvn 'clean package'
}

无论是在库中还是在脚本中定义类,都无关紧要。方法相同:

class Utilities implements Serializable {
  def steps
  Utilities(steps) {this.steps = steps}
  def mvn(args) {
    steps.sh "${steps.tool 'Maven'}/bin/mvn -o ${args}"
  }
}
def utils = new Utilities(this)
node {
  utils.mvn 'clean package'
}
 类似资料:
  • 我目前正在尝试从jenkins管道中的文件加载一个自定义groovy类。我尝试了这里提出的解决方案: 如何在Jenkins管道中导入类文件? 作为... JenkinsPipelineUtilityClass.groovy 詹金斯档案 并尝试同样使用GroovyClassLoader(再次使用上述类) 詹金斯档案 我在这两方面都遇到了同样的错误: 我已经检查了正在进行的脚本批准,里面什么都没有,我

  • 问题内容: 使用Jenkins 2.x中 的Pipeline插件,如何从一个步骤中访问在阶段或节点级别某个位置定义的Groovy变量? 简单的例子: 在Jenkins输出页面上给出以下内容: 可以看到,在该步骤中将打印一个空字符串。 解决方法是通过以下方式在环境范围内定义变量 并通过打印 但是,这种滥用会破坏此任务的环境范围。 问题答案: 要使用可模板化的字符串(将变量替换为字符串),请使用双引号

  • 问题内容: 在jenkinsfile,我已经通过指定的文件夹名 SparseCheckoutPaths 我想结帐。但是我却得到了整个分支结帐。 问题答案: 这是我自己的问题的答案。关于它如何工作的一些背景知识,有一个名为 sparsecheckout的 git客户端标志/配置,负责这种签出。此外,还需要一个 稀疏签出的 命名文件。 我的问题是 Jenkinsfile 的语法,正确的语法如下: 有关

  • 我正在尝试将参数传递给BuffereImage。getSubImage()java方法: 在groovy中,我有以下代码: 在上面的代码片段中,传递给的似乎是,而不是基元类型。因此,我得到以下错误: groovy.lang.方法异常:没有方法签名:java.awt.image.BufferedImage.getSubImage()适用于参数类型:(java.lang.整数,java.lang.整数

  • 我已经在Jenkins上创建了一个基本的声明性管道。当我运行构建时,它会抛出以下错误 Jenkins服务器使用最新版本的默认插件设置为默认。Jenkinsfile如下所示 当Jenkins读取Jenkinsfile时,看起来块失败了,这在Jenkinsfile看起来很混乱。

  • 问题内容: 如何在JavaScript或jQuery中访问PHP变量?我要写吗 我知道我可以在cookie中存储一些变量,并通过cookie访问这些值,但是cookie中的值是相对稳定的值。而且,有一个限制,您不能在cookie中存储许多值,并且该方法不是很方便。有更好的方法吗? 问题答案: 您的示例展示了将PHP变量传递给JavaScript的最简单方法。您还可以将json_encode用于数组