1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-24 04:16:27 +02:00

43 lines
1.4 KiB
Markdown
Raw Normal View History

2021-10-30 09:50:23 -03:00
# Monorepo
2021-05-26 19:08:46 -03:00
!!! success "GoReleaser Pro"
The monorepo support is a [GoReleaser Pro feature](/pro/).
2021-05-26 19:08:46 -03:00
If you want to use GoReleaser within a monorepo and use tag prefixes to mark "which tags belong to which sub project", GoReleaser got you covered.
## Premise
You create your tags like `subproject1/v1.2.3` and `subproject2/v1.2.3`.
## Usage
You'll need to create a `.goreleaser.yaml` for each subproject you want to use GoReleaser in:
2021-05-26 19:08:46 -03:00
```yaml
# subroj1/.goreleaser.yaml
2021-05-26 19:08:46 -03:00
project_name: subproj1
monorepo:
tag_prefix: subproject1/
dir: subproj1
2021-05-26 19:08:46 -03:00
```
Then, you can release with (from the project's root directory):
```sh
goreleaser release --rm-dist -f ./subproj1/.goreleaser.yaml
2021-05-26 19:08:46 -03:00
```
Then, the following is different from a "regular" run:
- GoReleaser will then look if current commit has a tag prefixed with `subproject1`, and also the previous tag with the same prefix;
- Changelog will include only commits that contain changes to files within the `subproj1` directory;
2021-05-26 19:08:46 -03:00
- Release name gets prefixed with `{{ .ProjectName }} ` if empty;
- All build's `dir` setting get set to `monorepo.dir` if empty;
2021-05-26 19:08:46 -03:00
- if yours is not, you might want to change that manually;
- Extra files on the release, archives, Docker builds, etc are prefixed with `monorepo.dir`;
2021-05-26 19:08:46 -03:00
- On templates, `{{.PrefixedTag}}` will be `monorepo.prefix/tag` (aka the actual tag name), and `{{.Tag}}` has the prefix stripped;
The rest of the release process should work as usual.