mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-01-10 03:47:03 +02:00
1.6 KiB
1.6 KiB
Monorepo
!!! success "GoReleaser Pro" The monorepo support is a GoReleaser Pro feature.
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:
# subroj1/.goreleaser.yaml
project_name: subproj1
monorepo:
tag_prefix: subproject1/
dir: subproj1
Then, you can release with (from the project's root directory):
goreleaser release --rm-dist -f ./subproj1/.goreleaser.yaml
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; - Release name gets prefixed with
{{ .ProjectName }}
if empty; - All build's
dir
setting get set tomonorepo.dir
if empty;- 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
; - On templates,
{{.PrefixedTag}}
will bemonorepo.prefix/tag
(aka the actual tag name), and{{.Tag}}
has the prefix stripped;
The rest of the release process should work as usual.
!!! warning This feature is in beta and might change based on feedback. Let me know you think about it after trying it out!