背景
dep を使った Golang のビルドで同じ wercker.yml を使っているのに Wercker CLI の Local Mode では wercker build が通るのに、Wercker の Web 側では通らなかった。
調査
エラーログ
go build の段階で失敗し、そのログは
go build
main.go:x:x: cannot find package "github.com/pkg/errors" in any of:
/usr/local/go/src/github.com/pkg/errors (from $GOROOT)
/go/src/github.com/pkg/errors (from $GOPATH)
make: *** [build] Error 1
と、パッケージが GOROOT および GOPATH で見つからないとのこと。
dep を使ってプロジェクトのルートフォルダに vendor ディレクトリで入れているので、上記パスにないのは当然。
プロジェクトルートフォルダを調べて見る。
プロジェクトルートフォルダ
よい方法がわからなかったので、 dep ensure した次の step で ls する。
- ローカル
/go/src/<PATH_TO_PROJECT_ROOT>:
total 28
-rw-r--r-- 1 root root 259 Jan 2 05:08 main_test.go
-rw-r--r-- 1 root root 251 Jan 2 05:08 main.go
-rw-r--r-- 1 root root 121 Jan 2 05:08 Makefile
-rw-r--r-- 1 root root 604 Jan 2 05:08 Gopkg.toml
-rw-r--r-- 1 root root 429 Jan 2 05:08 Gopkg.lock
drwxr-xr-x 3 root root 4096 Jan 2 05:08 vendor
-rw-r--r-- 1 root root 653 Jan 2 05:08 wercker.yml
- Web
/go/src/<PATH_TO_PROJECT_ROOT>:
total 24
-rw-r--r--. 1 root root 251 Jan 2 04:53 main.go
-rw-r--r--. 1 root root 121 Jan 2 04:53 Makefile
-rw-r--r--. 1 root root 604 Jan 2 04:53 Gopkg.toml
-rw-r--r--. 1 root root 429 Jan 2 04:53 Gopkg.lock
-rw-r--r--. 1 root root 653 Jan 2 04:53 wercker.yml
-rw-r--r--. 1 root root 259 Jan 2 04:53 main_test.go
Web 側だと vendor ディレクトリがない。
調べてみると /go/src/github.com/golang/dep/vendor/github.com/pkg/errors に入っていた。
Wercker Web で作成しているコンテナを取得する
dep が Wercker Web 側で作成しているコンテナでの挙動が期待通りではないことがわかったので、Web 側で作成したコンテナを取得する。
を参考にするが、GitHub 認証をしていると wercker login が通らず
- パスワード再発行
-
~/.wercker/tokenに Personal Token を置く- ダメだったので
--auth-tokenで直接 Personal Token を指定して認証は通ったが、今度は以下のエラーメッセージが出てダウンロードできない
- ダメだったので
ERROR No finished builds found for this application
FATAL Exiting.
よく読むと、参考にした記事でもこの方法は同じくできずで、DockerHub にイメージを Push する方法が紹介されていた。