GitHub Actionsのubuntu-18.04がDeprecatedとなったので、ubuntu-latestへマイグレーションする
GitHub Actionsで ubuntu-18.04
がDeprecatedとなり、2022年12月1日にサポートが終了されることがアナウンスされています。
また、移行を促すために一時的に利用できなくなるブラウンアウトが行われています。
手動での移行
特定のubuntuのバージョンに依存していない場合は、単純にubuntu-latest
へ移行するなどの対応することが解決できます。
ubuntu-18.04
を利用しているGitHub Actionsのworkflowsファイルを次のように書き換えます。
name: test
on: [push, pull_request]
jobs:
test:
name: "Test on Node.js ${{ matrix.node-version }}"
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12, 14, 16]
steps:
- name: checkout
uses: actions/checkout@v2
- name: setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Install
run: yarn install
- name: Test
run: yarn test
利用できるubuntu imageのバージョンはREADMEにまとめらています。
コマンドでの移行
大量のリポジトリや大量のworkflowファイルがあると、エディタで書き換えるよりもコマンドを使って移行するのが良い気はします。
自分は次のようなワンライナーを使っていました。
macOSでしか確認してないので、もっと丁寧なコマンドは誰かが書いてくれると思います。
ubuntu-18.04
を利用しているかをチェックするワンライナー
find .github/workflows -type f -name "*.y*ml" -exec grep "ubuntu-18.04" {} +;
ubuntu-18.04
をubuntu-latest
へ書き換えるワンライナー
find .github/workflows -type f -name "*.y*ml" -exec sed -i "" -e "s/ubuntu-18.04/ubuntu-latest/" {} +;
大量のリポジトリをまとめてマイグレーションする
リポジトリが分かれていて、それぞれGitHub Actionsを利用していると移行が大変です。
自分も100コ以上のリポジトリがubuntu-18.04
を利用していたので、Shepherdを使ってまとめてマイグレーションしました。
📝 ライブラリのアップデートとか必要な時まで放置しますが、CI自体が止まるとPRがきたときにCI自体が動かないので面倒だと思って、とりあえずCIが止まらないようにしたいと思ったのでまとめて移行しています。
Shepherdは、複数のリポジトリに対してコマンドを実行してPRを作れるツールです。次の記事でも紹介しています。
実際に、Shepherdのマイグレーションスクリプトは次のようなものを利用しました。
次のスクリプトではubuntu-18.04
を利用してるリポジトリに対して、ubuntu-latest
へ書き換えています。
id: 2022.08.23-ubuntu-18.04
title: "CI: update ubuntu-18.04 to ubuntu-latest"
adapter:
type: github
search_type: code
search_query: org:{{user}} path:/.github/workflows # 対象のorgに書き換えて!
hooks:
should_migrate:
- ls .github/workflows
- find .github/workflows -type f -name "*.y*ml" -exec grep "ubuntu-18.04" {} +;
apply:
- find .github/workflows -type f -name "*.y*ml" -exec sed -i "" -e "s/ubuntu-18.04/ubuntu-latest/" {} +;
pr_message: echo "ref https://github.com/actions/runner-images/issues/6002"
📝 GitHubのPRを作るrate limitが強くなっていて、80ぐらいでrate limitにかかってしまうので、x-ratelimitをちゃんと見る実装が必要そうな気がします。別のツールがあるかもしれない。
Discussion