semantic-release plugin to execute custom shell commands.
| Step | Description | 
|---|---|
| verifyConditions | Execute a shell command to verify if the release should happen. | 
| analyzeCommits | Execute a shell command to determine the type of release. | 
| verifyRelease | Execute a shell command to verifying a release that was determined before and is about to be published. | 
| generateNotes | Execute a shell command to generate the release note. | 
| prepare | Execute a shell command to prepare the release. | 
| publish | Execute a shell command to publish the release. | 
| success | Execute a shell command to notify of a new release. | 
| fail | Execute a shell command to notify of a failed release. | 
$ npm install @semantic-release/exec -DThe plugin can be configured in the semantic-release configuration file:
{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    [
      "@semantic-release/exec",
      {
        "verifyConditionsCmd": "./verify.sh",
        "publishCmd": "./publish.sh ${nextRelease.version} ${branch.name} ${commits.length} ${Date.now()}"
      }
    ]
  ]
}With this example:
- the shell command ./verify.shwill be executed on the verify conditions step
- the shell command ./publish.sh 1.0.0 master 3 870668040000(for the release of version1.0.0from branchmasterwith3commits onAugust 4th, 1997 at 2:14 AM) will be executed on the publish step
Note: it's required to define a plugin for the analyze commits step. If no analyzeCommitsCmd is defined the plugin @semantic-release/commit-analyzer must be defined in the plugins list.
| Options | Description | 
|---|---|
| verifyConditionsCmd | The shell command to execute during the verify condition step. See verifyConditionsCmd. | 
| analyzeCommitsCmd | The shell command to execute during the analyze commits step. See analyzeCommitsCmd. | 
| verifyReleaseCmd | The shell command to execute during the verify release step. See verifyReleaseCmd. | 
| generateNotesCmd | The shell command to execute during the generate notes step. See generateNotesCmd. | 
| prepareCmd | The shell command to execute during the prepare step. See prepareCmd. | 
| addChannelCmd | The shell command to execute during the add channel step. See addChannelCmd. | 
| publishCmd | The shell command to execute during the publish step. See publishCmd. | 
| successCmd | The shell command to execute during the success step. See successCmd. | 
| failCmd | The shell command to execute during the fail step. See failCmd. | 
| shell | The shell to use to run the command. See execa#shell. | 
| execCwd | The path to use as current working directory when executing the shell commands. This path is relative to the path from which semantic-release is running. For example if semantic-release runs from /my-projectandexecCwdis set tobuildScriptsthen the shell command will be executed from/my-project/buildScripts | 
Each shell command is generated with Lodash template. All the context object keys passed to semantic-release plugins are available as template options.
Execute a shell command to verify if the release should happen.
| Command property | Description | 
|---|---|
| exit code | 0if the verification is successful, or any other exit code otherwise. | 
| stdout | Write only the reason for the verification to fail. | 
| stderr | Can be used for logging. | 
| Command property | Description | 
|---|---|
| exit code | Any non 0code is considered as an unexpected error and will stop thesemantic-releaseexecution with an error. | 
| stdout | Only the release type ( major,minororpatchetc..) can be written tostdout. If no release has to be done the command must not write tostdout. | 
| stderr | Can be used for logging. | 
| Command property | Description | 
|---|---|
| exit code | 0if the verification is successful, or any other exit code otherwise. | 
| stdout | Only the reason for the verification to fail can be written to stdout. | 
| stderr | Can be used for logging. | 
| Command property | Description | 
|---|---|
| exit code | Any non 0code is considered as an unexpected error and will stop thesemantic-releaseexecution with an error. | 
| stdout | Only the release note must be written to stdout. | 
| stderr | Can be used for logging. | 
| Command property | Description | 
|---|---|
| exit code | Any non 0code is considered as an unexpected error and will stop thesemantic-releaseexecution with an error. | 
| stdout | Can be used for logging. | 
| stderr | Can be used for logging. | 
| Command property | Description | 
|---|---|
| exit code | Any non 0code is considered as an unexpected error and will stop thesemantic-releaseexecution with an error. | 
| stdout | The releaseinformation can be written tostdoutas parseable JSON (for example{"name": "Release name", "url": "http://url/release/1.0.0"}). If the command write non parseable JSON tostdoutnoreleaseinformation will be returned. | 
| stderr | Can be used for logging. | 
| Command property | Description | 
|---|---|
| exit code | Any non 0code is considered as an unexpected error and will stop thesemantic-releaseexecution with an error. | 
| stdout | The releaseinformation can be written tostdoutas parseable JSON (for example{"name": "Release name", "url": "http://url/release/1.0.0"}). If the command write non parseable JSON tostdoutnoreleaseinformation will be returned. | 
| stderr | Can be used for logging. | 
| Command property | Description | 
|---|---|
| exit code | Any non 0code is considered as an unexpected error and will stop thesemantic-releaseexecution with an error. | 
| stdout | Can be used for logging. | 
| stderr | Can be used for logging. | 
| Command property | Description | 
|---|---|
| exit code | Any non 0code is considered as an unexpected error and will stop thesemantic-releaseexecution with an error. | 
| stdout | Can be used for logging. | 
| stderr | Can be used for logging. |