如何制作 goreleaser 脚本以在本地构建 deb 文件?
How to make a goreleaser script to build a deb file locally?
我是 Golang 的新手,但我想修改 Go 构建脚本以仅在本地构建文件,而不是将其发布到 GitHub。
https://github.com/dahendel/docker-machine-driver-cloudstack/blob/master/.goreleaser.yml
如何进行?
我已经克隆了您的存储库并在我的本地 machine 中尝试。以下是步骤:
Git 克隆
执行 Dry 运行(在“真正”发布之前测试所有内容:
$ goreleaser release --skip-publish
显示没有错误
• SIGNING ARTIFACTS
• pipe skipped error=artifact signing is disabled
• DOCKER IMAGES
• pipe skipped error=docker section is not configured
• PUBLISHING
• pipe skipped error=publishing is disabled
• release succeeded after 20.75s
执行 goreleaser 进行释放
$ goreleaser release
goreleaser 将在项目中创建 dist 文件夹,该文件夹将包含分发包(deb、rpm)。
我遇到了一些问题,这就是我所做的
- 错误=缺少 GITHUB_TOKEN、GITLAB_TOKEN 和 GITEA_TOKEN
创建 github 或 gitlab 令牌 (https://github.com/settings/tokens) 并将其作为环境变量
export GITHUB_TOKEN=xxxxyyyyyzzzzz
解决问题。
- 预挂钩失败:xxxx 不在已知范围内 GOPATH/src
正如我在您的 goreleaser.yaml
中看到的
hooks:
pre: dep ensure
您正在使用 dep ensure,检查 $GOPATH
并确保 $GOPATH
指向您的 Go 项目的正确路径。
- error=dist 不为空,在 运行ning goreleaser 之前删除它或使用 --rm-dist 标志
之前创建过dist文件夹,可以手动删除文件夹,也可以在执行goreleaser命令时添加flags--rm-dist
$ goreleaser release --skip-publish --rm-dist
- error=nfpm 失败:$PATH
中不存在 rpmbuild
这个错误发生在我运行在mac上machine所以没有安装rpmbuild,安装rpm,rpmbuild解决问题
$ brew install rpm
- error=git 当前处于脏状态,请检查您的管道中哪些可以更改以下文件:
MGopkg.lock
Goreleaser 似乎检查文件差异,因为 运行ning 挂钩(dep 确保)更新 Gopkg.lock 而这个 changes/updates 不会被推送到 git。解决方案总是将更改推送到 git.
- error=git 标签 v1.0.5 不是针对提交 3ae83eebd904d33cc549117254e857ebea04df90
从 GoReleaser 文档中读取“GoReleaser 强制执行语义版本控制,并且会在不兼容的标签上出错。您的标签应该是有效的语义版本。如果不是,GoReleaser 将会出错。”
推送到 git 后,请确保您必须更新标签,在这种情况下,我将标签更新为 v1.0.6(之前为 v1.0.5)。
- error=GitHub/GitLab/Gitea 发布:无法发布工件 POST http:///xxxyyyzzz/releases: 404 Not Found []
确保有发布文本。
希望对您有所帮助
我是 Golang 的新手,但我想修改 Go 构建脚本以仅在本地构建文件,而不是将其发布到 GitHub。
https://github.com/dahendel/docker-machine-driver-cloudstack/blob/master/.goreleaser.yml
如何进行?
我已经克隆了您的存储库并在我的本地 machine 中尝试。以下是步骤:
Git 克隆
执行 Dry 运行(在“真正”发布之前测试所有内容:
$ goreleaser release --skip-publish
显示没有错误
• SIGNING ARTIFACTS
• pipe skipped error=artifact signing is disabled
• DOCKER IMAGES
• pipe skipped error=docker section is not configured
• PUBLISHING
• pipe skipped error=publishing is disabled
• release succeeded after 20.75s
执行 goreleaser 进行释放
$ goreleaser release
goreleaser 将在项目中创建 dist 文件夹,该文件夹将包含分发包(deb、rpm)。
我遇到了一些问题,这就是我所做的
- 错误=缺少 GITHUB_TOKEN、GITLAB_TOKEN 和 GITEA_TOKEN
创建 github 或 gitlab 令牌 (https://github.com/settings/tokens) 并将其作为环境变量
export GITHUB_TOKEN=xxxxyyyyyzzzzz
解决问题。
- 预挂钩失败:xxxx 不在已知范围内 GOPATH/src
正如我在您的 goreleaser.yaml
hooks:
pre: dep ensure
您正在使用 dep ensure,检查 $GOPATH
并确保 $GOPATH
指向您的 Go 项目的正确路径。
- error=dist 不为空,在 运行ning goreleaser 之前删除它或使用 --rm-dist 标志
之前创建过dist文件夹,可以手动删除文件夹,也可以在执行goreleaser命令时添加flags--rm-dist
$ goreleaser release --skip-publish --rm-dist
- error=nfpm 失败:$PATH 中不存在 rpmbuild
这个错误发生在我运行在mac上machine所以没有安装rpmbuild,安装rpm,rpmbuild解决问题
$ brew install rpm
- error=git 当前处于脏状态,请检查您的管道中哪些可以更改以下文件: MGopkg.lock
Goreleaser 似乎检查文件差异,因为 运行ning 挂钩(dep 确保)更新 Gopkg.lock 而这个 changes/updates 不会被推送到 git。解决方案总是将更改推送到 git.
- error=git 标签 v1.0.5 不是针对提交 3ae83eebd904d33cc549117254e857ebea04df90
从 GoReleaser 文档中读取“GoReleaser 强制执行语义版本控制,并且会在不兼容的标签上出错。您的标签应该是有效的语义版本。如果不是,GoReleaser 将会出错。”
推送到 git 后,请确保您必须更新标签,在这种情况下,我将标签更新为 v1.0.6(之前为 v1.0.5)。
- error=GitHub/GitLab/Gitea 发布:无法发布工件 POST http:///xxxyyyzzz/releases: 404 Not Found []
确保有发布文本。
希望对您有所帮助