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

Jenkins Job DSL:如何从文件中读取管道DSL脚本?

向杜吟
2023-03-14

我想通过JobDSL生成基于管道插件的作业,该作业包含在Jenkins签出的git存储库中。

然而,我认为在作业DSL脚本中使用引用字符串的管道脚本不是很好。因此,我想将它们读入一个字符串,并将其传递给script()函数:

definition {
   cps {
      sandbox()
         script( new File('Pipeline.groovy').text )
      }
   }
}

我必须把Pipeline.groovy放在哪里才能工作?我试着把它放在我的DSL脚本旁边,也放在我的DSL源代码的资源/文件夹中。但是Jenkins总是抛出一个“未找到文件”。

共有2个答案

司马英才
2023-03-14

参考作业DSL管道作业:https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob,并在其上进行黑客攻击http://job-dsl.herokuapp.com/以查看生成的配置。

下面的作业DSL创建了一个管道作业,它从Jenkinsfile中提取实际的作业:

pipelineJob('DSL_Pipeline') {

  def repo = 'https://github.com/path/to/your/repo.git'

  triggers {
    scm('H/5 * * * *')
  }
  description("Pipeline for $repo")

  definition {
    cpsScm {
      scm {
        git {
          remote { url(repo) }
          branches('master', '**/feature*')
          scriptPath('misc/Jenkinsfile.v2')
          extensions { }  // required as otherwise it may try to tag the repo, which you may not want
        }

        // the single line below also works, but it
        // only covers the 'master' branch and may not give you
        // enough control.
        // git(repo, 'master', { node -> node / 'extensions' << '' } )
      }
    }
  }
}

您/您的Jenkins管理员可能希望将Jenkins工作创建与实际工作定义分开。这对我来说似乎很明智……将脚本集中在一个Jenkins DSL repo中创建Jenkins作业并不是一个坏主意。

彭俊智
2023-03-14

你试过< code > readFileFromWorkspace >吗?它应该能够找到你从git中取出的文件。

 类似资料:
  • 问题内容: 我正在尝试编写管道脚本以与Jenkins 2.0一起使用来复制我们现有的构建。这个原始版本使用envInject插件读取Java属性文件,但是我看不到如何从管道Groovy脚本中执行此操作。我已经用Google搜索并找到了以下内容,但是它不起作用(FileNotFoundException): 谢谢! 问题答案: 我只是昨天和今天为此而战。我希望此功能更容易找到。 抓住“ Pipeli

  • 我有一个简单的Jenkinsfile,我想在其中从工作区加载一些数据。我正在使用管道插件来利用存储库中的Jenkinsfile。构建被外包给匹配的Jenkins代理。当我尝试使用“readFile”时,我收到以下消息: Java语言io。FileNotFoundException:/path/to/jenkins/workspace/XXXXX/project/data。json(无此类文件或目录

  • 问题内容: 我知道如何读取字节,但是如何在Python中读取位? 我只需要从二进制文件中读取5位(而不是8位[1字节]) 有什么想法或方法吗? 问题答案: Python一次只能读取一个字节。您需要读完整的字节,然后从该字节中提取所需的值,例如 或者,如果您想要5个最低有效位,而不是5个最高有效位: 一些其他有用的位操作信息可以在这里找到:http : //wiki.python.org/moin/

  • 问题内容: 我正在尝试从Jenkins管道中的文件运行Powershell脚本。 我已经阅读了本文,该文章显示了如何运行输入到管道中的Powershell脚本,但是我无法从文件中运行脚本。 我努力了: 和各种组合,但无法弄清楚该如何做。 问题答案: 很快就弄清楚了,该行应该已经阅读

  • 我们在jenkins中配置了两个Kubernetes云 null

  • 问题内容: 如何从Java中classpath读取文本文件? 问题答案: 在类路径上的目录中,从同一类加载器加载的类中,你应该能够使用以下任一种: 如果这些都不起作用,则表明还有其他问题。 因此,例如,使用以下代码: 而这个目录结构: 然后(使用Linux机器上的Unix路径分隔符): 结果: