我想用 go moduletools.go “工具作为依赖项”替换retool。然而,当我的开发人员和 CI 环境都使用不同的操作系统时,我很难理解这是如何工作的。
我想确保每个环境使用完全相同版本的工具。
举一个具体的例子,我的应用程序需要 protoc 编译器通过 github.com/golang/protobuf/protoc-gen-go 生成 go 代码。我有 3 个操作系统,都需要使用 protoc-gen-go 插件/生成器执行 protoc:
Ryan:使用 MacOS
乔:Linux(免费)
CI:Linux(CentOS)
我目前使用 retool 来确保所有环境都锁定在同一版本的工具上(本例中为 protoc-gen-go):
retool do build/bin/protoc -Ibuild/protoc/include -I. rpc/platform/platform.proto --go_out=.
我的新 go 模块/“工具作为依赖项”设置
工具.go:
// +build tools
package tools
import (
_ "github.com/golang/protobuf/protoc-gen-go"
)
设置将使用的路径go install
:
export GOBIN=$PWD/bin
安装:
go install github.com/golang/protobuf/protoc-gen-go
如果 Ryan 运行,则会创建go install ..
一个bin/protoc-gen-go
MacOS 可执行文件。
问题:
此时,为什么protoc-gen-go
go.mod 中没有列出工具版本(或 git hash)?
当 Joe 克隆应用程序存储库时,他如何获取并编译 Ryan 使用的相同版本的 protoc-gen-go?
如何protoc
知道在我的目录中使用protoc-gen-go
可执行文件生成器./bin
?
皈依舞
潇潇雨雨
相关分类