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
Flutter開発とGitHub Actions
Search
yorifuji
October 26, 2023
Programming
360
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Flutter開発とGitHub Actions
yorifuji
October 26, 2023
More Decks by yorifuji
See All by yorifuji
Codex の「自走力」を高める
yorifuji
0
1.6k
GitHub Actionsのカスタムアクションを公開する
yorifuji
0
340
GitHub Actionsのカスタムアクションを作成してMarketplaceで公開した話
yorifuji
0
240
iOSアプリ開発でGitHub Actionsのself-hosted runnerを使う
yorifuji
1
1.8k
Other Decks in Programming
See All in Programming
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
220
FDEが実現するAI駆動経営の現在地
gonta
2
290
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
350
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
1.1k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
AIを紡ぐPMのお話
swdtkuy
0
120
MySQLとPostgreSQLって何が違うの?
akagami
0
120
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
400
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
290
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
280
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.7k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
440
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
400
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
Speed Design
sergeychernyshev
33
2k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
790
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Transcript
Flutter։ൃͱGitHub Actions YORIFUJI MITSUNORI ORION SALON #31
ࣗݾհ • YORIFUJI MITSUNORI • @yorifuji on X/GitHub/Zenn • ۚ༥ܥελʔτΞοϓͷiOSΤϯδχΞ
CIαʔϏεઓࠃ࣌ʁ
GitHub Actions https://github.co.jp/features/actions
GitHub ActionsͰࣗಈԽ͍ͯ͠Δ࡞ۀ • Check(formatter/lint) • fl utter format • fl
utter analyze • Test • Unit/Widget/Integration Test • VRT(Visual Regression Test) • Build & Deploy • Staging(Firebase App Distribution) • Production(Google Play, App Store) • Bump up • pubspec.yml ͷ versionߋ৽&PR࡞ • Nightly build
FlutterͷCIڥͱͯ͠ GitHub ActionsΛ ࠾༻͢Δཧ༝Λߟ͑ͯΈͨ
ਪ͠ཁૉΛϦετΞοϓʂ GitHub Actionsͷ͓͢͢ΊϙΠϯτ • GitHubʹଐ͍ͯ͠ΔͷͰ͙͢ʹ͍࢝ΊΒΕΔ • GitHubͰൃੜ͢ΔΠϕϯτ͕ར༻Ͱ͖Δ • ύϒϦοΫϦϙδτϦແྉɺຖ݄Ұఆͷແྉ͋Γ •
αʔυύʔςΟʔͷΞΫγϣϯ͕๛ • ΧελϚΠζੑ͕ߴ͍ • ແྉϓϥϯͰ࠷େ20ฒྻ·Ͱδϣϒ͕࣮ߦͰ͖Δ • Self-hosted runner͕͑Δ • VSCode Extension͕ศར • υΩϡϝϯτ͕๛ɺຊޠ༁͋Γ Flutter։ൃͰͷ͓͢͢ΊϙΠϯτ • FlutterSDKͷΠϯετʔϧ͕؆୯ • ϫʔΫϑϩʔλʔήοτʹ߹ΘͤͯRunnerͷ͍ ͚͕Ͱ͖Δ • ։ൃڥʢXcodeͳͲʣෳόʔδϣϯ͕Πϯε τʔϧࡁΈ • Windows, Linux, macOSΛͬͯϏϧυͰ͖Δ • ෳͷJobΛฒྻʹಉ࣮࣌ߦͰ͖Δ • CheckAndroidͱiOSͷ build & deploy
Ұ͚ͭͩڍ͛Δͱͨ͠Β
ύϒϦοΫϦϙδτϦແྉɺຖ݄Ұఆͷແྉ͋Γ
GitHubͰൃੜ͢ΔΠϕϯτͱͷ࿈ܞ • ଞͷCIαʔϏεͰPUSHɾPRɾTagͳͲͷGitʹؔ͢ΔτϦΨʔΛαϙʔτ • GitHub ActionsͰGitHubͰൃੜ͢ΔΠϕϯτΛϫʔΫϑϩʔʢδϣϒʣ࣮ߦͷ τϦΨʔʹ͢Δ͜ͱ͕Ͱ͖Δ • ྫɿIssuePRʹ༰ʹ߹ΘͤͯLabelΛ͚ͭΔ •
GitHub ActionsςετϏϧυ͚ͩͰͳ͘։ൃϓϩηεશମͰར༻Ͱ͖Δ
GitHub-hosted runner • GitHub-hosted runnerGitHub͕ඪ४Ͱఏڙ͍ͯ͠ΔCIͷ࣮ߦڥʢVMʣ • Windows, Linux(ubuntu), macOS͔ΒબՄೳ •
macOSMonterey, Ventura͕ఏڙ͞Ε͍ͯΔ • GitHub͕ӡ༻ཧ͍ͯ͠ΔͨΊࣗͰϝϯςφϯεෆཁ • δϣϒͷ࣮ߦ୯ҐͰ·ͬ͞ΒͳΠϯελϯεׂ͕ΓͯΒΕΔ • ୯ҐͰ՝ۚ • macOS࠷͍҆Linuxͷ10ഒͷஈ͕͢ΔͷͰదࡐదॴͰ͍͚͢Δ
ࢀߟɿGitHub-hosted runnerͷιϑτΣΞͷߏ • CIڥʹΠϯετʔϧ͞Ε͍ͯΔιϑτͷҰཡͳͲGitHub্Ͱެ։͞Ε͍ͯΔ • https://github.com/actions/runner-images (2023.10.8࣌)
Self-hosted runner • ϓϥΠϕʔτϦϙδτϦͰGitHub-hosted runnerͰmacOSΛ͏ͱར༻͕࣌ؒ x10 ࢉͷͨΊແྉ ͷফඅ͕ૣ͍ • Self-hosted
runnerॴ༗͍ͯ͠ΔϚγϯͰGitHub ActionsͷϫʔΫϑϩʔ࣮ߦ͢ΔγεςϜ • ϝϦοτ • ϓϥΠϕʔτϦϙδτϦͰRunnerͷར༻࣌ؒʹର͢Δྉ͕ۚൃੜ͠ͳ͍ • σϝϦοτ • Ϛγϯͷཧɾӡ༻ίετશͯࣗෲʢOSπʔϧͷΞοϓσʔτɺ௨৴අ༻ͳͲʣ • GitHub-hostedͱҟͳΓඪ४ͰVMͷػೳ͕ఏڙ͞Ε͍ͯͳ͍ͷͰΰϛ͕ͬͨΓ͢Δ -
FlutterͷϏϧυڥͷηοτΞοϓ • GitHub͕ఏڙ͢ΔRunnerʹFlutter SDK͕Πϯετʔϧ͞Ε͍ͯͳ͍ • ςετϏϧυΛߦ͏ͨΊʹSDKͷΠϯετʔϧ͕ඞཁ • third-partyͷΞΫγϣϯ͕͋Δ • https://github.com/marketplace/actions/
fl utter-action • Git͔Βclone • XcodeAndroid SDKͳͲෳόʔδϣϯ͕ΠϯετʔϧࡁΈͰΓସ͑؆୯ • XcodeͳΒڥม DEVELOPER_DIR ͰΓସ͑Մೳ
ϫʔΫϑϩʔͷతͰRunnerΛΓସ͑Δ • ੩తղੳʢ fl utter analyzeʣςετɺϏϧυ&σϓϩΠͰར༻͢Δ έʔε • ੩తղੳςετ࠷͍҆LinuxͰ࣮ߦ •
ϏϧυAndroidWebͳΒLinuxɺiOSmacOS • ϫʔΫϑϩʔϏϧυλʔήοτʹ߹ΘͤͯRunnerΛ͍͚Δ͜ ͱͰඅ༻ΛίϯτϩʔϧͰ͖Δ
ϫʔΫϑϩʔͷ࠶ར༻ੑ͕ߴ͍ • GitHub ActionsͷϫʔΫϑϩʔͷఆٛyamlϑΝΠϧͳͷͰ࠶ར༻ੑ͕ߴ͍ • ৽͍͠ϓϩδΣΫτΛ։࢝ͨ͠ΒطଘͷϑΝΠϧΛίϐʔ͢Δ͚ͩCI/CDͷ ηοτΞοϓ͕ྃ͢Δ • GUIͷϫʔΫϑϩʔΤσΟλΛϙνϙν͠ͳͯ͘ྑ͍ʢҰҰʣ
ϫʔΫϑϩʔͷΧελϚΠζੑ͕ߴ͍ • CIδϣϒͷதͰJavaScriptΛͬͯॲཧΛهड़Ͱ͖Δ • https://github.com/actions/github-script • Job Summaries • ϫʔΫϑϩʔͷ࣮ߦ݁Ռͷը໘ʹMarkdownܗࣜͳͲͰग़ྗͰ͖Δ
reg-suitΛͬͨVRTʢVisual Regression Testʣ
ࢀߟɿreg-suitͷαϚϦʔΛJob Summariesʹग़ྗ - name: Generate Comment uses: actions/github-script@v6 with: script:
| const fs = require('fs'); ʢ్தলུʣ await core.summary .addHeading(`${icon} reg-suit has checked for visual changes`, 3) .addTable([ ["🔴 Changed", "🟡 New", "⚫ Deleted", "🔵 Passing"], [stats.changed, stats.newItems, stats.deleted, stats.passing] ]) .addHeading("📝 Log", 3) .addCodeBlock(log, "log") .write()
GitHub Actionsͷrunsʢ࣮ߦϩάʣͷϖʔδʹදࣔ͞Εͨ༰
ࠓޙͷվળΛظ͢ΔϙΠϯτ • ϑΝΠϧΞοϓϩʔμʔػೳ • iOSΞϓϦͷϏϧυͰ֤छূ໌ॻProvisioning Pro fi le͕ඞཁ • GitHub
ActionsϑΝΠϧΞοϓϩʔμʔ͕ఏڙ͞Ε͍ͯͳ͍ • ϑΝΠϧΛbase64ʹมͯ͠secretʹొ -> CIδϣϒͷதͰϑΝΠϧʹॻ ͖ग़͢࡞ۀ͕ඞཁ • BitriseͳͲϑΝΠϧΞοϓϩʔυػೳ͔ΒΞοϓϩʔυ͕Ͱ͖Δ • σόοάͯ͘͢͠͠΄͍͠
۩ମతͳϫʔΫϑϩʔͷྫͪ͜ΒͷهࣄΛࢀߟʹ🙏 https://zenn.dev/yorifuji
͋Γ͕ͱ͏͍͟͝·ͨ͠