Quantcast
Channel: Kengo's blog
Viewing all articles
Browse latest Browse all 157

JavaScript Actionsをnode16で動かすようにする

$
0
0

この記事はCI/CD Advent Calendar 2021に参加しています。


先日GitHub ActionsがNodeJS v12のみならずv16でも動くようになりました。

github.com

今まではNodeJS v12しかサポートされていませんでしたが、このv12は来年の4月でサポートが切れます。速やかにv16に移行したほうが良さそうですね。必要な作業は actions.ymlruns.usingを書き換えるだけではありますが、他に必要になるであろう作業もいくつか紹介します。

package.jsonengines.nodeを更新

package.jsonで実行に利用するNodeJSのバージョンを指定していた場合、それを更新する必要があります。16.13.1が現在の最新バージョンなので、望ましい設定は以下のようになるでしょう:

"engines": {"node": "^16.13.1"
  }

tsconfig.jsonを更新

NodeJSを12から16に上げると、ES2019ではなくES2021を使えるようになります。TypeScript公式の推奨設定を参考に、compilerOptionsを更新します:

{"compilerOptions": {"lib": ["ES2021"],
    "module": "commonjs",
    "target": "ES2021"
  }}

TypeScriptを更新

ES2021をサポートしていないTypeScriptを使っている場合、TypeScript自体の更新が必要になります。 npm add -D typescript@^4.5.4などとして更新しましょう。

なおTypeScript 4.4で、catchされたオブジェクトの型をanyからunknownに変更されています。トップレベルでエラーをキャッチして core.setFailed()を呼んでいる場合は修正が必要です:

-     core.setFailed(error.message)+     if (error instanceof Error) {+       core.setFailed(error)+     } else {+       core.setFailed(JSON.stringify(error))+     }

ESLintを更新

ESLintの現時点での最新は8.5.0です。私が更新した多くのリポジトリではいくつかのプラグインも導入していましたが、そのような場合は npm add -D eslint@^8.5.0 @typescript-eslint/parser@^5.8.0 eslint-plugin-github@^4.3.5 eslint-plugin-jest@^25.3.0などとして同時にアップデートすることが良いと思います。

.eslintrc.jsonの更新はESLintのリリースノートに載っているマイグレーションガイド(例えば3.0.0用マイグレーション)に従っても良いですが、特に設定にこだわりがないならば actions/typescript-actionのデフォルトブランチから最新の推奨設定を引っ張ってくる方が時間は短縮できます。

GitHub Actions WorkflowでNodeJS v16を使う

GitHub hosted runnersでworkflowを実行し、かつactions/setup-nodeを使っていない場合、今月10日ごろから既にv16を使ったビルドが走っています。特に対応不要です。

actions/setup-nodeを使っている場合は、node-versionを変更する必要があります。ただ個人的には .nvmrc.node-versionに使うバージョンを書いておいて、GitHub Actionsではその値を読むのがメンテ箇所が減るためおすすめです。setup-nodev2.5.0からnode-version-file設定がサポートされています

  - uses: actions/setup-node@v2
    with:
      node-version-file: '.nvmrc'

まとめ

以上です。GitHubJavaScript ActionはいつNodeJSのバージョンを上げるんだろう……と不安になっていた方々、やっと来ましたのでバンバン上げていきましょう。私が実際に作成した変更をいくつか並べておきますので、ご参考まで。


Viewing all articles
Browse latest Browse all 157

Trending Articles