如何制作一个goreleaser脚本来在本地构建deb文件?



我是 Golang 的绝对新手,但我想修改 Go 构建脚本以仅在本地构建文件,而不是将其发布到 GitHub。

https://github.com/dahendel/docker-machine-driver-cloudstack/blob/master/.goreleaser.yml

如何进行?

我已经克隆了您的存储库并在本地机器中尝试。以下是步骤:

  1. Git 克隆

  2. 执行试运行(在"真实"发布之前测试所有内容:

    $ goreleaser release --skip-publish
    
  3. 显示没有错误

• 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
  1. 执行 goreleaser for release

    $ goreleaser release
    
  2. GoReleaser将在项目内创建dist文件夹,该文件夹将由分发包(deb,rpm(组成。

我遇到了一些问题,这是我所做的

  • 错误=缺少GITHUB_TOKEN、GITLAB_TOKEN和GITEA_TOKEN

创建 GitHub 或 GitHub 令牌 ( https://github.com/settings/tokens( 并将其作为环境变量

export GITHUB_TOKEN=xxxxyyyyyzzzzz

解决问题。

  • 预挂钩失败:XXXX 不在已知的 GOPATH/src 中

正如我在你的goreleaser.yaml中看到的

hooks:
pre: dep ensure

您正在使用 DEP 确保,检查$GOPATH并确保$GOPATH指向 Go 项目的正确路径。

  • error=dist 不为空,请在运行 goreleaser 之前将其删除或使用 --rm-dist 标志

dist 文件夹之前已经创建过,您可以在执行 goreleaser 命令时手动删除该文件夹或添加标志--rm-dist

$ goreleaser release --skip-publish --rm-dist
  • 错误=NFPM 失败:$PATH中不存在 rpm 构建

当我在Mac机器上运行时发生了此错误,因此没有安装rpmbuild,安装rpm,rpmbuild解决了问题

$ brew install rpm
  • error=git 当前处于脏状态,请在管道中检查可以更改以下文件的内容: M Gopkg.lock

Goreleaser 似乎检查文件差异,因为运行钩子(dep 确保(更新 Gopkg.lock 并且此更改/更新不会推送到 git。解决方案始终是将更改推送到 git。

  • 错误=git 标记 v1.0.5 未针对提交 3ae83eebd904d33cc549117254e857ebea04df90

从GoReleaser文档中读取"GoReleaser强制执行语义版本控制,并将在不合规的标签上出错。您的代码应该是有效的语义版本。如果不是,GoReleaser将出错。

推送到 git 后,确保必须更新标签,在这种情况下,我将标签更新到 v1.0.6(之前为 v1.0.5(。

  • error=GitHub/GitLab/Gitea 版本:无法发布工件 POST http://xxxyyyzzz/releases:404 未找到 []

确保发布文本在那里。

希望有帮助

最新更新