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
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Being A Developer After 40
akosma
91
590k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
I Donât Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Unsuck your backbone
ammeep
671
58k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
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)ãä¿å 絶察ãã£ãšããããæ¹ããã ã
\ ããããšãããããŸããïŒ /