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

Renovateを導入する #470

Closed
3 tasks done
qryxip opened this issue Apr 22, 2023 · 12 comments · Fixed by #839
Closed
3 tasks done

Renovateを導入する #470

qryxip opened this issue Apr 22, 2023 · 12 comments · Fixed by #839
Labels
OS:linux OS:mac OS:win 機能向上 要議論 実行する前に議論が必要そうなもの

Comments

@qryxip
Copy link
Member

qryxip commented Apr 22, 2023

内容

Renovateを導入します。

#289で私は「Deps.rsのバッジが黄色くなったタイミングで手動でアップデートするのがちょうどいいのではないか」ということを言いましたが、今現在の状態のように、PRが溜まるとちょうどよいタイミングというのが中々訪れません。そのような状況でも有無を言わさずPRを自動的に作ることで、「やるべきタスク」として可視化するという効果が期待できるのではないかと思いました。

Renovateは聞いている限りだとRustとの相性も悪くないようです。Renovateの設定は多岐にわたるようで、 複数のパッケージの更新を一つのPRにまとめたりできるようです()。update_rust_toolchainもRenovateに一本化できそうです()。

Pros 良くなる点

  • 依存ライブラリの更新を、「やるべきタスク」としてPRという形で可視化できる
  • 更新を忘れがちなGitHub ActionsのActionも、自動的に更新のPRを受け取れる
  • Renovateはリリースノートも抽出してくれてPRの本文で教えてくれる
    • ライブラリ数十個分のリリースノートを見に行くのは正直ちょっとだるいので、これは助かるかも

Cons 悪くなる点

なし (PRの頻度をほどほどに抑えるという前提だと)

実現方法

私はまだRenovateを使った経験がないので、まずは私個人で実験をしつつ、丁度よい塩梅の設定を発見したらPRを作成する。

RustのOSSではあまりRenovateの採用を見ない(Depedabotなら見る)のですが、ArkEdge Space Inc.のOSSと、そこのCI周りを設定しているであろうsksatという人のRustリポジトリとかが参考になるかなと思っています。
(地上で動くHTTPサーバーだろうが宇宙に飛ばすマイコンだろうがほぼRustで統一している会社らしいとのことで、以前から存在は知ってました)

我々は Rust というプログラミング言語の生産性を信じており,OBCデバイスドライバや高信頼性が必要な地上のシステムなど,ミッションクリティカルなソフトウェアはすべて Rust で開発しています. そして,それが持続できるように,日常的に Rust を書くエンジニアを増やしていきます.

さらに,今後我々が開発するすべての OBC は,Rust が実行可能になります. つまり,Rust が動作しないマイコンは,我々は決して採用しません.

VOICEVOXのバージョン

N/A

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

@Hiroshiba
Copy link
Member

なるほどです。
依存バージョンの更新は結構後回しになりがちですが、コアはテストが結構書かれているのでそこそこの頻度で更新してもよいのかなと思いました。
そういったツールの導入も試してみたいところです。

2〜3ヶ月に1回アップデートとかが良いかもですね!
あと、個人的にはrust toolchainの更新頻度も下げていいかなと思っています。
同じタイミングでtoolchainとcargo.tomlを更新するのはどうでしょう。
(特に使いたいものも無く、そのPRを毎回見るのもという感じなので・・・。
使いたい機能がある場合はアップデートするのはありだと思います)

@qryxip
Copy link
Member Author

qryxip commented Apr 22, 2023

うーん私は月5〜10回のPRが飛ぶくらいの調整を考えてました...
(rust toolchainとかはCIが通ればautomergeしたりしながら)

(6週間おきの)RustのリリースごとのPRで、CIが通ったら強制的にautomergeというのはどうでしょうか?

@qryxip qryxip added the 要議論 実行する前に議論が必要そうなもの label Apr 22, 2023
@Hiroshiba
Copy link
Member

Hiroshiba commented Apr 22, 2023

なるほどぉ。
いろいろちょっと整理してきました。

まずそもそもライブラリを追従するですが、「脆弱性などがあったときにライブラリを更新しやすいため」だと思います。
また、ライブラリを更新するのはメンテナー的にはどうしても手間で、かつ自動PRはGithubでの検索効率を落とすので生産性が逆に下がると考えてます。

であれば、更新が億劫にならない中で一番長い頻度で、自動PR(可能ならautomergeも)が来るのが一番いいのかなと思いました!

で、おそらく追従が結構めんどくさくなりがちなライブラリで一番更新頻度が高いのは、VOICEVOX全体でelectronが該当しそうでした(要検証)。
electronのアプデ頻度は大体2ヶ月に1回です。(ちなみにEOLは半年強っぽかったです)
なので、VOICEVOX全体的に、2ヶ月に1回の頻度(例えば奇数月の1日目)でライブラリをアップデートすると良いのかなと思いました!!
(6週間や8週間でも良いのですが、2ヶ月に1回にしておくとイベントとして認識しやすくできそうなのでありかなと)

コアのライブラリもこの頻度が良いと思いましたが、どうでしょうか。
(Rustなどの言語自体のアップデートは、本来はパッチアップデートが出たタイミングが良さそうに思います。)

@Hiroshiba
Copy link
Member

Hiroshiba commented Jul 14, 2023

さらに「こういうことができればいいな~」と思ったアイデアがあったのでメモです。

最新版に常に保ち続けるのは必ずしも正解ではないと思ってます。
というのも、最新版のライブラリにしかないようなバグを踏んでしまう可能性があるからです。
これは3日後に修正されるかもしれないけど、その3日間はバグってしまいます。

例えば2週間より前に出ているマイナーバージョンの最新版を取って来れるとこの問題を回避できそうだなとか思いました。
Renovateにそういう機能があれば非常に嬉しいかもです。
(まあでも2ヶ月に1回ならそんなこと気にせずに全部最新版アップデートでもまあ別に良さそう。)

@qryxip
Copy link
Member Author

qryxip commented Aug 4, 2023

update_rust_toolchainの置き換えとしてだけRenovateをお試し、というのもいいのではないかと最近思っています。

@Hiroshiba
Copy link
Member

Renovateが導入されました 🎉

が、動いて無さそう・・・?

@qryxip
Copy link
Member Author

qryxip commented Oct 10, 2023

私の権限で設定画面を開けたのですが、dry-run的なモード(Silent)になっているっぽい...?

image
image

@Hiroshiba
Copy link
Member

@qryxip ありがとうございます!!!なんかそっぽい気がしてきました!!
今からモード変更してみたいと思います。

@Hiroshiba
Copy link
Member

Hiroshiba commented Oct 10, 2023

runしたら60個くらいのプルリクエストが開かれそうになったので、1回権限を剥奪しました!! 🙇

@Hiroshiba
Copy link
Member

Renovate再度ONにしてみます!

@Hiroshiba
Copy link
Member

Hiroshiba commented Oct 12, 2023

おーーーー!!うまいこといってそうですね!!!

Renovate Updates一覧を見ても良い感じっぽかったです。Actionsもアプデ検知してくれてそうで便利そう。
image

@Hiroshiba
Copy link
Member

Hiroshiba commented Oct 1, 2024

ちょっと相談させてください!

force pushのたびに通知が飛んできていて、多分このままだと通知で疲弊してしまうデメリットが大きいかもと感じました。
もちろんメリットとして、どれぐらいの差分があるのかがわかるのは良いことだと思いますが・・・。
メンテナはおそらく無視するようになってしまい、あと個人的には特にこのリポジトリをウォッチしてる人にネガティブになってしまうのが気になってます。

確かアップデートの頻度を2ヶ月に1回目標にしている感じでしたっけ。
であれば2ヶ月に1回プルリクエストが来る形でも目標は達成できるのかなと感じました。

もちろんそれ以外の思いがあると思うので、コメントで相談させていただいた次第です!!
良い落としどころがあればいいのですが・・・。
譲れないポイントとか覚えとかあったら知りたいです!
(例えばボットに対する通知を切れば良いはずとかでも。)

qryxip added a commit that referenced this issue Oct 5, 2024
Renovateのpush通知がノイズになるのを軽減するため、"non-major
dependencies"のPRは出しっぱなしにせず、必要に応じて手動トリガーで作成し
て即マージする運用にする。

#470 (comment)

これによりRust本体のバージョンについては自動PRは作られなくなるが、
@qryxip が手動で"non-major dependencies"を起動することによりアップデート
するようにする。

Discordでの会話:
https://discord.com/channels/879570910208733277/893889888208977960/1291727262445469878
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OS:linux OS:mac OS:win 機能向上 要議論 実行する前に議論が必要そうなもの
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants