2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub Actions で .node-version の中身を actions/setup-node@v2 に渡したい

Last updated at Posted at 2022-03-02

GitHub Actions 上で Node.js をインストールする場合、バージョンを指定しますよね。
そこでバージョン番号をベタ書きしてしまうと、プロジェクトで使う Node.js のバージョンが上がった際にいちいち書き換えないといけないので、ちょっと面倒です。

ところで nodenv などを使っているメンバーがいるプロジェクトでは、 .node-version というファイルが存在すると思います。
GitHub Actions が実行される際に .node-version ファイルの中身を読んで、それに従って Node.js をインストールしてくれたら、後々楽ができそうです。

一番最初に試してみたのは以下の実装です。
xargs を使うのがミソですね。
(アドバイスをくださったチームメンバーの H さんに感謝します。)

steps:
  - uses: actions/checkout@v2
  - name: Set NODE_VERSION
    run: cat .node-version | xargs -I {value} echo "NODE_VERSION={value}" >> $GITHUB_ENV
  - uses: actions/setup-node@v2
    with:
      node-version: ${{ env.NODE_VERSION }}
      cache: 'yarn'
  - run: yarn install
  - run: yarn test

次に試したのは、 $() を使った実装です。
こっちの方が記述量が少ないですね。
(コメントをくださった @ushjp さんに感謝します。)

steps:
  - uses: actions/checkout@v2
  - name: Set NODE_VERSION
    run: echo "NODE_VERSION=$(cat .node-version)" >> $GITHUB_ENV
  - uses: actions/setup-node@v2
    with:
      node-version: ${{ env.NODE_VERSION }}
      cache: 'yarn'
  - run: yarn install
  - run: yarn test

ここまで試したところで、そもそも actions/setup-node@v2 自体にその機能があることが判明しました。
実は node-version-file を指定するだけで良かったんですね。
(コメントをくださった @kmkm さんに感謝します。)

steps:
  - uses: actions/checkout@v2
  - uses: actions/setup-node@v2
    with:
      node-version-file: '.node-version'
      cache: 'yarn'
  - run: yarn install
  - run: yarn test

というわけで、一番下のやり方がベストだと思われます。
皆様のご参考になれば幸いです。

蛇足

ruby/setup-ruby@v1.ruby-version ファイルを勝手に読んでくれるし、 bundler-cache: true を指定すれば bundle install もやってくれるらしいです。
便利ですね。

2
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?