当前位置: 首页 > 面试题库 >

travis-ci中的go.mod更改

王德华
2023-03-14
问题内容

我已经升级了项目以使用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模块的依赖关系?


问题答案:

Wiki解释了如何使用尚未选择go模块的软件包

以下是相关片段:

如果存储库没有任何有效的semver标记,则该存储库的版本将使用“伪版本”记录,例如v0.0.0-20171006230638-a6e239ea1c69(其中包括时间戳和提交哈希,并且旨在允许go.mod中记录的各个版本之间的总排序,以便更容易地推断出哪个记录​​版本比另一个记录版本“晚”。

您也可以指定require提交哈希值:

如果需要,可以使用诸如go get foo@v1.2.3,go foo @ master,go foo @
e3702bed2之类的命令或通过直接编辑go.mod来选择更特定版本的依赖项。



 类似资料:
  • Overview 平时项目里用的是jenkins,但很难找到好用又免费的jenkins hosting服务,而travis-ci.org免费为github用户提供服务且非常易用,SpringSide的地址为 https://travis-ci.org/springside/springside4 。不过商业的项目就没这么幸运了,两个并发要129美刀/月,十个并发要489美刀,不过其实也不贵。 Qu

  • 在 Travis CI 中使用 Docker 当代码提交到 GitHub 时,Travis CI 会根据项目根目录 .travis.yml 文件设置的指令,执行一系列操作。 本小节介绍如何在 Travis CI 中使用 Docker 进行持续集成/持续部署(CI/CD)。这里以当代码提交到 GitHub 时自动构建 Docker 镜像并推送到 Docker Hub 为例进行介绍。 准备 首先登录

  • Travis CI 是一个基于云的持续集成项目, 目前已经支持大部分主流语言了,比如:C,PHP,Ruby,Python, Nodejs等等。和Jenkins类似, Travis CI也是开源的,不过Travis和Github集成非常紧密,官方的集成测试托管只支持Github项目, 不过你也可以搭建一套自己的方案。  如果你有开源项目,那么Travis绝对值得一试,目前托管在Github上的大部分

  • LaTeX + Git + Travis → release pdf Write LaTeX, push to git, let Travis automatically build your file and release a pdf automatically to GitHub releases when the commit was tagged. This repository con

  • Electron 基于 Chromium,所以需要一个显示驱动使其运转。 如果 Chromium 无法找到一个显示驱动, Electron 会启动失败,因此无论你如何去运行它,Electron 不会执行你的任何测试。 在 Travis,Circle, Jenkins 或者类似的系统上测试基于Electron的应用时,需要进行一些配置。 本质上,我们需要使用一个 虚拟的显示驱动。 Testing o

  • Electron 基于 Chromium,所以需要一个显示驱动使其运转。 如果 Chromium 无法找到一个显示驱动, Electron 会启动失败,因此无论你如何去运行它,Electron 不会执行你的任何测试。 在 Travis,Circle, Jenkins 或者类似的系统上测试基于Electron的应用时,需要进行一些配置。 本质上,我们需要使用一个 虚拟的显示驱动。 配置虚拟显示服务器