jenkins作业dsl插件问题,其中没有任何内部作业可以访问外部作业
我正在使用jenkins jobDsl,如下所示:jenkins作业dsl插件问题,其中没有任何内部作业可以访问外部作业,jenkins,groovy,jenkins-pipeline,jenkins-job-dsl,Jenkins,Groovy,Jenkins Pipeline,Jenkins Job Dsl,我正在使用jenkins jobDsl,如下所示: #!groovy node('master') { stage('Prepare') { deleteDir() checkout scm } stage('Provision Jobs') { jobDsl(targets: ['jenkins/commons.groovy', 'folderA/jenkins/jobA.groovy'].join('\n'), removedJobActi
#!groovy
node('master') {
stage('Prepare') {
deleteDir()
checkout scm
}
stage('Provision Jobs') {
jobDsl(targets: ['jenkins/commons.groovy', 'folderA/jenkins/jobA.groovy'].join('\n'),
removedJobAction: 'DELETE',
removedViewAction: 'DELETE',
sandbox: false)
}
}
我想从jobA.groovy
中使用commons.groovy
中定义的函数
目前,jobA.groovy
无法访问在commons.groovy
上定义的函数,我如何允许这种行为
附件:
- jobA.groovy:
- common.groovy:
test_job(“param1”、“param2”)
,而没有任何问题,我目前得到:
ERROR: (jobA.groovy, line 9) No signature of method: test_job() is applicable for argument types: (java.lang.String, java.lang.String)
JobDSL创建作业。然后在运行时,您希望您的作业调用您的函数。该函数必须通过共享库导入 创建共享库 以下是一个示例: 最重要的一点是,您需要创建一个vars/文件夹,用于定义可以从管道调用的函数。将库托管在其自己的repo或孤立分支上 导入共享库 在Jenkins中导入库。从“管理”页面,转到“配置系统”部分的“全局管道库”,添加一个新库,其名称由您选择,即库名称、默认版本主控、现代scm git 第一次运行jobDSL作业,然后转到进程内脚本批准页面并批准所有内容 使用共享库 要在作业中导入库,必须在文件顶部的shebang后面包含@library('name-of-your-lib')语句_ 还有一个类似的语句,“library'name of your lib'”。这一个对于“调试和修复”共享库很有用,因为当您点击重播按钮时,您将看到管道中使用的共享库文件
最后,如果您只想创建作业模板,我建议您尝试获取我共享的这个共享库的功能,它有助于创建声明性模板,并解决您在使用jobdsl和共享管道时遇到的问题和限制,您需要导入它。该语句的显示方式取决于您的代码组织。@MattSchuchard代码组织如上所述,但我的问题是,我认为一个模块与另一个模块之间不存在可见性,因为它们是使用
jobDsl
加载的,这就是为什么我不知道如何使用导入
。如果您有一个类似的例子,我可以检查一下,我真的很有兴趣看看它这里有一个在jenkins dsl中加载共享库的标准方法:
def test_job(String team, String submodule) {
pipelineJob("${team}/${submodule}/test_job") {
displayName("Test Job")
description("This is a Continuous Integration job for testing")
properties {
githubProjectUrl("githubUrl")
}
definition {
cpsScm {
scm {
git {
remote {
url('githubUrl')
credentials('credentials')
refspec('+refs/pull/*:refs/remotes/origin/pr/*')
}
branch('${sha1}')
scriptPath("scriptPath")
}
}
}
}
}
}
ERROR: (jobA.groovy, line 9) No signature of method: test_job() is applicable for argument types: (java.lang.String, java.lang.String)