feat: support multiple branches and distribution channels

- Allow to configure multiple branches to release from
- Allow to define a distribution channel associated with each branch
- Manage the availability on distribution channels based on git merges
- Support regular releases, maintenance releases and pre-releases
- Add the `addChannel` plugin step to make an existing release available on a different distribution channel

BREAKING CHANGE: the `branch` option has been removed in favor of `branches`

The new `branches` option expect either an Array or a single branch definition. To migrate your configuration:
- If you want to publish package from multiple branches, please the configuration documentation
- If you use the default configuration and want to publish only from `master`: nothing to change
- If you use the `branch` configuration and want to publish only from one branch: replace `branch` by `branches` (`"branch": "my-release-branch"` => `"branches": "my-release-branch"`)
This commit is contained in:
Pierre Vanduynslager
2018-11-29 14:13:03 -05:00
parent 7a9922a492
commit 7b4052470b
50 changed files with 4069 additions and 516 deletions
+4 -3
View File
@@ -29,6 +29,7 @@ test.serial('Pass options to semantic-release API', async t => {
'',
'-b',
'master',
'next',
'-r',
'https://github/com/owner/repo.git',
'-t',
@@ -68,7 +69,7 @@ test.serial('Pass options to semantic-release API', async t => {
const exitCode = await cli();
t.is(run.args[0][0].branch, 'master');
t.deepEqual(run.args[0][0].branches, ['master', 'next']);
t.is(run.args[0][0].repositoryUrl, 'https://github/com/owner/repo.git');
t.is(run.args[0][0].tagFormat, `v\${version}`);
t.deepEqual(run.args[0][0].plugins, ['plugin1', 'plugin2']);
@@ -92,7 +93,7 @@ test.serial('Pass options to semantic-release API with alias arguments', async t
const argv = [
'',
'',
'--branch',
'--branches',
'master',
'--repository-url',
'https://github/com/owner/repo.git',
@@ -110,7 +111,7 @@ test.serial('Pass options to semantic-release API with alias arguments', async t
const exitCode = await cli();
t.is(run.args[0][0].branch, 'master');
t.deepEqual(run.args[0][0].branches, ['master']);
t.is(run.args[0][0].repositoryUrl, 'https://github/com/owner/repo.git');
t.is(run.args[0][0].tagFormat, `v\${version}`);
t.deepEqual(run.args[0][0].plugins, ['plugin1', 'plugin2']);