Skip to content

Commit 61be99a

Browse files
author
Johan Hjerling
committed
Initial commit
0 parents  commit 61be99a

File tree

7 files changed

+116
-0
lines changed

7 files changed

+116
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
.DS_Store
3+
*.log

.jsbeautifyrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"space_after_anon_function": true,
3+
"keep_array_indentation": true,
4+
"indent_size": 2
5+
}

.jshintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require('./lib/client');

lib/client.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
var request = require('request');
2+
3+
var baseUrl;
4+
5+
function Jenkins(url, requestOpts) {
6+
baseUrl = url;
7+
8+
requestOpts = requestOpts || {};
9+
requestOpts.json = requestOpts.json || true;
10+
requestOpts.timeout = requestOpts.timeout || 2000;
11+
requestOpts.proxy = requestOpts.proxy || false;
12+
13+
request = request.defaults(requestOpts);
14+
}
15+
16+
Jenkins.prototype.lastBuildInfo = function (job, cb) {
17+
var url = baseUrl + '/job/' + job + '/lastBuild/api/json';
18+
request.get(url, function (err, res, body) {
19+
if (err) return cb(err);
20+
21+
if (res.statusCode !== 200) {
22+
23+
var message;
24+
if (res.statusCode === 404) {
25+
message = 'Could not find job: ' + job;
26+
}
27+
return cb(new Error(message));
28+
}
29+
cb(null, body, res);
30+
});
31+
};
32+
33+
module.exports = Jenkins;

package.json

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
{
2+
"name": "node-jenkins",
3+
"version": "1.0.0",
4+
"description": "A node API for the Jenkins CI build server",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "test",
8+
"lint": "jshint ."
9+
},
10+
"directories": {
11+
"test": "test"
12+
},
13+
"repository": {
14+
"type": "git",
15+
"url": "git@github.com:hjerling/node-jenkins.git"
16+
},
17+
"keywords": [
18+
"Node",
19+
"Jenkins",
20+
"API"
21+
],
22+
"author": "ken.tucky@aj.ax",
23+
"license": "ISC",
24+
"bugs": {
25+
"url": "https://github.com/hjerling/node-jenkins/issues"
26+
},
27+
"homepage": "https://github.com/hjerling/node-jenkins",
28+
"private": true,
29+
"jshintConfig": {
30+
"quotmark": "single",
31+
"unused": true,
32+
"undef": true,
33+
"node": true,
34+
"globals": {
35+
"describe": false,
36+
"it": false,
37+
"before": false,
38+
"beforeEach": false,
39+
"after": false,
40+
"afterEach": false
41+
}
42+
},
43+
"dependencies": {
44+
"request": "^2.54.0"
45+
},
46+
"devDependencies": {
47+
"chai": "^2.1.2",
48+
"nock": "^1.2.1"
49+
}
50+
}

test/index.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
var assert = require('chai').assert;
2+
var nock = require('nock');
3+
var Jenkins = require('../index');
4+
5+
describe('Jenkins', function () {
6+
var jenkins;
7+
beforeEach(function () {
8+
nock.disableNetConnect();
9+
jenkins = new Jenkins('http://jenkins.org');
10+
});
11+
12+
describe('lastBuildInfo', function () {
13+
it('return json object for a build', function (done) {
14+
nock('http://jenkins.org').get('/job/job/lastBuild/api/json').reply(200, '{}');
15+
jenkins.lastBuildInfo('job', function (err, buildInfo) {
16+
assert.ifError(err);
17+
console.log(buildInfo);
18+
assert(Object, typeof buildInfo);
19+
done();
20+
});
21+
});
22+
});
23+
});

0 commit comments

Comments
 (0)