🐧

ubuntu-22.04 が GA ⚠破壊的変更注意⚠ [GitHub Actions]

2022/08/10に公開

概要

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 に廃止されるので対応が必要です。

変更点

https://github.com/actions/runner-images/issues/5490

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