Heroku で Go がサポートされたのは良いニュースだったけど godep を使わなきゃいけないのが気に入らないところで、Go で Heroku に乗せたい Web アプリケーションを作る時は Docker を使う ことにした(参考)。その際にも Docker コンテナ中で go get をいちいち待つのはストレスなのでベンダリングはしておいたほうがよい。そこで簡単なベンダリングスクリプトを書いた。Go 1.5 で試験的に導入されたベンダリングには特に対応していない。
https://gist.github.com/motemen/bb1fca4a92a29bad78dc
このスクリプトは
- プロジェクトの依存しているサードパーティーライブラリを特定のパス以下にコピーできる
- 上記のパスを
GOPATHに含めてgoコマンドを実行できる - リビジョンロッキングは行わない
なので、複数人開発には向かないと思う。
使い方は簡単で、プロジェクトのトップで
% go-vendor.sh save
とすれば _vendor/src 以下に(既存の GOPATH から)ソースコードをコピーして、
% go-vendor.sh go build
として _vendor を GOPATH に含めつつ go コマンドを実行する。ディレクトリ名が _ ではじまっているので ./... などとしてもソースコードとしては判定されない。
ちなみに依存ライブラリの列挙は go list で行っており、まさにこれはスイスアーミーナイフですのでおすすめの逸品です。
