Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Enterprise以外でもMergeQueueしたい! / Use Merge Queue ...
Search
Yusuke Yamada
May 16, 2024
Programming
530
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
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
1.4k
GitHub Issue から動画ネタを育てる Copilot Canvas の話 - case: vkatsu-canvas -
yamachu
0
61
VS CodeとGitHub Copilotで爆速開発!アップデートの波に乗るおさらい会 / Rapid Development with VS Code and GitHub Copilot: Catch the Latest Wave
yamachu
3
1.4k
AIにコードを生成するコードを作らせて、再現性を担保しよう! / Let AI generate code to ensure reproducibility
yamachu
8
7.3k
HybridWebViewでJSベースのView開発 / Development JavaScript based View with HybridWebView
yamachu
0
1.2k
Web開発者におくる .NET 7時代の .NET WebAssemblyとの付き合い方
yamachu
0
190
Other Decks in Programming
See All in Programming
まずはコードより業務と向き合う:テーブル解体のためにPdMを呼んだ話
sakawe_ee
0
150
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
220
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.4k
Distance field of Julia set
kinakomoti321
0
150
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
290
Next.js: The final boss of Web Performance
guaca
0
380
AI Augmentation Techniques with Liberty
ivargrimstad
1
360
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
1
160
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
160
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.7k
SODA - FACT BOOK(EN)
sodainc
1
200
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
670
How to Think Like a Performance Engineer
csswizardry
28
2.9k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Building AI with AI
inesmontani
PRO
1
1.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Building Applications with DynamoDB
mza
96
7.3k
The Curse of the Amulet
leimatthew05
3
16k
A better future with KSS
kneath
240
18k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Invisible Side of Design
smashingmag
301
52k
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