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
Yusuke Yamada
May 16, 2024
Programming
430
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
990
Web開発者におくる .NET 7時代の .NET WebAssemblyとの付き合い方
yamachu
0
180
Other Decks in Programming
See All in Programming
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
180
New "Type" system on PicoRuby
pocke
1
1k
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
8
4.7k
AIで効率化できた業務・日常
ochtum
0
140
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
190
The NotImplementedError Problem in Ruby
koic
1
910
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.4k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
730
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
130
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.2k
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
170
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
66
55k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
170
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Making Projects Easy
brettharned
120
6.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
RailsConf 2023
tenderlove
30
1.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Designing for Timeless Needs
cassininazir
1
260
The Cost Of JavaScript in 2023
addyosmani
55
10k
Tell your own story through comics
letsgokoyo
1
960
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