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
GitHub Actionsでテストの結果をわかりやすく表示する
Search
Kishikawa Katsumi
October 18, 2021
Programming
2.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHub Actionsでテストの結果をわかりやすく表示する
Kishikawa Katsumi
October 18, 2021
More Decks by Kishikawa Katsumi
See All by Kishikawa Katsumi
Accessibility APIでテキストの内容、位置、サイズを取得する実装パターン
kishikawakatsumi
0
62
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
190
Running Swift without an OS
kishikawakatsumi
0
1.2k
浮動小数の比較について
kishikawakatsumi
0
630
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
280
愛される翻訳の秘訣
kishikawakatsumi
3
500
Private APIの呼び出し方
kishikawakatsumi
3
1k
iOSでSVG画像を扱う
kishikawakatsumi
0
270
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
320
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
iOSDC2026登壇資料.pdf
riofujimon
0
200
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
200
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
一人だけ、Kiroが静止する日
hideg
0
130
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
290
速習iPhone Duo対応
yuukiw00w
2
850
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
290
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
500
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
3.7k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
340
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
How to make the Groovebox
asonas
2
2.5k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
580
Claude Code のすすめ
schroneko
67
230k
Done Done
chrislema
187
17k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
590
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Transcript
GitHub ActionsͰςετͷ݁ՌΛ Θ͔Γ͘͢දࣔ͢Δ
None
None
None
None
None
Xcode result bundle
Xcode result bundle
$ xcresulttool
$ xcrun xcresulttool get --path results.xcresult --format json { "_type"
: { "_name" : "ActionsInvocationRecord" }, "actions" : { "_type" : { "_name" : "Array" }, "_values" : [ { "_type" : { "_name" : "ActionRecord" }, "actionResult" : { "_type" : { "_name" : "ActionResult" }, "coverage" : { "_type" : { "_name" : "CodeCoverageInfo" } }, "diagnosticsRef" : { "_type" : { "_name" : "Reference" }, "id" : { "_type" : { "_name" : "String" }, "_value" : "0~vHg7If_A0mZHPjzIsvdzoL3IMfYHwL0Z3rj6u9zpzhXhMGPmKNKQ6J5lQj8MHSuoz26pval1lC8J4W8bxYO52A==" }
$ xcrun xcresulttool get --path results.xcresult --format json { "_type"
: { "_name" : "ActionsInvocationRecord" }, "actions" : { "_type" : { "_name" : "Array" }, "_values" : [ { "_type" : { "_name" : "ActionRecord" }, "actionResult" : { "_type" : { "_name" : "ActionResult" }, "coverage" : { "_type" : { "_name" : "CodeCoverageInfo" } }, "diagnosticsRef" : { "_type" : { "_name" : "Reference" }, "id" : { "_type" : { "_name" : "String" }, "_value" : "0~vHg7If_A0mZHPjzIsvdzoL3IMfYHwL0Z3rj6u9zpzhXhMGPmKNKQ6J5lQj8MHSuoz26pval1lC8J4W8bxYO52A==" }
$ xcrun xcresulttool get --path results.xcresult --format json \ --id
"0~0I_MUIRIScR7EhYb3xNOgrrrCppe_B9k1ewbNE0HZs4qyaVJRD1xjS3UbUY272hciPa1kSxSDXXsRUODkYY2Uw==" { "_type" : { "_name" : "ActionsInvocationMetadata" }, "creatingWorkspaceFilePath" : { "_type" : { "_name" : "String" }, "_value" : "\/Users\/katsumi\/Develop\/Weather\/Weather.xcodeproj" },
$ xcrun xcresulttool get --path results.xcresult --format json \ --id
"0~0I_MUIRIScR7EhYb3xNOgrrrCppe_B9k1ewbNE0HZs4qyaVJRD1xjS3UbUY272hciPa1kSxSDXXsRUODkYY2Uw==" { "_type" : { "_name" : "ActionsInvocationMetadata" }, "creatingWorkspaceFilePath" : { "_type" : { "_name" : "String" }, "_value" : "\/Users\/katsumi\/Develop\/Weather\/Weather.xcodeproj" },
GitHub Checks API
None
Conclusion Summary Annotations
None
طͷɾ੍ݶࣄ߲ • Annotation̍εςοϓʹ͖ͭ10ݸ·ͰɺશମͰ50ݸ·Ͱ • UIςετதʹࡱͬͨεΫϦʔϯγϣοτΛΘ͔Γ͘͢ද͍ࣔͨ͠ • Artifactsʹอଘ͢Δ • Action͔ΒͷURLΛࢀর͢Δखஈ͕ͳ͍ •
ը૾ͱͯ͠ࢀর͢Δखஈ͕ͳ͍ʢZipʹͳΔʣ • Releaseʹอଘ͢Δ • Releaseʹλά͕ඞཁʢPR͝ͱʹ࡞Δʁʣ • ઐ༻ͷεΫϦʔϯγϣοτஔ͖ͷϦϙδτϦΛ࡞Δʁ • ϦϙδτϦʹίϛοτ͢Δ • ϦϙδτϦʹෆཁͳίϛοτ͕૿͑ΔʢϒϥϯνͰִ͢Ε͍͍͔ʣ • ઐ༻ͷϦϙδτϦΛ࡞Δʁ
None
References • ϝϧϖΠͰͷxcresult׆༻ࣄྫ | ϝϧΧϦΤϯδχΞϦϯά https://engineering.mercari.com/blog/entry/20201218-61f7110851/ • Xcode 11ͰͷςετपΓͷ৽ػೳΛհ͠·͢ʂ -
DeNA Testing Blog https://swet.dena.com/entry/2019/10/23/080000 • xcparse | ChargePoint https://www.chargepoint.com/engineering/xcparse/ • xcresulttool GitHub Actions https://github.com/kishikawakatsumi/xcresulttool