Get details about the current Continuous Integration environment.
Please open an issue if your CI server isn't properly detected :)
npm install ci-info --save
var ci = require('ci-info')
if (ci.isCI) {
console.log('The name of the CI server is:', ci.name)
} else {
console.log('This program is not running on a CI server')
}
Officially supported CI servers:
Name | Constant | isPR |
---|---|---|
Agola CI | ci.AGOLA |
✅ |
Appcircle | ci.APPCIRCLE |
✅ |
AppVeyor | ci.APPVEYOR |
✅ |
AWS CodeBuild | ci.CODEBUILD |
✅ |
Azure Pipelines | ci.AZURE_PIPELINES |
✅ |
Bamboo by Atlassian | ci.BAMBOO |
🚫 |
Bitbucket Pipelines | ci.BITBUCKET |
✅ |
Bitrise | ci.BITRISE |
✅ |
Buddy | ci.BUDDY |
✅ |
Buildkite | ci.BUILDKITE |
✅ |
CircleCI | ci.CIRCLE |
✅ |
Cirrus CI | ci.CIRRUS |
✅ |
Codefresh | ci.CODEFRESH |
✅ |
Codeship | ci.CODESHIP |
🚫 |
Drone | ci.DRONE |
✅ |
dsari | ci.DSARI |
🚫 |
Earthly CI | ci.EARTHLY |
🚫 |
Expo Application Services | ci.EAS |
🚫 |
Gerrit CI | ci.GERRIT |
🚫 |
GitHub Actions | ci.GITHUB_ACTIONS |
✅ |
GitLab CI | ci.GITLAB |
✅ |
Gitea Actions | ci.GITEA_ACTIONS |
🚫 |
GoCD | ci.GOCD |
🚫 |
Google Cloud Build | ci.GOOGLE_CLOUD_BUILD |
🚫 |
Harness CI | ci.HARNESS |
🚫 |
Heroku | ci.HEROKU |
🚫 |
Hudson | ci.HUDSON |
🚫 |
Jenkins CI | ci.JENKINS |
✅ |
LayerCI | ci.LAYERCI |
✅ |
Magnum CI | ci.MAGNUM |
🚫 |
Netlify CI | ci.NETLIFY |
✅ |
Nevercode | ci.NEVERCODE |
✅ |
Prow | ci.PROW |
🚫 |
ReleaseHub | ci.RELEASEHUB |
🚫 |
Render | ci.RENDER |
✅ |
Sail CI | ci.SAIL |
✅ |
Screwdriver | ci.SCREWDRIVER |
✅ |
Semaphore | ci.SEMAPHORE |
✅ |
Sourcehut | ci.SOURCEHUT |
🚫 |
Strider CD | ci.STRIDER |
🚫 |
TaskCluster | ci.TASKCLUSTER |
🚫 |
TeamCity by JetBrains | ci.TEAMCITY |
🚫 |
Travis CI | ci.TRAVIS |
✅ |
Vela | ci.VELA |
✅ |
Vercel | ci.VERCEL |
✅ |
Visual Studio App Center | ci.APPCENTER |
🚫 |
Woodpecker | ci.WOODPECKER |
✅ |
Returns a string containing name of the CI server the code is running on.
If CI server is not detected, it returns null
.
Don't depend on the value of this string not to change for a specific
vendor. If you find your self writing ci.name === 'Travis CI'
, you
most likely want to use ci.TRAVIS
instead.