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
ユニットテストが入れられないレガシーなソースでCIが回せるようになった
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
190
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
3
690
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
770
データエンジニアの次の戦場は "プロセスエンジニアリング"
sansantech
PRO
1
100
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
470
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
130
Running Kotlin + Quarkus with Lambda
nealle
1
4k
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
310
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
170
その Valkey 使いこなしていますか?
onk
PRO
5
1.6k
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
120
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
400
Featured
See All Featured
Design in an AI World
tapps
1
350
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Balancing Empowerment & Direction
lara
6
1.3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Code Reviewing Like a Champion
maltzj
529
40k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
The Language of Interfaces
destraynor
162
27k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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