$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Enterprise以外でもMergeQueueしたい! / Use Merge Queue ...
Search
Yusuke Yamada
May 16, 2024
Programming
0
260
Enterprise以外でもMergeQueueしたい! / Use Merge Queue without GitHub Enterprise
GitHub Actions Meetup Tokyo #3 (
https://gaugt.connpass.com/event/317178/
) で発表した資料です
Yusuke Yamada
May 16, 2024
Tweet
Share
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.1k
AIにコードを生成するコードを作らせて、再現性を担保しよう! / Let AI generate code to ensure reproducibility
yamachu
8
6.9k
HybridWebViewでJSベースのView開発 / Development JavaScript based View with HybridWebView
yamachu
0
850
Web開発者におくる .NET 7時代の .NET WebAssemblyとの付き合い方
yamachu
0
160
Other Decks in Programming
See All in Programming
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
3
750
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
410
チームをチームにするEM
hitode909
0
340
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
160
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
490
TestingOsaka6_Ozono
o3
0
160
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
120
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
250
JETLS.jl ─ A New Language Server for Julia
abap34
1
400
Microservices rules: What good looks like
cer
PRO
0
1.4k
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
110
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
130
Featured
See All Featured
Making Projects Easy
brettharned
120
6.5k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Balancing Empowerment & Direction
lara
5
800
Fireside Chat
paigeccino
41
3.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Bash Introduction
62gerente
615
210k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Documentation Writing (for coders)
carmenintech
76
5.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Speed Design
sergeychernyshev
33
1.4k
Designing for humans not robots
tammielis
254
26k
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