-
Notifications
You must be signed in to change notification settings - Fork 3
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
テストが通ったら自動的にマージできるようにしたい #53
Comments
もし挑戦してみたい方がいらっしゃったらコメントください 🙇 |
@VOICEVOX/maintainer すみません、ちょっと勝手にプロジェクト作ってしまいました 🙇 オートマージしたく色々試してみたのですが、github の仕様とVOICEVOXの要件が合いませんでした・・・。 |
この頃から色々状況が変わっている気がする&あと Discord で色々議論したのでメモを追加します! この時と違い、merge queueはBranch Protectionが必須じゃなくなりました。 ということで、例えば
これならBotによる自動Approveを行わなくても運用できそう。 |
試作しました: こんな仕様になっています:
参照用:
要件をちゃんと満たしてそう? |
リポジトリ眺めさせていただきました、良さそう!! ぜひVOICEVOX内で運用してみたい気持ちでいます! コード読むに汎用的なGithub Actionsにすることも可能そうではあるけど、VOICEVOX Org内で専用に管理したほうが楽そうな気がしました! merge queueはいろんなとこで使いたくて、ファイル配置していくのちょっと大変かもではありますね。 あ、各リポジトリからGithub Acitionsを呼び出す形で行く場合、もし可能ならメンテナチーム名やレビュワーチーム名は指定にできそうでしょうか 🙇 |
ですね。具体的には色々なリポにこんなWorkflowを置く形になると思います: そんなWorkflowon:
pull_request_target:
types: [auto_merge_enabled]
merge_group:
types: [checks_requested]
jobs:
approve:
runs-on: ubuntu-latest
steps:
- uses: voicevox/review-checker@main
with:
token: ${{ secrets.OWNER_TOKEN }}
event: ${{ toJson(github.event) }}
ref: ${{ github.ref }}
入力でメンテナチーム名を受け取る感じにすればいい感じになるかも?
こう、こんな感じにすれば他のリポでも使えるかなぁとか思ったりしました: - uses: voicevox/review-checker@v1
with:
token: ${{ secrets.OWNER_TOKEN }}
event: ${{ toJson(github.event) }}
ref: ${{ github.ref }}
# 合計ポイント数
required_score: 2
# チームとポイントの関連付け
# Merge when Ready押した人もApprove扱いにすれば今の挙動みたいになるはず
score_rules: |
maintainer: 2
reviewer: 1 |
actionに切り出してみました: チームやユーザーの指定が良い感じにできるようになっています。 |
良さそう!!! コードも一旦なんとなく眺めさせていただきました! on:
pull_request_target:
types: [auto_merge_enabled]
merge_group:
types: [checks_requested] と2つ書かないといけないのが疑問でした( Discordで少し話した件ですが、preview-pages同様にVOICEVOX Org内で管理するのはどうでしょうか? ただ1点、もしVOICEVOXにとっては不要な提案や変更が来たときのスタンスが変わってきそうです。 リポジトリ作っていただいて、preveiew-pagesのときみたくinitialコミットとして全部PRいただければ!! 🙏
|
バグ修正や細かい改善(例えばログを見やすくしたりなど)は受け付けつつ、新機能はあまり受け付けない、みたいな感じが良さそう?(pysenみたいなイメージ)
まぁmerge-gatekeeperでよさそう。 リポ作ります。 |
あーーーpysenのそこの文面めちゃくちゃいいですね!!! リポジトリ作る周りで権限足りなければ言っていただければ!! |
マージキューを使うような設定になってないかもです。 |
あ、なるほどです! ちょっと調べて設定してみます! |
マージキューを使うには「Require merge queue」にチェックを入れる必要があります。 リポ作ったのが自分だからか設定が変えられたので変えてきました。 |
試した条件:
|
あ、merge queueのまとめてCI回す設定、もしかしたら別にcommitはまとめないのかも。 ま〜でもとりあえず1つずつテスト&マージしてみる運用で動かしてみて、ちょっと詰まるな〜と思ったらここのグループ数いじる感じでも良いかも! |
試した条件:
|
行けてる気がしますね!!!!!!!! ちょっとエディタ辺りに実装してみますか!! ただ今日はもう寝ようと思うので、また明日の夕方とか夜とかに設定しようと思います! |
VOICEVOXエディタの設定を進めたいと思っています! |
|
ログ↓
|
テスト落ちるパターンもちゃんと落ちてそう!! 🎉 |
エディタ側に検証管理用のissueを作ってみました。 |
エディタへの導入は完了しました!! @sevenc-nanashi さんに感謝!! まだなにか変わりうりそうなので、もうちょっとだけ運用してみて固まったら他のリポジトリにも適用していきたいです!! |
内容
テストが通ったら自動的にマージできるようにしたいです。
merge queue
を使えば可能なはずなのですが、VOICEVOXのレビュー&approve事情に合ってないためそのままでは適用できなさそうでした。VOICEVOXのプルリクエストマージは、以下の2つの条件のうちどちらかを満たすと可能としています。
@maintainer
チームの1人のapprove@reviewer
チームの2人のapprovebranch protectionを使えば「何人以上のapproveが必要か」と「誰ならforce mergeが可能か」を設定できます。
なので、2人以上のapproveがあるか、
@maintainer
チームのforce mergeを有効にすることで、↑のどちらの条件でもマージできるようにしています。問題はこれが
merge queue
で使えないっぽいことです。というのも、「N人以上のapprove」では
merge queue
を使えますが、force mergeの場合はmerge queue
を無視して対象のブランチにマージするという挙動をするっぽいです。さてどうしようかなという感じです・・・ 😇
実現方法
いくつか解決策はあると思います。とりあえず列挙してみます。
@maintainer
のapproveがあれば自動でapproveしてくれるbotを追加するBranch protection rule
による判定ではなく、専用のマージ可否判定Github Actionsを作るmerge queue
に登録するAPIが無さそう・・・?だから不可能かも・・・?merge queue
可能になるBranch protection rule
なら可能かもその他
メモです。
merge-queue
はorganizationを作ってその下じゃないとテストできないBranch protection rule
だけじゃなくRulesets
でもmerge queue
を作れるruleset
はexportもできるのでこっちの方が便利そうThe text was updated successfully, but these errors were encountered: