* Revert "docs: update README to include information about the new core engine integration"
This reverts commit 4e476dee14.
* Revert "fix(code-quality): add missing comma in context object for consistency"
This reverts commit 493d6cdaa1.
* Revert "refactor: replace direct logger and env-ci replacements with a mockCore function for better test organization"
This reverts commit d05e160668.
* Revert "test: add tests for core delegation and dry-run policy handling"
This reverts commit 4f464a72ae.
* Revert "refactor: integrate `core`; remove unused imports and restructuring the main export function"
This reverts commit 3f5d1b785b.
* Revert "refactor: remove obsolete release type constants and notes separator"
This reverts commit 7d71f2eb14.
* Revert "refactor: remove obsolete test files for logger, git, sensitive data handling, and utility functions"
This reverts commit 1ae1a19cdf.
* Revert "refactor: remove obsolete Git-related utilities and logging functions"
This reverts commit bedddc4091.
* Revert "refactor(tests): remove obsolete tests for plugins and verification"
This reverts commit 7172195d12.
* Revert "refactor: remove obsolete branch, error, and plugin definitions"
This reverts commit 51d1f5f9b2.
* Merge branch 'master' of https://github.com/semantic-release/semantic-release into fix(revert)/next
* Revert "Merge branch 'master' of https://github.com/semantic-release/semantic-release into fix(revert)/next"
This reverts commit bbfdc36be6.
- Deleted tests for normalize, pipeline, and plugin utilities as they are no longer needed.
- Removed tests for verify functionality that were outdated and not aligned with current implementation.
- Cleaned up test files to streamline the testing process and improve maintainability.
for #2543
BREAKING CHANGE: semantic-release is now ESM-only. since it is used through its own executable, the impact on consuming projects should be minimal
BREAKING CHANGE: references to plugin files in configs need to include the file extension because of executing in an ESM context
In case multiple plugins with a `analyzeCommits` step are configured, all of them will be executed and the highest release type (`major` > `minor`, `patch`) will be used.
- Allow to run semantic-release (via API) from anywhere passing the current working directory.
- Allows to simplify the tests and to run them in parallel in both the core and plugins.
Always return an `Array` from a pipeline simplify the function utilization as it's more deterministic. Previously, it would return/throw a single value/error when called with a single input and an `Array` of results/errors when called with an `Array` of input.
If a plugin hook was defined as a `Function` or an `Array` the `path` property would be set to the default value.
Even if this bug had no actual negative impact, it should be fixed so the code would perform as intended.
BREAKING CHANGE: Committing or creating files in the `publish` plugin hook is not supported anymore and now must be done in the `prepare` hook
Plugins with a `publish` hook that makes a commit or create a file that can be committed must use the `prepare` hook.
- Allow `publish` plugins to return an `Object` with information related to the releases
- Add the `success` plugin hook, called when all `publish` are successful, receiving a list of release
- Add the `fail` plugin hook, called when an error happens at any point, receiving a list of errors
- Add detailed message for each error
- Remove the `getLastRelease` plugin type
- Retrieve the last release based on Git tags
- Create the next release Git tag before calling the `publish` plugins
BREAKING CHANGE: Remove the `getLastRelease` plugin type
The `getLastRelease` plugins will not be called anymore.
BREAKING CHANGE: Git repository authentication is now mandatory
The Git authentication is now mandatory and must be set via `GH_TOKEN`, `GITHUB_TOKEN`, `GL_TOKEN`, `GITLAB_TOKEN` or `GIT_CREDENTIALS` as described in [CI configuration](https://github.com/semantic-release/semantic-release/blob/caribou/docs/usage/ci-configuration.md#authentication).
Adds the options `extends`, which can be defined via configuration file or CLI arguments to a single path or an array of paths of shareable configuration.
A shareable configuration is a file or a module that can be loaded with `require`.
Options is defined by merging in the following order of priority:
- CLI/API
- Configuration file
- Shareable configuration (from right to left)
Options set in a shareable configuration can be unset by setting it to `null` or `undefined` in the main configuration file. If a default value applies to this property it will be used.
- Add a new plugin type: `publish`
- Add support for multi-plugin. A plugin module can now return an object with a property for each plugin type
- Uses by default [npm](https://github.com/semantic-release/npm) and [github](https://github.com/semantic-release/github) in addition of Travis for the verify condition plugin
- Uses by default [npm](https://github.com/semantic-release/npm) and [github](https://github.com/semantic-release/github) for the publish plugin
- `gitTag` if one can be found is passed to `generateNotes` for both `lastRelease` and `nextRelease`
- `semantic-release` now verifies the plugin configuration (in the `release` property of `package.json`) and throws an error if it's invalid
- `semantic-release` now verifies each plugin output and will throw an error if a plugin returns an unexpected value.
BREAKING CHANGE: `githubToken`, `githubUrl` and `githubApiPathPrefix` have to be set at the [github](https://github.com/semantic-release/github) plugin level. They can be set via `GH_TOKEN`, `GH_URL` and `GH_PREFIX` environment variables.
BREAKING CHANGE: the `npm` parameter is not passed to any plugin anymore. Each plugin have to read `.npmrc` if they needs to (with https://github.com/kevva/npm-conf for example).