使用Wercker平台上的dep来构建Golang

首先

我在尝试使用Wercker来管理Golang的依赖模块进行CI时遇到了困难。
下次为了节省时间,我打算做个记录。
*虽然我在考虑是不是应该把这种类似的问题写在Scrapbox.io上,但我暂时先放在这里。

总结一下

使用wercker/setup-go-workspace等工具将golang box的WERCKER_SOURCE_DIR设置为GOPATH的子目录,因为默认情况下它不在GOPATH下。

本地的 Wercker CLI 可以通过 wercker build,但在 Wercker 的 Web 界面中由于相同原因失败,因此这种方法可能是错误的。目前正在进行调查。

补充说明(2018/01/04):

一旦我决定使用Wercker来进行Golang代码的构建,使用glide。

环境

    • Wercker

box: golang:latest (※2017.01.01の実行時で Go 1.9)

困扰的事情

作为 Wercker 的 Golang box 的配置

GOPATH : /go

WERCKER_SOURCE_DIR : /pipeline/source

因此,处理对象是 /pipeline/source。然而,这个路径不在 $GOPATH/src 目录下。

经过调查,发现 Go 语言的模块依赖关系管理推荐使用 dep 进行。

所以在dep中安装依赖模块时,希望模块能够放置在/pipeline/source/vendor/*路径下,但实际上

/pipeline/source is not within a known GOPATH/src

在出现错误消息。这个错误消息已被报告给了原作者的问题。

如果不在$GOPATH[…]/src/{某个目录..}中,dep init会失败。

由于状态为”Open”,所以需要将$GOPATH/src = /go/src下的软件安装在此。

解决方案

作为一种简单的解决方法,可以解析dep status并运行go get命令,将安装路径从项目的vendor目录更改为全局的GOPATH。

然而,尽管我已经努力使用`dep`,但我仍然觉得有点不满意,所以我决定查找`wercker/setup-go-workspace`。

build:
    steps:
        - wercker/setup-go-workspace:
          package-dir: <SOME_PATH>

当设定后,会将其安装在/go/src//vendor/*中,并且这个路径位于$GOPATH/src下,因此可以通过dep进行安装。

请提供更多细节。

Getting started with Wercker and Go

wercker/getting-started-golang:標準ライブラリしか使用していないので、参考にならず…

wercker/step-setup-go-workspace

Werckerを使ってフェーズ間のパッケージの受け渡し周りでハマった:トピックは違うけれど、モジュールの使い方はここで知った

广告
将在 10 秒后关闭
bannerAds