zephyr-agent
Version:
Zephyr plugin agent
144 lines (143 loc) • 5.62 kB
JavaScript
import "node:module";
function detectCIBranch() {
const env = process.env;
if ('true' === env['GITHUB_ACTIONS'] || env['GITHUB_WORKFLOW']) {
const isPR = !!env['GITHUB_HEAD_REF'];
return {
platform: 'GitHub Actions',
isCI: true,
branch: env['GITHUB_HEAD_REF'] || env['GITHUB_REF_NAME'] || extractBranchFromRef(env['GITHUB_REF']),
isPR,
sourceBranch: env['GITHUB_HEAD_REF'],
targetBranch: env['GITHUB_BASE_REF'],
tag: env['GITHUB_REF']?.startsWith('refs/tags/') ? env['GITHUB_REF_NAME'] : void 0
};
}
if ('true' === env['GITLAB_CI'] || 'GitLab' === env['CI_SERVER_NAME']) {
const isPR = !!env['CI_MERGE_REQUEST_ID'];
return {
platform: 'GitLab CI',
isCI: true,
branch: env['CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'] || env['CI_COMMIT_BRANCH'] || env['CI_COMMIT_REF_NAME'],
isPR,
sourceBranch: env['CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'],
targetBranch: env['CI_MERGE_REQUEST_TARGET_BRANCH_NAME'],
tag: env['CI_COMMIT_BRANCH'] ? void 0 : env['CI_COMMIT_REF_NAME']
};
}
if (env['JENKINS_URL'] || env['JENKINS_HOME']) {
const isPR = !!env['CHANGE_ID'];
const gitBranch = env['GIT_BRANCH']?.replace(/^origin\//, '');
return {
platform: 'Jenkins',
isCI: true,
branch: env['CHANGE_BRANCH'] || env['BRANCH_NAME'] || gitBranch || env['GIT_LOCAL_BRANCH'],
isPR,
sourceBranch: env['CHANGE_BRANCH'],
targetBranch: env['CHANGE_TARGET']
};
}
if (env['BITBUCKET_BUILD_NUMBER'] || env['BITBUCKET_COMMIT']) {
const isPR = !!env['BITBUCKET_PR_ID'];
return {
platform: 'Bitbucket Pipelines',
isCI: true,
branch: env['BITBUCKET_BRANCH'] || env['BITBUCKET_TAG'],
isPR,
targetBranch: env['BITBUCKET_PR_DESTINATION_BRANCH'],
tag: env['BITBUCKET_TAG']
};
}
if ('true' === env['CIRCLECI'] || env['CIRCLE_BUILD_NUM']) {
const isPR = !!(env['CIRCLE_PULL_REQUEST'] || env['CIRCLE_PR_NUMBER'] || env['CIRCLE_PULL_REQUESTS']);
return {
platform: 'CircleCI',
isCI: true,
branch: env['CIRCLE_BRANCH'] || env['CIRCLE_TAG'],
isPR,
tag: env['CIRCLE_TAG']
};
}
if ('true' === env['TRAVIS'] || 'true' === env['CI'] && env['TRAVIS_BUILD_ID']) {
const isPR = 'false' !== env['TRAVIS_PULL_REQUEST'];
return {
platform: 'Travis CI',
isCI: true,
branch: env['TRAVIS_PULL_REQUEST_BRANCH'] || env['TRAVIS_BRANCH'] || env['TRAVIS_TAG'],
isPR,
sourceBranch: env['TRAVIS_PULL_REQUEST_BRANCH'],
targetBranch: env['TRAVIS_PULL_REQUEST_BRANCH'] ? env['TRAVIS_BRANCH'] : void 0,
tag: env['TRAVIS_TAG']
};
}
if ('True' === env['TF_BUILD']) {
const isPR = !!env['SYSTEM_PULLREQUEST_PULLREQUESTID'];
const prSourceBranch = extractBranchFromRef(env['SYSTEM_PULLREQUEST_SOURCEBRANCH']);
const regularBranch = 'merge' !== env['BUILD_SOURCEBRANCHNAME'] ? env['BUILD_SOURCEBRANCHNAME'] : extractBranchFromRef(env['BUILD_SOURCEBRANCH']);
return {
platform: 'Azure Pipelines',
isCI: true,
branch: prSourceBranch || regularBranch,
isPR,
sourceBranch: prSourceBranch,
targetBranch: extractBranchFromRef(env['SYSTEM_PULLREQUEST_TARGETBRANCH'])
};
}
if (env['TEAMCITY_VERSION']) {
const branch = env['GIT_BRANCH'] || env['BRANCH_NAME'];
return {
platform: 'TeamCity',
isCI: true,
branch: '<default>' === branch ? void 0 : branch,
isPR: false
};
}
if ('true' === env['DRONE'] || env['DRONE_BRANCH']) {
const isPR = 'pull_request' === env['DRONE_BUILD_EVENT'];
return {
platform: 'Drone CI',
isCI: true,
branch: env['DRONE_SOURCE_BRANCH'] || env['DRONE_BRANCH'] || env['DRONE_COMMIT_BRANCH'],
isPR,
sourceBranch: env['DRONE_SOURCE_BRANCH'],
targetBranch: env['DRONE_TARGET_BRANCH'],
tag: env['DRONE_TAG']
};
}
if ('true' === env['BUILDKITE'] || env['BUILDKITE_BUILD_ID']) {
const isPR = !!env['BUILDKITE_PULL_REQUEST'] && 'false' !== env['BUILDKITE_PULL_REQUEST'];
return {
platform: 'Buildkite',
isCI: true,
branch: env['BUILDKITE_BRANCH'] || env['BUILDKITE_TAG'],
isPR,
targetBranch: env['BUILDKITE_PULL_REQUEST_BASE_BRANCH'],
tag: env['BUILDKITE_TAG']
};
}
if ('true' === env['CI'] || 'true' === env['CONTINUOUS_INTEGRATION']) return {
platform: 'Generic CI',
isCI: true,
branch: void 0,
isPR: false
};
return {
platform: 'None',
isCI: false,
branch: void 0,
isPR: false
};
}
function extractBranchFromRef(ref) {
if (!ref) return;
if (ref.startsWith('refs/heads/')) return ref.replace(/^refs\/heads\//, '');
if (ref.startsWith('refs/tags/')) return ref.replace(/^refs\/tags\//, '');
return ref;
}
function getCIBranchName() {
const ciInfo = detectCIBranch();
if (!ciInfo.isCI) return;
return ciInfo.branch;
}
export { detectCIBranch, getCIBranchName };
//# sourceMappingURL=ci-branch-detection.mjs.map