UNPKG

zephyr-agent

Version:
144 lines (143 loc) • 5.62 kB
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