mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-01-10 03:47:03 +02:00
78 lines
1.9 KiB
Markdown
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
|
|
```
|
|
|