ubuntu-22.04 が GA ⚠破壊的変更注意⚠ [GitHub Actions]
概要
GitHub-hosted ランナーで Ubuntu 22.04 が GA になり、併せて Ubuntu 18.04 が deprecated になっています。
また Self-hosted ランナーでも Apple M1 がサポートされました。
Apple M1 サポートはようやくと言った感じですがこの記事では紹介に留め、多くの破壊的変更を含んでいる Ubuntu 22.04 へのアップデートについて注意喚起をしておきます。
ubuntu-latest を使っている人は将来的に強制アップデートされますので特に注意が必要です。
既に ubuntu-22.04 を使っている人や ubuntu-20.04 にバージョンを固定して使っている人は対応を急ぐ必要はありませんが ubuntu-18.04 を使っている人は 2022/12/01 2023/03/01 2023/04 に廃止されるので対応が必要です。
変更点
Notes を除いた表を転記しておきます。
詳細はリンク先をご確認ください。
| Tool name | Ubuntu 20.04 | Ubuntu 22.04 | 
|---|---|---|
| Clang | 10.0.0, 11.0.0, 12.0.0 | 11.1.0, 12.0.1 | 
| GCC/G++ | 9.4.0 (default), 10.3.0 | 9.4.0, 10.3.0, 11.2.0 (default) | 
| Erlang | 24.* | - | 
| Swift | 5.* | - | 
| HHVM (HipHop VM) | 4.* | - | 
| OpenSSL | 1.1.* | 3.* | 
| PhantomJS | 2.1.1 | - | 
| PHP | 7.4, 8.0, 8.1 | 8.1 | 
| Firefox\geckodriver | 99.* | - | 
| .NET Core SDK | 3.1, 5.0 | 6 | 
| MongoDB | 5.0.* | - | 
| MS SQL Server Client Tools | SqlPackage 16.* sqlcmd 17.*  | 
SQL tools are not available for Ubuntu 22 at the moment | 
| Go | Default version: 1.17.x Pre-cached versions: 1.16, 1.17, 1.18  | 
Default version: 1.18x Pre-cached versions: 1.17, 1.18  | 
| Node.js | Default version: 16.x Pre-cached versions: 12, 14, 16  | 
Default version: 16.x Pre-cached versions: 14, 16  | 
| PyPy | 2.7, 3.6, 3.7, 3.8, 3.9 | 3.7, 3.8, 3.9 | 
| Python | Default version: 3.8.x Pre-cached versions: 2.7, 3.6, 3.7, 3.8, 3.9, 3.10  | 
Default version: 3.10.x Pre-cached versions: 3.7, 3.8, 3.9, 3.10  | 
| Ruby | Default version: 2.7.x Pre-cached versions: 2.5, 2.6, 2.7, 3.0, 3.1 | Default version: 3.0.x Pre-cached versions: 3.1 | 
| Az modules | Installed: 7.3.2 Zipped: 3.1.0, 4.4.0, 5.9.0, 6.6.0  | 
Installed: 7.3.2 Zipped: -  | 
| Docker images | Alpine: 3.12, 3.13, 3.14 buildpack-deps: bullseye, buster, stretch debian: 9, 10, 11 node: 12, 14, 16 ubuntu: 16, 18, 20  | 
Alpine: 3.14, 3.15 buildpack-deps: bullseye, buster debian: 10, 11 node: 14, 16 ubuntu: 18, 20, 22  | 
何が起きるか
表を見ると分かる通り多くのバージョンが削られていたりデフォルトバージョンが変わっていたりします。
中には言語そのものがインストールされなくなるものもあります。
つまりそれらに依存しているワークフローが失敗するようになるということです。
ワークフローで使用している場合は setup-* 系のアクションを利用してインストールすることになるでしょう。
対応
基本的に上に記載しているものが楽です。
 ubuntu-latest を使っている場合
- 
ubuntu-20.04に固定する(推奨) - 
ubuntu-22.04で動かしてみて必要な変更を入れる(対応後はそのままubuntu-22.04に固定するのを推奨) 
 ubuntu-20.04 を使っている場合
- 対応不要
 - 
ubuntu-22.04に上げる 
 ubuntu-18.04 を使っている場合
- 
ubuntu-20.04に上げる(いきなり 22.04 にするよりは差異が少ないので推奨) - 
ubuntu-22.04に上げる - 
ubuntu-latestにする(非推奨) 
最後に
イメージの肥大化が深刻になってきたのか ubuntu-20.04 のときよりは大胆に削っている印象です。
GitHub としては自動アップデートされる ubuntu-latest が推奨のようですが対応時期を GitHub に決められてしまうので仕事で使用している場合などいきなり動かなくなると困る場合はバージョンを固定しておくのが推奨です。
Discussion