我想在Jenkins配置中使用脚本创建一个简单的管道作业。所以我的jenkins.yaml文件如下:
jobs:
- script: >
pipelineJob('Tag Repositories') {
definition {
cps {
def theScript = readFileFromWorkspace('git_tag_job.groovy')
script(theScript)
sandbox()
}
}
}
因此,我认为文件git_tag_job.groovy
可以位于Jenkins主目录中,但似乎readFileFromWorkspace正在查看尚未创建的作业的工作空间。结果,我收到NPE错误,因为工作空间为空。
现在的问题是,如何使用“配置为代码”插件以git_tag_job.groovy
的内容作为其脚本来添加此作业?
该脚本非常大,我无法将其放在Yaml文件中。
令我惊讶的是,如果我们无法从某个地方加载脚本,则此配置和readFileFromWorkspace都将无效,因为很少有带有单行脚本的管道作业,因此从文件加载是唯一可行的选择
我在这里错过了什么吗?还是有其他方法可以做到这一点?
答案 0 :(得分:1)
我知道这是一个老问题,但我遇到了完全相同的问题,因此以下是@xbmono 对任何在这里绊倒的人的评论的解决方案:
我选择将种子作业 dsl 脚本与 yaml 文件分开,但基本相同。
casc.yaml
...
jobs:
-file: /abs/path/to/seedjob.groovy
seedjob.groovy
theScript = new File('/abs/path/to/git_tag_job.groovy').getText("UTF-8")
pipelineJob('Tag Repositories') {
definition {
cps {
script(theScript)
sandbox()
}
}
}
答案 1 :(得分:0)
种子作业,无需设计工作空间。您的整个配置应“作为代码”进行管理并进行版本控制。如果您可以从URL,git标记等中加载作业脚本,