Skip to content

Get environment variables exposed by CI services

License

Notifications You must be signed in to change notification settings

sailci/env-ci

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

env-ci

Get environment variables exposed by CI services.

Travis Codecov Greenkeeper badge

Adapted from codecov-node.

Install

$ npm install --save env-ci

Usage

const envCi = require('env-ci');

const {isCi, name, service, commit, build, buildUrl, branch, job, jobUrl, pr, isPr, slug, root} = envCi();

if (isCI) {
  console.log(`Building branch ${branch} of repo ${slug} on ${name}`);

  if (isPr) {
    console.log(`Building Pull Request #${pr}`);
  }

  if (service === 'travis') {
    // Do something specific to Travis CI
  }
}

Supported variables

Variable Description
isCi true is running on a CI, false otherwise
name CI service Commercial name (e.g. Travis CI, CircleCI, GitLab CI/CD)
service Standardized CI service name (e.g. travis, circleci, gitlab)
commit Commit sha that triggered the CI build
build CI service build number
buildUrl Link to the CI service build
branch Git branch being built or targeted by a pull request
job CI service job number
jobUrl Link to the CI service job
pr Pull Request number
isPr true is the build has been triggered by a Pull Request, false otherwise
slug The slug (in form: owner_name/repo_name) of the repository currently being built.
root The path to the directory where the repository is being built

Note: Some variables can be detected only on certain CI services. See Supported CI.

Supported CI

CI Service (name) service isCi commit build buildUrl branch job jobUrl pr isPr slug root
AppVeyor appveyor
Bamboo bamboo
Bitbucket bitbucket
Bitrise bitrise
Buddy buddy
Buildkite buildkite
CircleCI circleci
Cirrus CI cirrus
AWS CodeBuild codebuild
Codeship codeship
Drone drone
Gitlab CI/CD gitlab
Jenkins jenkins
Semaphore semaphore
Shippable shippable
TeamCity teamcity
Travis CI travis
Visual Studio Team Services vsts
Wercker wercker

Note: If none of the above CI services is detected, commit and branch are determined based on the local Git repository, and isCi is determined based on the CI environment variable.

API

envCi(options) => Result

options

Type: Object

env

Type: Object
Default: process.env

The object to read environment variables from.

cwd

Type: String
Default: process.cwd()

The current working directory in which to execute git commands used to determine the commit and branch Result properties in case no supported CI is detected.

Result

Type: Object

Environment variables values exposed by the CI service.

Caveats

Git branch determination

Certain CI services don't provide an environment variable to determine the current Git branch being built. In such cases the branch is determined with the command git rev-parse --abbrev-ref HEAD.

However, if the local repository is in a detached head state the branch cannot be determined directly. In such case, env-ci will look for the remote branches having the same HEAD as the local detached HEAD to determine the branch from which the detached HEAD was created.

In the rare case where there is multiple remote branches with the same HEAD as the local detached HEAD, env-ci will arbitrarily pick the first one. This can lead to an inaccurate branch value for certain CI services in such circumstances.

Affected CI services:

About

Get environment variables exposed by CI services

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%