aboutsummaryrefslogtreecommitdiff
path: root/node_modules/ci-info
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/ci-info')
-rw-r--r--node_modules/ci-info/CHANGELOG.md122
-rw-r--r--node_modules/ci-info/LICENSE21
-rw-r--r--node_modules/ci-info/README.md118
-rw-r--r--node_modules/ci-info/index.d.ts62
-rw-r--r--node_modules/ci-info/index.js66
-rw-r--r--node_modules/ci-info/package.json36
-rw-r--r--node_modules/ci-info/vendors.json210
7 files changed, 635 insertions, 0 deletions
diff --git a/node_modules/ci-info/CHANGELOG.md b/node_modules/ci-info/CHANGELOG.md
new file mode 100644
index 0000000..fc293eb
--- /dev/null
+++ b/node_modules/ci-info/CHANGELOG.md
@@ -0,0 +1,122 @@
+# Changelog
+
+## v3.3.0
+
+- support Expo Application Services ([#70](https://github.com/watson/ci-info/pull/70))
+
+## v3.2.0
+
+- support LayerCI ([#68](https://github.com/watson/ci-info/pull/68))
+- support Appcircle ([#69](https://github.com/watson/ci-info/pull/69))
+- support Codefresh CI ([#65](https://github.com/watson/ci-info/pull/65))
+- Add support for nodejs v16
+
+## v3.1.1
+
+Bug Fixes:
+
+- remove duplicate declaration in typings
+
+## v3.1.0
+
+Features:
+
+- add typings
+
+## v3.0.0
+
+Features:
+
+- Add support nodejs versions: 14, 15
+- support Nevercode ([#30](https://github.com/watson/ci-info/pull/30))
+- support Render CI ([#36](https://github.com/watson/ci-info/pull/36))
+- support Now CI ([#37](https://github.com/watson/ci-info/pull/37))
+- support GitLab PR ([#59](https://github.com/watson/ci-info/pull/59))
+- support Screwdriver CD ([#60](https://github.com/watson/ci-info/pull/60))
+- support Visual Studio App Center ([#61](https://github.com/watson/ci-info/pull/61))
+
+Bug Fixes:
+
+- update Netlify env constant ([#47](https://github.com/watson/ci-info/pull/47))
+
+Breaking changes:
+
+- Drop support for Node.js end-of-life versions: 6, 13
+- replace `Zeit Now` with `Vercel` ([#55](https://github.com/watson/ci-info/pull/55))
+
+## v2.0.0
+
+Breaking changes:
+
+- Drop support for Node.js end-of-life versions: 0.10, 0.12, 4, 5, 7,
+ and 9
+- Team Foundation Server will now be detected as Azure Pipelines. The
+ constant `ci.TFS` no longer exists - use `ci.AZURE_PIPELINES` instead
+- Remove deprecated `ci.TDDIUM` constant - use `ci.SOLANDO` instead
+
+New features:
+
+- feat: support Azure Pipelines ([#23](https://github.com/watson/ci-info/pull/23))
+- feat: support Netlify CI ([#26](https://github.com/watson/ci-info/pull/26))
+- feat: support Bitbucket pipelines PR detection ([#27](https://github.com/watson/ci-info/pull/27))
+
+## v1.6.0
+
+- feat: add Sail CI support
+- feat: add Buddy support
+- feat: add Bitrise support
+- feat: detect Jenkins PRs
+- feat: detect Drone PRs
+
+## v1.5.1
+
+- fix: use full path to vendors.json
+
+## v1.5.0
+
+- feat: add dsari detection ([#15](https://github.com/watson/ci-info/pull/15))
+- feat: add ci.isPR ([#16](https://github.com/watson/ci-info/pull/16))
+
+## v1.4.0
+
+- feat: add Cirrus CI detection ([#13](https://github.com/watson/ci-info/pull/13))
+- feat: add Shippable CI detection ([#14](https://github.com/watson/ci-info/pull/14))
+
+## v1.3.1
+
+- chore: reduce npm package size by not including `.github` folder content ([#11](https://github.com/watson/ci-info/pull/11))
+
+## v1.3.0
+
+- feat: add support for Strider CD
+- chore: deprecate vendor constant `TDDIUM` in favor of `SOLANO`
+- docs: add missing vendor constant to docs
+
+## v1.2.0
+
+- feat: detect solano-ci ([#9](https://github.com/watson/ci-info/pull/9))
+
+## v1.1.3
+
+- fix: fix spelling of Hunson in `ci.name`
+
+## v1.1.2
+
+- fix: no more false positive matches for Jenkins
+
+## v1.1.1
+
+- docs: sort lists of CI servers in README.md
+- docs: add missing AWS CodeBuild to the docs
+
+## v1.1.0
+
+- feat: add AWS CodeBuild to CI detection ([#2](https://github.com/watson/ci-info/pull/2))
+
+## v1.0.1
+
+- chore: reduce npm package size by using an `.npmignore` file ([#3](https://github.com/watson/ci-info/pull/3))
+
+## v1.0.0
+
+- Initial release
diff --git a/node_modules/ci-info/LICENSE b/node_modules/ci-info/LICENSE
new file mode 100644
index 0000000..2cc7405
--- /dev/null
+++ b/node_modules/ci-info/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016-2021 Thomas Watson Steen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/ci-info/README.md b/node_modules/ci-info/README.md
new file mode 100644
index 0000000..e7790b3
--- /dev/null
+++ b/node_modules/ci-info/README.md
@@ -0,0 +1,118 @@
+# 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_BUILD` | 🚫 |
+| [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` | 🚫 |
+
+## 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`
+
+## License
+
+[MIT](LICENSE)
diff --git a/node_modules/ci-info/index.d.ts b/node_modules/ci-info/index.d.ts
new file mode 100644
index 0000000..04f79c6
--- /dev/null
+++ b/node_modules/ci-info/index.d.ts
@@ -0,0 +1,62 @@
+/**
+ * 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`.
+ */
+export const isCI: boolean;
+/**
+ * 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`.
+ */
+export const isPR: boolean | null;
+/**
+ * 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.
+ */
+export const name: string | null;
+
+export const APPVEYOR: boolean;
+export const AZURE_PIPELINES: boolean;
+export const APPCIRCLE: boolean;
+export const BAMBOO: boolean;
+export const BITBUCKET: boolean;
+export const BITRISE: boolean;
+export const BUDDY: boolean;
+export const BUILDKITE: boolean;
+export const CIRCLE: boolean;
+export const CIRRUS: boolean;
+export const CODEBUILD: boolean;
+export const CODEFRESH: boolean;
+export const CODESHIP: boolean;
+export const DRONE: boolean;
+export const DSARI: boolean;
+export const GITHUB_ACTIONS: boolean;
+export const GITLAB: boolean;
+export const GOCD: boolean;
+export const HUDSON: boolean;
+export const JENKINS: boolean;
+export const LAYERCI: boolean;
+export const MAGNUM: boolean;
+export const NETLIFY: boolean;
+export const NEVERCODE: boolean;
+export const RENDER: boolean;
+export const SAIL: boolean;
+export const SEMAPHORE: boolean;
+export const SCREWDRIVER: boolean;
+export const SHIPPABLE: boolean;
+export const SOLANO: boolean;
+export const STRIDER: boolean;
+export const TASKCLUSTER: boolean;
+export const TEAMCITY: boolean;
+export const TRAVIS: boolean;
+export const VERCEL: boolean;
+export const APPCENTER: boolean;
diff --git a/node_modules/ci-info/index.js b/node_modules/ci-info/index.js
new file mode 100644
index 0000000..b747a89
--- /dev/null
+++ b/node_modules/ci-info/index.js
@@ -0,0 +1,66 @@
+'use strict'
+
+const vendors = require('./vendors.json')
+
+const env = process.env
+
+// Used for testing only
+Object.defineProperty(exports, '_vendors', {
+ value: vendors.map(function (v) { return v.constant })
+})
+
+exports.name = null
+exports.isPR = null
+
+vendors.forEach(function (vendor) {
+ const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env]
+ const isCI = envs.every(function (obj) {
+ return checkEnv(obj)
+ })
+
+ exports[vendor.constant] = isCI
+
+ if (isCI) {
+ exports.name = vendor.name
+
+ switch (typeof vendor.pr) {
+ case 'string':
+ // "pr": "CIRRUS_PR"
+ exports.isPR = !!env[vendor.pr]
+ break
+ case 'object':
+ if ('env' in vendor.pr) {
+ // "pr": { "env": "BUILDKITE_PULL_REQUEST", "ne": "false" }
+ exports.isPR = vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne
+ } else if ('any' in vendor.pr) {
+ // "pr": { "any": ["ghprbPullId", "CHANGE_ID"] }
+ exports.isPR = vendor.pr.any.some(function (key) {
+ return !!env[key]
+ })
+ } else {
+ // "pr": { "DRONE_BUILD_EVENT": "pull_request" }
+ exports.isPR = checkEnv(vendor.pr)
+ }
+ break
+ default:
+ // PR detection not supported for this vendor
+ exports.isPR = null
+ }
+ }
+})
+
+exports.isCI = !!(
+ env.CI || // Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari
+ env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI
+ env.BUILD_NUMBER || // Jenkins, TeamCity
+ env.RUN_ID || // TaskCluster, dsari
+ exports.name ||
+ false
+)
+
+function checkEnv (obj) {
+ if (typeof obj === 'string') return !!env[obj]
+ return Object.keys(obj).every(function (k) {
+ return env[k] === obj[k]
+ })
+}
diff --git a/node_modules/ci-info/package.json b/node_modules/ci-info/package.json
new file mode 100644
index 0000000..136015c
--- /dev/null
+++ b/node_modules/ci-info/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "ci-info",
+ "version": "3.3.0",
+ "description": "Get details about the current Continuous Integration environment",
+ "main": "index.js",
+ "typings": "index.d.ts",
+ "author": "Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/watson/ci-info.git"
+ },
+ "bugs": {
+ "url": "https://github.com/watson/ci-info/issues"
+ },
+ "homepage": "https://github.com/watson/ci-info",
+ "keywords": [
+ "ci",
+ "continuous",
+ "integration",
+ "test",
+ "detect"
+ ],
+ "coordinates": [
+ 55.778231,
+ 12.593179
+ ],
+ "scripts": {
+ "test": "standard && node test.js"
+ },
+ "devDependencies": {
+ "clear-module": "^4.1.2",
+ "standard": "^16.0.4",
+ "tape": "^5.3.2"
+ }
+}
diff --git a/node_modules/ci-info/vendors.json b/node_modules/ci-info/vendors.json
new file mode 100644
index 0000000..1c9e2ee
--- /dev/null
+++ b/node_modules/ci-info/vendors.json
@@ -0,0 +1,210 @@
+[
+ {
+ "name": "AppVeyor",
+ "constant": "APPVEYOR",
+ "env": "APPVEYOR",
+ "pr": "APPVEYOR_PULL_REQUEST_NUMBER"
+ },
+ {
+ "name": "Azure Pipelines",
+ "constant": "AZURE_PIPELINES",
+ "env": "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",
+ "pr": "SYSTEM_PULLREQUEST_PULLREQUESTID"
+ },
+ {
+ "name": "Appcircle",
+ "constant": "APPCIRCLE",
+ "env": "AC_APPCIRCLE"
+ },
+ {
+ "name": "Bamboo",
+ "constant": "BAMBOO",
+ "env": "bamboo_planKey"
+ },
+ {
+ "name": "Bitbucket Pipelines",
+ "constant": "BITBUCKET",
+ "env": "BITBUCKET_COMMIT",
+ "pr": "BITBUCKET_PR_ID"
+ },
+ {
+ "name": "Bitrise",
+ "constant": "BITRISE",
+ "env": "BITRISE_IO",
+ "pr": "BITRISE_PULL_REQUEST"
+ },
+ {
+ "name": "Buddy",
+ "constant": "BUDDY",
+ "env": "BUDDY_WORKSPACE_ID",
+ "pr": "BUDDY_EXECUTION_PULL_REQUEST_ID"
+ },
+ {
+ "name": "Buildkite",
+ "constant": "BUILDKITE",
+ "env": "BUILDKITE",
+ "pr": { "env": "BUILDKITE_PULL_REQUEST", "ne": "false" }
+ },
+ {
+ "name": "CircleCI",
+ "constant": "CIRCLE",
+ "env": "CIRCLECI",
+ "pr": "CIRCLE_PULL_REQUEST"
+ },
+ {
+ "name": "Cirrus CI",
+ "constant": "CIRRUS",
+ "env": "CIRRUS_CI",
+ "pr": "CIRRUS_PR"
+ },
+ {
+ "name": "AWS CodeBuild",
+ "constant": "CODEBUILD",
+ "env": "CODEBUILD_BUILD_ARN"
+ },
+ {
+ "name": "Codefresh",
+ "constant": "CODEFRESH",
+ "env": "CF_BUILD_ID",
+ "pr": { "any": ["CF_PULL_REQUEST_NUMBER", "CF_PULL_REQUEST_ID"] }
+ },
+ {
+ "name": "Codeship",
+ "constant": "CODESHIP",
+ "env": { "CI_NAME": "codeship" }
+ },
+ {
+ "name": "Drone",
+ "constant": "DRONE",
+ "env": "DRONE",
+ "pr": { "DRONE_BUILD_EVENT": "pull_request" }
+ },
+ {
+ "name": "dsari",
+ "constant": "DSARI",
+ "env": "DSARI"
+ },
+ {
+ "name": "Expo Application Services",
+ "constant": "EAS",
+ "env": "EAS_BUILD"
+ },
+ {
+ "name": "GitHub Actions",
+ "constant": "GITHUB_ACTIONS",
+ "env": "GITHUB_ACTIONS",
+ "pr": { "GITHUB_EVENT_NAME": "pull_request" }
+ },
+ {
+ "name": "GitLab CI",
+ "constant": "GITLAB",
+ "env": "GITLAB_CI",
+ "pr": "CI_MERGE_REQUEST_ID"
+ },
+ {
+ "name": "GoCD",
+ "constant": "GOCD",
+ "env": "GO_PIPELINE_LABEL"
+ },
+ {
+ "name": "LayerCI",
+ "constant": "LAYERCI",
+ "env": "LAYERCI",
+ "pr": "LAYERCI_PULL_REQUEST"
+ },
+ {
+ "name": "Hudson",
+ "constant": "HUDSON",
+ "env": "HUDSON_URL"
+ },
+ {
+ "name": "Jenkins",
+ "constant": "JENKINS",
+ "env": ["JENKINS_URL", "BUILD_ID"],
+ "pr": { "any": ["ghprbPullId", "CHANGE_ID"] }
+ },
+ {
+ "name": "Magnum CI",
+ "constant": "MAGNUM",
+ "env": "MAGNUM"
+ },
+ {
+ "name": "Netlify CI",
+ "constant": "NETLIFY",
+ "env": "NETLIFY",
+ "pr": { "env": "PULL_REQUEST", "ne": "false" }
+ },
+ {
+ "name": "Nevercode",
+ "constant": "NEVERCODE",
+ "env": "NEVERCODE",
+ "pr": { "env": "NEVERCODE_PULL_REQUEST", "ne": "false" }
+ },
+ {
+ "name": "Render",
+ "constant": "RENDER",
+ "env": "RENDER",
+ "pr": { "IS_PULL_REQUEST": "true" }
+ },
+ {
+ "name": "Sail CI",
+ "constant": "SAIL",
+ "env": "SAILCI",
+ "pr": "SAIL_PULL_REQUEST_NUMBER"
+ },
+ {
+ "name": "Semaphore",
+ "constant": "SEMAPHORE",
+ "env": "SEMAPHORE",
+ "pr": "PULL_REQUEST_NUMBER"
+ },
+ {
+ "name": "Screwdriver",
+ "constant": "SCREWDRIVER",
+ "env": "SCREWDRIVER",
+ "pr": { "env": "SD_PULL_REQUEST", "ne": "false" }
+ },
+ {
+ "name": "Shippable",
+ "constant": "SHIPPABLE",
+ "env": "SHIPPABLE",
+ "pr": { "IS_PULL_REQUEST": "true" }
+ },
+ {
+ "name": "Solano CI",
+ "constant": "SOLANO",
+ "env": "TDDIUM",
+ "pr": "TDDIUM_PR_ID"
+ },
+ {
+ "name": "Strider CD",
+ "constant": "STRIDER",
+ "env": "STRIDER"
+ },
+ {
+ "name": "TaskCluster",
+ "constant": "TASKCLUSTER",
+ "env": ["TASK_ID", "RUN_ID"]
+ },
+ {
+ "name": "TeamCity",
+ "constant": "TEAMCITY",
+ "env": "TEAMCITY_VERSION"
+ },
+ {
+ "name": "Travis CI",
+ "constant": "TRAVIS",
+ "env": "TRAVIS",
+ "pr": { "env": "TRAVIS_PULL_REQUEST", "ne": "false" }
+ },
+ {
+ "name": "Vercel",
+ "constant": "VERCEL",
+ "env": "NOW_BUILDER"
+ },
+ {
+ "name": "Visual Studio App Center",
+ "constant": "APPCENTER",
+ "env": "APPCENTER_BUILD_ID"
+ }
+]