diff --git "a/docs/\351\233\221\345\244\232\343\201\252\343\203\241\343\203\242.md" "b/docs/\351\233\221\345\244\232\343\201\252\343\203\241\343\203\242.md" index 033538c..41d4c95 100644 --- "a/docs/\351\233\221\345\244\232\343\201\252\343\203\241\343\203\242.md" +++ "b/docs/\351\233\221\345\244\232\343\201\252\343\203\241\343\203\242.md" @@ -1,2 +1,70 @@ -* Organization secrets/variables - * `DISCORD_WEBHOOK_URL`: VOICEVOX非公式Discordの`#github`へチャンネルに届くwebhook url +## Organization secrets/variables + +- `DISCORD_WEBHOOK_URL`: VOICEVOX 非公式 Discord の`#github`へチャンネルに届く webhook url +- `GATEKEEPER_TOKEN`: [`merge-gatekeeper`](https://github.com/VOICEVOX/merge-gatekeeper)に必要なトークン + +## Auto merge & merge queue + +[`merge-gatekeeper`](https://github.com/VOICEVOX/merge-gatekeeper)を活用することで、VOICEVOX レビューの複雑なマージ可能判定を反映しつつ、オートマージ・マージキューを設定できます。 + +`.github/workflows/merge_gatekeeper.yml`に以下のような Github workflow ファイルを作ります。 +`required_score`や`score_rules`、kebab-case にするかなどはリポジトリのルールに合わせます。 + +```yaml +name: "Merge Gatekeeper" + +# auto mergeとmerge queue用のチェッカー。 +# Approve数が足りているか、すべてのテストが通っているかを確認します。 +# 詳細: https://github.com/VOICEVOX/merge-gatekeeper + +on: + pull_request_target: + types: [auto_merge_enabled] + merge_group: + types: [checks_requested] + +jobs: + merge_gatekeeper: + runs-on: ubuntu-latest + steps: + - uses: voicevox/merge-gatekeeper@main + with: + token: ${{ secrets.GATEKEEPER_TOKEN }} + required_score: 2 + score_rules: | + #maintainer: 2 + #reviewer: 1 + - uses: upsidr/merge-gatekeeper@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + self: merge_gatekeeper + # https://github.com/upsidr/merge-gatekeeper/issues/71#issuecomment-1660607977 + ref: ${{ github.event.pull_request && github.event.pull_request.head.sha || github.ref }} + timeout: 18000 # 5 hours +``` + +ワークフローファイルを作った後に一度メインブランチにマージします。 + +リポジトリの設定の Allow auto-merge を有効にし、 +[`merge-gatekeeper`](https://github.com/VOICEVOX/merge-gatekeeper)の Ruleset をエクスポートしてリポジトリにインポートします。 + +テストしたい Github ワークフローに対し、`gh-readonly-queue/*`ブランチへの push トリガーか、merge_group イベントのトリガーを追加します。 +例えば以下のうちいずれかを追加します。 + +```yaml +on: + push: +``` + +```yaml +on: + push: + branches: + - "gh-readonly-queue/*" +``` + +```yaml +on: + merge_group: + types: [checks_requested] +```