jobb
v0.0.1
Published
API to generate CI job configuration (Jenkins)
Downloads
12
Readme
jobb
API to generate CI job configuration (Jenkins for now)
wip
TOC
Job
job().
example
.description('A optionnaly rendered to **markdown** description')
// Params
.param('PERF_URLS', { description: 'bla bla', value: 'default value' })
// JSON param
//
// Serialize the object into a JSON string in param default value
.json('JSON_CONFIG', 'Optional desc', { data: 'blah' })
// Timer config
//
// Usually a string following cron syntax
.timer('H/30 * * * *')
// Scripts
//
// Simply join() back into a multiline script
.script('echo Some script', 'echo Second line', 'echo etc')
// Script from file
//
// Define a job script using a local file
//
// Scripts must set the proper shebang line
.file('./test/fixtures/file.sh')
// Publishers
//
// They take raw input from workspace, optionally format them, and
// publish / generate the results somewhere.
.tap('*.tap', {
// All tap plugin possible options: failIfNoResults,
// outputTapToConsole etc.
})
.html('reports/*.html', {
// Options
})
// Trigger downstream
//
// Could be useful to set up a build pipeline, and chaining
// related job together
.downstream('mailer, statsd_send', {
// Used to pass parameters to downstream jobs
//
// Consider this as a default ?
properties: [
'UPSTREAM_BUILD_ID=$BUILD_ID',
'UPSTREAM_BUILD_NUMBER=$BUILD_NUMBER',
'UPSTREAM_BUILD_URL=$BUILD_URL',
'UPSTREAM_JOB_NAME=$JOB_NAME',
'UPSTREAM_DATA=$WORKSPACE/build.json',
'UPSTREAM_WORKSPACE=$WORKSPACE',
],
condition: 'ALWAYS'
});
console.error(example.inspect(2));Job name required.
try {
Job();
} catch(e) {
assert.equal(e.message, 'Job - Missing name');
done();
}job#json.
var job = Job('name');
var data = { bar: 'foo' };
var orig = { bar: 'foo' };
job.json('foo', data);
data.refcheck = true;
assert.deepEqual(job.json('foo'), {
name: 'foo',
desc: '',
data: orig
});
job.json('foo', 'desc', {});
assert.deepEqual(job.json('foo'), {
name: 'foo',
desc: 'desc',
data: {}
});
assert.ok(job.json('foo'));job#param.
var job = Job('name');
job.param('foo', {});
assert.deepEqual(job.param('foo'), {
name: 'foo',
description: '',
value: ''
});
assert.ok(job.param('foo'));job#script.
var job = Job('name');
job.script('echo 1;', 'echo 2;', 'echo 3;')
assert.equal(job.attributes.scripts[0], 'echo 1;\necho 2;\necho 3;\n');job#file.
var job = Job('name');
var file = path.join(fixtures, 'file.sh');
job.file(file);
assert.equal(job.attributes.scripts[0], read(file, 'utf8'));XML
Job#xml.
var xml = example.xml();
console.error(xml);
write(path.join(fixtures, 'test.xml'), xml);