Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Enterprise以外でもMergeQueueしたい! / Use Merge Queue ...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yusuke Yamada
May 16, 2024
Programming
420
0
Share
Enterprise以外でもMergeQueueしたい! / Use Merge Queue without GitHub Enterprise
GitHub Actions Meetup Tokyo #3 (
https://gaugt.connpass.com/event/317178/
) で発表した資料です
Yusuke Yamada
May 16, 2024
More Decks by Yusuke Yamada
See All by Yusuke Yamada
VS CodeとGitHub Copilotで爆速開発!アップデートの波に乗るおさらい会 / Rapid Development with VS Code and GitHub Copilot: Catch the Latest Wave
yamachu
3
1.3k
AIにコードを生成するコードを作らせて、再現性を担保しよう! / Let AI generate code to ensure reproducibility
yamachu
8
7.2k
HybridWebViewでJSベースのView開発 / Development JavaScript based View with HybridWebView
yamachu
0
980
Web開発者におくる .NET 7時代の .NET WebAssemblyとの付き合い方
yamachu
0
180
Other Decks in Programming
See All in Programming
GitHub Copilot CLIのいいところ
htkym
2
1.2k
AI時代のUIはどこへ行く?その2!
yusukebe
17
5.8k
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
230
Modding RubyKaigi for Myself
yui_knk
0
840
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
210
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1k
Migrations : C'est une question d'hygiène !
vinceamstoutz
0
2.7k
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.2k
AIとRubyの静的型付け
ukin0k0
0
490
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
今さら聞けないCancellationToken
htkym
0
210
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
290
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
190
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
420
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
570
Being A Developer After 40
akosma
91
590k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
370
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
230
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
350
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
310
Transcript
Enterprise以外でも MergeQueueしたい! GitHub Actions Meetup Tokyo #3 ちゅうこ / yamachu
突然ですが… MergeQueueを 使ってる人 ✋
自己紹介 経歴 • サポーターズ 18 卒入社 • Microsoft MVP 2018-
• GitHub Actions 歴 5 年 ちゅうこ (山田 裕介) GitHub: yamachu X(Twitter): y_chu5 趣味 • ポケカ、ゲーム • GitHubのExploreのだら見
Merge Queueとは • PRのブランチを最新の状態にして • Branch保護Checksが通ったらmergeする PR: A PR: B
Track main & Test & Merge merge-group
Merge Queueのメリット・デメリット メリット • ベースブランチが常にGreenの状態を保ちやすい • 他のPRがmergeされたから追従してまたCI回して〜がない! • CI待ってからmergeのような、マージする人間の待ちを削る デメリット
• 使えるのはorg public repoかEnterprise private repo!!!!!!!!!!
Merge Queueっぽいものを自作するモチベ • 個人プロジェクト / org privateでも使いたい • チームで決めたmergeや承認フローなど カスタマイズして使えると嬉しい
• などなど
Merge Queueの機能を集めたCustom Actions yamachu/merge-queue-action • queueに積まれたPRが最新base branchとmergeableを担保 • 最新のbase branchでCIが通ること担保
◦ 上記2つは公式と同じような機能 • Merge Queueに積んだ人物はCODEOWNERであるのを担保 設計イメージは voyagegroup/popuko に影響を受けている
Merge Queue再現のキモ - concurrency - 同じconcurrency groupを使うJobやWorkflowの 同時実行を一つに制限する機能 (順序は保証しない) PR:
A PR: B Workflow: Merge Q Key: my-merge-queue
イメージ (Merge Queueに積むWorkflow) jobs: Queuing: steps: - uses: yamachu/merge-queue-action/precheck@main -
run: git push origin HEAD:auto.${{ github.event.issue.number }} - run: > gh workflow run -R ${{ github.event.repository.full_name }} -f issue_number=${{ github.event.issue.number }} -f tmp-ci-branch=auto.${{ github.event.issue.number }} --ref auto.${{ github.event.issue.number }} merge-queue-runner.yml Merge可能 / CODEOWNER かの確認
jobs: Queuing: steps: - uses: yamachu/merge-queue-action/precheck@main - run: git push
origin HEAD:auto.${{ github.event.issue.number }} - run: > gh workflow run -R ${{ github.event.repository.full_name }} -f issue_number=${{ github.event.issue.number }} -f tmp-ci-branch=auto.${{ github.event.issue.number }} --ref auto.${{ github.event.issue.number }} merge-queue-runner.yml イメージ (Merge Queueに積むWorkflow) Workflowのブランチ紐づけのためのpush
jobs: Queuing: steps: - uses: yamachu/merge-queue-action/precheck@main - run: git push
origin HEAD:auto.${{ github.event.issue.number }} - run: > gh workflow run -R ${{ github.event.repository.full_name }} -f issue_number=${{ github.event.issue.number }} -f tmp-ci-branch=auto.${{ github.event.issue.number }} --ref auto.${{ github.event.issue.number }} merge-queue-runner.yml イメージ (Merge Queueに積むWorkflow) Merge QueueのWorkflowにauto.*を積む
on: workflow_dispatch: inputs: issue_number: concurrency: group: merge-queue cancel-in-progress: false …
イメージ (Merge QueueライクなWorkflow) concurrency groupを設定して
jobs: PreTesting: steps: - uses: yamachu/merge-queue-action/pretesting@main Test: uses: ./.github/workflows/test.yml needs:
[PreTesting] PostTesting: needs: [PreTesting, Test] steps: - uses: yamachu/merge-queue-action/posttesting@main イメージ (Merge QueueライクなWorkflow) 実際のtestをサンドイッチする
まとめ • Merge QueueっぽいのはEnterprise以外でも 実現できる ◦ concurrencyをうまく使うのがポイント • 好きなcheckを入れることで柔軟な オレオレMerge
Queueを作れる • yamachu/merge-queue-action にて公開中
refs GitHubにおけるPull RequestのAssign/Mergeを 自動化して開発を加速させる https://techblog.cartaholdings.co.jp/entry/2017/02/14/080000 voyagegroup/popuko https://github.com/voyagegroup/popuko