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

如何加载groovy文件并执行它

叶鸿振
2023-03-14

我将一个jenkinsfile放到项目的根目录中,并希望为我的管道引入一个groovy文件并执行它。我能够实现这一点的唯一方法是创建一个单独的项目并使用文件加载器。fromGit命令。我想做

def pipeline = load 'groovy-file-name.groovy'
pipeline.pipeline()

共有3个答案

应俊爽
2023-03-14

在执行load之前,您必须执行签出scm(或从SCM签出代码的其他方式)。

胡元忠
2023-03-14

如果您有加载多个groovy文件的管道,并且这些groovy文件之间也共享一些内容:

詹金斯档案。groovy公司

def modules = [:]
pipeline {
    agent any
    stages {
        stage('test') {
            steps {
                script{
                    modules.first = load "first.groovy"
                    modules.second = load "second.groovy"
                    modules.second.init(modules.first)
                    modules.first.test1()
                    modules.second.test2()
                }
            }
        }
    }
}

first.groovy

def test1(){
    //add code for this method
}
def test2(){
    //add code for this method
}
return this

第二groovy公司

import groovy.transform.Field
@Field private First = null

def init(first) {
    First = first
}
def test1(){
    //add code for this method
}
def test2(){
    First.test2()
}
return this
郑博厚
2023-03-14

如果从SCM加载了一个存储库中的Jenkinsfile和groovy文件,则必须执行以下操作:

实例Groovy公司

def exampleMethod() {
    //do something
}

def otherExampleMethod() {
    //do something else
}
return this

詹金斯档案

node {
    def rootDir = pwd()
    def exampleModule = load "${rootDir}@script/Example.Groovy "
    exampleModule.exampleMethod()
    exampleModule.otherExampleMethod()
}

 类似资料:
  • > 我正在尝试迭代文件夹中的文件。每个文件都有多个用换行符分隔的json字符串。一旦检索到json,就必须获取json的特定节点并将其发布到http服务器。 最初我想使用csv数据集配置,但我能够从文件中获得嵌套的json。在完成了一些jmeter的阅读教程之后,我终于使用JSR223创建了一个自定义脚本,该脚本读取文件并放入ctx,采样器将使用ctx发送数据。 以下是我到现在为止所做的。 nul

  • 问题内容: 我可以一次下载一个文件: 我可以这样尝试: 有没有不使用或作弊的并行化方法? 鉴于我现在必须诉诸“作弊”,是否是下载数据的正确方法? 使用上述方法时,它使用的是多线程而不是多核的,是否正常?有没有办法使它成为多核而不是多线程? 问题答案: 您可以使用线程池并行下载文件: 您还可以使用以下命令在一个线程中一次下载多个文件: 这里定义在哪里。

  • 问题内容: 我在src / test / resources / feature /中有以下功能文件(单独的功能文件),我想并行运行它们。就像:一个功能文件必须在chrome中执行,而另一个功能文件必须在firefox中执行,如@Tags名称所述。 有人可以帮助我实现这一点吗?我使用的是cumul-java 1.2.2版本,并且使用AbstractTestNGCucumberTests作为运行程序

  • 问题内容: 我需要在ajax加载后添加一个类。首先,我给一些元素提供一个“就绪”类,该类可以启动CSS过渡。单击链接li#menu- item-318a时,它将删除ready类,该类将反转CSS转换,然后加载新的html文档。在Aja加载中,我再次想将ready类添加到Ajax调用插入的相同元素中。 下面的代码有一个回调,可以添加ready类,它可以工作。但是,当Ajax加载其集合时,Ready类

  • 问题内容: 我们在某些工作中动态创建并行步骤。感谢这个线程,我找到了如何动态创建带有并行步骤中使用的参数的地图。 但是,现在我想重用用于创建这些并行步骤的部分代码。为此,我觉得我需要关闭这些内容。 但是,currying似乎无法正常工作。引用闭包内部的循环变量(valueCopy)做正确的事,但是currying并没有达到我的期望。 我做错什么了吗?是否还不支持?有没有解决方法?这可能是詹金斯管道

  • 问题内容: 我有一个页面正在从第三方(新闻提要)加载脚本。脚本的url在加载时动态分配(根据第三方代码)。 然后从中加载的脚本创建并加载具有新闻提要中各种内容的元素,并以漂亮的格式等将元素加载到其中(传入ID“ div1287”,以便脚本知道在何处加载内容)。 唯一的问题是,它只会加载一次。我希望它每n秒重新加载一次(从而显示新内容)。 所以,我想我会尝试一下: div清除后,我得到警报,但是没有