lix-website/themes/lix/assets/bootstrap/node_modules/ci-env/index.js
2024-04-26 22:49:34 -06:00

214 lines
8.3 KiB
JavaScript

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_target_branch,
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}`;
branch =
process.env.TRAVIS_EVENT_TYPE === 'push'
? process.env.TRAVIS_BRANCH
: process.env.TRAVIS_PULL_REQUEST_BRANCH;
pull_request_target_branch =
process.env.TRAVIS_EVENT_TYPE === 'push'
? ''
: process.env.TRAVIS_BRANCH;
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;
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';
} 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;
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
pull_request_target_branch = ''; // wercker does not expose pr target branch
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;
// 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;
pull_request_target_branch = process.env.DRONE_TARGET_BRANCH;
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_MERGE_REQUEST_SOURCE_BRANCH_NAME || 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
pull_request_target_branch = process.env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME || process.env.CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_NAME;
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;
event = 'push';
pull_request_number = process.env.CI_PR_NUMBER;
pull_request_target_branch = ''; // codeship does not export pr target branch
(sha = process.env.CI_COMMIT_ID), (buildUrl = process.env.CI_BUILD_URL);
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 : '';
// 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;
// GITHUB_BASE_REF for pull requests, otherwise GITHUB_BASE_REF is empty
pull_request_target_branch = process.env.GITHUB_BASE_REF;
ci = 'github_actions';
} else if (process.env.CF_PAGES) {
// Reference: https://developers.cloudflare.com/pages/platform/build-configuration#environment-variables
repo = '';
event = 'push';
pull_request_number = '';
pull_request_target_branch = '';
sha = process.env.CF_PAGES_COMMIT_SHA;
branch = process.env.CF_PAGES_BRANCH;
ci = 'cloudflare';
} 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 : '';
pull_request_target_branch = ''; // netlify does not export pr target branch
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';
} else if(process.env.BUDDY) {
repo = process.env.BUDDY_PROJECT_NAME;
branch = process.env.BUDDY_EXECUTION_BRANCH;
commit_message = process.env.BUDDY_EXECUTION_REVISION_MESSAGE;
pull_request_number = process.env.BUDDY_EXECUTION_PULL_REQUEST_NO;
pull_request_target_branch = process.env.BUDDY_EXECUTION_PULL_REQUEST_BASE_BRANCH;
sha = process.env.BUDDY_EXECUTION_REVISION;
event = process.env.BUDDY_EXECUTION_MODE;
jobUrl = process.env.BUDDY_EXECUTION_REVISION_URL;
platform = 'buddy';
ci = 'buddy';
} else if(process.env.CF_BUILD_URL) {
// Reference: https://codefresh.io/docs/docs/codefresh-yaml/variables/#system-provided-variables
repo = process.env.CF_REPO_NAME;
branch = process.env.CF_BRANCH;
commit_message = process.env.CF_COMMIT_MESSAGE;
pull_request_number = process.env.CF_PULL_REQUEST_NUMBER;
pull_request_target_branch = process.env.CF_PULL_REQUEST_TARGET;
sha = process.env.CF_REVISION;
event = 'push';
buildUrl = process.env.CF_BUILD_URL;
platform = 'codefresh';
ci = 'codefresh';
} else if (process.env.CI) {
// Generic variables for docker images, custom CI builds, etc.
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;
pull_request_target_branch = process.env.CI_TARGET_BRANCH;
branch = process.env.CI_BRANCH;
ci = process.env.CI;
}
module.exports = {
repo,
sha,
event,
commit_message,
branch,
pull_request_number,
pull_request_target_branch,
ci,
platform,
jobUrl,
buildUrl,
};