| # ci-info |
|
|
| Get details about the current Continuous Integration environment. |
|
|
| Please [open an |
| issue](https://github.com/watson/ci-info/issues/new?template=ci-server-not-detected.md) |
| if your CI server isn't properly detected :) |
|
|
| [](https://www.npmjs.com/package/ci-info) |
| [](https://github.com/watson/ci-info/actions) |
| [](https://github.com/feross/standard) |
|
|
| ## Installation |
|
|
| ```bash |
| npm install ci-info --save |
| ``` |
|
|
| ## Usage |
|
|
| ```js |
| 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') |
| } |
| ``` |
|
|
| ## Supported CI tools |
|
|
| Officially supported CI servers: |
|
|
| | Name | Constant | isPR | |
| | ------------------------------------------------------------------------------- | ----------------------- | ---- | |
| | [AWS CodeBuild](https://aws.amazon.com/codebuild/) | `ci.CODEBUILD` | π« | |
| | [AppVeyor](http://www.appveyor.com) | `ci.APPVEYOR` | β
| |
| | [Azure Pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/) | `ci.AZURE_PIPELINES` | β
| |
| | [Appcircle](https://appcircle.io/) | `ci.APPCIRCLE` | π« | |
| | [Bamboo](https://www.atlassian.com/software/bamboo) by Atlassian | `ci.BAMBOO` | π« | |
| | [Bitbucket Pipelines](https://bitbucket.org/product/features/pipelines) | `ci.BITBUCKET` | β
| |
| | [Bitrise](https://www.bitrise.io/) | `ci.BITRISE` | β
| |
| | [Buddy](https://buddy.works/) | `ci.BUDDY` | β
| |
| | [Buildkite](https://buildkite.com) | `ci.BUILDKITE` | β
| |
| | [CircleCI](http://circleci.com) | `ci.CIRCLE` | β
| |
| | [Cirrus CI](https://cirrus-ci.org) | `ci.CIRRUS` | β
| |
| | [Codefresh](https://codefresh.io/) | `ci.CODEFRESH` | β
| |
| | [Codeship](https://codeship.com) | `ci.CODESHIP` | π« | |
| | [Drone](https://drone.io) | `ci.DRONE` | β
| |
| | [dsari](https://github.com/rfinnie/dsari) | `ci.DSARI` | π« | |
| | [Expo Application Services](https://expo.dev/eas) | `ci.EAS` | π« | |
| | [Gerrit CI](https://www.gerritcodereview.com) | `ci.GERRIT` | π« | |
| | [GitHub Actions](https://github.com/features/actions/) | `ci.GITHUB_ACTIONS` | β
| |
| | [GitLab CI](https://about.gitlab.com/gitlab-ci/) | `ci.GITLAB` | β
| |
| | [GoCD](https://www.go.cd/) | `ci.GOCD` | π« | |
| | [Google Cloud Build](https://cloud.google.com/build) | `ci.GOOGLE_CLOUD_BUILD` | π« | |
| | [Harness CI](https://www.harness.io/products/continuous-integration) | `ci.HARNESS` | π« | |
| | [Heroku](https://www.heroku.com) | `ci.HEROKU` | π« | |
| | [Hudson](http://hudson-ci.org) | `ci.HUDSON` | π« | |
| | [Jenkins CI](https://jenkins-ci.org) | `ci.JENKINS` | β
| |
| | [LayerCI](https://layerci.com/) | `ci.LAYERCI` | β
| |
| | [Magnum CI](https://magnum-ci.com) | `ci.MAGNUM` | π« | |
| | [Netlify CI](https://www.netlify.com/) | `ci.NETLIFY` | β
| |
| | [Nevercode](http://nevercode.io/) | `ci.NEVERCODE` | β
| |
| | [ReleaseHub](https://releasehub.com/) | `ci.RELEASEHUB` | π« | |
| | [Render](https://render.com/) | `ci.RENDER` | β
| |
| | [Sail CI](https://sail.ci/) | `ci.SAIL` | β
| |
| | [Screwdriver](https://screwdriver.cd/) | `ci.SCREWDRIVER` | β
| |
| | [Semaphore](https://semaphoreci.com) | `ci.SEMAPHORE` | β
| |
| | [Shippable](https://www.shippable.com/) | `ci.SHIPPABLE` | β
| |
| | [Solano CI](https://www.solanolabs.com/) | `ci.SOLANO` | β
| |
| | [Sourcehut](https://sourcehut.org/) | `ci.SOURCEHUT` | π« | |
| | [Strider CD](https://strider-cd.github.io/) | `ci.STRIDER` | π« | |
| | [TaskCluster](http://docs.taskcluster.net) | `ci.TASKCLUSTER` | π« | |
| | [TeamCity](https://www.jetbrains.com/teamcity/) by JetBrains | `ci.TEAMCITY` | π« | |
| | [Travis CI](http://travis-ci.org) | `ci.TRAVIS` | β
| |
| | [Vercel](https://vercel.com/) | `ci.VERCEL` | β
| |
| | [Visual Studio App Center](https://appcenter.ms/) | `ci.APPCENTER` | π« | |
| | [Woodpecker](https://woodpecker-ci.org/) | `ci.WOODPECKER` | β
| |
|
|
| ## API |
|
|
| ### `ci.name` |
|
|
| 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. |
|
|
| ### `ci.isCI` |
|
|
| Returns a boolean. Will be `true` if the code is running on a CI server, |
| otherwise `false`. |
|
|
| Some CI servers not listed here might still trigger the `ci.isCI` |
| boolean to be set to `true` if they use certain vendor neutral |
| environment variables. In those cases `ci.name` will be `null` and no |
| vendor specific boolean will be set to `true`. |
|
|
| ### `ci.isPR` |
|
|
| Returns a boolean if PR detection is supported for the current CI server. Will |
| be `true` if a PR is being tested, otherwise `false`. If PR detection is |
| not supported for the current CI server, the value will be `null`. |
|
|
| ### `ci.<VENDOR-CONSTANT>` |
|
|
| A vendor specific boolean constant is exposed for each support CI |
| vendor. A constant will be `true` if the code is determined to run on |
| the given CI server, otherwise `false`. |
|
|
| Examples of vendor constants are `ci.TRAVIS` or `ci.APPVEYOR`. For a |
| complete list, see the support table above. |
|
|
| Deprecated vendor constants that will be removed in the next major |
| release: |
|
|
| - `ci.TDDIUM` (Solano CI) This have been renamed `ci.SOLANO` |
|
|
| ## Ports |
|
|
| ci-info has been ported to the following languages |
|
|
| | Language | Repository | |
| |----------|------------| |
| | Go | https://github.com/hofstadter-io/cinful | |
| | Rust | https://github.com/sagiegurari/ci_info | |
| | Kotlin | https://github.com/cloudflightio/ci-info | |
| |
| ## License |
| |
| [MIT](LICENSE) |
| |