travis ci中的go.mod更改
我已将我的项目升级为使用go 1.11.2模块支持。然而,我遇到了一个非常恼人的问题。go.mod文件在CI中不断更改。每天都是不同的文件。今天,go.sum中的行是:travis ci中的go.mod更改,go,travis-ci,go-modules,Go,Travis Ci,Go Modules,我已将我的项目升级为使用go 1.11.2模块支持。然而,我遇到了一个非常恼人的问题。go.mod文件在CI中不断更改。每天都是不同的文件。今天,go.sum中的行是: golang.org/x/net v0.0.0-20190213061140-3a22650c66bd h1:HuTn7WObtcDo9uEEU7rEqL0jYthdXAmZ6PP+meazmaU= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd h1:HuTn7WObtcDo9uEEU7rEqL0jYthdXAmZ6PP+meazmaU=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
go.mod是:
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd // indirect
我没有更新任何依赖项。他们没有锁!为什么不呢?如果依赖关系不断变化,这真的是一个大问题。然而,我没有看到其他人对这个问题大喊大叫。所以我一定是做错了什么
我正在使用go mod tidy
在一个git diff--exit code
之前对其进行同步。这在本地有效,但在Travis CI上无效。我认为这是一个问题,因为在Travis CI上,它需要获取依赖项,并且由于这些依赖项不使用语义版本控制,Go会获取最新版本,在每次提交给master时都会更改。如果您同意这是一个问题,那么如何使用Go模块锁定依赖关系?如何使用未选择Go模块的包
以下是一个相关的片段:
如果存储库没有任何有效的semver标记,则
存储库的版本将记录为“伪版本”,如
v0.0.0-20171006230638-a6e239ea1c69(包括时间戳和
提交散列,并设计为允许跨
版本记录在go.mod中,以便更容易地对其进行推理
录制的版本比另一个录制的版本“更晚”)
您也可以要求特定的提交哈希:
需要时,可以使用选择更具体的依赖项版本
go-get等命令foo@v1.2.3,去拿foo@master,去拿
foo@e3702bed2,或直接编辑go.mod
go-get
更新依赖项。