Pierre Vanduynslager 7e860c7915 docs(travis): recommend to use the deploy step instead of script
The `script` step can be used with Build Stage if `semantic-release` is the only `script` ran in the `release` stage.

See https://github.com/travis-ci/travis-ci/issues/1066
2018-01-21 15:00:05 -08:00

8.1 KiB

Using semantic-release with Travis CI

Environment variables

The Authentication environment variables can be configured in Travis Repository Settings or with the travis env set CLI.

Alternatively, the default NPM_TOKEN and GH_TOKEN can be easily setup with semantic-release-cli.

Single Node job configuration

For projects that require to be tested only with a single Node version on one Operating System.

Note: Node 8 is the minimal version required.

.travis.yml configuration for single Node job

This example is a minimal configuration for semantic-release with a build running Node 8 on Linux. See Travis - Customizing the Build for additional configuration options.

It's recommended to run the semantic-release command in the Travis deploy step so if an error occurs the build will fail and Travis will send a notification.

Note: It's not recommended to run the semantic-release command in the Travis script step as each script in this step will be executed regardless of the outcome of the previous one. See travis-ci/travis-ci#1066.

Note: Thesemantic-release execution command varies depending if you are using a local or global semantic-release installation.

language: node_js

node_js: 8

script:
  # Run tests
  - npm run test

deploy:
  provider: script
  skip_cleanup: true
  script:
    # Only for a local semantic-release installation
    - npm run semantic-release
    # Only for a global semantic-release installation
    - npm install -g semantic-release && semantic-release

package.json configuration for single Node job

A package.json is required only for local semantic-release installation.

{
  "devDependencies": {
    "semantic-release": "^11.0.0"
  },
  "scripts": {
    "semantic-release": "semantic-release"
  }
}

Multiple Node jobs configuration

For projects that require to be tested with multiple Node versions and/or on multiple Operating Systems.

Note: At least one job must run a Node >= 8 version.

.travis.yml configuration for multiple Node jobs

This example is a minimal configuration for semantic-release with a build running Node 4, 6 and 8 on Linux and OSX. See Travis - Customizing the Build for additional configuration options.

This example uses travis-deploy-once in order to command Run semantic-release only after all tests succeeded. Alternatively you can use Travis CI Build Stages recipe.

It's recommended to run the semantic-release command in the Travis deploy step so if an error occurs the build will fail and Travis will send a notification.

Note: It's not recommended to run the semantic-release command in the Travis script step as each script in this step will be executed regardless of the outcome of the previous one. See travis-ci/travis-ci#1066.

Note: Thesemantic-release execution command varies depending if you are using a local or global semantic-release installation.

language: node_js

node_js:
  - 8
  - 6
  - 4

os:
  - linux
  - osx

script:
  # Run tests
  - npm run test

deploy:
  provider: script
  skip_cleanup: true
  script:
    # Only for a local semantic-release installation
    - npm run travis-deploy-once "npm run semantic-release"
    # Only for a global semantic-release installation
    - npm install -g travis-deploy-once semantic-release && travis-deploy-once "semantic-release"

Note: See the travis-deploy-once pro and travis-url options for using with Travis Pro and Travis Enterprise.

package.json configuration for multiple Node jobs

A package.json is required only for local semantic-release installation.

{
  "devDependencies": {
    "semantic-release": "^12.0.0",
    "travis-deploy-once": "^4.0.0"
  },
  "scripts": {
    "semantic-release": "semantic-release",
    "travis-deploy-once": "travis-deploy-once"
  }
}

Non-JavaScript projects configuration

For projects that require to be tested with one or multiple version of a Non-JavaScript language, optionally on multiple Operating Systems.

This recipe cover the Travis specifics only. See Non JavaScript projects recipe for more information on the semantic-release configuration.

.travis.yml configuration for non-JavaScript projects

This example is a minimal configuration for semantic-release with a build running Go 1.6 and 1.7 on Linux and OSX. See Travis - Customizing the Build for additional configuration options.

This example uses travis-deploy-once in order to run semantic-release only after all tests succeeded. Alternatively you can use Travis CI Build Stages recipe.

It's recommended to run the semantic-release command in the Travis deploy step so if an error occurs the build will fail and Travis will send a notification.

Note: It's not recommended to run the semantic-release command in the Travis script step as each script in this step will be executed regardless of the outcome of the previous one. See travis-ci/travis-ci#1066.

language: go

go:
  - 1.6
  - 1.7

os:
  - linux
  - osx

script:
  # Run tests
  - go test -v ./...

deploy:
  provider: script
  skip_cleanup: true
  script:
    # Use nvm to install and use the Node LTS version (nvm is installed on all Travis images)
    - nvm install lts/*
    # Install travis-deploy-once and semantic-release
    - npm install -g travis-deploy-once semantic-release
    # Run semantic-release only on job, after all other are successful
    - travis-deploy-once "semantic-release"

Note: See the travis-deploy-once pro and travis-url options for using with Travis Pro and Travis Enterprise.