Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add: node_modulesをキャッシュするように #1064

Merged
merged 5 commits into from
Jan 8, 2023

Conversation

sevenc-nanashi
Copy link
Member

内容

node_modulesをキャッシュして、テストを高速化します。

関連 Issue

(なし)

スクリーンショット・動画など

(なし)

その他

(なし)

@Hiroshiba
Copy link
Member

Hiroshiba commented Dec 25, 2022

PRありがとうございます!

ちょっと調べてたんですが、ci = clean installなんですね。
そしてnode_modulesを消さずにnpm iでlockからインストールする方法は、なんかなさそうな雰囲気を感じました・・・。
npm/cli#564 (comment)

やるとしたら

  1. npm iする
  2. lockが変わってしまったらlockを戻してnpm ciする

とか・・・?

@sevenc-nanashi
Copy link
Member Author

そんな感じの実装にしてみましたー。

@Hiroshiba
Copy link
Member

良さそう!
なのですが、ちょっと探してみた感じ、actions/setup-nodecache引数が求めてる挙動をしそうな気がしました。
https://github.com/actions/setup-node/tree/3e8819f8f297df8b29fc3e383683a29be2bf129a#caching-global-packages-data
今のままでも良さそうですが、どうしましょう・・・。

@sevenc-nanashi
Copy link
Member Author

Note: The action does not cache node_modulesとのことです

@Hiroshiba
Copy link
Member

たしかにnode_modulesはキャッシュしてくれなそうですが、たぶんnpm ciの高速化にはなるかもと思いました。
lockが異なっていてもキャッシュが働くのであれば、パッケージがちょっと変わっただけの時とかはglobalキャッシュのが早いかも?

でもまあ目標は達成しているのでこのままでも問題なさそう。

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

あ、buildの方もnpm ciしてるとこあるかもです。よかったらそちらも…!

@sevenc-nanashi
Copy link
Member Author

どうせbuildは長いので余り変わらないと思いますし、変に変えてビルドが落ちるのが一番怖いので置いておきます…

@Hiroshiba
Copy link
Member

大丈夫だと思うのでマージします!

@Hiroshiba
Copy link
Member

と思ったのですがやっぱりActions周りなので別の方からもレビューあると嬉しいかもです。
@aoirint さん or @y-chan さん、レビューお願いできると・・・!

@Hiroshiba Hiroshiba requested review from aoirint and y-chan January 3, 2023 16:05
Copy link
Member

@y-chan y-chan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なかなかややこしいことしてるなぁと思いましたが、まあ問題ないと思うのでLGTMです

P.S. 意図をコメントで書いてもいいかもしれない

@sevenc-nanashi sevenc-nanashi requested a review from a team as a code owner January 8, 2023 06:42
@Hiroshiba
Copy link
Member

Hiroshiba commented Jan 8, 2023

今思ったら、lockが同じときnpm ciしなおす感じだと、再インストールしなくても良いような被ってるライブラリも再インストールしちゃいますね。
となると、setup-nodecache npmを指定すればそこの課題を解決できるので、実は最高なのではという気がしてきました。
https://github.com/actions/setup-node#caching-global-packages-data

@sevenc-nanashi
Copy link
Member Author

graph LR
  action_start(開始)
  action_check(package-lock.jsonにあうキャッシュの存在確認)
  action_cache(キャッシュの復元)
  action_npm_ci(npm ci)
  action_other(...)
  action_to_cache(キャッシュの保存)

  action_start --> action_check -- 存在する --> action_cache --> action_other
  action_check -- 存在しない --> action_npm_ci --> action_other
  action_other --> action_to_cache
Loading

自分の理解です

@Hiroshiba
Copy link
Member

@y-chan さんもOKとのことなので、マージで大丈夫だという気持ちです!
マージボタン押そうとしたのですが、 @sevenc-nanashi さん的に大丈夫でしょうか 👀
(なにか検討中だったら悲しいことになりそうなので確認した次第です)

@y-chan
Copy link
Member

y-chan commented Jan 8, 2023

となると、setup-nodecache npmを指定すればそこの課題を解決できるので、実は最高なのでは

今現在も~/.npmはキャッシュされているので、それを適用しても挙動としては変わらないはず...?

- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ env.cache-version }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ env.cache-version }}-node-

もう特に問題ないと思います...!

@Hiroshiba Hiroshiba removed the request for review from aoirint January 8, 2023 07:18
@Hiroshiba
Copy link
Member

マージします!

@Hiroshiba Hiroshiba merged commit ef15229 into VOICEVOX:main Jan 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants