如何通过配置作为代码创建一个詹金斯管道作业?

时间:2019-01-30 05:59:10

标签: jenkins jenkins-plugins jenkins-job-dsl jcasc

我想在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都将无效,因为很少有带有单行脚本的管道作业,因此从文件加载是唯一可行的选择

我在这里错过了什么吗?还是有其他方法可以做到这一点?

2 个答案:

答案 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)

通过CasC创建

种子作业,无需设计工作空间。您的整个配置应“作为代码”进行管理并进行版本控制。如果您可以从URL,git标记等中加载作业脚本,