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 -D
The 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.sh
will be executed on the verify conditions step
- the shell command
./publish.sh 1.0.0 master 3 870668040000
(for the release of version 1.0.0
from branch master
with 3
commits on August 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-project and execCwd is set to buildScripts then the shell command will be executed from /my-project/buildScripts |
Each shell command is generated with Lodash template. All the objects passed to the semantic-release plugins are available as template options.
Execute a shell command to verify if the release should happen.
Command property |
Description |
exit code |
0 if 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 0 code is considered as an unexpected error and will stop the semantic-release execution with an error. |
stdout |
Only the release type (major , minor or patch etc..) can be written to stdout . If no release has to be done the command must not write to stdout . |
stderr |
Can be used for logging. |
Command property |
Description |
exit code |
0 if 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 0 code is considered as an unexpected error and will stop the semantic-release execution 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 0 code is considered as an unexpected error and will stop the semantic-release execution with an error. |
stdout |
Can be used for logging. |
stderr |
Can be used for logging. |
Command property |
Description |
exit code |
Any non 0 code is considered as an unexpected error and will stop the semantic-release execution with an error. |
stdout |
The release information can be written to stdout as parseable JSON (for example {"name": "Release name", "url": "http://url/release/1.0.0"} ). If the command write non parseable JSON to stdout no release information will be returned. |
stderr |
Can be used for logging. |
Command property |
Description |
exit code |
Any non 0 code is considered as an unexpected error and will stop the semantic-release execution with an error. |
stdout |
The release information can be written to stdout as parseable JSON (for example {"name": "Release name", "url": "http://url/release/1.0.0"} ). If the command write non parseable JSON to stdout no release information will be returned. |
stderr |
Can be used for logging. |
Command property |
Description |
exit code |
Any non 0 code is considered as an unexpected error and will stop the semantic-release execution with an error. |
stdout |
Can be used for logging. |
stderr |
Can be used for logging. |
Command property |
Description |
exit code |
Any non 0 code is considered as an unexpected error and will stop the semantic-release execution with an error. |
stdout |
Can be used for logging. |
stderr |
Can be used for logging. |