在init.groovy.d脚本中使用管道初始化Jenkins 2.0

时间:2016-05-11 08:34:53

标签: jenkins groovy jenkins-pipeline jenkins-workflow jenkins-job-dsl

对于自动化,我想用管道作业初始化Jenkins 2.0实例。我想创建一个Groovy脚本,在启动时复制到#!/usr/bin/env node var express = require('/usr/lib/node_modules/express'); var app = express(); var site = require('./routes/site'); var samba = require('./routes/samba'); var inConsole = require('./routes/inConsole'); app.configure(function() { app.use(express.json()); app.use(express.urlencoded()); app.use(app.router); app.use(express.errorHandler({ dumpExceptions: true, showStack: true})); }); // Site Routes app.get('/', site.index); // Samba Routes app.get('/samba', samba.list); app.post('/samba', samba.post); // inConsole Routes app.post('/inConsole', inConsole.post); // Start server var server = app.listen(2000, function() { var host = server.address().address var port = server.address().port console.log("API Server listening at http://%s:%s", host, port) }); 文件夹。该脚本应创建一个Jenkins 2.0 Pipeline作业,用于处理来自SCM的Jenkins文件。

我找不到2.0管道类的相关Javadoc或者如何执行此操作的示例。

以前,使用Job DSL创建管道,我使用Groovy脚本创建一个/usr/share/jenkins/ref/init.groovy.d/构建器FreeStyleProject。那个工作就是Job DSL种子工作。

一种选择是使用init脚本创建Job DSL种子作业以创建Jenkins 2.0管道。它似乎不必要地复杂。

我正在试验这个回购:https://github.com/martinmosegaard/vigilant-sniffle

2 个答案:

答案 0 :(得分:10)

使用Job DSL 1.47(即将发布),您可以直接从init脚本使用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

答案 1 :(得分:3)

如果您只需要创建一个简单的管道作业,则可以使用Jenkins API。但是这在创建一个简单的工作时才真正有效,对于复杂的设置,你需要一些像Job DSL这样的抽象。

从这里开始:http://javadoc.jenkins-ci.org/jenkins/model/Jenkins.html#createProject(java.lang.Class,%20java.lang.String)

示例:

import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.job.WorkflowJob

WorkflowJob job = Jenkins.instance.createProject(WorkflowJob, 'my-pipeline')

然后你需要填充这份工作,例如设置流程定义。

或者您可以等待System Config DSL Plugin准备就绪。但它尚未发布,我不确定它是否可以创造就业机会。