diff --git a/lib/detect.js b/lib/detect.js index 4a11e9be..ec9b71dc 100644 --- a/lib/detect.js +++ b/lib/detect.js @@ -10,10 +10,11 @@ var services = { wercker: require('./services/wercker'), jenkins: require('./services/jenkins'), semaphore: require('./services/semaphore'), + semaphore2x: require('./services/semaphore2x'), snap: require('./services/snap'), gitlab: require('./services/gitlab'), heroku: require('./services/heroku'), - teamcity: require('./services/teamcity') + teamcity: require('./services/teamcity'), } var detectProvider = function() { diff --git a/lib/services/semaphore.js b/lib/services/semaphore.js index 7ab48a05..91dcb149 100644 --- a/lib/services/semaphore.js +++ b/lib/services/semaphore.js @@ -1,12 +1,12 @@ module.exports = { detect: function() { - return !!process.env.SEMAPHORE + return !!process.env.SEMAPHORE && !!process.env.SEMAPHORE_REPO_SLUG }, configuration: function() { - console.log(' Semaphore CI Detected') + console.log(' Semaphore 1.x CI Detected') return { - service: 'semaphore', + service: 'semaphore1x', build: process.env.SEMAPHORE_BUILD_NUMBER + '.' + diff --git a/lib/services/semaphore2x.js b/lib/services/semaphore2x.js new file mode 100644 index 00000000..51e3931c --- /dev/null +++ b/lib/services/semaphore2x.js @@ -0,0 +1,15 @@ +module.exports = { + detect: function() { + return !!process.env.SEMAPHORE && !!process.env.SEMAPHORE_WORKFLOW_ID + }, + + configuration: function() { + console.log(' Semaphore 2.x CI Detected') + return { + service: 'semaphore2x', + branch: process.env.SEMAPHORE_GIT_BRANCH, + build: process.env.SEMAPHORE_WORKFLOW_ID, + commit: process.env.SEMAPHORE_GIT_SHA, + } + }, +} diff --git a/test/services/semaphore.test.js b/test/services/semaphore.test.js index ef322ba0..2b6f722f 100644 --- a/test/services/semaphore.test.js +++ b/test/services/semaphore.test.js @@ -1,11 +1,28 @@ var semaphore = require('../../lib/services/semaphore') describe('Semaphore CI Provider', function() { + var OLD_ENV = process.env + + beforeEach(function() { + process.env = Object.assign({}, OLD_ENV) + }) + + afterEach(function() { + process.env = Object.assign({}, OLD_ENV) + }) + it('can detect semaphore', function() { process.env.SEMAPHORE = 'true' + process.env.SEMAPHORE_REPO_SLUG = 'owner/repo' expect(semaphore.detect()).toBe(true) }) + it('does not detect semaphore 2.x', function() { + process.env.SEMAPHORE = 'true' + process.env.SEMAPHORE_WORKFLOW_ID = '65c9bb1c-aeb6-41f0-b8d9-6fa177241cdf' + expect(semaphore.detect()).toBe(false) + }) + it('can get semaphore env info', function() { process.env.SEMAPHORE_BUILD_NUMBER = '1234' process.env.REVISION = '5678' @@ -13,7 +30,7 @@ describe('Semaphore CI Provider', function() { process.env.BRANCH_NAME = 'master' process.env.SEMAPHORE_REPO_SLUG = 'owner/repo' expect(semaphore.configuration()).toEqual({ - service: 'semaphore', + service: 'semaphore1x', commit: '5678', build: '1234.1', branch: 'master', diff --git a/test/services/semaphore2x.test.js b/test/services/semaphore2x.test.js new file mode 100644 index 00000000..22cd6225 --- /dev/null +++ b/test/services/semaphore2x.test.js @@ -0,0 +1,37 @@ +var semaphore = require('../../lib/services/semaphore2x') + +describe('Semaphore 2.x CI Provider', function() { + var OLD_ENV = process.env + + beforeEach(function() { + process.env = Object.assign({}, OLD_ENV) + }) + + afterEach(function() { + process.env = Object.assign({}, OLD_ENV) + }) + + it('can detect semaphore 2x', function() { + process.env.SEMAPHORE = 'true' + process.env.SEMAPHORE_WORKFLOW_ID = '65c9bb1c-aeb6-41f0-b8d9-6fa177241cdf' + expect(semaphore.detect()).toBe(true) + }) + + it('does not detect semaphore 1.x', function() { + process.env.SEMAPHORE = 'true' + process.env.SEMAPHORE_REPO_SLUG = 'owner/repo' + expect(semaphore.detect()).toBe(false) + }) + + it('can get semaphore env info', function() { + process.env.SEMAPHORE_GIT_BRANCH = 'development' + process.env.SEMAPHORE_GIT_SHA = '5c84719708b9b649b9ef3b56af214f38cee6acde' + process.env.SEMAPHORE_WORKFLOW_ID = '65c9bb1c-aeb6-41f0-b8d9-6fa177241cdf' + expect(semaphore.configuration()).toEqual({ + service: 'semaphore2x', + branch: 'development', + build: '65c9bb1c-aeb6-41f0-b8d9-6fa177241cdf', + commit: '5c84719708b9b649b9ef3b56af214f38cee6acde', + }) + }) +})