如何通过配置即代码创建 jenkins pipelineJob?
How to create a jenkins pipelineJob via Configuration as code?
我想在我的 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 就没用了,因为很少有管道作业使用单行脚本,所以从文件加载是唯一的实用的选择。
我在这里遗漏了什么或者有其他方法可以做到这一点吗?
CasC 运行 在没有工作空间的情况下创建种子工作,这是设计使然。您的整个配置应该得到管理 "as code" 和版本控制。在你的情况下,可以从 URL、git 标签等加载作业脚本
我知道这是一个老问题,但我遇到了完全相同的问题,所以这里有一个解决方案,遵循@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()
}
}
}
我想在我的 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 就没用了,因为很少有管道作业使用单行脚本,所以从文件加载是唯一的实用的选择。
我在这里遗漏了什么或者有其他方法可以做到这一点吗?
CasC 运行 在没有工作空间的情况下创建种子工作,这是设计使然。您的整个配置应该得到管理 "as code" 和版本控制。在你的情况下,可以从 URL、git 标签等加载作业脚本
我知道这是一个老问题,但我遇到了完全相同的问题,所以这里有一个解决方案,遵循@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()
}
}
}