如何通过配置即代码创建 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()
    }
  }
}