-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #35 from siddharthkp/custom-platform
Allow platform + defining ci for custom CI
Showing
1 changed file
with
117 additions
and
84 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,134 +1,167 @@ | ||
let drone = require('./utils/drone') | ||
let drone = require('./utils/drone'); | ||
// platform denotes code hosting provider i.e github, gitlab, bitbucket etc. | ||
// Had to introduce this variable as there are cases when CI is run on the same platform where code is hosted as those cases need to be handled differently. | ||
// Default value is github | ||
let platform = 'github'; | ||
let repo, sha, event, commit_message, pull_request_number, branch, ci, jobUrl, buildUrl | ||
let repo, | ||
sha, | ||
event, | ||
commit_message, | ||
pull_request_number, | ||
branch, | ||
ci, | ||
jobUrl, | ||
buildUrl; | ||
|
||
if (process.env.TRAVIS) { | ||
// Reference: https://docs.travis-ci.com/user/environment-variables | ||
|
||
repo = process.env.TRAVIS_REPO_SLUG | ||
sha = process.env.TRAVIS_PULL_REQUEST_SHA || process.env.TRAVIS_COMMIT | ||
event = process.env.TRAVIS_EVENT_TYPE | ||
commit_message = process.env.TRAVIS_COMMIT_MESSAGE | ||
pull_request_number = process.env.TRAVIS_PULL_REQUEST | ||
jobUrl = `https://travis-ci.org/${repo}/jobs/${process.env.TRAVIS_JOB_ID}` | ||
buildUrl = `https://travis-ci.org/${repo}/builds/${process.env.TRAVIS_JOB_ID}` | ||
repo = process.env.TRAVIS_REPO_SLUG; | ||
sha = process.env.TRAVIS_PULL_REQUEST_SHA || process.env.TRAVIS_COMMIT; | ||
event = process.env.TRAVIS_EVENT_TYPE; | ||
commit_message = process.env.TRAVIS_COMMIT_MESSAGE; | ||
pull_request_number = process.env.TRAVIS_PULL_REQUEST; | ||
jobUrl = `https://travis-ci.org/${repo}/jobs/${process.env.TRAVIS_JOB_ID}`; | ||
buildUrl = `https://travis-ci.org/${repo}/builds/${process.env.TRAVIS_JOB_ID}`; | ||
|
||
branch = | ||
process.env.TRAVIS_EVENT_TYPE === 'push' | ||
? process.env.TRAVIS_BRANCH | ||
: process.env.TRAVIS_PULL_REQUEST_BRANCH | ||
: process.env.TRAVIS_PULL_REQUEST_BRANCH; | ||
|
||
ci = 'travis' | ||
ci = 'travis'; | ||
} else if (process.env.CIRCLECI) { | ||
// Reference: https://circleci.com/docs/1.0/environment-variables | ||
|
||
repo = process.env.CIRCLE_PROJECT_USERNAME + '/' + process.env.CIRCLE_PROJECT_REPONAME | ||
repo = | ||
process.env.CIRCLE_PROJECT_USERNAME + | ||
'/' + | ||
process.env.CIRCLE_PROJECT_REPONAME; | ||
|
||
sha = process.env.CIRCLE_SHA1 | ||
event = 'push' | ||
commit_message = '' // circle does not expose commit message | ||
sha = process.env.CIRCLE_SHA1; | ||
event = 'push'; | ||
commit_message = ''; // circle does not expose commit message | ||
if (process.env.CI_PULL_REQUEST) { | ||
pull_request_number = process.env.CI_PULL_REQUEST.split('/').pop() // take number from returns url | ||
event = 'pull_request' | ||
} else pull_request_number = '' | ||
branch = process.env.CIRCLE_BRANCH | ||
ci = 'circle' | ||
pull_request_number = process.env.CI_PULL_REQUEST.split('/').pop(); // take number from returns url | ||
event = 'pull_request'; | ||
} else pull_request_number = ''; | ||
branch = process.env.CIRCLE_BRANCH; | ||
ci = 'circle'; | ||
} else if (process.env.WERCKER) { | ||
// Reference: https://devcenter.wercker.com/docs/environment-variables/available-env-vars | ||
|
||
repo = process.env.WERCKER_GIT_OWNER + '/' + process.env.WERCKER_GIT_REPOSITORY | ||
repo = | ||
process.env.WERCKER_GIT_OWNER + '/' + process.env.WERCKER_GIT_REPOSITORY; | ||
|
||
sha = process.env.WERCKER_GIT_COMMIT | ||
event = 'push' | ||
commit_message = '' // wercker does not expose commit message | ||
pull_request_number = '' // wercker does not expose pull request number | ||
branch = process.env.WERCKER_GIT_BRANCH | ||
ci = 'wercker' | ||
sha = process.env.WERCKER_GIT_COMMIT; | ||
event = 'push'; | ||
commit_message = ''; // wercker does not expose commit message | ||
pull_request_number = ''; // wercker does not expose pull request number | ||
branch = process.env.WERCKER_GIT_BRANCH; | ||
ci = 'wercker'; | ||
} else if (process.env.DRONE) { | ||
// Reference: http://readme.drone.io/usage/environment-reference | ||
|
||
repo = process.env.DRONE_REPO || process.env.CI_REPO || drone.getLegacyRepo(process.env) | ||
sha = process.env.DRONE_COMMIT || process.env.CI_COMMIT | ||
repo = | ||
process.env.DRONE_REPO || | ||
process.env.CI_REPO || | ||
drone.getLegacyRepo(process.env); | ||
sha = process.env.DRONE_COMMIT || process.env.CI_COMMIT; | ||
// DRONE_BUILD_EVENT available in drone > v0.5 | ||
// DRONE_EVENT, CI_EVENT available in drone < v0.5 | ||
// no EVENT available in drone < v0.4 | ||
event = process.env.DRONE_BUILD_EVENT || process.env.DRONE_EVENT || process.env.CI_EVENT || 'push' | ||
commit_message = '' // drone does not expose commit message | ||
pull_request_number = process.env.DRONE_PULL_REQUEST | ||
branch = process.env.DRONE_BRANCH || process.env.CI_BRANCH | ||
ci = 'drone' | ||
} else if (process.env.GITLAB_CI){ | ||
event = | ||
process.env.DRONE_BUILD_EVENT || | ||
process.env.DRONE_EVENT || | ||
process.env.CI_EVENT || | ||
'push'; | ||
commit_message = ''; // drone does not expose commit message | ||
pull_request_number = process.env.DRONE_PULL_REQUEST; | ||
branch = process.env.DRONE_BRANCH || process.env.CI_BRANCH; | ||
ci = 'drone'; | ||
} else if (process.env.GITLAB_CI) { | ||
// Reference: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html | ||
// except buildUrl we get all the other variables for gitlab CI | ||
repo = process.env.CI_PROJECT_PATH | ||
branch = process.env.CI_COMMIT_REF_NAME | ||
commit_message = process.env.CI_COMMIT_MESSAGE | ||
pull_request_number = (process.env.CI_MERGE_REQUEST_ID || '') // no pull request numnber in case the CI is run for the branch without a pull request | ||
sha=process.env.CI_COMMIT_SHA | ||
event = process.env.CI_PIPELINE_SOURCE | ||
jobUrl = process.env.CI_JOB_URL | ||
platform = 'gitlab' | ||
ci = 'gitlab' | ||
repo = process.env.CI_PROJECT_PATH; | ||
branch = process.env.CI_COMMIT_REF_NAME; | ||
commit_message = process.env.CI_COMMIT_MESSAGE; | ||
pull_request_number = process.env.CI_MERGE_REQUEST_ID || ''; // no pull request numnber in case the CI is run for the branch without a pull request | ||
sha = process.env.CI_COMMIT_SHA; | ||
event = process.env.CI_PIPELINE_SOURCE; | ||
jobUrl = process.env.CI_JOB_URL; | ||
platform = 'gitlab'; | ||
ci = 'gitlab'; | ||
} else if (process.env.CI_NAME === 'codeship') { | ||
// Reference: https://documentation.codeship.com/basic/builds-and-configuration/set-environment-variables/#default-environment-variables | ||
|
||
repo = process.env.CI_REPO_NAME | ||
branch = process.env.CI_BRANCH | ||
commit_message = process.env.CI_COMMIT_MESSAGE || process.env.CI_MESSAGE | ||
repo = process.env.CI_REPO_NAME; | ||
branch = process.env.CI_BRANCH; | ||
commit_message = process.env.CI_COMMIT_MESSAGE || process.env.CI_MESSAGE; | ||
|
||
event = 'push' | ||
pull_request_number = process.env.CI_PR_NUMBER | ||
sha=process.env.CI_COMMIT_ID, | ||
buildUrl=process.env.CI_BUILD_URL | ||
event = 'push'; | ||
pull_request_number = process.env.CI_PR_NUMBER; | ||
(sha = process.env.CI_COMMIT_ID), (buildUrl = process.env.CI_BUILD_URL); | ||
|
||
ci = 'codeship' | ||
ci = 'codeship'; | ||
} else if (process.env.GITHUB_ACTION) { | ||
// GitHub Actions | ||
// Reference: https://developer.github.com/actions/creating-github-actions/accessing-the-runtime-environment/ | ||
|
||
// for pull_request event, GITHUB_REF is of the form refs/pull/<pull_request_number>/merge | ||
// for push event, GITHUB_REF is of the form refs/heads/<branch> | ||
|
||
const pull_request_numberORbranch=process.env.GITHUB_REF.split('/')[2]; | ||
|
||
repo = process.env.GITHUB_REPOSITORY | ||
sha = process.env.GITHUB_SHA | ||
event = process.env.GITHUB_EVENT_NAME | ||
commit_message = '' | ||
pull_request_number = event==='pull_request'? pull_request_numberORbranch:'' | ||
|
||
const pull_request_numberORbranch = process.env.GITHUB_REF.split('/')[2]; | ||
|
||
repo = process.env.GITHUB_REPOSITORY; | ||
sha = process.env.GITHUB_SHA; | ||
event = process.env.GITHUB_EVENT_NAME; | ||
commit_message = ''; | ||
pull_request_number = | ||
event === 'pull_request' ? pull_request_numberORbranch : ''; | ||
// GITHUB_HEAD_REF for pull requests. For commits, GITHUB_REF is of the form refs/heads/master, for example | ||
branch = event ==='pull_request'? process.env.GITHUB_HEAD_REF : pull_request_numberORbranch | ||
ci = 'github_actions' | ||
branch = | ||
event === 'pull_request' | ||
? process.env.GITHUB_HEAD_REF | ||
: pull_request_numberORbranch; | ||
ci = 'github_actions'; | ||
} else if (process.env.NETLIFY) { | ||
// Reference: https://www.netlify.com/docs/continuous-deployment/#environment-variables | ||
repo = process.env.REPOSITORY_URL.split('@github.com/').pop() | ||
event = process.env.PULL_REQUEST?'pull_request':'push' | ||
pull_request_number = process.env.PULL_REQUEST?process.env.REVIEW_ID:'' | ||
sha = process.env.COMMIT_REF | ||
branch = process.env.HEAD | ||
ci = 'netlify' | ||
repo = process.env.REPOSITORY_URL.split('@github.com/').pop(); | ||
event = process.env.PULL_REQUEST ? 'pull_request' : 'push'; | ||
pull_request_number = process.env.PULL_REQUEST ? process.env.REVIEW_ID : ''; | ||
sha = process.env.COMMIT_REF; | ||
branch = process.env.HEAD; | ||
ci = 'netlify'; | ||
} else if (process.env.NOW_GITHUB_ORG) { | ||
// Reference: https://zeit.co/docs/v2/advanced/now-for-github/ | ||
repo = process.env.NOW_GITHUB_ORG + '/' + process.env.NOW_GITHUB_REPO | ||
event = 'push' | ||
pull_request_number = '' | ||
sha = process.env.NOW_GITHUB_COMMIT_SHA | ||
branch = process.env.NOW_GITHUB_COMMIT_REF | ||
ci = 'now' | ||
repo = process.env.NOW_GITHUB_ORG + '/' + process.env.NOW_GITHUB_REPO; | ||
event = 'push'; | ||
pull_request_number = ''; | ||
sha = process.env.NOW_GITHUB_COMMIT_SHA; | ||
branch = process.env.NOW_GITHUB_COMMIT_REF; | ||
ci = 'now'; | ||
} else if (process.env.CI) { | ||
// Generic variables for docker images, custom CI builds, etc. | ||
|
||
repo = process.env.CI_REPO_OWNER + '/' + process.env.CI_REPO_NAME | ||
|
||
sha = process.env.CI_COMMIT_SHA | ||
event = process.env.CI_EVENT || 'push' | ||
commit_message = process.env.CI_COMMIT_MESSAGE | ||
pull_request_number = process.env.CI_MERGE_REQUEST_ID | ||
branch = process.env.CI_BRANCH | ||
ci = 'custom' | ||
platform = process.env.CI_PLATFORM; | ||
repo = process.env.CI_REPO_OWNER + '/' + process.env.CI_REPO_NAME; | ||
sha = process.env.CI_COMMIT_SHA; | ||
event = process.env.CI_EVENT || 'push'; | ||
commit_message = process.env.CI_COMMIT_MESSAGE; | ||
pull_request_number = process.env.CI_MERGE_REQUEST_ID; | ||
branch = process.env.CI_BRANCH; | ||
ci = process.env.CI; | ||
} | ||
|
||
module.exports = { repo, sha, event, commit_message, branch, pull_request_number, ci, platform, jobUrl, buildUrl } | ||
module.exports = { | ||
repo, | ||
sha, | ||
event, | ||
commit_message, | ||
branch, | ||
pull_request_number, | ||
ci, | ||
platform, | ||
jobUrl, | ||
buildUrl, | ||
}; |