travis ci中的go.mod更改

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

我已将我的项目升级为使用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: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
更新依赖项。