对于自动化,我想用管道作业初始化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
答案 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这样的抽象。
示例:
import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.job.WorkflowJob
WorkflowJob job = Jenkins.instance.createProject(WorkflowJob, 'my-pipeline')
然后你需要填充这份工作,例如设置流程定义。
或者您可以等待System Config DSL Plugin准备就绪。但它尚未发布,我不确定它是否可以创造就业机会。