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
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.