Skip to content
Permalink
Browse files
docs: update from pro
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
  • Loading branch information
caarlos0 committed Oct 12, 2022
1 parent d58fa71 commit eb9699142fbfe485ef230dd9bd9c99ff11774de4
Show file tree
Hide file tree
Showing 9 changed files with 212 additions and 37 deletions.
@@ -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
@@ -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)
@@ -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

@@ -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)
@@ -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)
```

@@ -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
```

@@ -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

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -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

0 comments on commit eb96991

Please sign in to comment.