* 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 the branches.js file, removing maintenance, prerelease, and release definitions.
- Removed errors.js, eliminating various error handling functions related to semantic-release.
- Eliminated plugins.js, which contained definitions for plugin configurations and behaviors.
- Cleaned up get-commits.js, get-config.js, get-error.js, get-last-release.js, get-next-version.js, get-release-to-add.js, and plugins/index.js, removing unused functions and streamlining the codebase.
- Refactored plugin normalization and pipeline execution logic in plugins/normalize.js and plugins/pipeline.js.
- Removed utility functions in plugins/utils.js that were no longer necessary.
- Cleaned up verify.js to remove redundant checks and streamline the verification process.
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.
added quotes around plugin name to set it apart from the message. without the quotes, some consumers
were missunderstanding the successful loading of the `fail` plugin as a load failure and assuming
something was broken
resolves#811
- 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).
- Remove `@semantic-release/condition-travis` from the default plugins
- Verify the current branch in the core
- Verify the build is not triggered by a PR in the core
- Run in dry-run mode if not triggered on CI
- Dry-run mode runs the `verifyConditions` plugins, allowing to detect configuration error locally
- Return without error when no version has to be released due to no changes
- Return without error if the build is triggered from a PR
- Return without error if the current branch is not the configured branch
- CLI return with exit code 1 if there is a `semanticReleaseError`, allowing to fail builds in case of config error, missing token etc...
BREAKING CHANGE: `semantic-release` doesn't make sure it runs only on one Travis job anymore.
The CI configuration has to be done such that `semantic-release`
- runs only once per build
- runs only after all tests are successful on every jobs of the build
- runs on Node >=8
This can easily be done with [travis-deploy-once](https://github.com/semantic-release/travis-deploy-once).
Migration Guide
Modify your `.travis.yml` to use `travis-deploy-once`.
Replace:
```yaml
after_success:
- npm run semantic-release
```
by:
Replace
```yaml
after_success:
- npm install -g travis-deploy-once@4
- travis-deploy-once "npm run semantic-release"
```
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.