github.com/goreleaser/goreleaser@v1.25.1/www/docs/how-it-works.md (about) 1 # How it works 2 3 GoReleaser's goal is to automate most of the boring work you'll have while 4 releasing software, ideally using sensible defaults and making the most common 5 use cases easy. 6 7 GoReleaser expects a couple of things: 8 9 - a `.goreleaser.yaml` file with the configuration (see the 10 [customization section](./customization/index.md) for more info) 11 - a clean working tree 12 - a SemVer-compatible version (e.g. `10.21.34-prerelease+buildmeta`) 13 14 And that's it. 15 16 ## What happens when you release 17 18 A GoReleaser run is split into 4 major steps: 19 20 - **defaulting**: configures sensible defaults for each step 21 - **building**: builds the binaries, archives, packages, Docker images, etc 22 - **publishing**: publishes the release to the configured SCM, Docker 23 registries, blob storages... 24 - **announcing**: announces your release to the configured channels 25 26 Some steps might be skipped with `--skip-foo`-like flags (check the 27 [command line docs](./cmd/goreleaser.md) for details). 28 29 If any of the previous steps fails, the next steps will not run.