Go 1.15升级至1.19

这篇文章是来自Howtelevision Advent Calendar 2022第12天的文章。

在我们经营的外资就业网站中,我们采用了Go作为后端。由于Go的版本一直停留在1.15,因此我们决定升级到1.19版本。在本文中,我打算将升级版本时所做的更改总结为备忘录。

Go语言版本升级(1.15→1.19)

首先,创建一个Dockerfile。

FROM golang:1.15.3

Note: The given word “から” in Japanese has various meanings depending on the context. Without further context, the most general paraphrase in Chinese would be “从.”

FROM golang:1.19.3

我已经更改了版本的指定。

如果能够仅仅通过这些来正常运行就好了,但是事情并没有那么顺利,还需要对模块进行修改。具体来说,

go getがDeprecatedされたことへの対応

go getからgo installへの変更

go.modの変更

1.16や1.17でmodule関連に変更があったらしく、go.modファイルに変更を反映させるためにgo mod tidyを行う必要がありました

我已经进行了。

 

CircleCI 的更改

因为我们在CI中使用了CircleCI,所以必须修改CircleCI的配置文件。
我以为只需要像Dockerfile一样更改版本指定就可以了……

Starting container circleci/golang:1.19.3
Warning: No authentication provided, using CircleCI credentials for pulls from Docker Hub.
  image cache not found on this host, downloading circleci/golang:1.19.3

看起来,go:1.19似乎只有下一代镜像。

因此,可以將CircleCI的設定文件寫成這樣。

image: circleci/golang:1.15.3

image: cimg/go:1.19.3

尝试进行更改并再次挑战时。

ln: failed to create symbolic link '/go/src/app': No such file or directory

在配置文件中有一个命令用于创建符号链接,但是由于目录不存在,所以失败了。

根据我的调查,CicleCI的下一代镜像中的PATH似乎发生了变化。

environment:
 - APP_DIR: /go/src/app

environment:
 - APP_DIR: /home/circleci/go/src/app

通过进行更改,我们成功地执行了持续集成。

在修改CircleCI的配置文件时,我参考了以下博客:
使用下一代镜像cimg/go和circleci/go Orbs构建2020年版的CircleCI环境。

最后

在豪电视公司,我们正在寻找一位能与我们共事的工程师。

 

广告
将在 10 秒后关闭
bannerAds