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.