From fdb995f77dfdb5689bb149afbb2ee7358d5ddfbc Mon Sep 17 00:00:00 2001 From: Pierre Vanduynslager Date: Fri, 5 Jan 2018 03:20:33 -0500 Subject: [PATCH] docs: publish with gitbook --- .gitignore | 6 +- README.md | 645 +++--------------- SUMMARY.md | 39 ++ bin/semantic-release.js | 2 +- book.json | 8 + docs/README.md | 11 +- docs/developer-guide/README.md | 5 +- docs/developer-guide/plugin.md | 2 +- .../shareable-configuration.md | 2 +- docs/extending/README.md | 4 + docs/extending/plugins-list.md | 33 + .../shareable-configurations-list.md} | 6 +- docs/plugins.md | 37 - docs/recipes/README.md | 2 +- docs/recipes/gitlab-ci.md | 10 +- docs/recipes/travis.md | 24 +- docs/resources.md | 19 + docs/support/FAQ.md | 148 ++++ docs/support/README.md | 6 + docs/support/node-support-policy.md | 13 + docs/{ => support}/node-version.md | 16 +- docs/{ => support}/troubleshooting.md | 2 +- docs/usage/README.md | 7 + docs/usage/ci-configuration.md | 37 + docs/usage/configuration.md | 168 +++++ docs/usage/installation.md | 32 + docs/usage/plugins.md | 82 +++ docs/usage/shareable-configurations.md | 5 + media/bender.png | Bin 0 -> 145282 bytes 29 files changed, 724 insertions(+), 647 deletions(-) create mode 100644 SUMMARY.md create mode 100644 book.json create mode 100644 docs/extending/README.md create mode 100644 docs/extending/plugins-list.md rename docs/{shareable-configurations.md => extending/shareable-configurations-list.md} (52%) delete mode 100644 docs/plugins.md create mode 100644 docs/resources.md create mode 100644 docs/support/FAQ.md create mode 100644 docs/support/README.md create mode 100644 docs/support/node-support-policy.md rename docs/{ => support}/node-version.md (51%) rename docs/{ => support}/troubleshooting.md (97%) create mode 100644 docs/usage/README.md create mode 100644 docs/usage/ci-configuration.md create mode 100644 docs/usage/configuration.md create mode 100644 docs/usage/installation.md create mode 100644 docs/usage/plugins.md create mode 100644 docs/usage/shareable-configurations.md create mode 100644 media/bender.png diff --git a/.gitignore b/.gitignore index fa6f8ca3..058ab690 100644 --- a/.gitignore +++ b/.gitignore @@ -125,7 +125,9 @@ $RECYCLE.BIN/ # Windows shortcuts *.lnk -# End of https://www.gitignore.io/api/macos,windows,linux,node - +# Lockfiles package-lock.json yarn.lock + +# Gitbook +_book diff --git a/README.md b/README.md index 4b4b73c9..0a3107b9 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,34 @@ -# :package::rocket: semantic-release +

📩🚀 semantic-release

+

Fully automated version management and package publishing

+

+ + Gitter + + + Travis + + + Codecov + + + Greenkeeper + + + semantic-release + +

+

+ + npm latest version + + + npm next version + +

-Fully automated version management and package publishing. +**semantic-release** automates the whole package release workflow including: determining the next version number, generating the release notes and publishing the package. -[![Gitter](https://badges.gitter.im/semantic-release/semantic-release.svg)](https://gitter.im/semantic-release/semantic-release?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![Travis](https://img.shields.io/travis/semantic-release/semantic-release/caribou.svg)](https://travis-ci.org/semantic-release/semantic-release) -[![Codecov](https://img.shields.io/codecov/c/github/semantic-release/semantic-release/caribou.svg)](https://codecov.io/gh/semantic-release/semantic-release) -[![Greenkeeper badge](https://badges.greenkeeper.io/semantic-release/semantic-release.svg)](https://greenkeeper.io/) -[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) - -[![npm](https://img.shields.io/npm/v/semantic-release/latest.svg)](https://www.npmjs.com/package/semantic-release) -[![npm](https://img.shields.io/npm/v/semantic-release/next.svg)](https://www.npmjs.com/package/semantic-release) - -semantic-release automates the whole package release workflow including: determining the next version number, generating the release notes and publishing the package. This removes the immediate connection between human emotions and version numbers, strictly following the [Semantic Versioning](http://semver.org) specification. +This removes the immediate connection between human emotions and version numbers, strictly following the [Semantic Versioning](http://semver.org) specification. > Trust us, this will change your workflow for the better. – [egghead.io](https://egghead.io/lessons/javascript-how-to-write-a-javascript-library-automating-releases-with-semantic-release) @@ -23,30 +40,16 @@ semantic-release automates the whole package release workflow including: determi - Use formalized commit message convention to document changes in the codebase - Integrate with your [continuous integration workflow](docs/recipes/README.md#ci-configurations) - Avoid potential errors associated with manual releases -- Support any [package managers and languages](docs/recipes/README.md#package-managers-and-languages) via [plugins](#plugins) -- Simple and reusable configuration via [shareable configurations](#shareable-configurations) - -## Table of Contents - -- [How does it work?](#how-does-it-work) -- [Installation and Usage](#installation-and-usage) -- [Plugins](#plugins) -- [Shareable configurations](#shareable-configurations) -- [Recipes](#recipes) -- [Frequently Asked Questions](#frequently-asked-questions) -- [Resources](#resources) -- [Support](#support) -- [Badge](#badge) -- [Node Support Policy](#node-support-policy) -- [Team](#team) +- Support any [package managers and languages](docs/recipes/README.md#package-managers-and-languages) via [plugins](docs/usage/plugins.md) +- Simple and reusable configuration via [shareable configurations](docs/usage/shareable-configurations.md) ## How does it work? ### Commit message format -semantic-release uses the commit messages to determine the type of changes in the codebase. Following formalized conventions for commit messages, semantic-release automatically determines the next [semantic version](https://semver.org) number, generates a changelog and publish the release. +**semantic-release** uses the commit messages to determine the type of changes in the codebase. Following formalized conventions for commit messages, **semantic-release** automatically determines the next [semantic version](https://semver.org) number, generates a changelog and publish the release. -By default semantic-release uses [Angular Commit Message Conventions](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines). The commit message format that can changed with the [`preset` or `config` options](#options) of the [@semantic-release/commit-analyzer](https://github.com/semantic-release/commit-analyzer#options) and [@semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator#options) plugins. +By default **semantic-release** uses [Angular Commit Message Conventions](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines). The commit message format that can changed with the [`preset` or `config` options](docs/usage/configuration.md#options) of the [@semantic-release/commit-analyzer](https://github.com/semantic-release/commit-analyzer#options) and [@semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator#options) plugins. Tools such as [commitizen](https://github.com/commitizen/cz-cli), [commitlint](https://github.com/marionebl/commitlint) or [semantic-git-commit-cli](https://github.com/JPeer264/node-semantic-git-commit-cli) can be used to help contributor and enforce valid commits message. @@ -60,7 +63,7 @@ Here is an example of the release type that will be done based on a commit messa ### Automation with CI -semantic-release is meant to be executed on the CI environment after every successful build on the release branch. This way no human is directly involved in the release process and the releases are guaranteed to be [unromantic and unsentimental](http://sentimentalversioning.org). +**semantic-release** is meant to be executed on the CI environment after every successful build on the release branch. This way no human is directly involved in the release process and the releases are guaranteed to be [unromantic and unsentimental](http://sentimentalversioning.org). ### Triggering a release @@ -68,533 +71,49 @@ When pushing new commits to the release branch (i.e. `master`) with `git push` o By default a release will be done for each push to the release branch that contains relevant code changes. If you need more control over the timing of releases you have a couple of options: - Publish releases on a distribution channel (for example npm’s [dist-tags](https://docs.npmjs.com/cli/dist-tag)). This way you can keep control over what your users end up using by default, and you can decide when to make an automatically released version available to the stable channel, and promote it. -- Develop on a `dev` branch and merge it to the release branch (i.e. `master`) once you are ready to publish. semantic-release will run only on pushes to the release branch. +- Develop on a `dev` branch and merge it to the release branch (i.e. `master`) once you are ready to publish. **semantic-release** will run only on pushes to the release branch. ### Release steps After running the tests the command `semantic-release` will execute the following steps: -| Step | Description | -|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| -| Verify Conditions | Verify all the conditions to proceed with the release with the [verify conditions plugins](#verifyconditions-plugin). | -| Get last release | Obtain last release with the [get last release plugin](#getlastrelease-plugin). | -| Analyze commits | Determine the type of release to do with the [analyze commits plugin](#analyzecommits-plugin) based on the commits added since the last release. | -| Verify release | Verify the release conformity with the [verify release plugins](#verifyrelease-plugin). | -| Generate notes | Generate release notes with the [generate notes plugin](#generatenotes-plugin) for the commits added since the last release. | -| Publish | Publish the release with the [publish plugins](#publish-plugin). | - -## Installation and Usage - -### Local installation - -For [Node modules projects](https://docs.npmjs.com/getting-started/creating-node-modules) we recommend to install semantic-release locally and to run the `semantic-release` command with a [npm script](https://docs.npmjs.com/misc/scripts): - -```bash -$ npm install --save-dev semantic-release -``` - -In your `package.json`: - -```json -"scripts": { - "semantic-release": "semantic-release" -} -``` - -Then in the CI environment: - -```bash -$ npm run semantic-release -``` - -### Global installation - -For other type of projects we recommend to install semantic-release globally directly in the CI environment: - -```bash -$ npm install -g semantic-release -$ semantic-release -``` - -### CI configuration - -#### Run `semantic-release` only after all tests succeeded - -The `semantic-release` command must be executed only after all the tests in the CI build pass. If the build runs multiple jobs (for example to test on multiple Operating Systems or Node versions) the CI has to be configured to guarantee that the `semantic-release` command is executed only after all jobs are successful. This can be achieved with [Travis Build Stages](https://docs.travis-ci.com/user/build-stages), [CircleCI Workflows](https://circleci.com/docs/2.0/workflows), [Codeship Deployment Pipelines](https://documentation.codeship.com/basic/builds-and-configuration/deployment-pipelines), [GitLab Pipelines](https://docs.gitlab.com/ee/ci/pipelines.html#introduction-to-pipelines-and-jobs), [Wercker Workflows](http://devcenter.wercker.com/docs/workflows), [GoCD Pipelines](https://docs.gocd.org/current/introduction/concepts_in_go.html#pipeline) or specific tools like [`travis-deploy-once`](https://github.com/semantic-release/travis-deploy-once). - -See [CI configuration recipes](docs/recipes/README.md#ci-configurations) for more details. - -#### Authentication - -Most semantic-release [plugins](#plugins) require to set up authentication in order to publish to your package manager's registry or to access your project's Git hosted service. The authentication token/credentials have to be made available in the CI serice via environment variables. - -See each plugin documentation for the environment variable to set up. - -The default [npm](https://github.com/semantic-release/npm#environment-variables) and [github](https://github.com/semantic-release/github#environment-variables) plugins require the following environment variables: - -| Variable | Description | -|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `NPM_TOKEN` | npm token created via [npm token create](https://docs.npmjs.com/getting-started/working_with_tokens#how-to-create-new-tokens).
**Note**: Only the `auth-only` [level of npm two-factor authentication](https://docs.npmjs.com/getting-started/using-two-factor-authentication#levels-of-authentication) is supported. | -| `GH_TOKEN` | GitHub authentication token.
**Note**: Only the [personal token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line) authentication is supported. | - -See [CI configuration recipes](docs/recipes/README.md#ci-configurations) for more details on how to configure environment variables in your CI service. - -### Automatic setup with `semantic-release-cli` - -[`semantic-release-cli`](https://github.com/semantic-release/cli) allow to easily [install](#installation-and-usage) semantic-release in your Node project and set up the [CI configuration](#ci-configuration): - -```bash -npm install -g semantic-release-cli - -cd your-module -semantic-release-cli setup -``` - -![dialogue](media/semantic-release-cli.png) - -See the [semantic-release-cli](https://github.com/semantic-release/cli#what-it-does) documentation for more details. - -### Configuration - -In order to customize semantic-release’s behavior, [options](#options) and [plugins](#plugins) can be set via: -- A `.releaserc` file, written in YAML or JSON, with optional extensions: .`yaml`/`.yml`/`.json`/`.js` -- A `release.config.js` file that exports an object -- A `release` key in the project's `package.json` file -- CLI arguments - -The following two examples are the same. - -Via CLI argument: - -```bash -$ semantic-release --branch next -``` - -Via `release` key in the project's `package.json` file: - -```json -"release": { - "branch": "next" -} -``` -```bash -$ semantic-release -``` - -**Note**: CLI arguments take precedence over options configured in the configuration file. - -**Note**: Plugins options cannot be defined via CLI arguments and must be defined in the configuration file. - -### Options - -#### extends - -Type: `Array`, `String` - -CLI arguments: `-e`, `--extends` - -List of modules or file paths containing a [shareable configuration](#shareable-configurations). If multiple shareable configuration are set, they will be imported in the order defined with each configuration option taking precedence over the options defined in a previous shareable configuration. - -**Note**: Options defined via CLI arguments or in the configuration file will take precedence over the ones defined in any shareable configuration. - -#### branch - -Type: `String` - -Default: `master` - -CLI arguments: `-b`, `--branch` - -The branch on which releases should happen. - -#### repositoryUrl - -Type: `String` - -Default: `repository` property in `package.json` or [git origin url](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) - -CLI arguments: `-r`, `--repository-url` - -The git repository URL - -Any valid git url format is supported (See [Git protocols](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols)). - -**Note**: If the [Github plugin](https://github.com/semantic-release/github) is used the URL must be a valid Github URL that include the `owner`, the `repository` name and the `host`. **The Github shorthand URL is not supported.** - -#### dryRun - -Type: `Boolean` - -Default: `false` if running in a CI environment, `false` otherwise - -CLI arguments: `-d`, `--dry-run` - -Dry-run mode, skip publishing, print next version and release notes. - -#### noCi - -Type: `Boolean` - -Default: `false` - -CLI arguments: `--no-ci` - -Skip Continuous Integration environment verifications, allowing to make releases from a local machine. - -#### debug - -Type: `Boolean` - -Default: `false` - -CLI argument: `--debug` - -Output debugging information. It can also be enabled by set the `DEBUG` environment variable to `semantic-release`. - -#### verifyConditions - -Type: `Array`, `String`, `Object` - -Default: `['@semantic-release/npm', '@semantic-release/github']` - -CLI argument: `--verify-conditions` - -Define the list of [verify conditions plugins](#verifyconditions-plugin). Plugins will run in series, in the order defined in the `Array`. - -See [Plugins configuration](#plugins-configuration) for more details. - -#### getLastRelease - -Type: `String`, `Object` - -Default: `['@semantic-release/npm']` - -CLI argument: `--get-last-release` - -Define the [get last release plugin](#getlastrelease-plugin). - -See [Plugins configuration](#plugins-configuration) for more details. - -#### analyzeCommits - -Type: `String`, `Object` - -Default: `['@semantic-release/commit-analyzer']` - -CLI argument: `--analyze-commits` - -Define the [analyze commits plugin](#analyzecommits-plugin). - -See [Plugins configuration](#plugins-configuration) for more details. - -#### verifyRelease - -Type: `Array`, `String`, `Object` - -Default: `[]` - -CLI argument: `--verify-release` - -Define the list of [verify release plugins](#verifyrelease-plugin). Plugins will run in series, in the order defined in the `Array`. - -See [Plugins configuration](#plugins-configuration) for more details. - -#### generateNotes - -Type: `String`, `Object` - -Default: `['@semantic-release/release-notes-generator']` - -CLI argument: `--generate-notes` - -Define the [generate notes plugin](#generatenotes-plugin). - -See [Plugins configuration](#plugins-configuration) for more details. - -#### publish - -Type: `Array`, `String`, `Object` - -Default: `['@semantic-release/npm', '@semantic-release/github']` - -CLI argument: `--publish` - -Define the list of [publish plugins](#publish-plugin). Plugins will run in series, in the order defined in the `Array`. - -See [Plugins configuration](#plugins-configuration) for more details. - -## Plugins - -Each [release steps](#release-steps) is implemented within a plugin or a list of plugins that can be configured, allowing to support different [commit message format](#commit-message-format), release not generator and publishing platforms. - -See [List of semantic-release plugins](docs/plugins.md#semantic-release-plugins). - -See [Plugin developer Guide](docs/developer-guide/plugin.md#semantic-release-plugin-development) for more information on how to develop a plugin. - -### Plugin types - -#### verifyConditions plugin - -Plugin responsible for verifying all the conditions to proceed with the release: configuration is correct, authentication token are valid, etc... - -Default implementation: [npm](https://github.com/semantic-release/npm#verifyconditions) and [github](https://github.com/semantic-release/github#verifyconditions). - -#### getLastRelease plugin - -Plugin responsible for determining the version of the package last release. - -Default implementation: [@semantic-release/npm](https://github.com/semantic-release/npm#getlastrelease). - -#### analyzeCommits plugin - -Plugin responsible for determining the type of the next release (`major`, `minor` or `patch`). - -Default implementation: [@semantic-release/commit-analyzer](https://github.com/semantic-release/commit-analyzer). - -#### verifyRelease plugin - -Plugin responsible for verifying the parameters (version, type, dist-tag etc...) of the release that is about to be published match certain expectations. For example the [cracks plugin](https://github.com/semantic-release/cracks) allows to verify that if a release contains breaking changes, its type must be `major`. - -Default implementation: none. - -#### generateNotes plugin - -Plugin responsible for generating release notes. - -Default implementation: [@semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator). - -#### publish plugin - -Plugin responsible for publishing the release. - -Default implementation: [npm](https://github.com/semantic-release/npm#publish) and [github](https://github.com/semantic-release/github#publish). - -### Plugins configuration - -Plugin can be configured by specifying the plugin's module name or file path directly as a `String` or within the `path` key of an `Object`. - -Plugins specific options can be set similarly to the other semantic-release [options](#options) or within the plugin `Object`. Plugins options defined along the other semantic-release [options](#options) will apply to all plugins, while the one defined within the plugin `Object` will apply only to this specific plugin. - -For example: -```json -{ - "release": { - "verifyConditions": [ - { - "path": "@semantic-release/exec", - "cmd": "verify-conditions.sh" - }, - "@semantic-release/npm", - "@semantic-release/github" - ], - "analyzeCommits": "custom-plugin", - "verifyRelease": [ - { - "path": "@semantic-release/exec", - "cmd": "verify-release.sh" - }, - ], - "generateNotes": "./build/my-plugin.js", - "githubUrl": "https://my-ghe.com", - "githubApiPathPrefix": "/api-prefix" - } -} -``` - -With this configuration: -- the `custom-plugin` npm module will be used to [analyze commits](#analyzecommits-plugin) -- the `./build/my-plugin.js` script will be used to [generate release notes](#generatenotes-plugin) -- the [`@semantic-release/exec`](https://github.com/semantic-release/exec), [`@semantic-release/npm`](https://github.com/semantic-release/npm) and [`@semantic-release/exec`](https://github.com/semantic-release/exec) plugins will be used to [verify conditions](#verifyconditions-plugin) -- the [`@semantic-release/exec`](https://github.com/semantic-release/exec) plugin will be used to [verify the release](#verifyrelease-plugin) -- the `cmd` option will be set to `verify-conditions.sh` only for the [`@semantic-release/exec`](https://github.com/semantic-release/exec) plugin used to [verify conditions](#verifyconditions-plugin) -- the `cmd` option will be set to `verify-release.sh` only for the [`@semantic-release/exec`](https://github.com/semantic-release/exec) plugin used to [verify the release](#verifyrelease-plugin) -- the `githubUrl` and `githubApiPathPrefix` options will be set to respectively `https://my-ghe.com` and `/api-prefix` for all plugins - -## Shareable configurations - -A sharable configuration is an [npm](https://www.npmjs.com/) package that exports a semantic-release configuration object. It allows to easily use the same configuration across several projects. - -The shareable configurations to use can be set with the [extends](#extends) option. - -See [List of semantic-release shareable configuration](docs/shareable-configurations.md#semantic-release-shareable-configurations). - -See [Shareable configuration developer Guide](docs/developer-guide/shareable-configuration.md#semantic-release-shareable-config-development) for more information on how to develop a shareable configuration. - -## Recipes - -- [CI configurations](docs/recipes/README.md#ci-configurations) -- [Package managers and languages](docs/recipes/README.md#package-managers-and-languages) - -## Frequently Asked Questions - -### Why is the `package.json`’s version not updated in my repository? - -semantic-release takes care of updating the `package.json`’s version before publishing to [npm](https://www.npmjs.com). - -By default, only the published package will contains the version, which is the only place where it is *really* required, but the updated `package.json` will not be pushed to the Git repository - -However, the [`@semantic-release/git`](https://github.com/semantic-release/git) plugin can be used to push the updated `package.json` as well as other files to the Git repository. - -### How can I use a npm build script that requires the `package.json`’s version ? - -The `package.json`’s version will be updated by the `semantic-release` command just before publishing to [npm](https://www.npmjs.com), therefore it won't be available for scripts ran before the `semantic-release` command. - -As semantic-release uses the [npm CLI](https://docs.npmjs.com/cli/npm) to publish, all [npm hook scripts](https://docs.npmjs.com/misc/scripts#hook-scripts) will be executed. Therefore you can run your build script in the [`prepublishOnly`](https://docs.npmjs.com/misc/scripts#prepublish-and-prepare) hook. It will be executed after the `semantic-release` command update the `package.json`’s version and before publishing. - -### Is there a way to preview which version would currently get published? - -Yes with the [dry-run options](#dryrun) which prints to the console the next version to be published and the release notes. - -### Can I use semantic-release with Yarn? - -If you are using a [local semantic-release installation](#local-installation) and run multiple CI jobs with different versions, the `yarn install` command will fail with Node < 8 as semantic-release require [Node >= 8](#why-does-semantic-release-require-node-version--8). See [yarnpkg/rfcs#69](https://github.com/yarnpkg/rfcs/pull/69). - -In order to run semantic-release with [Yarn](https://yarnpkg.com) you would need to: -- Use a [global semantic-release installation](#global-installation) -- Make sure to install and run the `semantic-release` command only in a CI jobs running with [Node >= 8](#why-does-semantic-release-require-node-version--8) - -If your CI environment provides [nvm](https://github.com/creationix/nvm) you can switch to Node 8 before installing and running the `semantic-release` command: - -```bash -$ nvm install 8 && yarn install -g semantic-release && semantic-release -``` - -See the [CI configuration recipes](docs/recipes/README.md#ci-configurations) for more details on specific CI environments. - -### Can I use semantic-release to publish non-JavaScript packages? - -Yes, semantic-release is a Node CLI application but it can be used to publish any type of packages. - -To publish a non-JavaScript package you would need to: -- Use a [global semantic-release installation](#global-installation) -- Set [semantic-release options](#options) via [CLI arguments or rc file](#configuration) -- Make sure your CI job executing the `semantic-release` command has access to [Node >= 8](#why-does-semantic-release-require-node-version--8) to execute the `semantic-release` command - -See the [CI configuration recipes](docs/recipes/README.md#ci-configurations) for more details on specific CI environments. - -### Can I use semantic-release with any CI service? - -Yes, semantic-release can be used with any CI service, as long as it provides: -- A way to set [authentication](#authentication) via environment variables -- A way to guarantee that the `semantic-release` command is [executed only after all the tests of all the jobs in the CI build pass](#run-semantic-release-only-after-all-tests-succeeded) - -See the [CI configuration recipes](docs/recipes/README.md#ci-configurations) for more details on specific CI environments. - -### Can I run semantic-release on my local machine rather than on a CI server? - -Yes, you can by explicitly setting the [`--no-ci` CLI option](#options) option. You will also have to set the required [authentication](#authentication) via environment variables on your local machine, for example: - -```bash -$ NPM_TOKEN= GH_TOKEN= npm run semantic-release --no-ci -``` - -However this is not the recommended approach, as running unit and integration tests on an independent machine before publishing software is a crucial part of the release workflow. - -### Can I use semantic-release with GitLab? - -Yes, with the [`@semantic-release/gitlab-config`](https://github.com/semantic-release/gitlab-config) shareable configuration. - -See the [GitLab CI recipes](docs/recipes/gitlab-ci.md#using-semantic-release-with-gitlab-ci) for the CI configuration. - -### Can I use semantic-release with any Git hosted environment? - -By default semantic-release uses the [`@semantic-release/github`](https://github.com/semantic-release/github) plugin to publish a [GitHub release](https://help.github.com/articles/about-releases). For other Git hosted environment the [`@semantic-release/git`](https://github.com/semantic-release/git) and [`@semantic-release/changelog`](https://github.com/semantic-release/changelog) plugins can be used via [plugins configuration](#plugins-configuration). - -See the [`@semantic-release/git`](https://github.com/semantic-release/git#semantic-releasegit) [`@semantic-release/changelog`](https://github.com/semantic-release/changelog#semantic-releasechangelog) plugins documentation for more details. - -### Can I skip the release to the npm registry? - -Yes, the publishing to the npm registry can be disabled with the [`npmPublish`](https://github.com/semantic-release/npm#options) option of the [`@semantic-release/npm`](https://github.com/semantic-release/npm) plugin. In addition the [`tarballDir`](https://github.com/semantic-release/npm#options) option allow to generate the package tarball in order to publish it to your repository with the [`@semantic-release/git`](https://github.com/semantic-release/git) or to a [GitHub release](https://help.github.com/articles/about-releases) with the [`@semantic-release/github`](https://github.com/semantic-release/github) plugin. - -See the [`@semantic-release/npm`](https://github.com/semantic-release/npm#semantic-releasenpm) plugin documentation for more details. - -### Can I use `.npmrc` options? - -Yes, all the [npm configuration options](https://docs.npmjs.com/misc/config) are supported via the [`.npmrc`](https://docs.npmjs.com/files/npmrc) file at the root of your repository. - -See the [`@semantic-release/npm`](https://github.com/semantic-release/npm#npm-configuration) plugin documentation for more details. - -### How can I set the access level of the published npm package? - -The [npm `access` option](https://docs.npmjs.com/misc/config#access) can be set in the [`.npmrc`](https://docs.npmjs.com/files/npmrc) file at the root of your repository: - -```rc -access=public -``` - -Or with the `publishConfig.access` key in your project's `package.json`: - -```json -{ - "publishConfig": { - "access": "public" - } -} -``` - -### Can I use semantic-release to publish a package on Artifactory? - -Any npm compatible registry is supported with the [`@semantic-release/npm`](https://github.com/semantic-release/npm) plugin. For Artifactory versions prior to 5.4, the legacy authentication has to be used (with `NPM_USERNAME`, `NPM_PASSWORD` and `NPM_EMAIL` [environment variables](https://github.com/semantic-release/npm#environment-variables)). - -See [npm registry authentication](https://github.com/semantic-release/npm#npm-registry-authentication) for more details. - -See [Artifactory - npm Registry](https://www.jfrog.com/confluence/display/RTF/Npm+Registry#NpmRegistry-AuthenticatingthenpmClient) documentation for Artifactiry configuration. - -### Can I manually trigger the release of a specific version? - -You can trigger a release by pushing to your Git repository. You deliberately cannot trigger a *specific* version release, because this is the whole point of semantic-release. - -### Is it *really* a good idea to release on every push? - -It is indeed a great idea because it *forces* you to follow best practices. If you don’t feel comfortable releasing every feature or fix on your `master` you might not treat your `master` branch as intended. - -From [Understanding the GitHub Flow](https://guides.github.com/introduction/flow/index.html): - -> Branching is a core concept in Git, and the entire GitHub Flow is based upon it. There's only one rule: anything in the master branch is always deployable. - -If you need more control over the timing of releases, see [Triggering a release](#triggering-a-release) for different options. - -### Can I set the initial release version of my package to `0.0.1`? - -This is not supported by semantic-release as it's not considered a good practice, mostly because [Semantic Versioning](https://semver.org) rules applies differently to major version zero. - -In early development phase when your package is not ready for production yet we recommend to publish releases on a distribution channel (for example npm’s [dist-tags](https://docs.npmjs.com/cli/dist-tag)) or to develop on a `dev` branch and merge it to `master` periodically. See [Triggering a release](#triggering-a-release) for more details on those solutions. - -See [“Introduction to SemVer” - Irina Gebauer](https://blog.greenkeeper.io/introduction-to-semver-d272990c44f2) for more details on [Semantic Versioning](https://semver.org) and the recommendation to start at version `1.0.0`. - -### Can I trust semantic-release with my releases? - -semantic-release has a full unit and integration test suite that tests `npm` publishes against the [npm-registry-couchapp](https://github.com/npm/npm-registry-couchapp). - -In addition the [verify conditions step](#release-steps) verifies that all necessary conditions for proceeding with a release are met, and a new release will be performed [only if all your tests pass](#run-semantic-release-only-after-all-tests-succeeded). - -### Why does semantic-release require Node version >= 8? - -semantic-release is written using the latest [ECMAScript 2017](https://www.ecma-international.org/publications/standards/Ecma-262.htm) features, without transpilation which **requires Node version 8 or higher**. - -See [Node version requirement](docs/node-version.md#node-version-requirement) for more details and solutions. - -## Resources - -### Videos - -- ["Introducing Reliable Dependency and Release Management for npm Packages" - Gregor Martynus](https://www.youtube.com/watch?v=R2RJWLcfzwc) -- ["Kill all humans" - Jan Lehnardt](https://www.youtube.com/watch?v=ZXyx_1kN1L8&t=2s) -- [Publishing JavaScript Packages" - JavaScript Air](https://javascriptair.com/episodes/2016-07-20) -- ["Managing Dependencies like a boss 😎" - JavaScript Air](https://javascriptair.com/episodes/2016-08-17) -- ["Dependency Hell Just Froze Over" - Stephan Bönnemann](https://www.youtube.com/watch?v=PA139CERNbc) -- [“semantic-release Q&A with Kent C. Dodds”](https://www.youtube.com/watch?v=g6y3DnhkjrI) -- [“We fail to follow SemVer – and why it needn’t matter” - Stephan Bönnemann](https://www.youtube.com/watch?v=tc2UgG5L7WM) - -### Articles - -- [“Introduction to SemVer” - Irina Gebauer](https://blog.greenkeeper.io/introduction-to-semver-d272990c44f2) - -### Tutorials - -- [“How to Write a JavaScript Library - Automating Releases with semantic-release” – egghead.io](https://egghead.io/lessons/javascript-automating-releases-with-semantic-release) - -## Support +| Step | Description | +|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Verify Conditions | Verify all the conditions to proceed with the release with the [verify conditions plugins](docs/usage/plugins.md#verifyconditions-plugin). | +| Get last release | Obtain last release with the [get last release plugin](docs/usage/plugins.md#getlastrelease-plugin). | +| Analyze commits | Determine the type of release to do with the [analyze commits plugin](docs/usage/plugins.md#analyzecommits-plugin) based on the commits added since the last release. | +| Verify release | Verify the release conformity with the [verify release plugins](docs/usage/plugins.md#verifyrelease-plugin). | +| Generate notes | Generate release notes with the [generate notes plugin](docs/usage/plugins.md#generatenotes-plugin) for the commits added since the last release. | +| Publish | Publish the release with the [publish plugins](docs/usage/plugins.md#publish-plugin). | + +## Documentation + +- Usage + - [Installation](docs/usage/installation.md#installation) + - [CI Configuration](docs/usage/ci-configuration.md#ci-configuration) + - [Configuration](docs/usage/configuration.md#configuration) + - [Plugins](docs/usage/plugins.md) + - [Shareable configurations](docs/usage/shareable-configurations.md) +- Extending + - [Plugins](docs/extending/plugins-list.md) + - [Shareable configuration](docs/extending/shareable-configurations-list.md) +- Recipes + - [CI configurations](docs/recipes/README.md) + - [Package managers and languages](docs/recipes/README.md) +- Developer guide + - [Plugins](docs/developer-guide/plugin.md) + - [Shareable configuration](docs/developer-guide/shareable-configuration.md) +- Resources + - [Videos](docs/resources.md#videos) + - [Articles](docs/resources.md#articles) + - [Tutorials](docs/resources.md#tutorials) +- Support + - [Frequently Asked Questions](docs/support/FAQ.md) + - [Troubleshooting](docs/support/troubleshooting.md) + - [Node version requirement](docs/support/node-version.md) + - [Node Support Policy](docs/support/node-support-policy.md) + +## Get help - [Stack Overflow](https://stackoverflow.com/questions/tagged/semantic-release) - [Gitter chat](https://gitter.im/semantic-release/semantic-release) @@ -602,7 +121,7 @@ See [Node version requirement](docs/node-version.md#node-version-requirement) fo ## Badge -Let people know that your package is published using semantic-release by including this badge in your readme. +Let people know that your package is published using **semantic-release** by including this badge in your readme. [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) @@ -610,24 +129,12 @@ Let people know that your package is published using semantic-release by includi [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) ``` -## Node Support Policy - -We only support [Long-Term Support](https://github.com/nodejs/Release) versions of Node starting with [Node 8.9.0 (LTS)](https://nodejs.org/en/blog/release/v8.9.0). - -We specifically limit our support to LTS versions of Node, not because this package won't work on other versions, but because we have a limited amount of time, and supporting LTS offers the greatest return on that investment. - -It's possible this package will work correctly on newer versions of Node. It may even be possible to use this package on older versions of Node, though that's more unlikely as we'll make every effort to take advantage of features available in the oldest LTS version we support. - -As each Node LTS version reaches its end-of-life we will remove that version from the node engines property of our package's package.json file. Removing a Node version is considered a breaking change and will entail the publishing of a new major version of this package. We will not accept any requests to support an end-of-life version of Node. Any merge requests or issues supporting an end-of-life version of Node will be closed. - -We will accept code that allows this package to run on newer, non-LTS, versions of Node. Furthermore, we will attempt to ensure our own changes work on the latest version of Node. To help in that commitment, our continuous integration setup runs against all LTS versions of Node in addition the most recent Node release; called current. - -JavaScript package managers should allow you to install this package with any version of Node, with, at most, a warning if your version of Node does not fall within the range specified by our node engines property. If you encounter issues installing this package, please report the issue to your package manager. - ## Team | [![Stephan Bönnemann](https://github.com/boennemann.png?size=100)](https://github.com/boennemann) | [![Rolf Erik Lekang](https://github.com/relekang.png?size=100)](https://github.com/relekang) | [![Johannes Jörg Schmidt](https://github.com/jo.png?size=100)](https://github.com/jo) | [![Gregor Martynus](https://github.com/gr2m.png?size=100)](https://github.com/gr2m) | [![Pierre Vanduynslager](https://github.com/finnp.png?size=100)](https://github.com/finnp) | [![Pierre Vanduynslager](https://github.com/pvdlg.png?size=100)](https://github.com/pvdlg) | [![Christoph Witzko](https://github.com/christophwitzko.png?size=100)](https://github.com/christophwitzko) | |---------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | [Stephan Bönnemann](https://github.com/boennemann) | [Rolf Erik Lekang](https://github.com/relekang) | [Johannes Jörg Schmidt](https://github.com/jo) | [Gregor Martynus](https://github.com/gr2m) | [Finn Pauls](https://github.com/finnp) | [Pierre Vanduynslager](https://github.com/pvdlg) | [Christoph Witzko](https://github.com/christophwitzko) | -[![](https://cloud.githubusercontent.com/assets/908178/6091690/cc86f58c-aeb8-11e4-94cb-15f15f486cde.png)](https://twitter.com/trodrigues/status/509301317467373571) +

+ Kill all humans +

diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 00000000..8f20c5d3 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,39 @@ +# Summary + +## About +- [Highlights](README.md#highlights) +- [How does it work?](README.md#how-does-it-work) + +## Usage +- [Installation](docs/usage/installation.md#installation) +- [CI Configuration](docs/usage/ci-configuration.md#ci-configuration) +- [Configuration](docs/usage/configuration.md#configuration) +- [Plugins](docs/usage/plugins.md) +- [Shareable configurations](docs/usage/shareable-configurations.md) + +## Extending +- [Plugins](docs/extending/plugins-list.md) +- [Shareable configuration](docs/extending/shareable-configurations-list.md) + +## Recipes +- [CI configurations](docs/recipes/README.md) + - [CircleCI 2.0 workflows](docs/recipes/circleci-workflows.md) + - [Travis CI](docs/recipes/travis.md) + - [Travis CI with build stages](docs/recipes/travis-build-stages.md) + - [GitLab CI](docs/recipes/gitlab-ci.md) +- [Package managers and languages](docs/recipes/README.md) + +## Developer guide +- [Plugin](docs/developer-guide/plugin.md) +- [Shareable configuration](docs/developer-guide/shareable-configuration.md) + +## Resources +- [Videos](docs/resources.md#videos) +- [Articles](docs/resources.md#articles) +- [Tutorials](docs/resources.md#tutorials) + +## Support +- [Frequently Asked Questions](docs/support/FAQ.md) +- [Troubleshooting](docs/support/troubleshooting.md) +- [Node version requirement](docs/support/node-version.md) +- [Node Support Policy](docs/support/node-support-policy.md) diff --git a/bin/semantic-release.js b/bin/semantic-release.js index 8e6f606e..05024908 100755 --- a/bin/semantic-release.js +++ b/bin/semantic-release.js @@ -12,7 +12,7 @@ if (!semver.satisfies(process.version, pkg.engines.node)) { console.error( `[semantic-release]: node version ${pkg.engines.node} is required. Found ${process.version}. -See https://github.com/semantic-release/semantic-release/blob/caribou/docs/node-version.md for more details and solutions.` +See https://github.com/semantic-release/semantic-release/blob/caribou/docs/support/node-version.md for more details and solutions.` ); process.exit(1); } diff --git a/book.json b/book.json new file mode 100644 index 00000000..dd3c652e --- /dev/null +++ b/book.json @@ -0,0 +1,8 @@ +{ + "plugins" : ["github"], + "pluginsConfig": { + "github": { + "url": "https://github.com/semantic-release/semantic-release" + } + } +} diff --git a/docs/README.md b/docs/README.md index 01bb6068..b2189449 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,7 +1,8 @@ # semantic-release documentation -- [Plugins](plugins.md#semantic-release-plugins) - List of semantic-release plugins -- [Shareable configurations](shareable-configurations.md#semantic-release-shareable-configurations) - List of semantic-release shareable configs -- [Developer Guide](developer-guide/README.md#semantic-release-developer-guide) - The essentials of writing a semantic-release plugin or shareable config -- [Recipes](recipes/README.md#semantic-release-recipes) - Community written recipes for common semantic-release use-cases -- [Troubleshooting](troubleshooting.md#troubleshooting-semantic-release) - Community written troubleshooting guide to help with common semantic-release issues +- [Usage](usage/README.md) - **semantic-release** installation and configuration +- [Extending][extending/README.md]- Extending **semantic-release** with plugins and shareable configurations +- [Recipes](recipes/README.md) - Community written recipes for common **semantic-release** use-cases +- [Developer Guide](developer-guide/README.md) - The essentials of writing a **semantic-release** plugin or shareable configurations +- [Resources](resources.md) - Videos, articles and tutorials +- [Support](support/README.md) - FAQ and troubleshooting diff --git a/docs/developer-guide/README.md b/docs/developer-guide/README.md index e795865b..afd97c5d 100644 --- a/docs/developer-guide/README.md +++ b/docs/developer-guide/README.md @@ -1 +1,4 @@ -# semantic-release Developer Guide +# Developer guide + +- [Plugins](plugin.md) +- [Shareable configuration](shareable-configuration.md) diff --git a/docs/developer-guide/plugin.md b/docs/developer-guide/plugin.md index c3ff79ed..1fd31e5e 100644 --- a/docs/developer-guide/plugin.md +++ b/docs/developer-guide/plugin.md @@ -1 +1 @@ -# semantic-release plugin development +# Plugin developer guide diff --git a/docs/developer-guide/shareable-configuration.md b/docs/developer-guide/shareable-configuration.md index 6aa0db8c..e38eecf8 100644 --- a/docs/developer-guide/shareable-configuration.md +++ b/docs/developer-guide/shareable-configuration.md @@ -1 +1 @@ -# semantic-release shareable config development +# Shareable configuration developer guide diff --git a/docs/extending/README.md b/docs/extending/README.md new file mode 100644 index 00000000..2ccdc147 --- /dev/null +++ b/docs/extending/README.md @@ -0,0 +1,4 @@ +# Extending semantic-release + +- [Plugins list](plugins-list.md) +- [Shareable configuration list](shareable-configurations-list.md) diff --git a/docs/extending/plugins-list.md b/docs/extending/plugins-list.md new file mode 100644 index 00000000..6886758b --- /dev/null +++ b/docs/extending/plugins-list.md @@ -0,0 +1,33 @@ +# Plugins list + +## Default plugins + +- [@semantic-release/github](https://github.com/semantic-release/github) + - [verifyConditions](https://github.com/semantic-release/github#verifyconditions): Verify the presence and the validity of the GitHub authentication and release configuration + - [publish](https://github.com/semantic-release/github#publish): Publish a [GitHub release](https://help.github.com/articles/about-releases) +- [@semantic-release/npm](https://github.com/semantic-release/npm) + - [verifyConditions](https://github.com/semantic-release/npm#verifyconditions): Verify the presence and the validity of the npm authentication and release configuration + - [getLastRelease](https://github.com/semantic-release/npm#getlastrelease): Determine the last release of the package on the npm registry + - [publish](https://github.com/semantic-release/npm#publish): Publish the package on the npm registry + +## Official plugins + +- [@semantic-release/gitlab](https://github.com/semantic-release/gitlab) + - [verifyConditions](https://github.com/semantic-release/gitlab#verifyconditions): Verify the presence and the validity of the GitLab authentication and release configuration + - [publish](https://github.com/semantic-release/gitlab#publish): Publish a [GitLab release](https://docs.gitlab.com/ce/workflow/releases.html) +- [@semantic-release/git](https://github.com/semantic-release/git) + - [verifyConditions](https://github.com/semantic-release/git#verifyconditions): Verify the presence and the validity of the Git authentication and release configuration + - [getLastRelease](https://github.com/semantic-release/git#getlastrelease): Determine the last release via Git tags on the repository + - [publish](https://github.com/semantic-release/git#publish): Push a release commit and tag, including configurable files +- [@semantic-release/changelog](https://github.com/semantic-release/changelog) + - [verifyConditions](https://github.com/semantic-release/changelog#verifyconditions): Verify the presence and the validity of the configuration + - [publish](https://github.com/semantic-release/changelog#publish): Create or update the changelog file in the local project repository +- [@semantic-release/exec](https://github.com/semantic-release/exec) + - [verifyConditions](https://github.com/semantic-release/exec#verifyconditions): Execute a shell command to verify if the release should happen + - [getLastRelease](https://github.com/semantic-release/exec#getlastrelease): Execute a shell command to determine the last release + - [analyzeCommits](https://github.com/semantic-release/exec#analyzecommits): Execute a shell command to determine the type of release + - [verifyRelease](https://github.com/semantic-release/exec#verifyrelease): Execute a shell command to verifying a release that was determined before and is about to be published. + - [generateNotes](https://github.com/semantic-release/exec#analyzecommits): Execute a shell command to generate the release note + - [publish](https://github.com/semantic-release/exec#publish): Execute a shell command to publish the release. + +## Community plugins diff --git a/docs/shareable-configurations.md b/docs/extending/shareable-configurations-list.md similarity index 52% rename from docs/shareable-configurations.md rename to docs/extending/shareable-configurations-list.md index 2f4d60c9..d115a5d8 100644 --- a/docs/shareable-configurations.md +++ b/docs/extending/shareable-configurations-list.md @@ -1,7 +1,7 @@ -# semantic-release shareable configurations +# Shareable configurations list ## Official configurations -- [@semantic-release/apm-config](https://github.com/semantic-release/apm-config) - :atom: semantic-release shareable config for releasing atom packages -- [@semantic-release/gitlab-config](https://github.com/semantic-release/gitlab-config) - :fox_face: semantic-release shareable config for GitLab +- [@semantic-release/apm-config](https://github.com/semantic-release/apm-config) - semantic-release shareable configuration for releasing atom packages +- [@semantic-release/gitlab-config](https://github.com/semantic-release/gitlab-config) - semantic-release shareable configuration for GitLab ## Community configurations diff --git a/docs/plugins.md b/docs/plugins.md deleted file mode 100644 index e76efa1c..00000000 --- a/docs/plugins.md +++ /dev/null @@ -1,37 +0,0 @@ -# semantic-release plugins - -## Default plugins - - - [@semantic-release/github](https://github.com/semantic-release/github) - - [verifyConditions](https://github.com/semantic-release/github#verifyconditions): Verify the presence and the validity of the GitHub authentication and release configuration - - [publish](https://github.com/semantic-release/github#publish): Publish a [GitHub release](https://help.github.com/articles/about-releases) - - - [@semantic-release/npm](https://github.com/semantic-release/npm) - - [verifyConditions](https://github.com/semantic-release/npm#verifyconditions): Verify the presence and the validity of the npm authentication and release configuration - - [getLastRelease](https://github.com/semantic-release/npm#getlastrelease): Determine the last release of the package on the npm registry - - [publish](https://github.com/semantic-release/npm#publish): Publish the package on the npm registry - -## Official plugins - - - [@semantic-release/gitlab](https://github.com/semantic-release/gitlab) - - [verifyConditions](https://github.com/semantic-release/gitlab#verifyconditions): Verify the presence and the validity of the GitLab authentication and release configuration - - [publish](https://github.com/semantic-release/gitlab#publish): Publish a [GitLab release](https://docs.gitlab.com/ce/workflow/releases.html) - - - [@semantic-release/git](https://github.com/semantic-release/git) - - [verifyConditions](https://github.com/semantic-release/git#verifyconditions): Verify the presence and the validity of the Git authentication and release configuration - - [getLastRelease](https://github.com/semantic-release/git#getlastrelease): Determine the last release via Git tags on the repository - - [publish](https://github.com/semantic-release/git#publish): Push a release commit and tag, including configurable files - - - [@semantic-release/changelog](https://github.com/semantic-release/changelog) - - [verifyConditions](https://github.com/semantic-release/changelog#verifyconditions): Verify the presence and the validity of the configuration - - [publish](https://github.com/semantic-release/changelog#publish): Create or update the changelog file in the local project repository - - - [@semantic-release/exec](https://github.com/semantic-release/exec) - - [verifyConditions](https://github.com/semantic-release/exec#verifyconditions): Execute a shell command to verify if the release should happen - - [getLastRelease](https://github.com/semantic-release/exec#getlastrelease): Execute a shell command to determine the last release - - [analyzeCommits](https://github.com/semantic-release/exec#analyzecommits): Execute a shell command to determine the type of release - - [verifyRelease](https://github.com/semantic-release/exec#verifyrelease): Execute a shell command to verifying a release that was determined before and is about to be published. - - [generateNotes](https://github.com/semantic-release/exec#analyzecommits): Execute a shell command to generate the release note - - [publish](https://github.com/semantic-release/exec#publish): Execute a shell command to publish the release. - -## Community plugins diff --git a/docs/recipes/README.md b/docs/recipes/README.md index e64de03d..6e32caff 100644 --- a/docs/recipes/README.md +++ b/docs/recipes/README.md @@ -1,4 +1,4 @@ -# semantic-release recipes +# Recipes ## CI configurations - [CircleCI 2.0 workflows](circleci-workflows.md) diff --git a/docs/recipes/gitlab-ci.md b/docs/recipes/gitlab-ci.md index 0d99f1c9..742c426a 100644 --- a/docs/recipes/gitlab-ci.md +++ b/docs/recipes/gitlab-ci.md @@ -2,19 +2,19 @@ ## Environment variables -The [Authentication](../../README.md#authentication) environment variables can be configured with [Secret variables](https://docs.gitlab.com/ce/ci/variables/README.html#secret-variables). +The [Authentication](../usage/ci-configuration.md#authentication) environment variables can be configured with [Secret variables](https://docs.gitlab.com/ce/ci/variables/README.html#secret-variables). ## Node project configuration GitLab CI supports [Pipelines](https://docs.gitlab.com/ee/ci/pipelines.html) allowing to test on multiple Node versions and publishing a release only when all test pass. -**Note**: The publish pipeline must run a [Node >= 8 version](../../README.md#why-does-semantic-release-require-node-version--8). +**Note**: The publish pipeline must run a [Node >= 8 version](../support/FAQ.md#why-does-semantic-release-require-node-version--8). ### `.gitlab-ci.yml` configuration for Node projects -This example is a minimal configuration for semantic-release with a build running Node 4, 6 and 8 on Linux. See [GitLab CI - Configuration of your jobs with .gitlab-ci.yml](https://docs.gitlab.com/ee/ci/yaml/README.html) for additional configuration options. +This example is a minimal configuration for **semantic-release** with a build running Node 4, 6 and 8 on Linux. See [GitLab CI - Configuration of your jobs with .gitlab-ci.yml](https://docs.gitlab.com/ee/ci/yaml/README.html) for additional configuration options. -**Note**: The`semantic-release` execution command varies depending if you are using a [local](../../README.md#local-installation) or [global](../../README.md#global-installation) semantic-release installation. +**Note**: The`semantic-release` execution command varies depending if you are using a [local](../usage/installation.md#local-installation) or [global](../usage/installation.md#global-installation) **semantic-release** installation. ```yaml # The release pipeline will run only if all jobs in the test pipeline are successful @@ -57,7 +57,7 @@ publish: ### `package.json` configuration -A `package.json` is required only for [local semantic-release installations](../../README.md#local-installation). +A `package.json` is required only for [local](../usage/installation.md#local-installation) **semantic-release** installation. ```json { diff --git a/docs/recipes/travis.md b/docs/recipes/travis.md index 695f0cb0..bf73200c 100644 --- a/docs/recipes/travis.md +++ b/docs/recipes/travis.md @@ -2,15 +2,15 @@ ## Environment variables -The [Authentication](../../README.md#authentication) environment variables can be configured in [Travis Repository Settings](https://docs.travis-ci.com/user/environment-variables/#defining-variables-in-repository-Settings) or with the [travis env set CLI](https://github.com/travis-ci/travis.rb#env). +The [Authentication](../usage/ci-configuration.md#authentication) environment variables can be configured in [Travis Repository Settings](https://docs.travis-ci.com/user/environment-variables/#defining-variables-in-repository-Settings) or with the [travis env set CLI](https://github.com/travis-ci/travis.rb#env). -Alternatively, the default `NPM_TOKEN` and `GH_TOKEN` can be easily [setup with semantic-release-cli](../../README.md#automatic-setup-with-semantic-release-cli). +Alternatively, the default `NPM_TOKEN` and `GH_TOKEN` can be easily [setup with semantic-release-cli](../usage/ci-configuration.md#automatic-setup-with-semantic-release-cli). ## Single Node job configuration For projects that require to be tested only with a single [Node version](https://docs.travis-ci.com/user/getting-started/#Selecting-a-different-programming-language) on [one Operating System](https://docs.travis-ci.com/user/getting-started/#Selecting-infrastructure-(optional)). -**Note**: [Node 8 is the minimal version required](../../README.md#why-does-semantic-release-require-node-version--8). +**Note**: [Node 8 is the minimal version required](../support/FAQ.md#why-does-semantic-release-require-node-version--8). ### `.travis.yml` configuration for single Node job @@ -18,7 +18,7 @@ This example is a minimal configuration for semantic-release with a build runnin It's recommended to run the `semantic-release` command in the [Travis `script` step](https://docs.travis-ci.com/user/customizing-the-build/#The-Build-Lifecycle) so if an error happen the build will fail and Travis will send a notification. -**Note**: The`semantic-release` execution command varies depending if you are using a [local](../../README.md#local-installation) or [global](../../README.md#global-installation) semantic-release installation. +**Note**: The`semantic-release` execution command varies depending if you are using a [local](../usage/installation.md#local-installation) or [global](../usage/installation.md#global-installation) semantic-release installation. ```yaml language: node_js @@ -39,7 +39,7 @@ script: ### `package.json` configuration for single Node job -A `package.json` is required only for [local semantic-release installations](../../README.md#local-installation). +A `package.json` is required only for [local](../usage/installation.md#local-installation) **semantic-release** installation. ```json { @@ -56,17 +56,17 @@ A `package.json` is required only for [local semantic-release installations](../ For projects that require to be tested with multiple [Node versions](https://docs.travis-ci.com/user/languages/javascript-with-nodejs/#Specifying-Node.js-versions) and/or on multiple [Operating Systems](https://docs.travis-ci.com/user/multi-os). -**Note**: At least one job must run a [Node >= 8 version](../../README.md#why-does-semantic-release-require-node-version--8). +**Note**: At least one job must run a [Node >= 8 version](../support/FAQ.md#why-does-semantic-release-require-node-version--8). ### `.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](https://docs.travis-ci.com/user/customizing-the-build) for additional configuration options. +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](https://docs.travis-ci.com/user/customizing-the-build) for additional configuration options. -This example uses [`travis-deploy-once`](https://github.com/semantic-release/travis-deploy-once) in order to command [Run `semantic-release` only after all tests succeeded](../../README.md#run-semantic-release-only-after-all-tests-succeeded). Alternatively you can use [Travis CI Build Stages recipe](travis-build-stages.md). +This example uses [`travis-deploy-once`](https://github.com/semantic-release/travis-deploy-once) in order to command [Run `semantic-release` only after all tests succeeded](../usage/ci-configuration.md#run-semantic-release-only-after-all-tests-succeeded). Alternatively you can use [Travis CI Build Stages recipe](travis-build-stages.md). It's recommended to run the `semantic-release` command in the [Travis `script` step](https://docs.travis-ci.com/user/customizing-the-build/#The-Build-Lifecycle) so if an error happen the build will fail and Travis will send a notification. -**Note**: The`semantic-release` execution command varies depending if you are using a [local](../../README.md#local-installation) or [global](../../README.md#global-installation) semantic-release installation. +**Note**: The`semantic-release` execution command varies depending if you are using a [local](../usage/installation.md#local-installation) or [global](../usage/installation.md#global-installation) **semantic-release** installation. ```yaml language: node_js @@ -96,7 +96,7 @@ script: ### `package.json` configuration for multiple Node jobs -A `package.json` is required only for [local semantic-release installations](../../README.md#local-installation). +A `package.json` is required only for [local](../usage/installation.md#local-installation) **semantic-release** installation. ```json { @@ -115,13 +115,13 @@ A `package.json` is required only for [local semantic-release installations](../ For projects that require to be tested with one or multiple version of a Non-JavaScript [language](https://docs.travis-ci.com/user/languages), optionally on multiple [Operating Systems](https://docs.travis-ci.com/user/multi-os). -This recipe cover the Travis specifics only. See [Non JavaScript projects recipe](../../README.md#can-i-use-semantic-release-to-publish-non-javascript-packages) for more information on the semantic-release configuration. +This recipe cover the Travis specifics only. See [Non JavaScript projects recipe](../support/FAQ.md#can-i-use-semantic-release-to-publish-non-javascript-packages) 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](https://docs.travis-ci.com/user/languages/go) on Linux and OSX. See [Travis - Customizing the Build](https://docs.travis-ci.com/user/customizing-the-build) for additional configuration options. -This example uses [`travis-deploy-once`](https://github.com/semantic-release/travis-deploy-once) in order to [run `semantic-release` only after all tests succeeded](../../README.md#run-semantic-release-only-after-all-tests-succeeded). Alternatively you can use [Travis CI Build Stages recipe](travis-build-stages.md). +This example uses [`travis-deploy-once`](https://github.com/semantic-release/travis-deploy-once) in order to [run `semantic-release` only after all tests succeeded](../usage/ci-configuration.md#run-semantic-release-only-after-all-tests-succeeded). Alternatively you can use [Travis CI Build Stages recipe](travis-build-stages.md). It's recommended to run the `semantic-release` command in the [Travis `script` step](https://docs.travis-ci.com/user/customizing-the-build/#The-Build-Lifecycle) so if an error happen the build will fail and Travis will send a notification. diff --git a/docs/resources.md b/docs/resources.md new file mode 100644 index 00000000..fd08e68c --- /dev/null +++ b/docs/resources.md @@ -0,0 +1,19 @@ +# Resources + +## Videos + +- ["Introducing Reliable Dependency and Release Management for npm Packages" - Gregor Martynus](https://www.youtube.com/watch?v=R2RJWLcfzwc) +- ["Kill all humans" - Jan Lehnardt](https://www.youtube.com/watch?v=ZXyx_1kN1L8&t=2s) +- [Publishing JavaScript Packages" - JavaScript Air](https://javascriptair.com/episodes/2016-07-20) +- ["Managing Dependencies like a boss 😎" - JavaScript Air](https://javascriptair.com/episodes/2016-08-17) +- ["Dependency Hell Just Froze Over" - Stephan Bönnemann](https://www.youtube.com/watch?v=PA139CERNbc) +- [“semantic-release Q&A with Kent C. Dodds”](https://www.youtube.com/watch?v=g6y3DnhkjrI) +- [“We fail to follow SemVer – and why it needn’t matter” - Stephan Bönnemann](https://www.youtube.com/watch?v=tc2UgG5L7WM) + +## Articles + +- [“Introduction to SemVer” - Irina Gebauer](https://blog.greenkeeper.io/introduction-to-semver-d272990c44f2) + +## Tutorials + +- [“How to Write a JavaScript Library - Automating Releases with semantic-release” – egghead.io](https://egghead.io/lessons/javascript-automating-releases-with-semantic-release) diff --git a/docs/support/FAQ.md b/docs/support/FAQ.md new file mode 100644 index 00000000..355d1b92 --- /dev/null +++ b/docs/support/FAQ.md @@ -0,0 +1,148 @@ +# Frequently Asked Questions + +## Why is the `package.json`’s version not updated in my repository? + +**semantic-release** takes care of updating the `package.json`’s version before publishing to [npm](https://www.npmjs.com). + +By default, only the published package will contains the version, which is the only place where it is *really* required, but the updated `package.json` will not be pushed to the Git repository + +However, the [`@semantic-release/git`](https://github.com/semantic-release/git) plugin can be used to push the updated `package.json` as well as other files to the Git repository. + +## How can I use a npm build script that requires the `package.json`’s version ? + +The `package.json`’s version will be updated by the `semantic-release` command just before publishing to [npm](https://www.npmjs.com), therefore it won't be available for scripts ran before the `semantic-release` command. + +As semantic-release uses the [npm CLI](https://docs.npmjs.com/cli/npm) to publish, all [npm hook scripts](https://docs.npmjs.com/misc/scripts#hook-scripts) will be executed. Therefore you can run your build script in the [`prepublishOnly`](https://docs.npmjs.com/misc/scripts#prepublish-and-prepare) hook. It will be executed after the `semantic-release` command update the `package.json`’s version and before publishing. + +## Is there a way to preview which version would currently get published? + +Yes with the [dry-run options](../usage/configuration.md#dryrun) which prints to the console the next version to be published and the release notes. + +## Can I use semantic-release with Yarn? + +If you are using a [local](../usage/installation.md#local-installation) **semantic-release** installation and run multiple CI jobs with different versions, the `yarn install` command will fail with Node < 8 as **semantic-release** require [Node >= 8](#why-does-semantic-release-require-node-version--8). See [yarnpkg/rfcs#69](https://github.com/yarnpkg/rfcs/pull/69). + +In order to run **semantic-release** with [Yarn](https://yarnpkg.com) you would need to: +- Use a [global](../usage/installation.md#global-installation) **semantic-release** installation +- Make sure to install and run the `semantic-release` command only in a CI jobs running with [Node >= 8](#why-does-semantic-release-require-node-version--8) + +If your CI environment provides [nvm](https://github.com/creationix/nvm) you can switch to Node 8 before installing and running the `semantic-release` command: + +```bash +$ nvm install 8 && yarn install -g semantic-release && semantic-release +``` + +See the [CI configuration recipes](../recipes/README.md#ci-configurations) for more details on specific CI environments. + +## Can I use semantic-release to publish non-JavaScript packages? + +Yes, **semantic-release** is a Node CLI application but it can be used to publish any type of packages. + +To publish a non-JavaScript package you would need to: +- Use a [global](../usage/installation.md#global-installation) **semantic-release** installation +- Set **semantic-release** [options](../usage/configuration.md#options) via [CLI arguments or rc file](../usage/configuration.md#configuration) +- Make sure your CI job executing the `semantic-release` command has access to [Node >= 8](#why-does-semantic-release-require-node-version--8) to execute the `semantic-release` command + +See the [CI configuration recipes](../usage/ci-configuration.md) for more details on specific CI environments. + +## Can I use semantic-release with any CI service? + +Yes, **semantic-release** can be used with any CI service, as long as it provides: +- A way to set [authentication](../usage/ci-configuration.md#authentication) via environment variables +- A way to guarantee that the `semantic-release` command is [executed only after all the tests of all the jobs in the CI build pass](../usage/ci-configuration.md#run-semantic-release-only-after-all-tests-succeeded) + +See the [CI configuration recipes](../usage/ci-configuration.md) for more details on specific CI environments. + +## Can I run semantic-release on my local machine rather than on a CI server? + +Yes, you can by explicitly setting the [`--no-ci` CLI option](../usage/configuration.md#options) option. You will also have to set the required [authentication](../usage/ci-configuration.md#authentication) via environment variables on your local machine, for example: + +```bash +$ NPM_TOKEN= GH_TOKEN= npm run semantic-release --no-ci +``` + +However this is not the recommended approach, as running unit and integration tests on an independent machine before publishing software is a crucial part of the release workflow. + +## Can I use semantic-release with GitLab? + +Yes, with the [`@semantic-release/gitlab-config`](https://github.com/semantic-release/gitlab-config) shareable configuration. + +See the [GitLab CI recipes](../recipes/gitlab-ci.md#using-semantic-release-with-gitlab-ci) for the CI configuration. + +## Can I use semantic-release with any Git hosted environment? + +By default **semantic-release** uses the [`@semantic-release/github`](https://github.com/semantic-release/github) plugin to publish a [GitHub release](https://help.github.com/articles/about-releases). For other Git hosted environment the [`@semantic-release/git`](https://github.com/semantic-release/git) and [`@semantic-release/changelog`](https://github.com/semantic-release/changelog) plugins can be used via [plugins configuration](../usage/plugins.md#configuration). + +See the [`@semantic-release/git`](https://github.com/semantic-release/git#semantic-releasegit) [`@semantic-release/changelog`](https://github.com/semantic-release/changelog#semantic-releasechangelog) plugins documentation for more details. + +## Can I skip the release to the npm registry? + +Yes, the publishing to the npm registry can be disabled with the [`npmPublish`](https://github.com/semantic-release/npm#options) option of the [`@semantic-release/npm`](https://github.com/semantic-release/npm) plugin. In addition the [`tarballDir`](https://github.com/semantic-release/npm#options) option allow to generate the package tarball in order to publish it to your repository with the [`@semantic-release/git`](https://github.com/semantic-release/git) or to a [GitHub release](https://help.github.com/articles/about-releases) with the [`@semantic-release/github`](https://github.com/semantic-release/github) plugin. + +See the [`@semantic-release/npm`](https://github.com/semantic-release/npm#semantic-releasenpm) plugin documentation for more details. + +## Can I use `.npmrc` options? + +Yes, all the [npm configuration options](https://docs.npmjs.com/misc/config) are supported via the [`.npmrc`](https://docs.npmjs.com/files/npmrc) file at the root of your repository. + +See the [`@semantic-release/npm`](https://github.com/semantic-release/npm#npm-configuration) plugin documentation for more details. + +## How can I set the access level of the published npm package? + +The [npm `access` option](https://docs.npmjs.com/misc/config#access) can be set in the [`.npmrc`](https://docs.npmjs.com/files/npmrc) file at the root of your repository: + +```rc +access=public +``` + +Or with the `publishConfig.access` key in your project's `package.json`: + +```json +{ + "publishConfig": { + "access": "public" + } +} +``` + +## Can I use semantic-release to publish a package on Artifactory? + +Any npm compatible registry is supported with the [`@semantic-release/npm`](https://github.com/semantic-release/npm) plugin. For Artifactory versions prior to 5.4, the legacy authentication has to be used (with `NPM_USERNAME`, `NPM_PASSWORD` and `NPM_EMAIL` [environment variables](https://github.com/semantic-release/npm#environment-variables)). + +See [npm registry authentication](https://github.com/semantic-release/npm#npm-registry-authentication) for more details. + +See [Artifactory - npm Registry](https://www.jfrog.com/confluence/display/RTF/Npm+Registry#NpmRegistry-AuthenticatingthenpmClient) documentation for Artifactiry configuration. + +## Can I manually trigger the release of a specific version? + +You can trigger a release by pushing to your Git repository. You deliberately cannot trigger a *specific* version release, because this is the whole point of semantic-release. + +## Is it *really* a good idea to release on every push? + +It is indeed a great idea because it *forces* you to follow best practices. If you don’t feel comfortable releasing every feature or fix on your `master` you might not treat your `master` branch as intended. + +From [Understanding the GitHub Flow](https://guides.github.com/introduction/flow/index.html): + +> Branching is a core concept in Git, and the entire GitHub Flow is based upon it. There's only one rule: anything in the master branch is always deployable. + +If you need more control over the timing of releases, see [Triggering a release](../../README.md#triggering-a-release) for different options. + +## Can I set the initial release version of my package to `0.0.1`? + +This is not supported by **semantic-release** as it's not considered a good practice, mostly because [Semantic Versioning](https://semver.org) rules applies differently to major version zero. + +In early development phase when your package is not ready for production yet we recommend to publish releases on a distribution channel (for example npm’s [dist-tags](https://docs.npmjs.com/cli/dist-tag)) or to develop on a `dev` branch and merge it to `master` periodically. See [Triggering a release](../../README.md#triggering-a-release) for more details on those solutions. + +See [“Introduction to SemVer” - Irina Gebauer](https://blog.greenkeeper.io/introduction-to-semver-d272990c44f2) for more details on [Semantic Versioning](https://semver.org) and the recommendation to start at version `1.0.0`. + +## Can I trust semantic-release with my releases? + +**semantic-release** has a full unit and integration test suite that tests `npm` publishes against the [npm-registry-couchapp](https://github.com/npm/npm-registry-couchapp). + +In addition the [verify conditions step](../../README.md#release-steps) verifies that all necessary conditions for proceeding with a release are met, and a new release will be performed [only if all your tests pass](../usage/ci-configuration.md#run-semantic-release-only-after-all-tests-succeeded). + +## Why does semantic-release require Node version >= 8? + +**semantic-release** is written using the latest [ECMAScript 2017](https://www.ecma-international.org/publications/standards/Ecma-262.htm) features, without transpilation which **requires Node version 8 or higher**. + +See [Node version requirement](../support/node-version.md#node-version-requirement) for more details and solutions. diff --git a/docs/support/README.md b/docs/support/README.md new file mode 100644 index 00000000..37fbe275 --- /dev/null +++ b/docs/support/README.md @@ -0,0 +1,6 @@ +# Support + +- [Frequently Asked Questions](FAQ.md) +- [Troubleshooting](troubleshooting.md) +- [Node version requirement](node-version.md) +- [Node Support Policy](node-support-policy.md) diff --git a/docs/support/node-support-policy.md b/docs/support/node-support-policy.md new file mode 100644 index 00000000..99d9067e --- /dev/null +++ b/docs/support/node-support-policy.md @@ -0,0 +1,13 @@ +# Node Support Policy + +We only support [Long-Term Support](https://github.com/nodejs/Release) versions of Node starting with [Node 8.9.0 (LTS)](https://nodejs.org/en/blog/release/v8.9.0). + +We specifically limit our support to LTS versions of Node, not because this package won't work on other versions, but because we have a limited amount of time, and supporting LTS offers the greatest return on that investment. + +It's possible this package will work correctly on newer versions of Node. It may even be possible to use this package on older versions of Node, though that's more unlikely as we'll make every effort to take advantage of features available in the oldest LTS version we support. + +As each Node LTS version reaches its end-of-life we will remove that version from the node engines property of our package's package.json file. Removing a Node version is considered a breaking change and will entail the publishing of a new major version of this package. We will not accept any requests to support an end-of-life version of Node. Any merge requests or issues supporting an end-of-life version of Node will be closed. + +We will accept code that allows this package to run on newer, non-LTS, versions of Node. Furthermore, we will attempt to ensure our own changes work on the latest version of Node. To help in that commitment, our continuous integration setup runs against all LTS versions of Node in addition the most recent Node release; called current. + +JavaScript package managers should allow you to install this package with any version of Node, with, at most, a warning if your version of Node does not fall within the range specified by our node engines property. If you encounter issues installing this package, please report the issue to your package manager. diff --git a/docs/node-version.md b/docs/support/node-version.md similarity index 51% rename from docs/node-version.md rename to docs/support/node-version.md index 0de46bc4..12cbf225 100644 --- a/docs/node-version.md +++ b/docs/support/node-version.md @@ -1,10 +1,10 @@ # Node version requirement -semantic-release is written using the latest [ECMAScript 2017](https://www.ecma-international.org/publications/standards/Ecma-262.htm) features, without transpilation which requires **requires Node version 8 or higher**. +**semantic-release** is written using the latest [ECMAScript 2017](https://www.ecma-international.org/publications/standards/Ecma-262.htm) features, without transpilation which requires **requires Node version 8 or higher**. -semantic-release is meant to be used in a CI environment as a development support tool, not as a production dependency. Therefore the only constraint is to run the `semantic-release` in a CI environment providing Node 8 or higher. +**semantic-release** is meant to be used in a CI environment as a development support tool, not as a production dependency. Therefore the only constraint is to run the `semantic-release` in a CI environment providing Node 8 or higher. -See our [Node Support Policy](../README.md#node-support-policy) for our long-term promise regarding Node version support. +See our [Node Support Policy](node-support-policy.md) for our long-term promise regarding Node version support. ## Recommended solution @@ -12,7 +12,7 @@ See our [Node Support Policy](../README.md#node-support-policy) for our long-ter The recommended approach is to run the `semantic-release` command from a CI job running on Node 8 or higher. This can either be a job used by your project to test on Node 8 or a dedicated job for the release steps. -See [CI configuration](../README.md#ci-configuration) and [CI configuration recipes](recipes/README.md#ci-configurations) for more details. +See [CI configuration](../usage/ci-configuration.md) and [CI configuration recipes](../recipes/README.md#ci-configurations) for more details. ## Alternative solutions @@ -22,13 +22,13 @@ See [CI configuration](../README.md#ci-configuration) and [CI configuration reci `npx` can be used to download the [Node 8 package published on npm](https://www.npmjs.com/package/node) and use it to execute the `semantic-release` command. -If you are using a [local](../README.md#local-installation) semantic-release installation: +If you are using a [local](../usage/installation.md#local-installation) **semantic-release** installation: ```bash $ npm install -g npx && npx -p node@8 -c "npm run semantic-release" ``` -If you are using a [global](../README.md#global-installation) semantic-release installation: +If you are using a [global](../usage/installation.md#global-installation) **semantic-release** installation: ```bash # For global semantic-release install @@ -39,13 +39,13 @@ $ npm install -g semantic-release npx && npx -p node@8 -c "semantic-release" If your CI environment provides [nvm](https://github.com/creationix/nvm) you can use it to switch to Node 8 before running the `semantic-release` command. -If you are using a [local](../README.md#local-installation) semantic-release installation: +If you are using a [local](../usage/installation.md#local-installation) **semantic-release** installation: ```bash $ nvm install 8 && npm run semantic-release ``` -If you are using a [global](../README.md#global-installation) semantic-release installation: +If you are using a [global](../usage/installation.md#global-installation) **semantic-release** installation: ```bash $ nvm install 8 && npm install -g semantic-release && semantic-release diff --git a/docs/troubleshooting.md b/docs/support/troubleshooting.md similarity index 97% rename from docs/troubleshooting.md rename to docs/support/troubleshooting.md index 347ff5d6..1e7e0489 100644 --- a/docs/troubleshooting.md +++ b/docs/support/troubleshooting.md @@ -1,4 +1,4 @@ -# Troubleshooting semantic-release +# Troubleshooting ### ENOTINHISTORY Commit not in history diff --git a/docs/usage/README.md b/docs/usage/README.md new file mode 100644 index 00000000..91208c65 --- /dev/null +++ b/docs/usage/README.md @@ -0,0 +1,7 @@ +# Usage + +- [Installation](installation.md#installation) +- [CI Configuration](ci-configuration.md#ci-configuration) +- [Configuration](configuration.md#configuration) +- [Plugins](plugins.md) +- [Shareable configurations](shareable-configurations.md) diff --git a/docs/usage/ci-configuration.md b/docs/usage/ci-configuration.md new file mode 100644 index 00000000..3d902124 --- /dev/null +++ b/docs/usage/ci-configuration.md @@ -0,0 +1,37 @@ +# CI configuration + +## Run `semantic-release` only after all tests succeeded + +The `semantic-release` command must be executed only after all the tests in the CI build pass. If the build runs multiple jobs (for example to test on multiple Operating Systems or Node versions) the CI has to be configured to guarantee that the `semantic-release` command is executed only after all jobs are successful. This can be achieved with [Travis Build Stages](https://docs.travis-ci.com/user/build-stages), [CircleCI Workflows](https://circleci.com/docs/2.0/workflows), [Codeship Deployment Pipelines](https://documentation.codeship.com/basic/builds-and-configuration/deployment-pipelines), [GitLab Pipelines](https://docs.gitlab.com/ee/ci/pipelines.html#introduction-to-pipelines-and-jobs), [Wercker Workflows](http://devcenter.wercker.com/docs/workflows), [GoCD Pipelines](https://docs.gocd.org/current/introduction/concepts_in_go.html#pipeline) or specific tools like [`travis-deploy-once`](https://github.com/semantic-release/travis-deploy-once). + +See [CI configuration recipes](../recipes/README.md#ci-configurations) for more details. + +## Authentication + +Most **semantic-release** [plugins](plugins.md) require to set up authentication in order to publish to your package manager's registry or to access your project's Git hosted service. The authentication token/credentials have to be made available in the CI serice via environment variables. + +See each plugin documentation for the environment variable to set up. + +The default [npm](https://github.com/semantic-release/npm#environment-variables) and [github](https://github.com/semantic-release/github#environment-variables) plugins require the following environment variables: + +| Variable | Description | +|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `NPM_TOKEN` | npm token created via [npm token create](https://docs.npmjs.com/getting-started/working_with_tokens#how-to-create-new-tokens).
**Note**: Only the `auth-only` [level of npm two-factor authentication](https://docs.npmjs.com/getting-started/using-two-factor-authentication#levels-of-authentication) is supported. | +| `GH_TOKEN` | GitHub authentication token.
**Note**: Only the [personal token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line) authentication is supported. | + +See [CI configuration recipes](../recipes/README.md#ci-configurations) for more details on how to configure environment variables in your CI service. + +## Automatic setup with `semantic-release-cli` + +[`semantic-release-cli`](https://github.com/semantic-release/cli) allow to easily [install](installation.md) **semantic-release** in your Node project and set up the CI configuration: + +```bash +npm install -g semantic-release-cli + +cd your-module +semantic-release-cli setup +``` + +![dialogue](media/semantic-release-cli.png) + +See the [semantic-release-cli](https://github.com/semantic-release/cli#what-it-does) documentation for more details. diff --git a/docs/usage/configuration.md b/docs/usage/configuration.md new file mode 100644 index 00000000..b12ca285 --- /dev/null +++ b/docs/usage/configuration.md @@ -0,0 +1,168 @@ +# Configuration + +In order to customize **semantic-release**’s behavior, [options](#options) and [plugins](plugins.md) can be set via: +- A `.releaserc` file, written in YAML or JSON, with optional extensions: .`yaml`/`.yml`/`.json`/`.js` +- A `release.config.js` file that exports an object +- A `release` key in the project's `package.json` file +- CLI arguments + +The following two examples are the same. + +Via CLI argument: + +```bash +$ semantic-release --branch next +``` + +Via `release` key in the project's `package.json` file: + +```json +"release": { + "branch": "next" +} +``` +```bash +$ semantic-release +``` + +**Note**: CLI arguments take precedence over options configured in the configuration file. + +**Note**: Plugins options cannot be defined via CLI arguments and must be defined in the configuration file. + +## Options + +### extends + +Type: `Array`, `String` + +CLI arguments: `-e`, `--extends` + +List of modules or file paths containing a [shareable configuration](shareable-configurations.md). If multiple shareable configuration are set, they will be imported in the order defined with each configuration option taking precedence over the options defined in a previous shareable configuration. + +**Note**: Options defined via CLI arguments or in the configuration file will take precedence over the ones defined in any shareable configuration. + +### branch + +Type: `String` + +Default: `master` + +CLI arguments: `-b`, `--branch` + +The branch on which releases should happen. + +### repositoryUrl + +Type: `String` + +Default: `repository` property in `package.json` or [git origin url](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) + +CLI arguments: `-r`, `--repository-url` + +The git repository URL + +Any valid git url format is supported (See [Git protocols](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols)). + +**Note**: If the [Github plugin](https://github.com/semantic-release/github) is used the URL must be a valid Github URL that include the `owner`, the `repository` name and the `host`. **The Github shorthand URL is not supported.** + +### dryRun + +Type: `Boolean` + +Default: `false` if running in a CI environment, `false` otherwise + +CLI arguments: `-d`, `--dry-run` + +Dry-run mode, skip publishing, print next version and release notes. + +### noCi + +Type: `Boolean` + +Default: `false` + +CLI arguments: `--no-ci` + +Skip Continuous Integration environment verifications, allowing to make releases from a local machine. + +### debug + +Type: `Boolean` + +Default: `false` + +CLI argument: `--debug` + +Output debugging information. It can also be enabled by set the `DEBUG` environment variable to `semantic-release`. + +### verifyConditions + +Type: `Array`, `String`, `Object` + +Default: `['@semantic-release/npm', '@semantic-release/github']` + +CLI argument: `--verify-conditions` + +Define the list of [verify conditions plugins](plugins.md#verifyconditions-plugin). Plugins will run in series, in the order defined in the `Array`. + +See [Plugins configuration](plugins.md#configuration) for more details. + +### getLastRelease + +Type: `String`, `Object` + +Default: `['@semantic-release/npm']` + +CLI argument: `--get-last-release` + +Define the [get last release plugin](plugins.md#getlastrelease-plugin). + +See [Plugins configuration](plugins.md#configuration) for more details. + +### analyzeCommits + +Type: `String`, `Object` + +Default: `['@semantic-release/commit-analyzer']` + +CLI argument: `--analyze-commits` + +Define the [analyze commits plugin](plugins.md#analyzecommits-plugin). + +See [Plugins configuration](plugins.md#configuration) for more details. + +### verifyRelease + +Type: `Array`, `String`, `Object` + +Default: `[]` + +CLI argument: `--verify-release` + +Define the list of [verify release plugins](plugins.md#verifyrelease-plugin). Plugins will run in series, in the order defined in the `Array`. + +See [Plugins configuration](plugins.md#configuration) for more details. + +### generateNotes + +Type: `String`, `Object` + +Default: `['@semantic-release/release-notes-generator']` + +CLI argument: `--generate-notes` + +Define the [generate notes plugin](plugins.md#generatenotes-plugin). + +See [Plugins configuration](plugins.md#configuration) for more details. + +### publish + +Type: `Array`, `String`, `Object` + +Default: `['@semantic-release/npm', '@semantic-release/github']` + +CLI argument: `--publish` + +Define the list of [publish plugins](plugins.md#publish-plugin). Plugins will run in series, in the order defined in the `Array`. + +See [Plugins configuration](plugins.md#configuration) for more details. diff --git a/docs/usage/installation.md b/docs/usage/installation.md new file mode 100644 index 00000000..ac30313b --- /dev/null +++ b/docs/usage/installation.md @@ -0,0 +1,32 @@ +# Installation + +## Local installation + +For [Node modules projects](https://docs.npmjs.com/getting-started/creating-node-modules) we recommend to install **semantic-release** locally and to run the `semantic-release` command with a [npm script](https://docs.npmjs.com/misc/scripts): + +```bash +$ npm install --save-dev semantic-release +``` + +In your `package.json`: + +```json +"scripts": { + "semantic-release": "semantic-release" +} +``` + +Then in the CI environment: + +```bash +$ npm run semantic-release +``` + +## Global installation + +For other type of projects we recommend to install **semantic-release** globally directly in the CI environment: + +```bash +$ npm install -g semantic-release +$ semantic-release +``` diff --git a/docs/usage/plugins.md b/docs/usage/plugins.md new file mode 100644 index 00000000..92cc539f --- /dev/null +++ b/docs/usage/plugins.md @@ -0,0 +1,82 @@ +# Plugins + +Each [release steps](../../README.md#release-steps) is implemented within a plugin or a list of plugins that can be configured, allowing to support different [commit message format](../../README.md#commit-message-format), release not generator and publishing platforms. + +## Plugin types + +### verifyConditions plugin + +Plugin responsible for verifying all the conditions to proceed with the release: configuration is correct, authentication token are valid, etc... + +Default implementation: [npm](https://github.com/semantic-release/npm#verifyconditions) and [github](https://github.com/semantic-release/github#verifyconditions). + +### getLastRelease plugin + +Plugin responsible for determining the version of the package last release. + +Default implementation: [@semantic-release/npm](https://github.com/semantic-release/npm#getlastrelease). + +### analyzeCommits plugin + +Plugin responsible for determining the type of the next release (`major`, `minor` or `patch`). + +Default implementation: [@semantic-release/commit-analyzer](https://github.com/semantic-release/commit-analyzer). + +### verifyRelease plugin + +Plugin responsible for verifying the parameters (version, type, dist-tag etc...) of the release that is about to be published match certain expectations. For example the [cracks plugin](https://github.com/semantic-release/cracks) allows to verify that if a release contains breaking changes, its type must be `major`. + +Default implementation: none. + +### generateNotes plugin + +Plugin responsible for generating release notes. + +Default implementation: [@semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator). + +### publish plugin + +Plugin responsible for publishing the release. + +Default implementation: [npm](https://github.com/semantic-release/npm#publish) and [github](https://github.com/semantic-release/github#publish). + +## Configuration + +Plugin can be configured by specifying the plugin's module name or file path directly as a `String` or within the `path` key of an `Object`. + +Plugins specific options can be set similarly to the other **semantic-release** [options](configuration.md#options) or within the plugin `Object`. Plugins options defined along the other **semantic-release** [options](configuration.md#options) will apply to all plugins, while the one defined within the plugin `Object` will apply only to this specific plugin. + +For example: +```json +{ + "release": { + "verifyConditions": [ + { + "path": "@semantic-release/exec", + "cmd": "verify-conditions.sh" + }, + "@semantic-release/npm", + "@semantic-release/github" + ], + "analyzeCommits": "custom-plugin", + "verifyRelease": [ + { + "path": "@semantic-release/exec", + "cmd": "verify-release.sh" + }, + ], + "generateNotes": "./build/my-plugin.js", + "githubUrl": "https://my-ghe.com", + "githubApiPathPrefix": "/api-prefix" + } +} +``` + +With this configuration: +- the `custom-plugin` npm module will be used to [analyze commits](#analyzecommits-plugin) +- the `./build/my-plugin.js` script will be used to [generate release notes](#generatenotes-plugin) +- the [`@semantic-release/exec`](https://github.com/semantic-release/exec), [`@semantic-release/npm`](https://github.com/semantic-release/npm) and [`@semantic-release/exec`](https://github.com/semantic-release/exec) plugins will be used to [verify conditions](#verifyconditions-plugin) +- the [`@semantic-release/exec`](https://github.com/semantic-release/exec) plugin will be used to [verify the release](#verifyrelease-plugin) +- the `cmd` option will be set to `verify-conditions.sh` only for the [`@semantic-release/exec`](https://github.com/semantic-release/exec) plugin used to [verify conditions](#verifyconditions-plugin) +- the `cmd` option will be set to `verify-release.sh` only for the [`@semantic-release/exec`](https://github.com/semantic-release/exec) plugin used to [verify the release](#verifyrelease-plugin) +- the `githubUrl` and `githubApiPathPrefix` options will be set to respectively `https://my-ghe.com` and `/api-prefix` for all plugins diff --git a/docs/usage/shareable-configurations.md b/docs/usage/shareable-configurations.md new file mode 100644 index 00000000..62f87ba8 --- /dev/null +++ b/docs/usage/shareable-configurations.md @@ -0,0 +1,5 @@ +# Shareable configurations + +A sharable configuration is an [npm](https://www.npmjs.com/) package that exports a **semantic-release** configuration object. It allows to easily use the same configuration across several projects. + +The shareable configurations to use can be set with the [extends](configuration.md#extends) option. diff --git a/media/bender.png b/media/bender.png new file mode 100644 index 0000000000000000000000000000000000000000..abbccf21780ef13812b44c84f0c43834dc5aaf44 GIT binary patch literal 145282 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