go.mod在travis-ci中的变化

问题描述 投票:2回答:1

我已将项目升级为使用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 tidygit diff --exit-code之前同步它。这适用于本地但不适用于Travis-CI。我认为这是一个问题,因为在Travis-CI上它需要获取依赖项,并且因为这些依赖项不使用语义版本控制,所以Go抓取最新的,每次提交时都会更改为master。如果您同意这是问题,如何使用Go模块锁定依赖项?

go travis-ci go-modules
1个回答
5
投票

The wiki explains如何使用未选择进入模块的软件包

这是一个相关的片段:

如果存储库没有任何有效的semver标记,则存储库的版本将记录为“伪版本”,例如v0.0.0-20171006230638-a6e239ea1c69(其中包含时间戳和提交哈希,并且设计为允许在go.mod中记录的版本之间的总排序,以便更容易推断哪些录制版本比其他录制版本“更晚”。

你也可以require特定的提交哈希:

在需要时,可以使用go get [email protected],go get foo @ master,go get foo @ e3702bed2或直接编辑go.mod等命令选择更具体的依赖项版本。

© www.soinside.com 2019 - 2024. All rights reserved.