67 lines
2.5 KiB
Markdown
67 lines
2.5 KiB
Markdown
# Automate GitHub Releases
|
|
|
|
Nx Release can automate the creation of [GitHub releases](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository) for you. GitHub releases are a great way to communicate the changes in your projects to your users.
|
|
|
|
## GitHub Release Contents
|
|
|
|
When a GitHub release is created, it will include the changelog that Nx Release generates with entries based on the changes since the last release. Nx Release will parse the `feat` and `fix` type commits according to the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification and sort them into appropriate sections of the changelog. Take a look at the [Nx releases page](https://github.com/nrwl/nx/releases) to see examples of GitHub releases generated by Nx Release.
|
|
|
|
## Enable Release Creation
|
|
|
|
To enable GitHub release creation for your workspace, set `release.changelog.workspaceChangelog.createRelease` to `'github'` in `nx.json`:
|
|
|
|
```json
|
|
{
|
|
"release": {
|
|
"changelog": {
|
|
"workspaceChangelog": {
|
|
"createRelease": "github"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Preview the Release
|
|
|
|
Use `nx release --dry-run` to preview the GitHub release instead of creating it. This allows you to see what the release will look like without pushing anything to GitHub.
|
|
|
|
## Disable File Creation
|
|
|
|
Since GitHub releases contain the changelog, you may wish to disable the generation and management of local the `CHANGELOG.md` file. To do this, set `release.changelog.workspaceChangelog.file` to `false` in `nx.json`:
|
|
|
|
```json
|
|
{
|
|
"release": {
|
|
"changelog": {
|
|
"workspaceChangelog": {
|
|
"file": false,
|
|
"createRelease": "github"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Note: When configured this way, Nx Release will not delete existing changelog files, just ignore them.
|
|
|
|
## Project Level Changelogs
|
|
|
|
Nx Release supports creating GitHub releases for project level changelogs as well. This is particularly useful when [releasing projects independently](/recipes/nx-release/release-projects-independently). To enable this, set `release.changelog.projectChangelogs.createRelease` to `'github'` in `nx.json`:
|
|
|
|
```json
|
|
{
|
|
"release": {
|
|
"changelog": {
|
|
"projectChangelogs": {
|
|
"createRelease": "github"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
{% callout type="warning" title="Project and Workspace GitHub Releases" %}
|
|
Nx Release does not support creating GitHub releases for both project level changelogs and the workspace changelog. You will need to choose one or the other.
|
|
{% /callout %}
|