Skip to content

Commit

Permalink
Merge pull request #35 from siddharthkp/custom-platform
Browse files Browse the repository at this point in the history
Allow platform + defining ci for custom CI
kuldeepkeshwar authored May 1, 2020
2 parents cc891b5 + 1f76850 commit 626f557
Showing 1 changed file with 117 additions and 84 deletions.
201 changes: 117 additions & 84 deletions index.js
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,
};

0 comments on commit 626f557

Please sign in to comment.