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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
MiuraKatsu
December 15, 2018
Technology
2k
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
960
Other Decks in Technology
See All in Technology
Lightning近況報告
kozy4324
0
210
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
150
現場のトークンマネジメント
dak2
1
150
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
23
6.1k
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
230
脆弱性対応、どこで線を引くか
rymiyamoto
1
420
AIはどのように 組織のアジリティを変えるのか?
junki
4
1.1k
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
250
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.1k
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
0
150
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
190
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
170
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
220
How to Talk to Developers About Accessibility
jct
2
240
The browser strikes back
jonoalderson
0
1.3k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
310
30 Presentation Tips
portentint
PRO
1
330
Unsuck your backbone
ammeep
672
58k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Done Done
chrislema
186
16k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Are puppies a ranking factor?
jonoalderson
1
3.6k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
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