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
230
iOSアプリ開発でGitHub Actionsのself-hosted runnerを使う
yorifuji
1
1.8k
Other Decks in Programming
See All in Programming
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.8k
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
160
共通化で考えるべきは、実装より公開する型だった
codeegg
0
280
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.2k
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
360
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.4k
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
440
今さら聞けない .NET CLI
htkym
0
120
FDEが実現するAI駆動経営の現在地
gonta
2
220
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.3k
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
820
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Context Engineering - Making Every Token Count
addyosmani
9
1k
Side Projects
sachag
455
43k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
160
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
A Tale of Four Properties
chriscoyier
163
24k
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
͋Γ͕ͱ͏͍͟͝·ͨ͠