《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的GoReleaser 是 Go 项目的发布自动化工具。目标是简化构建、发布和发布步骤,同时为所有步骤提供变体定制选项。
GoReleaser 在构建时考虑了 CI 工具——您只需要在构建脚本中下载并执行它。在您的机器中安装它是可选的。
您的整个发布过程可以通过一个.goreleaser.yml文件进行定制。设置完成后,每次要创建新版本时,您需要做的就是标记并运行goreleaser release。
GoReleaser 有两个发行版:OSS 和Pro。
您可以安装预编译的二进制文件(以几种不同的方式)、使用 Docker 或从源代码编译(在 OSS 上时)。
homebrew tap
brew install goreleaser/tap/goreleaser
homebrew
brew install goreleaser
snapcraft
sudo snap install --classic goreleaser
scoop
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.gitscoop install goreleaser
apt
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.listsudo apt updatesudo apt install goreleaser
yum
echo '[goreleaser]name=GoReleaserbaseurl=https://repo.goreleaser.com/yum/enabled=1gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.reposudo yum install goreleaser
aur
yay -S goreleaser-bin
go install
go install github.com/goreleaser/goreleaser@latest
bash script
curl -sfL https://goreleaser.com/static/run | bash
在这个例子中,我们将构建、归档和发布一个示例 Go 项目。
创建一个 GitHub 存储库并添加一个主包:
// main.gopackage mainfunc main() { println("Ba dum, tss!")}
初始化模块
go mod init main
运行init命令以创建示例.goreleaser.yaml文件:
goreleaser init
现在,让我们运行一个“仅限本地”版本,看看它是否可以使用release命令:
goreleaser release --snapshot --rm-dist
此时,您可以自定义生成的.goreleaser.yaml或保持原样,这取决于您。最好的做法是检查.goreleaser.yaml源代码管理。
.goreleaser.yaml您可以通过运行检查命令来验证您是否有效:
goreleaser check
您还可以使用 GoReleaser仅为给定的 GOOS/GOARCH构建二进制文件,这对本地开发很有用:
goreleaser build --single-target
为了发布到 GitHub,你需要导出一个GITHUB_TOKEN环境变量,它应该包含一个有效的 GitHub 令牌和repo范围。它将用于将发布部署到您的 GitHub 存储库。你可以在这里创建一个新的 github 令牌。
GoReleaser 的目标是自动化您在发布软件时将进行的大部分无聊工作,理想情况下使用合理的默认值并使最常见的用例变得简单。
GoReleaser 期望有几件事:
工作流程
以下是在您的工作流程中使用此操作的简单片段:
name: goreleaseron: push: # run only against tags tags: - '*'permissions: contents: write # packages: write # issues: writejobs: goreleaser: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Fetch all tags run: git fetch --force --tags - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.19 - name: Run GoReleaser uses: goreleaser/goreleaser-action@v2 with: # either 'goreleaser' (default) or 'goreleaser-pro' distribution: goreleaser version: latest args: release --rm-dist env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution # GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
—END—
开源协议:MIT license
开源地址:https://github.com/goreleaser/goreleaser
留言与评论(共有 0 条评论) “” |