Open3

goの開発tips

Jerome_1010Jerome_1010

GOPRIVATEの設定

  • go getする際 sum.golang.org に問い合わせ、go modulesのchecksumがあっているかどうか確認する仕組みがあるが、非公開のgo modulesをgetするときはchecksumの検証ができない
  • このため特に設定せずにgo getしようとすると410 Goneと処理される
  • 回避するには環境変数GOPRIVATEにurlを設定する必要がある
    • GOPRIVATEにurlを設定することで、それに対してgo getする際はchecksumの検証をせずにアクセスできる
    • github.com/<org名>github.com/<org名>/<repo名>を設定できる
    • どのレベルで許可するかの違い。社用の組織であればgithub.com/<org名>でも良いだろうし、硬めにいくならgithub.com/<org名>/<repo名>でリポジトリごとに設定すると良いと思う
Jerome_1010Jerome_1010

ローカルにあるモジュールを別モジュールから参照したい時

  • replaceを使うようgo.modを書き換える
replace github.com/<org名>/<repo名> => ../any/path/to/local/repository
  • dockerでビルドする場合はもちろんマウントしないとなので要調整
Jerome_1010Jerome_1010

使っているモジュールのdefault branch以外を参照したい時

go.modを書き換えるかgo getコマンドに指定する

go.mod

  • commit hashかブランチ名かタグ(リリースバージョン?)を指定する
require (
  github.com/<org>/<repo> <commit hash> || <branch name> || <tag>
)
  • @/はinvalid stringとして弾かれるので注意
    • 適当な文字に置き換わると思うんだけど何に置き換わるか未確認
      • -_ではなさそうだった

go get

  • go get -u <モジュール>@<commit hash> || <branch name> || <tag>
  • こちらも@/はNG