びくんびくんしながらコードを書く。

いしきひくい系エンジニアのらくがき帳

github Enterprise でdepが使えるようになったがハマった話

また1ヶ月ちょっと空いてしまったエントリーですが生きています。
来週あたりにはしっかり初めて1年くらいになるので振り返りの記事でも書いてみようかな。

今回は現在働いているディップ株式会社のアドベントカレンダー 11日目の記事です。

弊社では現在サーバサイドプログラムの一部をgolangで作成しています。
バージョン管理はGHEを使っているのですが、ちょっと前まで2.9系を使っていたためgolangのパッケージを別リポジトリに置くとちょっとめんどくさい感じでした。

最近、GHEを最新のVerにアップデートしたため、2.13系から対応されたdepでの管理ができるようになりました。

社内で進めている開発でちょうどパッケージを別出ししてやろうという話が出ていたのでこれ幸いとやってみたところ dep ensureがうまく動かない事象にぶつかりました。

しかも当事象は社内で私だけみたいな感じ。

起きた事象

dep ensure -v で詳細を見てみると下記のようなメッセージが出力されていました。

Solving failure: 
        (1) failed to list versions for 【https://github-enterprise.example.com/<owner>/<repository-name>.git】: fatal: could not read Username for '【https://github-enterprise.example.com】': terminal prompts disabled

どうやらdepがgitからパッケージを落としてくるときにhttpsで落とそうとしてUsernameが無いよと怒られているようです。
Gopkg.lockの該当パッケージに下記を追加すれば解消するよ!という記事を見つけたのですが、それでもうまくいきませんでした。

source="git@github-enterprise.example.com:<owner>/<repository-name>.git"

解決編

別の記事でgitconfig を修正すれば大丈夫というものを見つけたのでやってみたところうまく動きました。

ちなみにこの方法はGHEにsshKeyを登録していること前提となっているので注意が必要です。

~/.gitconfig に下記を追加しましょう。

[url "git@github.example.com:"]
        insteadOf = https://github.example.com/

gitlabなども同様で上記のドメインを該当gitlabのドメインに変更すれば対応可能なようです。
※試したわけではないので本当かどうかは確認してみてください。

[url "git@gitlab.example.com:"]
        insteadOf = https://gitlab.example.com/

いじょう