《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的GoReleaser是Go项目的发布自动化工具。目标是简化构建、发布和发布步骤,同时为所有步骤提供变体定制选项。 GoReleaser在构建时考虑了CI工具您只需要在构建脚本中下载并执行它。在您的机器中安装它是可选的。 您的整个发布过程可以通过一个。goreleaser。yml文件进行定制。设置完成后,每次要创建新版本时,您需要做的就是标记并运行goreleaserrelease。特性交叉编译你的Go项目发布到GitHub、GitLab和Gitea创建定时构建创建Docker镜像创建Linux软件包和Homebrew仓库签署工件、校验和和容器映射在Twitter、Slack、Discord和其他网站上发布新版本为二进制文件和容器映像生成SBOM安装 GoReleaser有两个发行版:OSS和Pro。 您可以安装预编译的二进制文件(以几种不同的方式)、使用Docker或从源代码编译(在OSS上时)。 homebrewtapbrewinstallgoreleasertapgoreleaser homebrewbrewinstallgoreleaser snapcraftsudosnapinstallclassicgoreleaser scoopscoopbucketaddgoreleaserhttps:github。comgoreleaserscoopbucket。gitscoopinstallgoreleaser aptechodeb〔trustedyes〕https:repo。goreleaser。comaptsudoteeetcaptsources。list。dgoreleaser。listsudoaptupdatesudoaptinstallgoreleaser yumecho〔goreleaser〕nameGoReleaserbaseurlhttps:repo。goreleaser。comyumenabled1gpgcheck0sudoteeetcyum。repos。dgoreleaser。reposudoyuminstallgoreleaser auryaySgoreleaserbin goinstallgoinstallgithub。comgoreleasergoreleaserlatest bashscriptcurlsfLhttps:goreleaser。comstaticrunbash快速开始 在这个例子中,我们将构建、归档和发布一个示例Go项目。 创建一个GitHub存储库并添加一个主包:main。gopackagemainfuncmain(){println(Badum,tss!)} 初始化模块gomodinitmain 运行init命令以创建示例。goreleaser。yaml文件:goreleaserinit 现在,让我们运行一个仅限本地版本,看看它是否可以使用release命令:goreleaserreleasesnapshotrmdist 此时,您可以自定义生成的。goreleaser。yaml或保持原样,这取决于您。最好的做法是检查。goreleaser。yaml源代码管理。 。goreleaser。yaml您可以通过运行检查命令来验证您是否有效:goreleasercheck 您还可以使用GoReleaser仅为给定的GOOSGOARCH构建二进制文件,这对本地开发很有用:goreleaserbuildsingletarget 为了发布到GitHub,你需要导出一个GITHUBTOKEN环境变量,它应该包含一个有效的GitHub令牌和repo范围。它将用于将发布部署到您的GitHub存储库。你可以在这里创建一个新的github令牌。这个怎么运作 GoReleaser的目标是自动化您在发布软件时将进行的大部分无聊工作,理想情况下使用合理的默认值并使最常见的用例变得简单。 GoReleaser期望有几件事:包含配置的文件(有关更多信息,。goreleaser。yaml请参阅自定义部分)与SemVer兼容的版本(例如10。21。34prereleasebuildmeta)持续集成GitHub操作 工作流程 以下是在您的工作流程中使用此操作的简单片段:name:goreleaseron:push:runonlyagainsttagstags:permissions:contents:writepackages:writeissues:writejobs:goreleaser:runson:ubuntulateststeps:name:Checkoutuses:actionscheckoutv2with:fetchdepth:0name:Fetchalltagsrun:gitfetchforcetagsname:SetupGouses:actionssetupgov2with:goversion:1。19name:RunGoReleaseruses:goreleasergoreleaseractionv2with:eithergoreleaser(default)orgoreleaserprodistribution:goreleaserversion:latestargs:releasermdistenv:GITHUBTOKEN:{{secrets。GITHUBTOKEN}}YourGoReleaserProkey,ifyouareusingthegoreleaserprodistributionGORELEASERKEY:{{secrets。GORELEASERKEY}} END 开源协议:MITlicense 开源地址:https:github。comgoreleasergoreleaser