forked from M3-Academy/challenge-algorithms-v2.0
129 lines
7.0 KiB
Markdown
129 lines
7.0 KiB
Markdown
|
# 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 :)
|
||
|
|
||
|
[![npm](https://img.shields.io/npm/v/ci-info.svg)](https://www.npmjs.com/package/ci-info)
|
||
|
[![Tests](https://github.com/watson/ci-info/workflows/Tests/badge.svg)](https://github.com/watson/ci-info/actions)
|
||
|
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](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` | 🚫 |
|
||
|
| [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` | 🚫 |
|
||
|
| [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` | ✅ |
|
||
|
| [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` | ✅ |
|
||
|
| [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 |
|
||
|
|
||
|
## License
|
||
|
|
||
|
[MIT](LICENSE)
|