ãã¹ãã¯ãœãããŠã§ã¢éçºã©ã€ããµã€ã¯ã«ã®äžå¯æ¬ ãªéšåã§ããããšã¯ãç§ãã¡å
šå¡ãç解ããŠããŸãã ã³ãŒããé »ç¹ã«ãã¹ãããã°ããã»ã©ãéçºäžã«ã³ãŒãã«äŸµå
¥ãããšã©ãŒãããè¿
éã«æ€åºããä¿®æ£ããããšãã§ããŸãã åæã«ãéçºãµãŒããŒã«ã¯è¡šç€ºãããªããæŠéã«è¡šç€ºãããå¯èœæ§ã®ãããšã©ãŒãæ€åºã§ããããã«ãæŠéç°å¢ã«ã§ããã ãè¿ãç°å¢ïŒOSããœãããŠã§ã¢ãããŒããŠã§ã¢ãè² è·ïŒã§ãã¹ãããããšã匷ããå§ãããŸãã äžèšã®2ã€ã®è«æãäžç·ã«æ§æãããšãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšåŒã°ããæŠå¿µãåŸãããŸãã
CIã®æ¬è³ªã¯ãå¯èœãªéãæ©æã«ãšã©ãŒãæ€åºãããããã«ã€ããŠéçºè
ã«éç¥ããããã«ãæŠéç°å¢ã«å¯èœãªéãè¿ããšããã§éçºäžã®ãœãããŠã§ã¢ãåžžã«ïŒããšãã°ãåã³ãããåŸã«ïŒãã«ãããã³ãã¹ãããããšã§ãã CIã®æŠå¿µãã®ãã®ã¯Martin Fowlerã«å±ãã圌ã¯åœŒã®
èšäºã§è©³çŽ°ã«èª¬æããŠã
ãŸã ã
ç¶ç¶çãªã¢ã»ã³ããªããã»ã¹ã®èªååã«ã¯ãæ¢æã®ãœãªã¥ãŒã·ã§ã³ïŒ
Hudson ã
CruiseControl ïŒãããããã®ãã¡ã®1ã€ïŒHudsonïŒã®çµ±åã¯ãã®èšäºã§èª¬æããŸãã
ææŠãã
ãããã£ãŠã2ã€ã®ãããžã§ã¯ãããããšããŸãããïŒJavaãµãŒãã¹ïŒç¬èªã®ããŒã¿ããŒã¹ã䜿çšïŒãšãPHPã¯ã©ã€ã¢ã³ãïŒç¬èªã®ããŒã¿ããŒã¹ã䜿çšïŒã äž¡æ¹ã®ãããžã§ã¯ãã¯debããã±ãŒãžãšããŠé
åžãããŸãã ãããã®ãããžã§ã¯ããç¶ç¶çã«çµ±åããããã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãã»ããã¢ããããå¿
èŠããããŸãã
å®è£
æåŸã«äœãéæãããã®ããç解ããããã«ãæåŸããå§ããŸãïŒå®è£
ãããã¹ããŒã ãèããŸãïŒ
- ããã°ã©ããŒã®äœæ¥æ©æ¢°-ã³ãŒãã®äœæã
- SVNãµãŒããŒ-ã³ãŒãã¹ãã¬ãŒãžã
- ã¹ããŒãžã³ã°ãµãŒããŒ-çµã¿ç«ãŠããããããžã§ã¯ãã®ã€ã³ã¹ããŒã«ãšãã¹ãã
- SeleniumãµãŒããŒ-Webã€ã³ã¿ãŒãã§ãŒã¹ã®ãã¹ãã
- ãªããžããªãµãŒããŒ-åéãããããã±ãŒãžã®ä¿åã
- CIãµãŒããŒ-ãã¹ãŠã®ã·ã¹ãã ããŒãã1ã€ã®å
šäœã«æ¥ç¶ããŸãã
éçºè
ã¯èªåã®ãã·ã³ã§ãããžã§ã¯ãã«å€æŽãå ããSVNã§ã³ãããããŸãã SVNãµãŒããŒäžã§ãã³ãããåŸããã¯ãããªã¬ãŒãããCIãµãŒããŒäžã®å¯Ÿå¿ãããããžã§ã¯ãã®ãã«ãããã»ã¹ãéå§ãããŸãã CIãµãŒããŒã¯SVNããããã±ãŒãžããŒãžã§ã³ãæŽæ°ãããããžã§ã¯ããã³ã³ãã€ã«ããåäœãã¹ããå®è¡ãããããžã§ã¯ããã¹ããŒãžã³ã°ãµãŒããŒã«é
眮ããŸãã
Webã€ã³ã¿ãŒãã§ãŒã¹ã®ãªããããžã§ã¯ãã®å Žåãçµ±åãã¹ããå®è¡ãããWebã€ã³ã¿ãŒãã§ãŒã¹ã®ãããããžã§ã¯ãã®å ŽåãSeleniumãã¹ããå®è¡ãããŸãã CIãµãŒããŒã¯ã¬ããŒããçæããå¿
èŠã«å¿ããŠïŒãããžã§ã¯ãã¢ã»ã³ããªã®ããããã®æ®µéã§é害ãçºçããå ŽåïŒãŠãŒã¶ãŒã«é»åã¡ãŒã«éç¥ãéä¿¡ããŸãã
æŠéãµãŒããŒã®ãªããžããªãžã®ãããžã§ã¯ãããã±ãŒãžã®ã¢ããããŒãã¯ããªãªãŒã¹æã«éçºè
ãæåã§è¡ããŸãã
ãããœã³
ç§ãã¡ã®ã·ã¹ãã ã®äž»ã§æãèå³æ·±ãããŒãã¯ãCIãµãŒããŒã§ãã ãã®å Žåãæã人æ°ãããäžè¬çãªç¡æãœãªã¥ãŒã·ã§ã³ã®1ã€ãšããŠ
ãããœã³ã«ãªããŸãã
ãŸããã€ã³ã¹ããŒã«ããŠãã ããã Hudsonã¯ããã±ãŒãžãšããŠæäŸãããŠãããããã€ã³ã¹ããŒã«ã¯éåžžã«ç°¡åã§ãã ããã«ãHudsonã¯ãã®æ§æå
šäœããã¡ã€ã«ïŒ
/ var / lib / hudson ïŒã«
ä¿ç®¡ããŸããããã¯ãããŒã¿ããŒã¹ãšã®çµ±åãå¿
èŠãšããŸããã
ãããœã³ã®ã¢ãŒããã¯ãã£ã¯ãã©ã°ã€ã³ã«åºã¥ããŠããŸãã ã€ãŸããæ¬è³ªçã«ããããœã³ã®ä»äºã¯ããããžã§ã¯ã/ãã©ã°ã€ã³ã®èšå®ãä¿åãããããžã§ã¯ããæ§ç¯ããããšã§ãã 次ã«ããããžã§ã¯ãã®ã¢ã»ã³ããªã¯ããããžã§ã¯ãèšå®ã«å«ãŸããã€ã³ã¹ããŒã«æžã¿ãã©ã°ã€ã³ãç¹å®ã®é åºã§èµ·åããããšã§æ§æãããŸãã
ãã©ã°ã€ã³ã¯ãããã€ãã©ã€ã³ããšãåŒã°ãããããžã§ã¯ãã®ãã«ããµã€ã¯ã«ã圢æããããã€ãã®æ¡ä»¶ä»ãã°ã«ãŒãã«åå²ã§ããŸãïŒãããžã§ã¯ããã©ã°ã€ã³ã®æ§æã¯ã[ãããžã§ã¯ãèšå®]ã¡ãã¥ãŒããå©çšã§ããŸãïŒã
- ãœãŒã¹ã³ãŒã管çïŒãªããžããªãããããžã§ã¯ãã³ãŒããåä¿¡/æŽæ°ïŒã
- ã¢ã»ã³ããªããªã¬ãŒïŒãããžã§ã¯ãã¢ã»ã³ããªã®èªåéå§æéã®èšå®ïŒã
- ãã«ãç°å¢ïŒãããžã§ã¯ãã®ãã«ãç°å¢ã®ã»ããã¢ããïŒJVMããŒãžã§ã³ïŒã
- ã¢ã»ã³ããªïŒã¡ã€ã³ã¹ããŒãžïŒã¢ã»ã³ããªãçµ±åãããã³ãã¹ãã®ããžãã¯ãå®è£
ãããã©ã°ã€ã³ã®èµ·åïŒã
- ã¢ã»ã³ããªåŸã®æäœïŒã¬ããŒãã®çæ/å
¬éãéç¥ïŒã
æ®å¿µãªãããHudsonã§ã¯ãã¢ã»ã³ããªã°ã«ãŒãã«å«ãŸãããã©ã°ã€ã³ã®å®è¡é åºã®ã¿ãå€æŽã§ããŸãïŒãã®ã°ã«ãŒãå
ã®æ®ãã®ãã©ã°ã€ã³ã®å®è¡é åºã¯ããã©ã°ã€ã³ã®
@Executionã¢ãããŒã·ã§ã³ã³ãŒãã®å€ã«åºã¥ããŠæ±ºå®ãããŸãïŒã ãããã£ãŠããAssemblyãã°ã«ãŒãã®æšæºãã©ã°ã€ã³ã§ã¯äžååãªãã«ãã¹ã¯ãªãããå®è£
ããå¿
èŠãããå Žåã¯ã次ã®3ã€ã®æ¹æ³ã§å®è¡ã§ããŸãã
- ãã®ã¹ã¯ãªãããå®è£
ããå€éšã®å®è¡å¯èœã¹ã¯ãªãããåŒã³åºããŸãïŒããã«ãã¹ãããã®è¿œå ãã¡ãã¥ãŒã®ãã·ã§ã«ã®å®è¡ãã¢ã€ãã ïŒã
- ãããžã§ã¯ããã«ãã·ã¹ãã ïŒPhingãAntãMavenïŒã®ãã©ã°ã€ã³ãæ¥ç¶ããå¿
èŠãªç®æšãæå®ããŸãã
- ãã©ã°ã€ã³ãäœæããŸãã
ããã©ã«ãã§ã¯ãHudsonã«ã¯SVNãšMavenãæäœããããã®ãã©ã°ã€ã³ããã§ã«ã€ã³ã¹ããŒã«ãããŠããŸãã Javaãããžã§ã¯ãã®ã¿ã®å Žåãããã§ååã§ãã ãã ããPHPãããžã§ã¯ãã§ãäœæ¥ããå¿
èŠããããšããŸãã ãã®å ŽåãPhingã䜿çšããŠãããžã§ã¯ãããã«ãããæ¹ãè«ççã§ãããããžã§ã¯ãã®ãã©ã°ã€ã³ã¯åå¥ã«ã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ããã¯ããèšå®/ãã©ã°ã€ã³ã®ç®¡ç/å©çšå¯èœãªã¢ããããŒããã»ã¯ã·ã§ã³ã«ç§»åããŠè¡ããŸãã
äžéšã®ãã©ã°ã€ã³ã§ã¯Java 6ã§Hudsonãå®è¡ããå¿
èŠãããããšã«æ³šæããŠãã ãã
ã/ etc / default / hudsonãã¡ã€ã«ã§ JVMãžã®ãã¹ãå€æŽã§ããŸãïŒæ®ãã®æ§æãªãã·ã§ã³ãšåæ§ïŒã ãã以å€ã®å ŽåãHudsonã®æäœã«çŽæ¥é¢é£ãããã¹ãŠã®æ§æãã©ã¡ãŒã¿ãŒã¯ãWebã€ã³ã¿ãŒãã§ãŒã¹ã®ãã©ãŠã¶ãŒãä»ããŠç·šéã§ããŸãã
ãã©ã°ã€ã³ã®èšå®ã«é¢ããŠã¯ããã©ã°ã€ã³ã«äžè¬èšå®ïŒãã·ã¹ãã èšå®/æ§æãïŒãšãããžã§ã¯ãèšå®ïŒãèšå®/ãããžã§ã¯ãå/ãããžã§ã¯ãã®æ§æãïŒã®äž¡æ¹ãããããšãèšåãã䟡å€ããããŸãã
å¿
èŠãªãã¹ãŠã®ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ãããã®ã§ã察å¿ãããã©ã°ã€ã³ã®ååãšèšå®ãæå®ããããšã§ãæ°ãããããžã§ã¯ã/ã¿ã¹ã¯ãäœæã§ããŸããSVNãªããžããªã®URLãšã¢ã»ã³ããªã®ã³ãã³ãã
ãããžã§ã¯ãã«å€æŽãããå Žåãã¹ã±ãžã¥ãŒã«ããªããžããªãããŒãªã³ã°ãããšãã§ã¯ãªã
ãSVNã®ã³ãããã«åŸã£ãŠãã«ãã§ããããšã«æ³šæããŠãã ããã Hudsonã«ã¯
GETãªã¯ãšã¹ããè¡ãããšã§ãããžã§ã¯ãã®ã¢ã»ã³ããªã
éå§ã§ããããªã¢ãŒãã¢ã¯ã»ã¹APIãã
ããããããããžã§ã¯ãã«é©åãªpost-commitããã¯ãç°¡åã«è¿œå ã§ããŸãïŒããšãã°ã
svnlookã䜿çšïŒã
ãã«ããã§ãŒãºãæ€èšããŸãã
ãã®æç¹ã§ãããã±ãŒãžã®æ§ç¯ã«ã¯ããªããžããªããããŒã¿ãååŸããPhingã®ç®æšïŒããã±ãŒãžã®æ§ç¯ïŒãå®äºããããšãå«ãŸããŸãã ååãšããŠãããã§åäœãã¹ãã®èµ·åãè¿œå ãããããžã§ã¯ããã¹ããŒãžã³ã°ãµãŒããŒã«å±éã§ããŸãã ãã ããããã§ã¯ããã€ãã®ç¹ã«æ³šæãã䟡å€ããããŸãã
ãŸããã¹ããŒãžã³ã°ãµãŒããŒã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã®æ§æã¯ãæŠéæ§æãšã¯ç°ãªãå ŽåããããŸãã ãã®å Žåãæãããªè§£æ±ºçã¯ãã¹ããŒãžã³ã°ãµãŒããŒã®æ§æããããžã§ã¯ãã«ä¿åããã¢ã»ã³ããªäžã«å
ã®ãããžã§ã¯ãïŒPhingã®å Žåã¯ã¢ã»ã³ããªã®å¥ã®ã¿ãŒã²ããããŸãã¯
Mavenã®ãããã¡ã€ã« ïŒã«çœ®ãæããããšã§ãã
次ã«ã
SCPããã³
SSHãã©ã°ã€ã³ã䜿çšããŠã¹ããŒãžã³ã°ãµãŒããŒã«ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãïŒãã©ã°ã€ã³ãæ©èœããã«ã¯ãsshdæ§æã®PasswordAuthenticationãã©ã¡ãŒã¿ãŒãyesã«èšå®ãããã¹ããŒãžã³ã°ãµãŒããŒãã¹ããæ¢ç¥ã®ãã¹ãã«è¿œå ãããŠããããšã確èªããŸãïŒãSSHãã©ã°ã€ã³ãšããŠãããžã§ã¯ãã®ã¢ã»ã³ããªãã§ãŒãºãæããSCPãã©ã°ã€ã³ã¯ã¢ã»ã³ããªåŸã®æäœãæããŸãã ãããã£ãŠããããžã§ã¯ããã¹ããŒãžã³ã°ãµãŒããŒã«ãããã€ããåé¡ã¯ãPhingãŸãã¯
Maven +
AntRunã䜿çšããŠè§£æ±ºããå¿
èŠããããŸãã
ãã«ãã¹ã¯ãªããããªã¢ãŒããµãŒããŒã§ã¢ã¯ã·ã§ã³ãå®è¡ããã«ã¯ãsshããŒãçæããå¿
èŠããããŸãïŒCIãµãŒããŒã«ç§å¯ããŒãæ®ãã察話ãããã¹ãŠã®ãµãŒããŒã«å
¬éããŒãé
åžããŸãïŒã¹ããŒãžã³ã°ãã¬ããsvn-ãããããªã¹ãã«è¿œå ããŸãæ¢ç¥ã®ãã¹ãïŒknown_hostsïŒã ããã«ãHudsonããªã¢ãŒããµãŒããŒã«ããã±ãŒãžãã€ã³ã¹ããŒã«ã§ããããã«ããã«ã¯ã察å¿ãããŠãŒã¶ãŒïŒhudsonïŒããªã¢ãŒããµãŒããŒã«äœæããsudoãäžããå¿
èŠããããŸãã
第äžã«ãMavenã䜿çšããŠJavaã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«æ§ç¯ããã«ã¯ãCIãµãŒããŒäžã®hudsonãŠãŒã¶ãŒã®Mavenèšå®ã決å®ããå¿
èŠããããŸãïŒ
ã/ .m2ãã£ã¬ã¯ããªãæå³ããŸãïŒã
ã¹ããŒãžã³ã°ãµãŒããŒã«ããã±ãŒãžãã€ã³ã¹ããŒã«ããåŸã®æ¬¡ã®ã¹ãããã¯ãçµ±åãã¹ãã®éå§ã§ãã CIãµãŒããŒèªäœã§å®è¡ã§ããŸãããã¹ããŒãžã³ã°ãµãŒããŒã§å®è¡ããããšããå§ãããŸãã æåã®ã±ãŒã¹ã§ã¯ããã¹ãŠãéåžžã«ç°¡åã§ããé©åãªPhing / Mavenã¿ãŒã²ãããåŒã³åºããã
SeleniumHQãã©ã°ã€ã³ãæ§æããŸãã
ãã ããå€éšãµãŒããŒã§ãã¹ãããã»ã¹ãéå§ããå ŽåïŒããšãã°ãSelenium RCãµãŒããŒã«ã¢ã¯ã»ã¹ããå ŽåïŒã¯ã©ãããã°ããã§ããïŒ ããã§ã®çãã¯å¯èœãªéãç°¡åã§ãïŒSelenium RCã«ã¯ãããšé£æºããHTTP APIãããããããã®å Žåã®æãç°¡åãªè§£æ±ºçã¯ããã¹ãããã»ã¹ãéå§ããæã
ãã¹ããå®äºããããã«ãªã¢ãŒããµãŒããŒãããŒãªã³ã°ããä»»æã®èšèªã§å°ããªã¹ã¯ãªãããæžãããšã§ã 次ã«ããã®ã¹ã¯ãªããã¯ããã©ã°ã€ã³ãã·ã§ã«ã®å®è¡ããä»ããŠãã«ãã¹ã¯ãªããã«æ¥ç¶ãããŸãã ãŸããã¹ã¯ãªããã®æåãŸãã¯å€±æã¯ãã¹ã¯ãªããã®ãªã¿ãŒã³ã³ãŒãã«åºã¥ããŠãããœã³ã«ãã£ãŠæ±ºå®ãããããšãä»ãå ããŸãã
ã¢ã»ã³ããªããã»ã¹ãã»ããã¢ããããããããã»ã¹ã®æãéèŠãªéšåãã€ãŸãéçºè
ã«ã¢ã»ã³ããªçµæãéç¥ããããšãå¿ããŸããã Hudsonã䜿çšãããšãç¹å®ã®åä¿¡è
ãšcommit'ovã®äœæè
ã®äž¡æ¹ã«ã¡ãŒã«éç¥ãèšå®ã§ãããã®å€æŽã«ããå
èš³ãçºçããŸãã
ããã«ãPHPãããžã§ã¯ãã«Hudsonã䜿çš
ããå Žåã¯ãHudson Wikiã®é¢é£èšäºãèªãããšããå§ãããŸãã
ã¹ããŒãžã³ã°ãµãŒããŒ
ããã±ãŒãžã®ã€ã³ã¹ããŒã«
ãã®ããããã§ã«åè¿°ããããã«ãã€ã³ãã©ã¹ãã©ã¯ãã£ã«ã¯ãæŠéã«å¯èœãªéãè¿ããµãŒããŒãæ§æããå¿
èŠããããŸãã Hudsonã¯ããã©ã³ã¯çµç±ã§åéãããææ°ã®ãããžã§ã¯ãããã±ãŒãžããã®ãµãŒããŒã«ã€ã³ã¹ããŒã«ããŸãã ããã¯ç§ãã¡ã«æ©äŒãäžããŸãïŒ
- æŠéæ¡ä»¶ã«å¯èœãªéãè¿ãæ¡ä»¶ã§çµ±åãã¹ããå®æœãã
- ææ°ã®æ©èœãå®èšŒããããã®ãã©ãããã©ãŒã ãçšæã§ããŸãã
ãã®ãµãŒããŒãã»ããã¢ãããããšãã«è§£æ±ºããå¿
èŠãããäž»ãªåé¡ã®1ã€ã¯ãããã±ãŒãžã®ãµã€ã¬ã³ãã€ã³ã¹ããŒã«ã§ãã ããã±ãŒãžãäžå¿
èŠãªãã€ã¢ãã°ãªãã§ã€ã³ã¹ããŒã«ããïŒã€ãŸããHudsonã¹ã¯ãªãããŸãã¯ãã©ã°ã€ã³ã䜿çšããŠã€ã³ã¹ããŒã«ã§ããïŒã«ã¯ãdebconfãåæ§æããå¿
èŠãããïŒ
dpkg-reconfigure debconf ïŒã質åã§äœ¿çšããã質åãããéèŠåºŠãé«ãããšã瀺ããŸãdebããã±ãŒãžã®ã€ã³ã¹ããŒã«ã¹ã¯ãªããã
ããã«ãã¹ããŒãžã³ã°ãµãŒããŒã«ã€ã³ã¹ããŒã«ãããããã±ãŒãžéã«äŸåé¢ä¿ãããå ŽåããããŸãã ãããã£ãŠãããšãã°ãã¯ã©ã€ã¢ã³ããããžã§ã¯ãã¯ãµãŒããŒãããžã§ã¯ãã«äŸåããŸãã ãã®å Žåããã¯ã©ã€ã¢ã³ããããã±ãŒãžã®ã€ã³ã¹ããŒã«æã«ã¹ããŒãžã³ã°ãµãŒããŒã§å¿
èŠãªããµãŒããŒãããã±ãŒãžã®ã€ã³ã¹ããŒã«ã確å®ã«è¡ãããããã«ããå¿
èŠããããŸãã
äžèŠãdebããã±ãŒãžãä»ãããããžã§ã¯ãã®é
åžãèæ
®ããæçœãªè§£æ±ºçã¯ã
äŸåé¢ä¿ã¯ãã¯ã©ã€ã¢ã³ãããã±ãŒãžã®
äŸåé¢ä¿å¶åŸ¡ãã¡ã€ã«ã«ããµãŒããŒãããã±ãŒãžã«é¢ããæ
å ±ãè¿œå ããããšã«ããã
dpkgã«ãã£ãŠç®¡çãããŸãã
ãã®å ŽåãCIãµãŒããŒã«ãã£ãŠåéããããã¹ãŠã®ããã±ãŒãžãããŒãžãããå¥ã®debianãªããžããªãéžæããããã±ãŒãžããªããžããªã«ã³ããŒããã³ãã³ãã§ãã«ãã¹ã¯ãªãããå®äºããå¿
èŠããããŸãã ããã«ãæ°ããããã±ãŒãžãè¿œå ãããšãã«ããã®ãªããžããªå
ã®ããŒã¿ãèªåçã«æŽæ°ããã¡ã«ããºã ãç·šæãããªããžããªããŒã«ãžã®ã¢ã¯ã»ã¹ã調æŽãïŒããšãã°ãWebãµãŒããŒãäžããããšã«ãã£ãŠïŒããã®ãªããžããªãã¹ããŒãžã³ã°ãµãŒããŒã®sources-listã«è¿œå ããå¿
èŠããããŸãã èªåæŽæ°ãæåã§æŽçããå ŽåïŒããã±ãŒãžããªããžããªã«é
眮ããåŸã«ããã±ãŒãžã¹ãã£ããŒãèµ·åããããšã«ããïŒãaptãä»ããŠæ°ããããã±ãŒãžãã€ã³ã¹ããŒã«ã§ããŸãããªããžããªãã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠæŽæ°ãããå Žåã
dpkg -i packageãªã©ã®ããªãã¯ãèæ¡ããå¿
èŠããã
ãŸãã apt-get -f install ã debianãªããžããªã®èšå®ã«ã€ããŠè©³ããã¯ã
ãã¡ããã芧ãã ãã ã
ãã ãããã®ã¢ãããŒãã«ã¯ããã€ãã®æ¬ ç¹ããããŸãã ãŸããäŸåé¢ä¿ã¯åããµãŒããŒã«ã®ã¿ã€ã³ã¹ããŒã«ã§ããŸãã 第äºã«ããã®ã¢ãããŒãã¯ã·ã¹ãã å
šäœãéåžžã«è€éã«ããŸããããã¯ã
KISSã®ååãšççŸããŸãïŒãã·ã¢èªã®å Žåã¯ãSMOKEãïŒDïŒã
ç§ã®æèŠã§ã¯ãæè¯ã®è§£æ±ºçã¯ãããã«ãµãŒããŒãšã®ããåãã«ã®ã¿ãªããžããªã䜿çšããããšã§ãã åæã«ããªããžããªãžã®ããã±ãŒãžã®ã¢ããããŒãã¯èªåçã«è¡ãããã¹ãã§ã¯ãªããéçºè
ã®æ±ºå®ã«åŸã£ãŠè¡ãããã¹ãã§ãã ã¹ããŒãžã³ã°ãµãŒããŒã«ã€ããŠã¯ãã¡ã€ã³ããã±ãŒãžã®ãã©ã³ã¯ããã®ããã±ãŒãžãšãã®ãã¹ãŠã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãããŸããããã«ãããCIã·ã¹ãã ã®è€éãã倧å¹
ã«è»œæžãããã¹ããŒãžã³ã°ãµãŒããŒã«ææ°ã®ææ°ããŒãžã§ã³ãã€ã³ã¹ããŒã«ã§ããŸãã
ããã±ãŒãžã
DBã䜿çšãã
ããã±ãŒãžã¯ããŒã¿ããŒã¹ã䜿çšã§ããŸãã ãã®å ŽåãããŒã¿ããŒã¹ã¯ã¹ããŒãžã³ã°ãµãŒããŒã«ãã€ã³ã¹ããŒã«ãããããŒã¿ããŒã¹æ§é /ããŒã¿ã¯
dbdeployãŠãŒãã£ãªãã£ã䜿çšããŠæŽæ°ãããŸãã
dbdeployããããžã§ã¯ãã«çµ±åããã«ã¯ã2ã€ã®æ¹æ³ããããŸãã
- SVNã®åããŒã¿ããŒã¹ã«åå¥ã®ãããžã§ã¯ããå²ãåœãŠããããã®çµæãHudsonã§SVNããã¯ã«ãã£ãŠéå§ãããç¬èªã®ãã«ãã¹ã¯ãªããã䜿çšããŸãïŒããŒã¿ããŒã¹ãè€æ°ã®ãããžã§ã¯ãã§äœ¿çšãããå Žåããã®ãªãã·ã§ã³ã¯æå³ããããŸãïŒã
- dbdeployãã¡ã€ã«æ§é ãã¡ã€ã³ãããžã§ã¯ãã®äžéšã«ãªããdbdeployããŒã¿ããŒã¹ããŒãžã§ã³æŽæ°ã¹ã¯ãªãããããã±ãŒãžã®postinstã¹ã¯ãªããã§åŒã³åºãããŸãã
ãããšã¯å¥ã«ããã®å Žåããã¹ãäžã®ããŒã¿ããŒã¹ããŒã¿ã®å€æŽã«ã€ããŠçåãçããŸãã åäœãã¹ããäœæãããšããããŒã¿ããŒã¹ãæäœããã
ã¢ãã¯ãªããžã§ã¯ãã䜿çšããããšã¯æãã
ã§ã ïŒããšãã°ãç§ã¯
Mockitoã奜ã
ã§ã ïŒã
ãã ããåã«ãå®éã®ãæ¡ä»¶ã§åäœããå¿
èŠãããçµ±åãã¹ãã«ã€ããŠã¯ã©ãã§ããããã XUnitãã¹ãã®å Žåãåãã¹ããããŒã¿ããŒã¹ãžã®ãã©ã³ã¶ã¯ã·ã§ã³ã®äžéšãšããŠå®è¡ã§ããŸãã ç§ã®æèŠã§ã¯ãdbdeployãä»ããããŒã¿ããŒã¹ã®ããŒãžã§ã³ç®¡çãèæ
®ãããšããã®ã¢ãããŒããæãŸãããšèããŠããŸããããŒã¿ããŒã¹ã«çŸåšããããŒã¿ãåžžã«ææ¡ããŠããããã¹ãã§å®å
šã«ãã€ã³ãã§ããããã§ãã ãã ããWebã€ã³ã¿ãŒãã§ã€ã¹ããã¹ãããå ŽåïŒããšãã°ãSeleniumã䜿çšããå ŽåïŒããã©ã³ã¶ã¯ã·ã§ã³ã®ãã¬ãŒã ã¯ãŒã¯å
ã§åãã¹ããå®è¡ããããšã¯ã§ããŸããã
ãããã£ãŠãç§ã®æèŠã«ã¯2ã€ã®ãªãã·ã§ã³ããããŸãïŒWebã€ã³ã¿ãŒãã§ã€ã¹ã®ãã¹ããéå§ããåã«ãå©çšå¯èœãªããŒã¿ã«åºã¥ããŠããŒã¿ããŒã¹ã®ããŒã¿ãå®å
šã«ååæåãã
ãããããŸãã¯ããŒã¿ããŒã¹ããã®ç¹å®ã®ããŒã¿ã«çµã³ä»ããããªãããã«ãã¹ããæ§ç¯ãïŒããšãã°ãWebã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠãã¹ãã«å¿
èŠãªããŒã¿ãäœæãããªã©ïŒãå¯èœã§ããã°ããŽãããæ®ããªãã§ãã ããã
ãµãŒããŒã»ã¬ã³
ã¢ããªã±ãŒã·ã§ã³ã«Webã€ã³ã¿ãŒãã§ãŒã¹ããªãå Žåãäžèšã§èª¬æããããã«ãã¹ããŒãžã³ã°ãµãŒããŒã§ã®çµ±åãã¹ãã¯ãXUnitãã¹ãã®èµ·åã§æ§æãããŸãã ãã ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ã¯ãSelenuimã䜿çšããŠHTMLããããŒã¿ããŒã¹ãŸã§ã®ãã§ãŒã³å
šäœãå®å
šã«ãã¹ããããšéåžžã«äŸ¿å©ã§ãã
Seleniumã¯åŒ·åãªWebã¢ããªã±ãŒã·ã§ã³ãã¹ãã·ã¹ãã ã§ãããæ¡ä»¶ä»ãã§2ã€ã®éšåã«åããããšãã§ããŸãã
- Selenuim IDE-ãã©ãŠã¶ã§ãã¹ãã¹ã¯ãªãããéçºããã³å®è¡ããããã®ããŒã«ïŒãã©ã°ã€ã³ 'firefoxãšããŠå©çšå¯èœïŒã
- Selenium RCã¯ãSeleniumãµãŒããŒãšãã®äžäœã¯ã©ã€ã¢ã³ãããã®åæ£ã·ã¹ãã ã§ãããç°ãªããã©ãŠã¶ãŒã§ãã¹ããå®è¡ãããŸãã
æãããªçç±ããã2çªç®ã®ãªãã·ã§ã³ã«èå³ããããŸãã Selenuimã®ã€ã³ã¹ããŒã«ãšèšå®ã¯å€§ããªãããã¯ã§ããããããã®èšäºã«ã¯ãã€ã³ãããããŸããããã¹ãŠã®æ
å ±ã¯
ããã¥ã¡ã³ãã«ãã
ãŸã ã
åè
ã³ãããã®åã«ã³ãŒããã³ã³ãã€ã«ããã³ãã¹ããããã³ã«ãCIãæåã¢ãŒãã§å®è¡ããããšãã§ããŸãã ãã ããCIãµãŒããŒã䜿çšãããã®ããã»ã¹ã®èªååã¯ã¯ããã«äŸ¿å©ã§ãã ããã«ãCIãšãã€ããªãŒãã«ãã¯åããã®ã§ã¯ãªãããšãç解ããããšãéèŠã§ãã åŸè
ã§ã¯ããã°ãç¹å®ã§ããŸããã倧ããªé
延ãçºçããŸãããCIã®ç®æšã¯ãšã©ãŒã®è¿
éãªæ€åºã§ãã ç§ã®æèŠã§ã¯ããããžã§ã¯ãã®ã¢ã»ã³ããªãšãã¹ããéåžžã«é·ãæéãèŠããããã»ã¹ã§ããå Žåã«ã®ã¿ãå€éã¢ã»ã³ããªã¯CIã®éšåçãªä»£æ¿ãšããŠæ©èœããŸãã ããã«ããããžã§ã¯ãã«åäœãã¹ããšçµ±åãã¹ãã®äž¡æ¹ãããå Žåããããžã§ã¯ãã¢ã»ã³ããªã2ã€ã®éšåã«åå²ã§ããŸãïŒæåã®ïŒåäœãã¹ãä»ãïŒã¯ã³ããããããã³ã«å®è¡ããã2çªç®ã¯çµ±åãã¹ãä»ãã§å®è¡ãããŸã-1æéã«1å/æ¥
ãããã«
äžã§èª¬æããããœãªã¥ãŒã·ã§ã³ã¯åããŠã
å©çããããããŸãã ãã ãããåç¥ã®ããã«ãçè«ã¯æ®å¿µãªããåžžã«å®è·µã«å¯Ÿå¿ãããšã¯éããŸããã CIã·ã¹ãã ã®å®è£
ã«ã¯å€ãã®åé¡ã®è§£æ±ºãå¿
èŠã§ãããããã¹ãŠãçæ³çã«è§£æ±ºãããããã§ã¯ãããŸããã
æŠéæ©èœã«å¹æµããã¹ããŒãžã³ã°ãµãŒããŒã®ãªãœãŒã¹ã誰ããæäŸããå¯èœæ§ã¯éåžžã«å°ãããã»ãšãã©ã®å ŽåãCIã®ååã®1ã€ãæ ¹æ¬çã«æãªãæºæŸæ£ãã¹ããã·ã³äžã®äžèŠæš¡ã®ä»®æ³ãã·ã³ã«ãªããŸã-åæ§ã®ç°å¢ã§ã®ãã¹ãã ãã®ãããçµ±åãã¹ãã«ã¯åœåã®èšç»ãããã¯ããã«é·ãæéããããå¯èœæ§ããããŸãã ãããã£ãŠãç§ã®å Žåããç¶ç¶æ§ãã¯ãSVNããã¯ã§ã¯ãªããã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠãã¹ããäžæããŠå®è¡ããå¿
èŠããããŸããã
äžè¬ã«ãããŒã ã«ç¹å®ã®éçºæåãããå ŽåïŒCIã¯äžèœè¬ã§ã¯ãªããé©åãªåŠçãè¡ãããšã§äœæ¥ã®å質ãåäžãããããšãã§ããããŒã«ã«ãããªããšããæå³ã§ãïŒãCIã®å°å
¥ã¯æ£åœåãããŸãã
ããŠãããããæãéèŠãªããšã§ããå®è·µã瀺ããŠããããã«ãCIã·ã¹ãã ã®çµ±åã¯ããŒã ã®ã¿ã¹ã¯ã§ãã ããã解決ããã«ã¯ãéçºè
ããã¹ã¿ãŒã管çè
ã®äœæ¥ãå¿
èŠã«ãªããŸãã