1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-11 14:39:28 +02:00

docs: update from pro

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
This commit is contained in:
Carlos A Becker 2022-10-12 00:12:42 -03:00
parent d58fa71b0d
commit eb9699142f
No known key found for this signature in database
GPG Key ID: E61E2F7DC14AB940
9 changed files with 212 additions and 37 deletions

View File

@ -28,6 +28,7 @@ Check out our website for more information, examples and documentation: https://
* [goreleaser changelog](/cmd/goreleaser_changelog/) - Preview your changelog
* [goreleaser check](/cmd/goreleaser_check/) - Checks if configuration is valid
* [goreleaser completion](/cmd/goreleaser_completion/) - Generate the autocompletion script for the specified shell
* [goreleaser continue](/cmd/goreleaser_continue/) - Continues a previously prepared release
* [goreleaser init](/cmd/goreleaser_init/) - Generates a .goreleaser.yaml file
* [goreleaser jsonschema](/cmd/goreleaser_jsonschema/) - outputs goreleaser's JSON schema
* [goreleaser publish](/cmd/goreleaser_publish/) - Publishes a previously prepared release

View File

@ -4,11 +4,14 @@ Announces a previously prepared release
## Synopsis
If you have a previously prepared release with `goreleaser release --prepare` and published it with `goreleaser publish`, you can use this command to announce it.
If you have a previously prepared release with `goreleaser release --prepare` or `goreleaser release --split` and published it with `goreleaser publish`, you can use this command to announce it.
The idea is to prepare a release without publishing anything, assert the artifacts are correct (either automatically or not), publish it, and then, finally, announce it to your users.
The idea is to prepare a release without publishing anything, assert the
artifacts are correct (either automatically or not), publish it, and then,
finally, announce it to your users.
Environment variables will be re-evaluated here, so make sure they are available to the announce command as well.
Environment variables will be re-evaluated here, so make sure they are
available to the announce command as well.
!!! success "GoReleaser Pro"
This subcommand is [GoReleaser Pro feature](https://goreleaser.com/pro/).
@ -24,6 +27,7 @@ goreleaser announce [flags]
-d, --dist string dist folder to continue (default "./dist")
-h, --help help for announce
-k, --key string GoReleaser Pro license key [$GORELEASER_KEY]
--merge Merges multiple parts of a --split release
-p, --parallelism int Amount tasks to run concurrently (default: number of CPUs)
--skip-after Skips global after hooks
--timeout duration Timeout to the entire announce process (default 30m0s)

View File

@ -0,0 +1,41 @@
# goreleaser continue
Continues a previously prepared release
## Synopsis
If you have a previously prepared release (run with `goreleaser release --prepare` or `goreleaser release --split`), you can use this command to continue it.
Environment variables will be re-evaluated here, so make sure they are
available to the continue command as well.
!!! success "GoReleaser Pro"
This subcommand is [GoReleaser Pro feature](https://goreleaser.com/pro/).
```
goreleaser continue [flags]
```
## Options
```
-d, --dist string dist folder to continue (default "./dist")
-h, --help help for continue
-k, --key string GoReleaser Pro license key [$GORELEASER_KEY]
--merge Merges multiple parts of a --split release
-p, --parallelism int Amount tasks to run concurrently (default: number of CPUs)
--skip-after Skips global after hooks
--timeout duration Timeout to the entire continue process (default 30m0s)
```
## Options inherited from parent commands
```
--debug Enable debug mode
```
## See also
* [goreleaser](/cmd/goreleaser/) - Deliver Go binaries as fast and easily as possible

View File

@ -4,11 +4,14 @@ Publishes a previously prepared release
## Synopsis
If you have a previously prepared release (run with `goreleaser release --prepare`), you can use this command to publish it.
If you have a previously prepared release (run with `goreleaser release --prepare` or `goreleaser release --split`), you can use this command to publish it.
The idea is to prepare a release without publishing anything, assert the artifacts are correct (either automatically or not), and then, finally, publish the release and its artifacts.
The idea is to prepare a release without publishing anything, assert the
artifacts are correct (either automatically or not), and then, finally, publish
the release and its artifacts.
Environment variables will be re-evaluated here, so make sure they are available to the publish command as well.
Environment variables will be re-evaluated here, so make sure they are
available to the publish command as well.
!!! success "GoReleaser Pro"
This subcommand is [GoReleaser Pro feature](https://goreleaser.com/pro/).
@ -24,6 +27,7 @@ goreleaser publish [flags]
-d, --dist string dist folder to continue (default "./dist")
-h, --help help for publish
-k, --key string GoReleaser Pro license key [$GORELEASER_KEY]
--merge Merges multiple parts of a --split release
-p, --parallelism int Amount tasks to run concurrently (default: number of CPUs)
--skip-after Skips global after hooks
--timeout duration Timeout to the entire publish process (default 30m0s)

View File

@ -33,6 +33,7 @@ goreleaser release [flags]
--skip-sign Skips signing artifacts
--skip-validate Skips git checks
--snapshot Generate an unversioned snapshot release, skipping all validations and without publishing any artifacts (implies --skip-publish, --skip-announce and --skip-validate, overrides --nightly)
--split Split the build so it can be merged and published later (implies --prepare)
--timeout duration Timeout to the entire release process (default 30m0s)
```

View File

@ -0,0 +1,76 @@
# Splitting and Merging builds
!!! success "GoReleaser Pro"
This subcommand is [GoReleaser Pro feature](https://goreleaser.com/pro/).
> Since GoReleaser v1.12.0.
You can now split and merge builds.
This can help in several 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
```

View File

@ -1,43 +1,73 @@
# GoReleaser Pro
GoReleaser Pro is a paid, closed-source GoReleaser distribution with some additional features:
GoReleaser Pro is a paid, closed-source GoReleaser distribution with some
additional features:
- [x] [Split and merge builds](/customization/partial) to speed up your release
by splitting work, use CGO, or run platform-specific code;
- [x] Have custom [before and after hooks for achives](/customization/archive/);
- [x] Prepare a release with [`goreleaser release --prepare`](/cmd/goreleaser_release/), publish and announce it later with [`goreleaser publish`](/cmd/goreleaser_publish/) and [`goreleaser announce`](/cmd/goreleaser_announce/);
- [x] Preview and test your next release's changelog with [`goreleaser changelog`](/cmd/goreleaser_changelog/);
- [x] Prepare a release with [`goreleaser release
--prepare`](/cmd/goreleaser_release/), publish and announce it later with
[`goreleaser publish`](/cmd/goreleaser_publish/) and [`goreleaser
announce`](/cmd/goreleaser_announce/);
- [x] Preview and test your next release's change log with
[`goreleaser changelog`](/cmd/goreleaser_changelog/);
- [x] Continuously release [nightly builds](/customization/nightlies/);
- [x] Import pre-built binaries with the [`prebuilt` builder](/customization/build/#import-pre-built-binaries);
- [x] Rootless build [Docker images](/customization/docker/#podman) and [manifests](/customization/docker_manifest/#podman) with [Podman](https://podman.io);
- [x] Easily create `apt` and `yum` repositories with the [fury.io integration](/customization/fury/);
- [x] Reuse configuration files with the [include keyword](/customization/includes/);
- [x] Run commands after the release with [global after hooks](/customization/hooks/);
- [x] Import pre-built binaries with the
[`prebuilt` builder](/customization/build/#import-pre-built-binaries);
- [x] Rootless build [Docker images](/customization/docker/#podman) and
[manifests](/customization/docker_manifest/#podman) with
[Podman](https://podman.io);
- [x] Easily create `apt` and `yum` repositories with the
[fury.io integration](/customization/fury/);
- [x] Reuse configuration files with the
[include keyword](/customization/includes/);
- [x] Run commands after the release with
[global after hooks](/customization/hooks/);
- [x] Use GoReleaser within your [monorepo](/customization/monorepo/);
- [x] Create [custom template variables](/customization/templates/#custom-variables) (goes well with [includes](/customization/includes/)).
- [x] Create
[custom template variables](/customization/templates/#custom-variables)
(goes well with [includes](/customization/includes/)).
<script src="https://gumroad.com/js/gumroad.js"></script>
<a class="gumroad-button" href="https://gumroad.com/l/CadfZ" target="_blank">Get GoReleaser Pro</a>
## Roadmap
## Road map
The roadmap is not public (yet), but we do have a couple of ideas, and your input is always welcome!
Once you buy it, feel free to [email me](mailto:carlos@becker.software?subject=GoReleaser%20Feature%20Suggestion) with your suggestions.
We don't have a properly organized public road map (*yet*), but these are some
of the things we plan to work on, in one form or another:
- [ ] `--dry-run` to test the release locally, possibly skipping the actual
build of the binaries to focus on faster iteration of the other parts;
- [ ] `--single-target` & friends for `goreleaser release` as well;
- [ ] first-class macOS signing;
- [ ] create Windows installers;
That said, your input is always welcome!
Once you buy it, feel free to [email me](mailto:carlos@becker.software?subject=GoReleaser%20Feature%20Suggestion)
with your suggestions and ideas.
## Pricing & Sponsors
- The current pricing is low and is likely to increase as we keep adding more pro-only features;
- If you sponsor either the project or any of its developers, you [can ask for a discount](mailto:carlos@becker.software?subject=GoReleaser%20Coupon%20Request)!
- The current pricing is low and is likely to increase as we keep adding more
pro-only features;
- If you sponsor either the project or any of its developers, you [can ask for a
discount](mailto:carlos@becker.software?subject=GoReleaser%20Coupon%20Request)!
## Enterprise support
I don't have a plan for that yet, but please [email me](mailto:carlos@becker.software?subject=GoReleaser%20Enterprise%20Support) if you are interested.
I don't have a plan for that yet, but please [email
me](mailto:carlos@becker.software?subject=GoReleaser%20Enterprise%20Support) if
you are interested.
## Using GoReleaser Pro
Once you [buy it](https://gum.co/goreleaser), you'll get a license key.
You can then pass it to the [`release` command](/cmd/goreleaser_release/) either via the `--key` flag or the `GORELEASER_KEY` environment variable.
Once you [buy it](https://gum.co/goreleaser), you'll get a license key. You can
then pass it to the [`release` command](/cmd/goreleaser_release/) either via the
`--key` flag or the `GORELEASER_KEY` environment variable.
If you use the GitHub action, you will want to set the `distribution` option to `goreleaser-pro`.
Check the [documentation](/ci/actions/) for more details.
If you use the GitHub action, you will want to set the `distribution` option to
`goreleaser-pro`. Check the [documentation](/ci/actions/) for more details.
## EULA

41
www/docs/static/schema-pro.json generated vendored
View File

@ -1687,6 +1687,20 @@
"additionalProperties": false,
"type": "object"
},
"Partial": {
"properties": {
"by": {
"type": "string",
"enum": [
"goos",
"target"
],
"default": "goos"
}
},
"additionalProperties": false,
"type": "object"
},
"PreBuiltOptions": {
"properties": {
"path": {
@ -1764,9 +1778,6 @@
"snapshot": {
"$ref": "#/$defs/Snapshot"
},
"nightly": {
"$ref": "#/$defs/Nightly"
},
"checksum": {
"$ref": "#/$defs/Checksum"
},
@ -1800,12 +1811,6 @@
},
"type": "array"
},
"furies": {
"items": {
"$ref": "#/$defs/Fury"
},
"type": "array"
},
"publishers": {
"items": {
"$ref": "#/$defs/Publisher"
@ -1845,9 +1850,6 @@
"gomod": {
"$ref": "#/$defs/GoMod"
},
"monorepo": {
"$ref": "#/$defs/Monorepo"
},
"announce": {
"$ref": "#/$defs/Announce"
},
@ -1883,6 +1885,21 @@
},
"variables": {
"type": "object"
},
"monorepo": {
"$ref": "#/$defs/Monorepo"
},
"partial": {
"$ref": "#/$defs/Partial"
},
"nightly": {
"$ref": "#/$defs/Nightly"
},
"furies": {
"items": {
"$ref": "#/$defs/Fury"
},
"type": "array"
}
},
"additionalProperties": false,

View File

@ -84,6 +84,7 @@ nav:
- customization/verifiable_builds.md
- customization/monorepo.md
- customization/universalbinaries.md
- customization/partial.md
- Packaging and Archiving:
- customization/archive.md
- customization/nfpm.md