Goのツールのバージョンをgo.modで指定する
golang依存moduleと同様にツールもバージョンを指定し、挙動や出力が変わらないようにする。
まず次の tools.go
のようなファイルを作ってimportし、
go mod tidy
で消えないようにする。
build tagが付いているので通常のbuild時には影響を及ぼさない。
$ cat tools.go
// +build tools
package pkg
import (
_ "golang.org/x/lint/golint"
)
次にGOBINを変更して go install
し指定したディレクトリにバイナリを持ってきてこれを実行する。
export GOBIN:=$(PWD)/bin
$(GOBIN)/golint:
go install golang.org/x/lint/golint
.PHONY: test
test: $(GOBIN)/golint
go test -v ./pkg/...
bin/golint ./pkg/...