前提
一言でDependabotと言っても実は2種類あります
3rd party版Dependabot
GitHub版Dependabot
- 設定ファイルは
.github/dependabot.yml
- PRを作る時の名前がdependabot *3
- 3rd party版ができて数年後にGitHub本体に取り込まれた
- 3rd party版の方にGitHub版への移行オプションがあるので今後はこっちが推奨だと思う
どうしてGo.1.16以降はGitHub版Dependabotを使った方がいいのか?
Go 1.16で No automatic changes to go.mod and go.sum が入った関係でmoduleのバージョンアップ時にエラーになることがあるためです。
実際に3rd party版DependabotでmoduleのバージョンアップPRを作った場合、下記のようにGo 1.16のみエラーになります
+ make test go test -count=1 $***TEST_ARGS*** Error: kmsenv.go:8:2: missing go.sum entry for module providing package golang.org/x/oauth2/google (imported by github.com/sue445/gcp-kmsenv); to add: go get github.com/sue445/gcp-kmsenv Error: ../../../go/pkg/mod/google.golang.org/grpc@v1.36.0/internal/channelz/types_linux.go:26:2: missing go.sum entry for module providing package golang.org/x/sys/unix (imported by google.golang.org/grpc/internal/channelz); to add: go get google.golang.org/grpc/internal/channelz@v1.36.0 Error: ../../../go/pkg/mod/cloud.google.com/go@v0.79.0/kms/apiv1/key_management_client.go:28:2: missing go.sum entry for module providing package google.golang.org/api/iterator (imported by cloud.google.com/go/kms/apiv1); to add: go get cloud.google.com/go/kms/apiv1@v0.79.0 Error: ../../../go/pkg/mod/cloud.google.com/go@v0.79.0/kms/apiv1/doc.go:43:2: missing go.sum entry for module providing package google.golang.org/api/option (imported by github.com/sue445/gcp-kmsenv); to add: go get github.com/sue445/gcp-kmsenv Error: ../../../go/pkg/mod/cloud.google.com/go@v0.79.0/kms/apiv1/key_management_client.go:30:2: missing go.sum entry for module providing package google.golang.org/api/option/internaloption (imported by cloud.google.com/go/kms/apiv1); to add: go get cloud.google.com/go/kms/apiv1@v0.79.0 Error: ../../../go/pkg/mod/cloud.google.com/go@v0.79.0/kms/apiv1/key_management_client.go:31:2: missing go.sum entry for module providing package google.golang.org/api/transport/grpc (imported by cloud.google.com/go/kms/apiv1); to add: go get cloud.google.com/go/kms/apiv1@v0.79.0 Error: ../../../go/pkg/mod/cloud.google.com/go@v0.79.0/kms/apiv1/iam.go:19:2: missing go.sum entry for module providing package google.golang.org/genproto/googleapis/cloud/kms/v1 (imported by github.com/sue445/gcp-kmsenv); to add: go get github.com/sue445/gcp-kmsenv Error: ../../../go/pkg/mod/cloud.google.com/go@v0.79.0/iam/iam.go:30:2: missing go.sum entry for module providing package google.golang.org/genproto/googleapis/iam/v1 (imported by cloud.google.com/go/iam); to add: go get cloud.google.com/go/iam@v0.79.0 Error: ../../../go/pkg/mod/google.golang.org/grpc@v1.36.0/status/status.go:34:2: missing go.sum entry for module providing package google.golang.org/genproto/googleapis/rpc/status (imported by google.golang.org/grpc/status); to add: go get google.golang.org/grpc/status@v1.36.0 Error: make: *** [Makefile:10: test] Error 1 Error: Process completed with exit code 2.
https://github.com/sue445/gcp-kmsenv/pull/53/checks?check_run_id=2152006087
対応するためにはmoduleのバージョンアップ時に go get
や go mod tidy
も一緒にする必要があるのですが、GitHub版DependabotだとPR作成時に自動で go mod tidy
を行うためこの問題を回避できます。
3rd party版の方は下記issueがクローズされてるのでおそらく実装の見込みは薄いと思います。
まぁ3rd party版とGitHub版があるならGitHub版を使った方がいいよね...
3rd party版 vs GitHub版
GitHub版には automerged_updates
が無いのを除けば今の所不満は無いです。(3rd party版の automerged_updates
*4 をずっと使ってきたのでこれまで移行するモチベーションがあまりなかった)
*1:区別するために僕が勝手に3rd party版って言ってるので適切な言い方があったら知りたい
*2:https://github.com/sue445/gitpanda/pull/575
*3:https://github.com/sue445/gitpanda/pull/584
*4:https://dependabot.com/docs/config-file/#automerged_updates