github.com/windmeup/goreleaser@v1.21.95/internal/pipeline/pipeline.go (about) 1 // Package pipeline provides generic errors for pipes to use. 2 package pipeline 3 4 import ( 5 "fmt" 6 7 "github.com/windmeup/goreleaser/internal/pipe/announce" 8 "github.com/windmeup/goreleaser/internal/pipe/archive" 9 "github.com/windmeup/goreleaser/internal/pipe/aur" 10 "github.com/windmeup/goreleaser/internal/pipe/before" 11 "github.com/windmeup/goreleaser/internal/pipe/brew" 12 "github.com/windmeup/goreleaser/internal/pipe/build" 13 "github.com/windmeup/goreleaser/internal/pipe/changelog" 14 "github.com/windmeup/goreleaser/internal/pipe/checksums" 15 "github.com/windmeup/goreleaser/internal/pipe/chocolatey" 16 "github.com/windmeup/goreleaser/internal/pipe/defaults" 17 "github.com/windmeup/goreleaser/internal/pipe/dist" 18 "github.com/windmeup/goreleaser/internal/pipe/docker" 19 "github.com/windmeup/goreleaser/internal/pipe/effectiveconfig" 20 "github.com/windmeup/goreleaser/internal/pipe/env" 21 "github.com/windmeup/goreleaser/internal/pipe/git" 22 "github.com/windmeup/goreleaser/internal/pipe/gomod" 23 "github.com/windmeup/goreleaser/internal/pipe/krew" 24 "github.com/windmeup/goreleaser/internal/pipe/metadata" 25 "github.com/windmeup/goreleaser/internal/pipe/nfpm" 26 "github.com/windmeup/goreleaser/internal/pipe/nix" 27 "github.com/windmeup/goreleaser/internal/pipe/prebuild" 28 "github.com/windmeup/goreleaser/internal/pipe/publish" 29 "github.com/windmeup/goreleaser/internal/pipe/reportsizes" 30 "github.com/windmeup/goreleaser/internal/pipe/sbom" 31 "github.com/windmeup/goreleaser/internal/pipe/scoop" 32 "github.com/windmeup/goreleaser/internal/pipe/semver" 33 "github.com/windmeup/goreleaser/internal/pipe/sign" 34 "github.com/windmeup/goreleaser/internal/pipe/snapcraft" 35 "github.com/windmeup/goreleaser/internal/pipe/snapshot" 36 "github.com/windmeup/goreleaser/internal/pipe/sourcearchive" 37 "github.com/windmeup/goreleaser/internal/pipe/universalbinary" 38 "github.com/windmeup/goreleaser/internal/pipe/upx" 39 "github.com/windmeup/goreleaser/internal/pipe/winget" 40 "github.com/windmeup/goreleaser/pkg/context" 41 ) 42 43 // Piper defines a pipe, which can be part of a pipeline (a series of pipes). 44 type Piper interface { 45 fmt.Stringer 46 47 // Run the pipe 48 Run(ctx *context.Context) error 49 } 50 51 // BuildPipeline contains all build-related pipe implementations in order. 52 // nolint:gochecknoglobals 53 var BuildPipeline = []Piper{ 54 // load and validate environment variables 55 env.Pipe{}, 56 // get and validate git repo state 57 git.Pipe{}, 58 // parse current tag to a semver 59 semver.Pipe{}, 60 // load default configs 61 defaults.Pipe{}, 62 // snapshot version handling 63 snapshot.Pipe{}, 64 // run global hooks before build 65 before.Pipe{}, 66 // ensure ./dist is clean 67 dist.Pipe{}, 68 // setup gomod-related stuff 69 gomod.Pipe{}, 70 // run prebuild stuff 71 prebuild.Pipe{}, 72 // proxy gomod if needed 73 gomod.CheckGoModPipe{}, 74 // proxy gomod if needed 75 gomod.ProxyPipe{}, 76 // writes the actual config (with defaults et al set) to dist 77 effectiveconfig.Pipe{}, 78 // build 79 build.Pipe{}, 80 // universal binary handling 81 universalbinary.Pipe{}, 82 // upx 83 upx.Pipe{}, 84 } 85 86 // BuildCmdPipeline is the pipeline run by goreleaser build. 87 // nolint:gochecknoglobals 88 var BuildCmdPipeline = append( 89 BuildPipeline, 90 reportsizes.Pipe{}, 91 metadata.Pipe{}, 92 ) 93 94 // Pipeline contains all pipe implementations in order. 95 // nolint: gochecknoglobals 96 var Pipeline = append( 97 BuildPipeline, 98 // builds the release changelog 99 changelog.Pipe{}, 100 // archive in tar.gz, zip or binary (which does no archiving at all) 101 archive.Pipe{}, 102 // archive the source code using git-archive 103 sourcearchive.Pipe{}, 104 // archive via fpm (deb, rpm) using "native" go impl 105 nfpm.Pipe{}, 106 // archive via snapcraft (snap) 107 snapcraft.Pipe{}, 108 // create SBOMs of artifacts 109 sbom.Pipe{}, 110 // checksums of the files 111 checksums.Pipe{}, 112 // sign artifacts 113 sign.Pipe{}, 114 // create arch linux aur pkgbuild 115 aur.Pipe{}, 116 // create nixpkgs 117 nix.NewBuild(), 118 // winget installers 119 winget.Pipe{}, 120 // create brew tap 121 brew.Pipe{}, 122 // krew plugins 123 krew.Pipe{}, 124 // create scoop buckets 125 scoop.Pipe{}, 126 // create chocolatey pkg and publish 127 chocolatey.Pipe{}, 128 // reports artifacts sizes to the log and to artifacts.json 129 reportsizes.Pipe{}, 130 // create and push docker images 131 docker.Pipe{}, 132 // publishes artifacts 133 publish.New(), 134 // creates a metadata.json and an artifacts.json files in the dist folder 135 metadata.Pipe{}, 136 // announce releases 137 announce.Pipe{}, 138 )