🔓

go getでGitHubのプライベートリポジトリやOrganizationリポジトリを取得する方法

2021/01/02に公開

go getでGitHubのプライベートリポジトリやGitHub Organizationのインターナル・プライベートリポジトリを取得する方法をご紹介します。

流れ

  1. GitHubのパーソナルアクセストークンを発行する
  2. git config にパーソナルアクセストークンを設定する
  3. GOPRIVATE環境変数を設定する

GitHubのパーソナルアクセストークンを発行する

GitHubのプライベートリポジトリやGitHub Organizationのインターナルリポジトリ、プライベートリポジトリにアクセスするための、「パーソナルアクセストークン」を発行します。

設定方法はGitHub公式ドキュメントを参考にしてください。
https://docs.github.com/ja/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token

git config にパーソナルアクセストークンを設定する

上記で発行したパーソナルアクセストークンを利用するように git config を設定します。

$ git config --global url."https://<your token>:x-oauth-basic@github.com/".insteadOf "https://github.com/"

"https://github.com/"というURLを使用する際に別URLに置き換えるための設定です。
この場合であれば、常にパーソナルアクセストークンを使用してGitHubにアクセスするようになります。

GOPRIVATE環境変数を設定する

go get時にチェックサムの検証をするのがデフォルトの挙動のため、GOPRIVATEを設定する必要があります。

また、ダウンロードしたモジュールは、ソースに関係なく、 sum.golang.orgにある公開のGoチェックサムデータベースと照合して検証するのがデフォルトです。
https://golang.org/cmd/go/#hdr-Module_configuration_for_non_public_modules

echo "export GOPRIVATE=\"github/<your name>/\"" >> ~/.zshrc

まとめ

上記の手順で、go getでGitHubのプライベートリポジトリやGitHub Organizationのインターナルリポジトリ、プライベートリポジトリにアクセスできるようになります。
社内用のライブラリやSDKを開発する際に必要な設定になると思うので、何か参考になれば幸いです。

参考

Discussion