在 init.groovy.d 脚本中使用管道初始化 Jenkins 2.0
Initializing Jenkins 2.0 with pipeline in init.groovy.d script
为了自动化,我想用管道作业初始化 Jenkins 2.0 实例。我想创建一个 Groovy 脚本,在启动时将其复制到 /usr/share/jenkins/ref/init.groovy.d/
文件夹。该脚本应创建一个 Jenkins 2.0 管道作业,用于处理来自 SCM 的 Jenkinsfile。
我找不到 2.0 管道的相关 Javadoc 类 或如何执行此操作的示例。
之前,使用 Job DSL 创建管道时,我使用 Groovy 脚本创建了一个带有 ExecuteDslScripts
构建器的 FreeStyleProject
。该作业将成为作业 DSL 种子作业。
一种选择是使用初始化脚本创建作业 DSL 种子作业以创建 Jenkins 2.0 管道。它似乎不必要地复杂。
我正在这个 repo 中进行试验:https://github.com/martinmosegaard/vigilant-sniffle
如果您只需要创建一个简单的管道作业,您可以使用 Jenkins API。但这仅在创建一个简单的作业时才有效,对于复杂的设置,您需要一些抽象,例如作业 DSL。
示例:
import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.job.WorkflowJob
WorkflowJob job = Jenkins.instance.createProject(WorkflowJob, 'my-pipeline')
然后您需要填充作业,例如设置流定义。
或者您可以等待 System Config DSL Plugin 准备就绪。但是还没有发布,不知道能不能带动就业。
借助 Job DSL 1.47(即将发布),您可以直接从初始化脚本中使用 Job DSL API,无需创建种子作业。
import javaposse.jobdsl.dsl.DslScriptLoader
import javaposse.jobdsl.plugin.JenkinsJobManagement
def jobDslScript = new File('jobs.groovy')
def workspace = new File('.')
def jobManagement = new JenkinsJobManagement(System.out, [:], workspace)
new DslScriptLoader(jobManagement).runScript(jobDslScript.text)
详情见PR #837。
为了自动化,我想用管道作业初始化 Jenkins 2.0 实例。我想创建一个 Groovy 脚本,在启动时将其复制到 /usr/share/jenkins/ref/init.groovy.d/
文件夹。该脚本应创建一个 Jenkins 2.0 管道作业,用于处理来自 SCM 的 Jenkinsfile。
我找不到 2.0 管道的相关 Javadoc 类 或如何执行此操作的示例。
之前,使用 Job DSL 创建管道时,我使用 Groovy 脚本创建了一个带有 ExecuteDslScripts
构建器的 FreeStyleProject
。该作业将成为作业 DSL 种子作业。
一种选择是使用初始化脚本创建作业 DSL 种子作业以创建 Jenkins 2.0 管道。它似乎不必要地复杂。
我正在这个 repo 中进行试验:https://github.com/martinmosegaard/vigilant-sniffle
如果您只需要创建一个简单的管道作业,您可以使用 Jenkins API。但这仅在创建一个简单的作业时才有效,对于复杂的设置,您需要一些抽象,例如作业 DSL。
示例:
import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.job.WorkflowJob
WorkflowJob job = Jenkins.instance.createProject(WorkflowJob, 'my-pipeline')
然后您需要填充作业,例如设置流定义。
或者您可以等待 System Config DSL Plugin 准备就绪。但是还没有发布,不知道能不能带动就业。
借助 Job DSL 1.47(即将发布),您可以直接从初始化脚本中使用 Job DSL API,无需创建种子作业。
import javaposse.jobdsl.dsl.DslScriptLoader
import javaposse.jobdsl.plugin.JenkinsJobManagement
def jobDslScript = new File('jobs.groovy')
def workspace = new File('.')
def jobManagement = new JenkinsJobManagement(System.out, [:], workspace)
new DslScriptLoader(jobManagement).runScript(jobDslScript.text)
详情见PR #837。