この記事は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の環境構築
最後に
ハウテレビジョンでは、一緒に働いてくれるエンジニアを募集しています。