Goのツールのバージョンをgo.modで指定する

(2020-03-22)

依存moduleと同様にツールもバージョンを指定し、挙動や出力が変わらないようにする。

Tools as dependencies

まず次の 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/...