Upgrade to PRO for Only $50/YearâLimited-Time Offer! ð¥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
golang-parallel-test-by-github-actions-and-merg...
Search
SatoKeiju
December 11, 2024
3
1.1k
 golang-parallel-test-by-github-actions-and-merge-coverage-report
SatoKeiju
December 11, 2024
Tweet
Share
More Decks by SatoKeiju
See All by SatoKeiju
CVPR2020èªã¿äŒ Proxy Anchor Loss for Deep Metric Learning
satokeiju
7
4.5k
Featured
See All Featured
Making Projects Easy
brettharned
120
6.5k
å人éçºã®å€±æãé¿ããã€ã±ãŠãèãæ¹ / tips for indie hackers
panda_program
122
21k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
110
A Modern Web Designer's Workflow
chriscoyier
698
190k
[SF Ruby Conf 2025] Rails X
palkan
0
540
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Automating Front-end Workflow
addyosmani
1371
200k
Building a Modern Day âšE-commerce SEO Strategy
aleyda
45
8.3k
Six Lessons from altMBA
skipperchong
29
4.1k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
Transcript
GitHub Actionsã§Goã® ãã¹ãã䞊åå®è¡ã ã«ãã¬ããžã¬ããŒããäœã 2024/12/11 @DMM.go ãã©ãããã©ãŒã éçºæ¬éš 第äžéçºéš ãã€ã³ãã¯ã©ãã°ã«ãŒã webããŒã
ãã¶ã€ã³ãšã³ãžã㢠@SANdglAss
⢠2021å¹Žã«æ°åã§å ¥ç€Ÿããããã¯ãšã³ããšã³ãžã㢠⢠3幎ç®ããã¯ããã¶ã€ã³ãšã³ãžãã¢ããšããŠUI/UXãã¶ã€ã³ã UXã©ã€ãã£ã³ã°ãæ åœäž ããããã¯ããã¶ã€ã³ãšã³ãžãã¢ãã§æ€çŽ¢ ð èªå·±ç޹ä»
Goãããžã§ã¯ãã®CIãCircleCI â GitHub Actionsã«
⢠ãšããäºæ ã§ç§»è¡ããããšã« ⢠ç¡äºãã¹ãŠç§»è¡ã§ãã ⢠ãã¹ããžã§ãã®æèŠæéã1åå â 5åã«ãªã£ã Goãããžã§ã¯ãã®CIãCircleCI â
GitHub Actionsã«
Goãããžã§ã¯ãã®CIãCircleCI â GitHub Actionsã« ãªãã§ããã ⢠ãšããäºæ ã§ç§»è¡ããããšã« ⢠ç¡äºãã¹ãŠç§»è¡ã§ãã â¢
ãã¹ããžã§ãã®æèŠæéã 1åå â 5åã«ãªã£ã
é ããªã£ãäž»ãªçç±: ãã·ã³ã¹ããã¯(ã³ã¢æ°) Docker å®è¡ç°å¢ã®äœ¿çš - CircleCI GitHub Actions CircleCI About
GitHub-hosted runners - GitHub Enterprise Cloud Docs âã®ããã¥ã¡ã³ãã¯ãšã³ãã©ã§ãã Cloudãåãã§ã
CIã«è©³ããããªãŒã¢ã³ãã¯ããã
CIã«è©³ããããªãŒã¢ã³ãã¯ããã ãã¹ããã¯ãè¶³ããªããªã 匷ãã®ã䜿ãã°ãããããªãã
CIã«è©³ããããªãŒã¢ã³ãã¯ããã ãã¹ããã¯ãè¶³ããªããªã 匷ãã®ã䜿ãã°ãããããªãã â çŸç¶ã®DMM Organizationã§ã¯äœ¿ããªã ...
CIã«è©³ããããªãŒã¢ã³ãã¯ããã
CIã«è©³ããããªãŒã¢ã³ãã¯ããã ãã³ã¢ãå°ãªããªãããŒã䞊åã§ åå²å®è¡ããã°ãããããªãã
CIã«è©³ããããªãŒã¢ã³ãã¯ããã ãã³ã¢ãå°ãªããªãããŒã䞊åã§ åå²å®è¡ããã°ãããããªãã â ããã§ãããŸããã
1ã€ã®ãžã§ãã䞊åå®è¡: CircleCIç·š
1ã€ã®ãžã§ãã䞊åå®è¡: CircleCIç·š ãšãŠããããã
1ã€ã®ãžã§ãã䞊åå®è¡: GitHub Actionsç·š
1ã€ã®ãžã§ãã䞊åå®è¡: GitHub Actionsç·š ãªã
1ã€ã®ãžã§ãã䞊åå®è¡: GitHub Actionsç·š ãªãã§ããã ãªã
1ã€ã®ãžã§ãã䞊åå®è¡: GitHub Actionsç·š ãžã§ãã䞊åå®è¡ããä»çµã¿èªäœã¯ããªãããã§ã¯ãªã
1ã€ã®ãžã§ãã䞊åå®è¡: GitHub Actionsç·š ãžã§ãã䞊åå®è¡ããä»çµã¿èªäœã¯ããªãããã§ã¯ãªã ãã®åã matrix ã¯ãŒã¯ãããŒã§ã®ãžã§ãã®ããªãšãŒã·ã§ã³ã®å®è¡ - GitHub Docs
1ã€ã®ãžã§ãã䞊åå®è¡: GitHub Actionsç·š ãžã§ãã䞊åå®è¡ããä»çµã¿èªäœã¯ããªãããã§ã¯ãªã ãã®åã matrix 倿°ã®ãã¿ãŒã³ã åæããŠãããš ã¯ãŒã¯ãããŒã§ã®ãžã§ãã®ããªãšãŒã·ã§ã³ã®å®è¡ -
GitHub Docs
1ã€ã®ãžã§ãã䞊åå®è¡: GitHub Actionsç·š ãžã§ãã䞊åå®è¡ããä»çµã¿èªäœã¯ããªãããã§ã¯ãªã ãã®åã matrix åå€ãèšå®ããã ãžã§ãã䞊åã§ ç«ã¡äžãã ã¯ãŒã¯ãããŒã§ã®ãžã§ãã®ããªãšãŒã·ã§ã³ã®å®è¡
- GitHub Docs 倿°ã®ãã¿ãŒã³ã åæããŠãããš
1ã€ã®ãžã§ãã䞊åå®è¡: GitHub Actionsç·š ãžã§ãã䞊åå®è¡ããä»çµã¿èªäœã¯ããªãããã§ã¯ãªã ãã®åã matrix åå€ãèšå®ããã ãžã§ãã䞊åã§ ç«ã¡äžãã 倿°ã®ãã¿ãŒã³ã
åæããŠãããš ã©ãã«ãã㊠䜿ããªããã®ã ... ã¯ãŒã¯ãããŒã§ã®ãžã§ãã®ããªãšãŒã·ã§ã³ã®å®è¡ - GitHub Docs
Rubyã§çšããå é§è ããã
Rubyã§çšããå é§è ããã GitHub Actions ã§ãã¹ãã䞊ååã㊠CI æéãççž®ãã - Gunosy Tech Blog
Rubyã§çšããå é§è ããã GitHub Actions ã§ãã¹ãã䞊ååã㊠CI æéãççž®ãã - Gunosy Tech Blog
䞊ååãããæ°ã ã IDã宣èšããŠãããŠ
Rubyã§çšããå é§è ããã GitHub Actions ã§ãã¹ãã䞊ååã㊠CI æéãççž®ãã - Gunosy Tech Blog
䞊ååãããæ°ã ã IDã宣èšããŠãããŠ å šãã¹ããããæãã« åIDã«å²ãæ¯ã£ãŠ
Rubyã§çšããå é§è ããã GitHub Actions ã§ãã¹ãã䞊ååã㊠CI æéãççž®ãã - Gunosy Tech Blog
䞊ååãããæ°ã ã IDã宣èšããŠãã㊠åããŒãã¯èªåã® IDã® ãã¹ãã ãå®è¡ å šãã¹ããããæãã« åIDã«å²ãæ¯ã£ãŠ
Rubyã§çšããå é§è ããã GitHub Actions ã§ãã¹ãã䞊ååã㊠CI æéãççž®ãã - Gunosy Tech Blog
䞊ååãããæ°ã ã IDã宣èšããŠãã㊠åããŒãã¯èªåã® IDã® ãã¹ãã ãå®è¡ å šãã¹ããããæãã« åIDã«å²ãæ¯ã£ãŠ ãããGoã§ã ããããïŒ
Goã§ã®ãã¹ãåå²ã¯(ãšãããã)ããã±ãŒãžæ¯ã§
Goã§ã®ãã¹ãåå²ã¯(ãšãããã)ããã±ãŒãžæ¯ã§ ããã
Goã§ã®ãã¹ãåå²ã¯(ãšãããã)ããã±ãŒãžæ¯ã§ ããã ãããªããŸãã
Goã§ã®ãã¹ãåå²ã¯(ãšãããã)ããã±ãŒãžæ¯ã§ ããã ãããªããŸãã ããã±ãŒãžã®ãã¹ãåæããŠ
Goã§ã®ãã¹ãåå²ã¯(ãšãããã)ããã±ãŒãžæ¯ã§ ããã ãããªããŸãã ããã±ãŒãžã®ãã¹ãåæã㊠ãã¹ã察象å€ã® ããã±ãŒãžã é€å€ã㊠(ç¡ããŠããããããã€ãã£ãŠããã )
Goã§ã®ãã¹ãåå²ã¯(ãšãããã)ããã±ãŒãžæ¯ã§ ããã ãããªããŸãã ããã±ãŒãžã®ãã¹ãåæã㊠è¡çªå·ã4(äžŠåæ°)ã§å²ã£ãããŸã == èªåã®id ãªãæ åœ ãã¹ã察象å€ã® ããã±ãŒãžã
é€å€ã㊠(ç¡ããŠããããããã€ãã£ãŠããã )
Goã§ã®ãã¹ãåå²ã¯(ãšãããã)ããã±ãŒãžæ¯ã§ ããã ãããªããŸãã ããã±ãŒãžã®ãã¹ãåæã㊠ãã¹ã察象å€ã® ããã±ãŒãžã é€å€ã㊠(ç¡ããŠããããããã€ãã£ãŠããã ) è¡çªå·ã4(äžŠåæ°)ã§å²ã£ãããŸã
== èªåã®id ãªãæ åœ ããïŒããããïŒ ãšèšããããšããã ã ...
å¯äžã®æžå¿µç¹: ã«ãã¬ããžã¬ããŒãã©ãããã
Goã¯çŽ æŽãããèšèªãªã®ã§ $ go test -cover ./... -coverprofile=<ãã¡ã€ã«å>.out ã§ãã¹ãæã«ã«ãã¬ããžã®ãããã¡ã€ã«ãåãåºããŠãã $ go
tool cover -html=<ãã¡ã€ã«å>.out -o <ãã¡ã€ã«å>.htmlã ã§ã«ãã¬ããžã¬ããŒããäœãã å¯äžã®æžå¿µç¹: ã«ãã¬ããžã¬ããŒãã©ãããã
å¯äžã®æžå¿µç¹: ã«ãã¬ããžã¬ããŒãã©ãããã Goã¯çŽ æŽãããèšèªãªã®ã§ $ go test -cover ./... -coverprofile=<ãã¡ã€ã«å>.out ã§ãã¹ãæã«ã«ãã¬ããžã®ãããã¡ã€ã«ãåãåºããŠãã
$ go tool cover -html=<ãã¡ã€ã«å>.out -o <ãã¡ã€ã«å>.htmlã ã§ã«ãã¬ããžã¬ããŒããäœãã ã§ãnããŒãã§åå²å®è¡ããã现åãã®ã«ãã¬ããžã¬ããŒãã nåã§ãã¡ãã
å¯äžã®æžå¿µç¹: ã«ãã¬ããžã¬ããŒãã©ãããã Goã¯çŽ æŽãããèšèªãªã®ã§ $ go test -cover ./... -coverprofile=<ãã¡ã€ã«å>.out ã§ãã¹ãæã«ã«ãã¬ããžã®ãããã¡ã€ã«ãåãåºããŠãã
$ go tool cover -html=<ãã¡ã€ã«å>.out -o <ãã¡ã€ã«å>.htmlã ã§ã«ãã¬ããžã¬ããŒããäœãã ã§ãnããŒãã§åå²å®è¡ããã现åãã®ã«ãã¬ããžã¬ããŒãã nåã§ãã¡ãã â çµè«: ãããã¡ã€ã«ã®ä»æ§ã§ (ç¡çãã)解決ïŒ
å¯äžã®æžå¿µç¹: ã«ãã¬ããžã¬ããŒãã©ãããã çµè«: ãããã¡ã€ã«ã®ä»æ§ã§ (ç¡çãã)解決ïŒ
å¯äžã®æžå¿µç¹: ã«ãã¬ããžã¬ããŒãã©ãããã çµè«: ãããã¡ã€ã«ã®ä»æ§ ã§(ç¡çãã)解決ïŒ
å¯äžã®æžå¿µç¹: ã«ãã¬ããžã¬ããŒãã©ãããã çµè«: ãããã¡ã€ã«ã®ä»æ§ ã§(ç¡çãã)è§£æ±ºïŒ ã«ãã¬ããžã®èšç®ã¢ãŒã setã»countã»atomicããã(岿) â» golang/go/src/cmd/cover/profile.goã«è©²åœã®å®è£ ããããŸã
åãã¡ã€ã«ã®ã«ãã¬ããžæ å ± <file_path>:<start_line>.<start_col>,<end_line>.<end_col> <num_statements> <count> ãšãããã©ãŒãããã§ã«ãã¬ããžã倧éã«ã¡ã¢ãããŠãã ã«ãã¬ããžã®èšç®ã¢ãŒã setã»countã»atomicããã(岿) â» golang/go/src/cmd/cover/profile.goã«è©²åœã®å®è£ ããããŸã å¯äžã®æžå¿µç¹:
ã«ãã¬ããžã¬ããŒãã©ãããã çµè«: ãããã¡ã€ã«ã®ä»æ§ ã§(ç¡çãã)解決ïŒ
ãããŠã§ãããã£ã.yamlããã¡ã
ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã
ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã äŸã®ID
äŸã®ID ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã ãã¹ããå®è¡ããããã¡ã€ã«ãåºå
äŸã®ID ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã ãã¹ããå®è¡ããããã¡ã€ã«ãåºå ååã«IDãå«ãã artifactãåŸç¶ã®ãžã§ãã«éºã
äŸã®ID ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã ãã¹ããå®è¡ããããã¡ã€ã«ãåºå ååã«IDãå«ãã artifactãåŸç¶ã®ãžã§ãã«éºã ããŠã³ããŒã
äŸã®ID ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã ãã¹ããå®è¡ããããã¡ã€ã«ãåºå ååã«IDãå«ãã artifactãåŸç¶ã®ãžã§ãã«éºã ããŠã³ããŒã 1è¡ç®ãçŽæ¥æžããŠæçµãã¡ã€ã«ãäœæ âåãããã¡ã€ã«ã®2è¡ç®ä»¥éããã£ã€ãã
äŸã®ID ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã ãã¹ããå®è¡ããããã¡ã€ã«ãåºå ååã«IDãå«ãã artifactãåŸç¶ã®ãžã§ãã«éºã ããŠã³ããŒã ã¬ããŒã äœæ
äŸã®ID ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã ãã¹ããå®è¡ããããã¡ã€ã«ãåºå ååã«IDãå«ãã artifactãåŸç¶ã®ãžã§ãã«éºã ããŠã³ããŒã ã¬ããŒã äœæ
æçµã¬ããŒã(HTML)ãä¿å
äŸã®ID ãããŠã§ãããã£ã.yamlããã¡ã â» ç°å¢å€æ°ã serviceãªã©ããã®çºè¡šã®ç¯å²å€ãšå€æããããã«äžéšçç¥ããŠããç®æããããŸã ãã¹ããå®è¡ããããã¡ã€ã«ãåºå ååã«IDãå«ãã artifactãåŸç¶ã®ãžã§ãã«éºã ããŠã³ããŒã ã¬ããŒã äœæ
æçµã¬ããŒã(HTML)ãä¿å 絶察ãã£ãšããããæ¹ããã ã
\ ããããšãããããŸããïŒ /