File size: 8,011 Bytes
f56a29b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | # 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)
|