bitbucketのprivateリポジトリからgo modする


背景

  • bitbucketで管理しているprivateなリポジトリから他のgo言語のモジュールを使いたい
  • ソースコードは公開したくない

前提

  • bitbucketにアクセスできるSSH鍵を登録している
    • 補足:Personal settings > SSH 鍵
  • この記事はgo version go1.14.2 darwin/amd64 で書いています
    • これ以前のバージョンであると他の設定が必要かもしれません

ローカル設定

SSH鍵を登録していればgitコマンドを使用してcloneやpushなどSSHプロトコルで行うことができるがgo get はhttpsプロトコルを使ってアクセスしている。

なのでgit(bitbuket)からSSHプロトコルを使って取得するために以下の設定を行う

git config --global url."[email protected]:".insteadOf "https://bitbucket.org/"

以下が追加されていること

$ cat ~/.gitconfig 
[url "[email protected]:"]
    insteadOf = https://bitbucket.org/

go側も以下の設定をしておく

export GOPROXY=direct
export GOSUMDB=off

Tips

    server response: Access denied. You must have write or admin access.

このエラーが出たら上記の設定が足りていない可能性がある

Go Get

モジュールを取得

go get -v bitbucket.org/[WORKSPACES]/[repository]

おまけ

別ブランチから取得したいなら

go get -v bitbucket.org/[WORKSPACES]/[repository]@[branch]