Pierre Vanduynslager ed89361d7c docs: documentation improvements
**Refactor and clarify the documentation in `README.md`**
- Add Highlights
- Add a Table of contents
- Clarify the way semantic-release works
- Clarify relationship with the CI environments
- Describe local install for Node projects (with a `package.json`) and global install for non-JavaScript projects
- Explain CI general configuration (environment variables and a run after all jobs are successful)
- Clarify configuration (via config file or CLI arguments)
- Clarify plugin roles and configuration
- Add doc for shareable configuration
- Add recipes
- Add resources (Videos, articles, tutorials)
- Add a Support section
- Add a Team section

**Add the following FAQs**
- How can I use a npm build script that requires the `package.json`’s version ?
- Can I use Semantic-release with Yarn?
- Can I use Semantic-release to publish non-JavaScript packages?
- Can I use Semantic-release with any CI service?
- Can I use Semantic-release with any GitLab?
- Can I use Semantic-release with any Git hosted environment?
- Can I skip the release to the npm registry?
- Can I use .npmrc options?
- How can I set the access level of the published npm package?
- Can I use Semantic-release to publish a package on Artifactory?
- Can I set the initial release version of my package to 0.0.1?
- Why does semantic-release require Node version >= 8?

**Clarify Nove 8 requirement and solutions**
- Add Node version requirement explanation and solutions
- [X] Display a link to the documentation when running on Node < 8 version

**Add recipes**
- Travis
- GitLab CI
- Travis with build stages - To be done in #573
- CircleCI workflows - To be done in #573
2018-01-05 16:05:30 -05:00

7.0 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 script step so if an error happen the build will fail and Travis will send a notification.

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

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

{
  "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 script step so if an error happen the build will fail and Travis will send a notification.

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

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

{
  "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 script step so if an error happen the build will fail and Travis will send a notification.

language: go

go:
  - 1.6
  - 1.7

os:
  - linux
  - osx

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

  # Use nvm to install and use the Node LTS version (nvm is installed on 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.