この記事はHowtelevision Advent Calendar 2022の12日目の記事です。
弊社が運営する外資就活ドットコムではバックエンドにGo
を採用しています。
Go
のバージョンが1.15
のままとなっていたので1.19
にバージョンを上げたのですが、本記事ではバージョンアップの際に行った変更を備忘録的なものとしてまとめておこうと思います。
Goのバージョンアップ(1.15->1.19)
手始めにDockerfile
を
FROM golang:1.15.3
から
FROM golang:1.19.3
にバージョンの指定を変更しました。
これだけでうまく動いてくれればよかったのですが、そううまく事は運ばずmodule関連の変更も必要でした。
具体的には
-
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
は次世代イメージしかないようです
https://circleci.com/docs/ja/circleci-images/#next-generation-convenience-images
ということで、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
に変更することで、無事CIを実行することができました。
CircleCI
の設定ファイルを変更するにあたって下記のブログを参考にさせていただきました
[Go]次世代イメージcimg/goとcircleci/go Orbsを使った2020年版CircleCIの環境構築
最後に
ハウテレビジョンでは、一緒に働いてくれるエンジニアを募集しています。