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
0
330
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.2k
AIにコードを生成するコードを作らせて、再現性を担保しよう! / Let AI generate code to ensure reproducibility
yamachu
8
7k
HybridWebViewでJSベースのView開発 / Development JavaScript based View with HybridWebView
yamachu
0
910
Web開発者におくる .NET 7時代の .NET WebAssemblyとの付き合い方
yamachu
0
170
Other Decks in Programming
See All in Programming
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
0
160
CSC307 Lecture 09
javiergs
PRO
1
850
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
210
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
170
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
370
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
200
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
190
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
8
2.6k
CSC307 Lecture 11
javiergs
PRO
0
580
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
2.1k
Metaprogramming isn't real, it can't hurt you
okuramasafumi
0
130
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
480
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
6.8k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
220
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
550
My Coaching Mixtape
mlcsv
0
63
Utilizing Notion as your number one productivity tool
mfonobong
3
230
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Faster Mobile Websites
deanohume
310
31k
Designing for humans not robots
tammielis
254
26k
Prompt Engineering for Job Search
mfonobong
0
180
Building the Perfect Custom Keyboard
takai
2
700
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
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