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