📖

Bitbucketのプライベートリポジトリをgo getする

2022/04/19に公開

やりたいこと

Bitbucket のプライベートリポジトリを go get したい。

go get bitbucket.org/<account_name>/<private_repository_name>

必要な設定

Bitbucket に SSH 鍵を登録する

  1. https://bitbucket.org/account/settings/ssh-keys/ にアクセス
  2. 「鍵を追加」をクリック
  3. SSH 鍵を貼り付けて、「鍵を追加」をクリック

マニュアル: https://ja.confluence.atlassian.com/bitbucket/set-up-an-ssh-key-728138079.html

git-config で insteadOf を設定する

git config --global url."git@bitbucket.org:<account_name>".insteadOf "https://bitbucket.org/<account_name>"

グローバル設定にすること。ローカル設定ではダメ。

GOPRIVATE を設定する

環境変数 GOPRIVATEbitbucket.org/<account_name> を追加する。

export GOPRIVATE=bitbucket.org/<account_name>
  • すでに GOPRIVATE に他の値を設定している場合は、カンマで区切る。
export GOPRIVATE=$GOPRIVATE,bitbucket.org/<account_name>
  • go env -w を使っても良い。
go env -w GOPRIVATE=bitbucket.org/<account_name>

Bitbucket のアプリパスワードを .netrc に書く

アプリパスワードの作成

  1. https://bitbucket.org/account/settings/app-passwords/ にアクセス
  2. 「アプリパスワードの作成」をクリック
  3. ラベルを適当に入力し、権限は「リポジトリ > 読み取り」にチェックを入れて、「作成」をクリック
  4. 作成後に表示されるアプリパスワードをコピーしておく
    * 再表示できないので注意。忘れたらもう一度作成する。

マニュアル: https://support.atlassian.com/ja/bitbucket-cloud/docs/app-passwords/#Create-an-app-password

.netrc の設定

エディタで ~/.netrc を開き、以下の内容を記述する。

machine api.bitbucket.org
login <account_name>
password 上記で控えたアプリパスワード
  • これをしないと go get で以下のエラーが出る:
    $ go get bitbucket.org/account_name/repository_name
    go: missing Mercurial command. See https://golang.org/s/gogetcmd
    go get bitbucket.org/account_name/repository_name: reading https://api.bitbucket.org/2.0/repositories/account_name/repository_name?fields=scm: 403 Forbidden
          server response: Access denied. You must have write or admin access.
    

go get

以上の設定を行えば go get できるようになる:

go get bitbucket.org/<account_name>/<private_repository_name>

参考

https://go.dev/doc/faq#git_https
https://go.dev/ref/mod#private-modules
https://www.digitalocean.com/community/tutorials/how-to-use-a-private-go-module-in-your-own-project

Discussion