kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2022-10-27 - ameba の 公式 GitHub Actions は重い上にバージョン管理が厄介なので、自分でビルドして cache しちゃう #197

Closed kachick closed 1 year ago

kachick commented 1 year ago

crystal は 自前で formatter を持っているけれど linter は無い。まぁそりゃそうだろう、言語公式で linter 用意するぐらいなら最初っからそう書けないようにして欲しいところではある。(バージョン間で差異が出うるのでそうとも言えない?)

とはいえ不慣れな内程こういう道案内は欲しくなるもので、探すと https://github.com/crystal-ameba/ameba が真っ先に引っかかるというか、他には知らない。 バイナリ配布できるんだからそらあるだろうということで、これを brew で入れると一緒にコンパイル用の crystal まで brew で付いてきて asdf との干渉が厄介なので、通常は shrads 経由で入れることになるんだと思う。 しかし crystal の compile は golang とかと較べるとそんなに早く無いことも有り、 shards の install も相まり、ここで GitHub Actions の時間食うのは結構嫌な感じ。

ということで専用アクションを探すと、有るには有る

しかしこれが専用のコンテナで走らせてるからなのか、より一層時間を食う。usage を見ると問題箇所にコメントを付けてくれるらしいんだけど、そんな機能は別にいらないのでとにかく早く終わって欲しい。 さらに、action の versioning と ameba の versioning が関連づいているらしく、使いたい ameba の version 次第で使う action の version を変えなければいけないということで面倒この上ない。

どうしたもんかなと思ったけど、別にそんな厄介な物に頼らず GitHub 公式の https://github.com/actions/cache を使えば済んだ。 前後の定義がかなりごちゃごちゃしてしまったけど、こんな感じ。 普通 node_modules とかの cache に使われると思うけれど、自分のリポジトリの中で使うコンパイル系データとかもサクッとキャッシュ出来るのでこれはこれで。

GitHub Actions の cache はちょいちょい conflict したりしてバグる印象合ったけれど、ここ最近クリアするCLIに続いてWebUIまで出してくれたので前より気軽に使える感じがする。