如何通过配置作为代码创建jenkins pipelineJob?

hlswsv35  于 12个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(154)

我想在我的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错误,因为工作区为空。
现在的问题是,我如何使用Configuration As Code插件添加此作业,并将git_tag_job.groovy的内容作为其脚本?
这个脚本很大,我不能把它放在Yaml文件中。
让我感到奇怪的是,如果我们不能从某个地方加载脚本,这个配置和readFileFromWorkspace就没用了,因为你很少有一个管道作业只有一行脚本,所以从文件加载是唯一可行的选择。
我错过了什么吗?或者有其他方法可以做到这一点吗?

d6kp6zgx

d6kp6zgx1#

我知道这是一个老问题,但我面临着完全相同的问题,所以这里有一个解决方案以下@xbmono的评论,任何人谁绊倒在这里:
我选择将seed job脚本从yaml文件中分离出来,但基本上是一样的。

  • casc.yaml*
...
jobs:
  -file: /abs/path/to/seedjob.groovy

字符串

  • 找工作很棒 *
theScript = new File('/abs/path/to/git_tag_job.groovy').getText("UTF-8")
pipelineJob('Tag Repositories') {
  definition {
    cps {
      script(theScript)
      sandbox()
    }
  }
}

u1ehiz5o

u1ehiz5o2#

通过CasC创建的seed job在没有工作空间的情况下运行,通过设计。您的整个配置应该“作为代码”进行管理并进行版本控制。在您的情况下,可以从URL,git标签等加载作业脚本。

相关问题