2021/11/20

[git, golang]GitHubのorganizationのprivateリポジトリをgo getする

golang で作業している。
お仕事なのでプライベートリポジトリなのだが、場所が個人ではなくorganizationにある。

さて go getしたいのだが、organization には Personal Access Token (PAT)はない。
どうしたらよかろうか?

$ go version
go version go1.17.3 linux/amd64


検索して出てきたのは2つの方式だった(他にもあると思うけど)。

  • PATでアクセス
  • SSHにする

PAT方式で出てきたのはこちら。

https://zenn.dev/shootacean/articles/go-get-from-github-private-repository

organizationだからPATはないと書いたが、ここでは個人アカウントのPATを使う。
つまり、個人アカウントだろうとorganizationだろうと気にするなということだ。

これでできた。
GOPRIVATEは設定しなくても特にエラーは出なかった。

 

SSH方式で出てきたのはこちら。

https://gist.github.com/magnetikonline/3ceec9ece11375393ab5781d9370ee99

こちらはダメだった。
git clone で https://github.com で始まるリポジトリ名を打ち込むと SSHのパスフレーズを要求されたのでできるかと思ったのだけど、go getの方は「git@github.com: Permission denied (publickey)」としばしば見かけるエラーになった。

表示しているコマンドもcloneしているだけだし、そのまま打ち込んでもやっぱりパスフレーズ要求になったから、stdinを止められてるとかでダメなんだろうか。

~/.netrc で入力を回避するやり方も出ていたので、それと併用するのかもしれんが、試してはいない。

 

というわけで、「GitHubのorganization のプライベートリポジトリを go get するとき、個人アカウントのプライベートリポジトリをPATを使って go getするやり方と同じで取得できた」ということにしておく。

 

GOPRIVATEがいるのは、おそらく go.mod の中にプライベートリポジトリがある場合だと思う。
go get してエラーになるようだったら、GOPRIVATEに github.com/xxx みたいなのを設定すればできた。
全部同じ organizationのプライベートリポジトリだったのだけど、複数の organization にまたがってかつプライベートリポジトリとかだとわからんね。そんなことをするなってことだろうけど。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。