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