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

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

如何进行?

最佳答案

我已经克隆了您的存储库,并在我的本地计算机上尝试了。步骤如下:

  • Git克隆
  • 执行试运行(“真正”发布之前测试所有内容:

    $ goreleaser版本--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发布
  • goreleaser将在项目内部创建 dist 文件夹,此文件夹将包含分发包(deb,rpm)。

  • 我遇到了一些问题,这是我的工作:
  • 错误=缺少GITHUB_TOKEN,GITLAB_TOKEN和GITEA_TOKEN

  • 创建github或gitlab token (https://github.com/settings/tokens)并将其作为环境变量
    export GITHUB_TOKEN=xxxxyyyyyzzzzz
    

    解决问题。
  • 预挂钩失败:xxxx不在已知的GOPATH/src


  • 正如我在您的goreleaser.yaml中看到的
    hooks:
    pre: dep ensure
    

    您正在使用dep sure,检查$ GOPATH并确保$ GOPATH指向Go项目的正确路径。
  • error = dist不为空,请在运行goreleaser之前将其删除,或使用--rm-dist标志

  • dist文件夹之前已经创建,您可以在执行goreleaser命令时手动删除该文件夹或添加标志--rm-dist
    $ goreleaser release --skip-publish --rm-dist
    
  • 错误= nfpm失败:$ PATH中没有rpmbuild

  • 由于我在Mac机上运行,​​因此发生此错误,因此没有安装rpmbuild,请安装rpm,rpmbuild解决此问题
    $brew install rpm
    
  • error = git当前处于脏状态,请检查您的管道可以更改以下文件的内容:
    M Gopkg.lock

  • Goreleaser似乎正在检查文件diff,因为运行钩子(Hook)(请确保确保)更新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未找到[]

  • 确保发布文本在那里。

    希望能有所帮助

    关于go - 如何制作goreleaser脚本以在本地构建deb文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57807123/

    10-11 16:15