1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-10 03:47:03 +02:00
goreleaser/www/docs/customization/partial.md
2022-10-12 01:12:38 -03:00

78 lines
1.9 KiB
Markdown

# Splitting and Merging builds
GoReleaser can also split and merge builds.
> Since: v1.12.0-pro.
!!! success "GoReleaser Pro"
This subcommand is a [GoReleaser Pro feature](https://goreleaser.com/pro/).
This feature can help in some areas:
1. CGO, as you can build each platform in their target OS and merge later;
1. Native packaging and signing for Windows and macOS (more features for this
will be added soon);
1. Speed up slow builds, by splitting them into multiple workers;
## Usage
You don't really need to set anything up. To get started, run:
```bash
goreleaser release --rm-dist --split
```
Note that this step will push your Docker images as well.
Docker manifests are not created yet, though.
This will build only the artifacts for your current `GOOS`, and you should be
able to find them in `dist/$GOOS`.
You can run the other `GOOS` you want as well by either running in their OS, or
by giving a `GOOS` to `goreleaser`.
You should then have multiple `GOOS` folder inside your `dist` folder.
Now, to continue, run:
```bash
goreleaser continue
```
This last step will run some extra things that were not run during the previous
step:
- merge previous contexts and artifacts lists
- pull previously built images
- create the source archive (if enabled)
- checksum all artifacts
- sign artifacts (according to configuration)
- SBOM artifacts (according to configuration)
- run all the publishers
- run all the announcers
You can also run the publishing and announce steps separately:
```bash
goreleaser publish --merge
goreleaser announce --merge
```
## Customization
You can choose by what you want your pipeline to be split by:
```yaml
# goreleaser.yaml
partial:
# By what you want to build the partial things.
#
# Valid options are `target` and `goos`:
# - `target`: `GOOS` + `GOARCH`.
# - `goos`: `GOOS` only
#
# Default: `goos`.
by: target
```