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
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
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
120
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
140
データ_AIの事業の勝敗をわけるもの
nek0128
1
470
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
620
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
1k
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
3
660
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
180
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
520
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
130
CLIライブラリ開発を支える技術
htnabe
0
140
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
370
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
3
1k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.3k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Cult of Friendly URLs
andyhume
79
7k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
600
Docker and Python
trallard
47
4.2k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Skip the Path - Find Your Career Trail
mkilby
1
230
Joys of Absence: A Defence of Solitary Play
codingconduct
1
520
Product Roadmaps are Hard
iamctodd
55
13k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Navigating Team Friction
lara
192
16k
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