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
ユニットテストが入れられないレガシーなソースでCIが回せるようになった
Search
MiuraKatsu
December 15, 2018
Technology
2.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ユニットテストが入れられないレガシーなソースでCIが回せるようになった
MiuraKatsu
December 15, 2018
More Decks by MiuraKatsu
See All by MiuraKatsu
ローカルにmetabase環境を構築する時に便利な小話
miurakatsu
1
970
Other Decks in Technology
See All in Technology
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
3
1.5k
[RSJ26] Building a VLA Model Based on Self-Distilled Classification
keio_smilab
PRO
0
190
データエンジニアリングワークショップ:Auto LoaderとSparkで学ぶデータパイプライン構築
databricksjapan
PRO
0
160
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
310
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
910
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
570
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
800
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
410
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
280
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
120
[RSJ26] NarrativeFlow: Flow-Based Vision-Language-Action Model Using Robot Velocity Fields
keio_smilab
PRO
0
160
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
560
The Invisible Side of Design
smashingmag
301
52k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Making the Leap to Tech Lead
cromwellryan
135
10k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Test your architecture with Archunit
thirion
2
2.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
490
Art, The Web, and Tiny UX
lynnandtonic
304
22k
We Are The Robots
honzajavorek
0
330
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
How to train your dragon (web standard)
notwaldorf
97
6.8k
Transcript
Ϣχοτςετ͕ೖΕΒΕͳ͍ ϨΨγʔͳιʔεͰ $*͕ճͤΔΑ͏ʹͳͬͨ PHP ΧϯϑΝϨϯε 2018 2018/12/15 ΫʔίϜגࣜձࣾ ࡾӜɹࠀߒ
ࣗݾհ •໊લɿࡾӜ ࠀߒ •Twitter IDɿ@MiuraKatsu •ࣄɿCTOతͳ •͖ͳϑϨʔϜϫʔΫɿ LaravelɺSails.js • ॕӜϨοζఱߖഋ༏উɿ
ձһ੍॓ധɾϨϯλΧʔ༧αΠτ ʮ50$00ʂʯ IUUQTXXXUPDPPKQ
w Ұൠతͳ॓ധ༧αΠτɿ॓ധඅʴࢪઃ͔Βखྉ w 50$00ɿ॓ധඅͷΈɻखྉͳ͠ͷԷ w ͦͷ͔ΘΓɿϢʔβ͕༗ྉձඅ w .8$ .FNCFSTIJQ8IPMFTBMF$MVC Ϟσϧ
w αϒεΫϦϓγϣϯϞσϧ 50$00ͷϏδωεϞσϧ
खྉ ॓ധඅʢؚखྉ ॓ധඅʢؚखྉ खྉ ॓ധඅʢؚखྉ ॓ധඅʢؚखྉ खྉ ॓ധඅʢؚखྉ ॓ധඅʢؚखྉ Ұൠతͳ॓ധ༧αΠτ
ձඅ ॓ധඅͷΈ ॓ധඅͷΈ 5PDPP ॓ധඅͷΈ ॓ധඅͷΈ ॓ധඅͷΈ ॓ധඅͷΈ
w Πϯϑϥڥ͕ΦϯϓϨϛεɻ w ݄Ͱσʔλɾηϯλʔͷܖຬྃɻ w ߋ৽ͤͣʹ"84ͷҠߦΛܾஅɻ w Ϋϥεϝιου͞ΜʹɺΠϯϑϥߏஙίϯαϧґཔ w ࣗͨͪΞϓϦͷվमʹूத
ϨΨγʔ٫ͷ͖͔͚ͬ IUUQTDMBTTNFUIPEKQDBTFTDPPDPN Πϯϑϥଆͷࣄྫհˠ
w ιʔεཧɿHJUMBCɺTWOɺHJUIVCೖΓཚΕΔ w ੈཧɿσΟϨΫτϦؙ͝ͱ w ڥཧɿσΟϨΫτϦΛ͚ͯ w σϓϩΠɿGUQͰαʔόͮͭखಈσϓϩΠ ΞϓϦέʔγϣϯଆͷ՝
ϨΨγʔΏ͑ʹͰ͖͍ͯͨ w %FWڥɿෳࡶͳσΟϨΫτϦߏ w ̍αʔόʹෳڥ͕όʔδϣϯҧ͍ͰଘࡏͰ͖͍ͯͨ w ख࡞ۀͷஔͳͷͰɺࣗ༝͕ߴ͍
ϨΨγʔ٫ͷୈҰา w ιʔεཧΛ(JUIVCʹूɺϒϥϯνӡ༻ w ෳ%FWڥ༻ҙɿ%FWʙ%FW·Ͱ४උ w +FOLJOTʹΑΔࣗಈ%FQMPZͷಋೖ w %FQMPZFS QIQ
$BQJTUSBOPΈ͍ͨͳͭͷ1)1൛ w %FWʙ%FWʹͦΕͧΕϒϥϯνࢦఆͰ%FQMPZՄೳ w 7BHSBOUͰͷ-PDBMڥɿݸਓͷ։ൃڥ͜͜ɻ
։ൃͷखॱͷมԽ w (JUIVCͰϒϥϯνӡ༻ɿϓϧϦΫͱϨϏϡʔͷಋೖ w +FOLJOTɺຊ൪%FQMPZ+PCNBTUFSϒϥϯν͚ͩ w (JUIVCɺϨϏϡʔ௨Βͳ͍ͱNBTUFSʹ.FSHFͰ͖ͳ͍ઃఆ w Έͷಋೖɹˠɹ͜ͷจԽʹ׳ΕΔ
w (JUIVCͰ13ͷ$IFDL͕(SFF͡Όͳ͍ͱ.FSHFͰ͖ͳ͘ ͯɺ+FOLJOTͰࢦఆͨ͠ڥʹ#SBODIΛબΜͰ%FQMPZͰ ͖Δ༻ʹͳͬͨΒɾɾɾ w $*Λճ͍ͨ͠ΑͶɻ w ͰϢχοτςετͱͯೖΕΒΕͳ͍ɿιʔεతʹ ࣍ͷ45&1
$PEFDFQUJPO IUUQTDPEFDFQUJPODPN
$PEFDFQUJPO w ςετϑϨʔϜϫʔΫ w l୯ମςετɺػೳςετɺड͚ೖΕςετΛͭͷํ๏Ͱ ͙͢ʹॻ͚ΔΑ͏ʹͳΔͨΊͷπʔϧͳͷͰ͢ɻz IUUQTQJDDBHMJBOJHJUIVCJP$PEFDFQUJPOEPDTKB@+1
ड͚ೖΕςετ ʢBDDFQUBODFUFTUʣ w ϢʔβςετɺΞΫηϓλϯεςετ w ϒϥβΛ࣮ࡍʹಈ͔͢&&ͷςετ w ϑϨʔϜϫʔΫɺݴޠɺσʔλϕʔεʹΑΒͳ͍ w ϒϥοΫϘοΫεςετ
̎छྨͷϒϥβ w 1)1#SPXTFS1)1ͱD63-͚ͩͰͲΜͳڥͰ࣮ߦ Ͱ͖Δɻ+BWBTDSJQU͕࣮ߦͰ͖ͳ͍ɻ w 4FMFOJVN8FC%SJWFS4FMFOJVN4FSWFS͕ඞཁɻ .PCJMF&NVMBUF͕Ͱ͖ͳ͍ɻʢ8FC%SJWFSͷʁʣ
w 4FMFOJVNͰςετ͍͚ͨ͠Ͳɺ4FMFOJVNαʔόཱͯΔͷΊΜͲ͍͘͞ w %PDLFS)VCʹ͋ͬͨɻIUUQTIVCEPDLFSDPNVTFMFOJVN w $PEFDFQUJPOͷ࣮ߦڥߏங͠ͳ͍ͱ͚ͩͲɺαʔόཱͯΔͷΊΜͲ͍͘͞ w %PDLFS)VCʹ͋ͬͨɻIUUQTIVCEPDLFSDPNSDPEFDFQUJPO DPEFDFQUJPO w
%PDLFSDPNQPTFͰ࡞Εͦ͏ɻ %PDLFS)VCʹ͋ͬͨɻ
EPDLFSDPNQPTFZNM version: '2' services: codecept: image: codeception/codeception depends_on: - chrome
- firefox volumes: - './tests:/project/tests' - './codeception.yml:/project/codeception.yml' chrome: image: 'selenium/standalone-chrome-debug:2.53.1' ports: - '5901:5900' firefox: image: 'selenium/standalone-firefox-debug:2.53.1' ports: - '5902:5900'
ίϚϯυ w TFMFOJVNαʔό্ཱͪ͛ >docker-compose up -d chrome firefox w EPDLFSͷCSPXTFSͷڍಈ֬ೝ
7/$ >open vnc://x:
[email protected]
:5901 w $PEFDFQUJPOͰͷςετ࣮ߦ >docker-compose run codecept run -x optional -vv -- html=_report.html --env firefox --env chrome --env phpbrowser -g all
.BLFpMF .PHONY: all DOCKER_COMPOSE ?= docker-compose GROUP ?= all all:
##@test [TEST] shorthand for $(MAKE) up run-tests up: ##@development start stack $(DOCKER_COMPOSE) up -d chrome firefox run-tests: ##@test run tests $(DOCKER_COMPOSE) run codecept run -x optional -vv -- html=_report.html --env firefox --env chrome --env phpbrowser -g ${GROUP}
%PDLFSͱ$PEFDFQUJPOΛͬͯ&&ςετ Λ؆୯ʹ࣮ߦ$*Ͱ͖ΔڥΛ࡞ͬͯΈͨɻ w IUUQTRJJUBDPN.JVSB,BUTVJUFNT EBBEC w IUUQTHJUIVCDPN.JVSB,BUTV DPEFDFQUJPO@FBTZ@BDDFQUBODF
σϞ ͕࣌ؒ͋Εɾɾɾ
$JSDMF$* w $*$JSDMF$*Ͱճ͢ɻ+FOLJOT%FQMPZʹઐ೦ɻ w $JSDMF$*Ͱಉ͡EPDLFSDPNQPTFΛ͍͍ͨ w ࣮ߦλΠϓEPDLFS͡Όͳͯ͘ɺNBDIJOF w DJSDMFDJDPOpHZNMʹಉ͡EPDLFSDPNQPTFίϚϯυ
$*ͷྲྀΕ w (JUIVCͰNBTUFSʹ13 w ˠ+FOLJOTͰ%FWڥʹ%FQMPZ w ˠ$JSDMF$*Ͱ$PEFDFQUJPOͰ"DDFQUBODF5FTUΛ%FW̌ڥͰ࣮ߦ 1VMM3FRVFTU 8FCIPPL %FQMPZ
"DDFQUBODF5FTU %FW̌ڥ
w %PDLFS*NBHFΛ1VMM͢Δͱ͕͔͔࣌ؒΔ w %PDLFS*NBHFͷ$BDIF࡞͓ͬͯ͘ w ࢀߟɹ$JSDMF$JͰ%PDLFSΠϝʔδΛΩϟογϡ͠Ϗ ϧυΛരͰߦ͏IUUQTRJJUBDPNUBLFDPSF!HJUIVC JUFNTBCFC
̎ w EFWڥͳͷͰIUUQͷΞΫηε*1ߜͬͯΔ w ςετͷηΩϡϦςΟάϧʔϓʹՃɾআ #!/bin/sh export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
export AWS_DEFAULT_REGION="ap-northeast-1" #dev-circleci-codeception-sg COMSECURITYGROUP=“sg-yoursecuritygroupid“ MYIP=`curl -s ifconfig.me` aws ec2 authorize-security-group-ingress --group-id ${COMSECURITYGROUP} -- protocol tcp --port 443 --cidr ${MYIP}/32 aws ec2 revoke-security-group-ingress --group-id ${COMSECURITYGROUP} -- protocol tcp --port 443 --cidr ${MYIP}/32
ॻ͍͍ͯΔςετ w ࠷ݶͷػೳ τοϓϖʔδͷදࣔɺӳதؖΓସ͑ɺ ݕࡧɺϩάΠϯʣͷςετ͚ͩ࡞ w $*ͷతɿσάϨɾطଘͷӨڹ͕ͳ͍͔ͷνΣοΫɻ
ͪΐͬͱ͚ͩ ϨΨγʔ͔Β٫
·ͱΊ w ϨΨγʔڥͰɺແཧʹϢχοτςετ͡Όͳͯ͘ &&ͷड͚ೖΕςετ͔Β͡ΊͯͲ͏ͩΖ͏͔ɻ w &&Ͱͷ$*ɺࣗಈ%FQMPZͷΈ͑͑͞ΒΕΕɺͳ Μͱ͔ͳΔɻ w ϨΨγʔͰ$*ճͤΔɻ
ຊ֨తʹϨΨγʔ͔Βͷ٫ w ൈຊతվमɻͱ͍͏͔࡞Γସ͑ɻ w 1)1 $BLF1)1 "VSPSB .ZTRM "NB[PO-JOVY w
Ϣχοτςετಋೖ༧ఆ w ͪΖΜड͚ೖΕςετ
ΤϯδχΞืूத IUUQTXXXXBOUFEMZDPNDPNQBOJFTUPDPP