åé¡ã¹ããŒãã¡ã³ãã®æ®µé
ãã®ãããæåã®ã¿ã¹ã¯ã¯ãWebãµãŒããŒãèµ·åãããªããžããªã®å€æŽã远跡ããjUnitãTestNGãããã³Seleniumã®ãã¹ããå®è¡ããããã·ã¹ãã ã«æããããšã§ããã æéãçµã€ã«ã€ããŠããã®ã¿ã¹ã¯ã¯ããããã®ããããªãã®ã§å€§ãããªããŸãããããã«ã€ããŠã¯åŸã§èª¬æããŸãã é£ããããšã§ã¯ãªãããã§ãããçµå±ã®ãšãããæåã®æèŠã¯ééã£ãŠããŸãã æ確ãªè¯å¿ãæã£ãŠãæäŸãããä»®æ³ãã·ã³ã«centos 6 x64ãã€ã³ã¹ããŒã«ããCIãããã€ãã®åãã§ã€ã³ã¹ããŒã«ããŸãããsudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key sudo yum install jenkins
åœç¶ãjdkãã€ã³ã¹ããŒã«ããjenkinsãã¹ã¿ãŒãã¢ããã«è¿œå ãããŠãããã©ããã確èªããå¿ èŠããããŸãã ãã®ãããªããšã§ãJenkins CIã®æåã®èµ·åã«å€±æããŸãã-Jenkinsã®ajpããŒãã¯ã以åã«ã€ã³ã¹ããŒã«ãããWebãµãŒããŒïŒããŒãã¿ã€ã ã®éãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ïŒã®1ã€ãšç«¶åããŠããŸããã æ§æãã¡ã€ã«ã§ajpãç¡å¹ã«ãããšããã¹ãŠãé©åã«é 眮ãããæçµçã«èªåã®ç®ã§ãã¹ãŠã®äžæè°ãèŠãããšãã§ããŸããã
ééã
ã»ããã¢ããäžã«å€ãã®ééããç¯ããã®ã§ãæéãç¯çŽããã人ã®ããã«çããªã¹ããæäŸããŸãã- ãããžã§ã¯ãéå±€ïŒããªãè€éãªéå±€äŸåé¢ä¿ãããå Žåã¯ãæ ããããŠèãåããäœãäœã«äŸåããŠããããèããªãã§ãã ãããçæ³çã«ã¯ããããã¹ãã§ãã
- ãã¹ãŠã®ãããžã§ã¯ããäžåºŠã«èšå®ããããšããªãã§ãã ããã åãããžã§ã¯ããæ©èœããäžéç¶æ ã«ãã次ã®ãããžã§ã¯ãã«åãæ¿ããŠãã ããã ããªãã¯ãã€ããã©ãã§ãããäœãæéãæã£ãŠããŸãã
- ãã¹ãŠã®äŸåãããžã§ã¯ãã®äžéæ§æãçµäºãããŸã§ããããžã§ã¯ãã®æ§æããªããªãã§ãã ããã å®è£ ããããšã決å®ããæ©èœã¯ãéåžžã«æéãããããããã®æ®µéã§ã¯ãŸã£ããã¿ã¹ã¯ã§ã¯ãªãå¯èœæ§ããããŸãã ãã©ã°ã€ã³ãäœæããããšã¯ãåžžã«æ£åœãªã¢ã¯ãã£ããã£ãšã¯éããŸããã
- ãããžã§ã¯ãã®ååã ç¶æ³ã«ãã£ãŠã¯ããããžã§ã¯ãã®ååãå€æŽãããšè²»çšããããå ŽåããããŸãã ãŸããååã«æ§é ãå«ãŸããŠããªã130ã®ãããžã§ã¯ãã®ååãå€æŽããå¿ èŠãããããšãçªç¶æããã«ãªã£ãå Žåã¯ã©ãã§ããããã ãã®ãããã²ãã®äžã§èæ¬ãæžããŠãæã§ååãå€æŽããããšã¯ã§ããŸãããããã¬ãšã«ãã€ã¶ããŸãã ç°¡åãªãã³ãããååãŸã§ïŒé·ãããŠã¯ãªãããæçšãªæ å ±ãäŒããã¹ãã§ãã ããšãã°ãåã補åã®è€æ°ã®ããŒãžã§ã³ãç°ãªãããŒãã§å®è¡ãããŠããå Žåã9587ãããŒãçªå·ã§ãããProjectAbbr9587ãã®ç²Ÿç¥ã§ãããã«ååãä»ããŠãã ããã ãã®ããŒãã³ã°ããªã·ãŒã«ãããçºèšå 容ãããã«ç解ããæ··ä¹±ããå¯èœæ§ãæžããããšãã§ããŸãã
- Jenkins CIãå®è¡ããäºå®ã®OSãéžæã§ããå Žåã¯ãèªä¿¡ã®ããäžçŽãŠãŒã¶ãŒã®å Žåã¯UnixãéžæããŠãã ããã Jenkinsããã®ä»ã®ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠãããŠãŒã¶ãŒã®ã¢ã¯ã»ã¹æš©ã«é¢ããåé¡ã®ã»ãšãã©ããããŸãã ãããé£ãããªãå Žåã¯ã1人ã®ãŠãŒã¶ãŒã«ä»£ãã£ãŠãã¹ãŠãå®è¡ããŠã¿ãŠãã ããã
- ãžã§ã³ãã³ã¹ããã€ãã¬ãŒããšã³ãã£ãã£ãçç£ããã®ã奜ã以äžã«èŠããŠãããŠãã ããã ãããã£ãŠãäºåã«ããŠãŒã¶ãŒjenkinsã«ä»£ãã£ãŠãèµ·åãããã¹ã¬ãããšããã»ã¹ã®æ倧æ°ãå¢ãããŸãã ç¹ã«ãè² è·ã®é«ãCIãµãŒããŒãããå Žå
- 衚瀺ããããã¹ãŠã®ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããªãã§ãã ããã å€ãã®å Žåãã1åéãã®äœ¿çšãã«ã¯ãã©ã°ã€ã³ãå¿ èŠã§ããããã®ãããªãã©ã°ã€ã³ã¯åºæ¬ã¹ã¯ãªããã«çœ®ãæããããšãã§ããŸãã 圹ã«ç«ã€ããšã¯äœãããŸããããäœåãªãªãœãŒã¹ã䜿ãæãããŸãïŒããã¯ChuckNorris Pluginã«ã¯åœãŠã¯ãŸããŸããïŒã
- äºåã«ãªãœãŒã¹ã®åŒ·åºŠãèŠç©ãããŸãã æ ŒçŽããã®ãçã«ããªã£ãŠããã¢ã»ã³ããªã®æ°ãèããŠãã ããã å®éã«å¿ èŠãªã¢ãŒãã£ãã¡ã¯ãã®æ°ã ãµãŒããŒã®ããã©ãŒãã³ã¹ãäœãå Žåã¯ãå€ãã®ãªãœãŒã¹ãæ¶è²»ããã¢ã»ã³ããªãåæã«èµ·åããªãããã«ã¢ã»ã³ããªã¹ã±ãžã¥ãŒã«ãæ€èšãã䜿çšããããªãœãŒã¹ã®æ°ãç£èŠããããªãå Žåã¯ãéå§ãããã¢ã»ã³ããªã®æ倧æ°ãå°ãªããšãããŸãã¯ãã以äžã§ããããšã確èªããŠãã ãããããžã§ã¯ãã
- jUnitãTestNGãªã©ã®æ å ±æäŸ ç¹ã«ã°ã«ãŒãåãããŠããªã5,000ãè¶ ãããŠããããã¹ããå®è¡ããå Žåããžã§ã³ãã³ã¹ã®ãããªçŸããçµè«ã§ãã£ãŠããå¿ ãããæçã§ã¯ãããŸããã ãã¶ããç°ãªãã¬ããŒãã§ãã¹ããåé 眮ããŠé åžããã®ãçã«ããªã£ãŠããŸããïŒ
- å®å šæ§ 圌女ã®ããšãå¿ããªãã§ãã ããã ãã¹ã¯ãŒãã¢ã¯ã»ã¹ãžã®åãæ¿ãã¯ã劚害è¡çºã«ç±äžããå人ã®ç±æãåãããã ãã§ãªãããããªããç§ãã¡ã®ããã«ãã¹ãŠãå£ããããšããé ã®ãå°çãã®å Žåã«ãããç§ã§ã¯ãªãã£ãããšããè°è«ã«åè«ãã蚌æ ãææžåãããŸãã
- Jenkins CIã¯éçºè ã«ãšã£ãŠè£å©çãªããŒã«ã§ããããšãå¿ããªãã§ãã ãããäœãã§ããªãå Žåã¯ããµã€ã¯ã«ãç¹°ãè¿ããŠã¯ãããŸããã ããããã1é±é以å ã«çŽ æŽããã決å®ãé ã«æµ®ãã¶ãããããŸããããåãé±ã«ãã®æ©èœãããã»ã©å¿ èŠã§ãªããšããèªèãæ¥ããããããŸããã æã«ã¯ãã®ç¥æµããããžã§ã¯ããããŒãžã£ãŒã«èª¬æããå¿ èŠããããŸãããããžã§ã¯ããããŒãžã£ãŒã¯ããã¹ãŠãçŸãããšããé¡æãåžžã«æ£åœåããããšã¯éããŸããã
誰ãããã®ãªã¹ãã«è¿œå ãããã®ããããšæããŸãã ãããããã¹ãŠã®æãéèŠãªããšã®ããã«æãããŸãã ãããŠããã®çããªã¹ããå€ãã®äººã®æéãç¯çŽããããšãæ¬åœã«é¡ã£ãŠããŸãã
æåã®è©Šã¿
åœç¶ã®ããšãªãããæåã®æã¡äžãåŸãéãåãèŠãã®ã¯ç§ã«ãšã£ãŠã¯çããããšã§ãããããã®è²ã¯ããã«ã¯å€ãããŸããã§ããã SVNãšGitãã»ããã¢ãããããããžã§ã¯ãéå±€ãé åžããŸãããããã¹ãŠãæ©èœããŠããããã«èŠããŸããã ç¿æ¥ã1ã€ã®ã¿ã¹ã¯ã§4ã€ã®äºå®ãããã¢ã»ã³ããªããããéå§ãããã¢ã»ã³ããªã¯çŽ9æéç¶ããŸããã ãæªããã³ããããè¡ãããã®ã¯ãã®æ¥ã«ãªã£ãŠããããããŠããããã¹ãã¯ç¡éã®åŸ æ©ç¶æ ã«ãªããŸããã Build-timeoutãã©ã°ã€ã³ãå©ãã«ãªããŸããã äžæ¹ããç¡éã®ã¢ã»ã³ããªãã«ãã¹ããããžã§ã¯ãããããŸããã WebãµãŒããŒãå®è¡ããã¢ã¯ã·ã§ã³ãã°ãã¢ã»ã³ããªã«åºåããAntã¿ã¹ã¯ãããã¯éåžžã«äŸ¿å©ã§ããã åœç¶ããããã®ãµãŒããŒã¯æ°æ¥éå®è¡ç¶æ ã«ãªãå¯èœæ§ããããããããåæ¢ããäžå¿ èŠãªå¿ èŠãªãã§ã¯æå³ããããŸããã ä»äºããããã顧客ã«çµæãèŠãããã§ããŸãã 1æ¥ã®ç¹å®ã®æéã«ãã©ã³ãã®æŽæ°ããããã©ããããã§ãã¯ããååšããå Žåã¯æŽæ°ãããŠã³ããŒãããŠã¢ã»ã³ããªãåèµ·åãããããžã§ã¯ããäœæããããšã«ããŸããã äœããããŸã質åãæãããããããŒãžã£ãŒã®åå¿ã¯ãããªããããžã§ã¯ãã¢ã»ã³ããªã®ã¹ããªãããèµ€ãã®ã§ããïŒ ããããããåå10æã§ãã¢ã»ã³ããªã¯éå»6æéãã°ã«äœãæžã蟌ãŸãªãã£ãããã§ããã ã¹ããªãããåæç»ãã解決çã¯ãŸã èŠã€ãããŸããã§ããïŒ11é ãåç §ïŒããããã¯é£ãããªããšæããŸãã éå®äºã¢ã»ã³ããªã«ã¯ä»ã®åé¡ããããŸãããå¥ã®ãµãŒããŒã§2ã€ã®ãããžã§ã¯ããäœæããã«åäœãã¹ããå®è¡ããæ¹æ³ã§ããïŒ å®éããããå®è£ ããã«ã¯ã2ã€ã®antã¿ã¹ã¯ 'aïŒ' start-server 'ãš' junit 'ãå®è¡ããå¿ èŠããããŸããæåã®ã¿ã¹ã¯ã¯çµäºããŸããã å¥ã®ãµãŒããŒã§å°ããçç±ïŒãã¹ãã§ã¡ã€ã³ã®WebãµãŒããŒããã¹ãããã®ã¯è¯ããªãããã§ãã ããã«ããã¹ãçšã®WebãµãŒããŒã¯ãäœåãªãªãœãŒã¹ãç¡é§ã«ããªãããã«ãå¿ èŠã«å¿ããŠãåäœãã¹ãã®æéã®ã¿èµ·åããå¿ èŠããããŸãã ã¢ãªã®ãã¹ãŠã®å¯èœæ§ãæãåºããŠã次ã®ãããªããšãããããšã«ããŸããïŒ <target name="start-server-with-units"> <parallel> <daemons> <antcall target="start-server"> </antcall> </daemons> <sequential> <waitfor maxwait="10" maxwaitunit="minute"> <socket server="localhost" port="${port}" /> </waitfor> <antcall target="junit"> </antcall> </sequential> </parallel> </target>
æ£åŒã«ã¯ããµãŒããŒãèµ·åãããŸã§åŸ æ©ããåäœãã¹ããå®è¡ãããã¹ããå®äºããããµãŒããŒã®é»æºãåããŸãã å®éã«å¿ èŠãªãã®ã Jenkinsã®ããŒã«ã§ã¯ããã®ãããªãããžã§ã¯ããè¡ãããšã¯äžå¯èœã ãšæããŸãã
æ
ç§ã®æèŠã§ã¯ããã鳎ããã®ãµããŒãã¯ãžã§ã³ãã³ã¹ã§ã¯äžååã§ãã ãSvnïŒ//svn.adressïŒport / $ {branchName}ãïŒbranchNameã¯ç°å¢å€æ°ïŒã¯ãå€ãã®å Žåãåé¡ã解決ããŸããã ãŸãããã®ãããªã¢ã»ã³ããªã¯æåãŸãã¯ããã©ã«ãã®ãªãã·ã§ã³ã§ã®ã¿éå§ã§ããŸãããPall SCMã䜿çšããã¢ã»ã³ããªã®éå§ã¯ãã§ã«æããã«äžå¯èœã§ãã 誰ãããã®çš®ã®æ©èœãå¿ èŠãšããå ŽåïŒç§ã¯ãŸã ãããå¿ èŠãšããŠããªãããšãå€æããããïŒãæ確ãªè¯å¿ããã£ãŠã圌ã¯èµ·åæã«branchNameã®ããã©ã«ãå€ãèµ·åæã«èšå®ãããå€ã«å€æŽããŠãããããžã§ã¯ããéå§ããgroovyã¹ã¯ãªãããäœæã§ããŸãéåžžã®ã¹ã±ãžã¥ãŒã«ãããã³å¿ èŠã«å¿ããŠãããŒãžã§ã³ç®¡çã·ã¹ãã ã§æŽæ°ã®ãã§ãã¯ãè¿œå ããŸãã ãã®ã¢ãããŒãã®æ¬ ç¹ã¯ãäžé£ã®äžèŠãªã¢ã»ã³ããªã§ã¯ãæçšãªãã®ãèŠã€ããããšãé£ããããšã§ãã ãããããããéèŠã§ã¯ãããŸãããåãpostBuild groovyã¹ã¯ãªããã§ããã¢ã€ãã«ãã¢ã»ã³ããªãåé€ãããããã«ããåºå®ã§ããŸãã æŽæ°ã確èªããå¥ã®ãããžã§ã¯ããäœæã§ããå Žåããã®ã°ã«ãŒãŽã£ãŒãªã¹ã¯ãªããã®å¥è·¡ãæãä»ã䟡å€ã¯ãããŸããïŒçµè«ïŒæã ãå¥ã®èªè»¢è»ãæžãããã1ã€ã®ãããžã§ã¯ããäœæãã䟡å€ãããå ŽåããããŸãã
ãŸãããã鳎ããã®åé¡ã«ã Build Name Setter Pluginãå«ããŸãã ãã«ãçªå·ã®ä»£ããã«ãã©ã³ãåã衚瀺ãããŠããã®ã¯ãšãŠãããããšã§ãããããã§ãããã»ã©ç°¡åã§ã¯ãããŸããã ãªããªã ãã¹ãŠã®å€æ°ã«ãæååã®æ倧é·ãããªãã³ã°ããããã«äœ¿çšã§ããé·ãå±æ§ïŒç°å¢å€æ°ãªã©ïŒãããããã§ã¯ãããŸããã åæããŠããã®å€èŠ³ã¯ããŸãåæ©ä»ããããŠããŸããããé·ãã30ã§ã¯ãªã255æåã®å Žåã¯ã©ãã§ããããïŒ
ãã®åé¡ã¯ãpreBuild groovyã¹ã¯ãªããã§åã³è§£æ±ºã§ããŸãã ããããç§ã®ç¶æ³ã§ã¯ããã©ã³ãåãæçãªãã®ã«ããããšãäŸé Œããæ¹ãç°¡åã§ãããã»ã©é·ãã¯ãããŸããã§ããã èªè»¢è»ã§ã¯ãªãåžžèã§äœããã®äžäŸ¿ã解決ããã®ã¯éåžžã«äŸ¿å©ã§ãã
èªè»¢è»
ç§ãã¡ã¯ç人ã§ãããç§ãã¡ã¯çãäœããã®å¿«é©ããæ±ããŠããŸãã ãã©ã°ã€ã³ãæžããããããŸããã§ããã劥åãã人ã¯ããŸããã§ããããçµæãéæãããã£ãã®ã§ãã ãã®çç±ãããç§ã¯ããã§äœããã®åœ¢ã§ç§ã«ãšã£ãŠç掻ã楜ã«ããŠããããã¹ãŠã®èªè»¢è»ã«ã€ããŠèª¬æããŸãã if(manager.build.result == hudson.model.Result.ABORTED){ manager.build.@result = hudson.model.Result.SUCCESS }
ãªããªã ã¯ãã¹ãã¯ãªãã¯ããã ãã§å®äºãããããžã§ã¯ãïŒãã¢ã»ã³ããªããã£ã³ã»ã«ãããïŒããããç°è²ã®ããŒã«ã«éåžžã«èœã¡èŸŒãã§ããã®ã§ãã¢ã»ã³ããªãæåããããã£ãïŒçµ±èšãæãªãããªãããã«ããã¹ãŠãæ£ããããšãç¥ã£ãŠããïŒ ã ãã©ã°ã€ã³ãå®è£ ãããã©ã°ã€ã³ã¯èŠã€ãããŸããã§ãããã Groovy Postbuildãã©ã°ã€ã³ãèŠã€ããŸããã ãã®ãããgroovyã®postbuild APIïŒãããåŒã³åºããŸãããïŒã¯buildSuccessïŒïŒã¡ãœãããæäŸããŠãæåãããã«ãç¶æ ãªã©ãä»ã®ç¶æ ã«èšå®ããŸãã åé¡ã¯ããã®ã¡ãœãããäœãããªãããšã§ãã 家æå šå¡ãã¢ã»ã³ããªã®çŸåšã®ç¶æ ãæªåãããããšãã§ããã ãã§ãã Abortedã¯Successãããã¯ããã«æªããã¢ã»ã³ããªã®ç¶æ ã¯å€åããŸããã§ããã ãã€ãŠJenkins'eã§ãã¢ã»ã³ããªã®ã¹ããŒã¿ã¹ãå€æŽããããã®æ¬æ Œçãªæ©èœãå®è£ ããèŠæ±ã«3ã€ã®åé¡ãèŠã€ãããŸããã äžèšã®ã³ãŒãã¯éåžžã«åçŽãªã®ã§ãé ã«åãŸããŸããã ãgroovyã«ã¯åå°ã®é¡äŒŒç©ãããã®ã§ã¯ãªããããšãã質åãèªåèªçããŸããã ããªã«ã®
ãã«ãããã¢ãŒã·ã§ã³ ã ã¯ãã Promoted Builds Pluginã®ååšã«ã€ããŠã¯ç¥ã£ãŠããŸãããç§ã®å Žåã¯åã³åœ¹ã«ç«ã¡ãŸããã§ããã æäœæ¥ã§ã®ã¿æŽæ°ãããæåãã©ã³ããéžæãããµãŒããŒã1ã€ããã2æéããšã«å®è¡ãããã®ã¿ãŒãã©ã³ãã®æåã®ãã©ã³ããèªèããããŠã³ããŒãããŠåäœãã¹ããå®è¡ãããããžã§ã¯ãããããŸããã ãããžã§ã¯ãå ã®ã¢ã»ã³ããªã®æ°ã¯ç°ãªã£ãŠããŸããã åæã«ãããææ°ã®åäœãã¹ããæåããå Žåã«ã¹ã¿ãŒãäžããããšã決å®ãããŸããã ããã«ãã¹ã¿ãŒã¯æåã®ãµãŒããŒã®å®äºæã«ã®ã¿å²ãåœãŠãããŸãã åæããŸããããã¢ãŒãããããã©ã°ã€ã³ã®ããªãçããå®è£ ã¯ãå人çãªããŒãºã®ããã ãã«åŒ·åãããŸããã
item = hudson.model.Hudson.instance.getItem("jUnitJobName") def build = item.getLastBuild() if(build.getResult() == null){ build = build.getPreviousCompletedBuild() } def result = build.getResult() if(result == hudson.model.Result.SUCCESS){ manager.addBadge("star-gold.gif", "Success Unit Tests") } else { manager.addBadge("warning.gif", "Unit Tests Failure") }
æåãã¹ããšã®æŠã
ããŸããŸãã¹ã¿ãŒãç°ãªã£ãŠããŸããã ãããŠãäœããããŸãæ©èœããªãçç±ã圌ããç¥ã£ãŠããå¯èœæ§ãéåžžã«é«ãã®ã¯éåžžã«æ®å¿µã§ããã圌ãã¯äºåã«è²¬ä»»ãå éãã«ããããšããŠããç§ã¯ãã¹ãŠãããŸããã£ãããããã¯å£ãããããªãã¯ä¿®çããŠããããšäž»åŒµãã ãã®ãããªå Žåã AnsiColor Pluginã¯éåžžã«åœ¹ç«ã¡ãŸãã ãããæ©èœããªãå Žåã¯ãããæ»æçãªæ段ã䜿çšããããšã匷ããå§ãããŸãïŒ Build User Vars Plugin-å人çãªæ±ãã«ãããã¢ã¯ã·ã§ã³ãããæ¥ãããããªããŸãïŒãã·ã³ã¯ã©ã®ããã«ç§ã®ååãèªèããŸãããïŒïŒ äž»ãªããšã¯ç¡çãããªãããšã§ããã¹ã¯ãªãããæ£åžžã«æ©èœããªãç¶æ³ãçºçããå¯èœæ§ããããŸãããã¹ã¿ãŒã¯ã³ã³ãœãŒã«ã«æ¬¡ã®ããã«æžããããã3æ¥éã®è³ªåãæããŸããã ãã®å Žåããã¹ãŠã®ç³ã¯ããªãã«é£ã³ãŸãã 誰ãæãè ã®ããã«èŠããã®ã奜ãã§ã¯ãããŸããã ããããããªãããããå°ç¡ãã«ããå Žå-ãã®ãããªãã®ãæã«å ¥ããŠãã ããïŒ ïŒ
ããã
ãŸããçµè«ãšããŠãç§ã¯ç©äºãæžããŸã-ç§ã¯ãããæ¬åœã«å¥œãã§ãããç§ã¯ãã©ã°ã€ã³ãæžããŸããã å®è£ ãããŠãããããããŸããããèŠã€ãããŸããã§ããã ãã³ãã«ã€ããŠ-æè¬ããŸããèµ·åæã«ãã«ããèªåéå§ããŸã ã ããšãã°ãé»åãµãŒãž/å äžè¶³ã«ããããµãŒããŒãåèµ·åãããŸããã JenkinsCIã¯ãããéå§ããŸããããåžžã«å®è¡ããå¿ èŠããããããžã§ã¯ãã¯éå§ããŸããã§ãããïŒ ãã³ãå®è¡ãããã³ã«-ããã¯ã°ãããŠããŸãã ãããã£ãŠããã§ãã¯ããŒã¯ãæ¬åœã«å¿ èŠã§ãããåèµ·ååŸã«ãã®ãããžã§ã¯ããéå§ããå¿ èŠããããŸããïŒã
SVN \ Gitã«ã¹ã¿ã ãã©ã³ã+ãããã¯ãäžèšã®ã€ã¡ãŒãžã§æŽæ°ãããå Žåãæ¢åã®ããŒã«ã«å€æŽããã¹ãŠäžæžãããŸãã ããã«ãããããããéåžžã«äžäŸ¿ã«ãªããŸãã ãããããã£ã³ã»ã«ããç®çã®ãã©ã³ããããã¬ãŒãããããããé©çšãçŽãã¹ã¯ãªããã¯æ¬åœã«å¥œãã§ã¯ãããŸããã
ã·ã¹ãã ã¡ãã»ãŒãž ãjenkins \ configuration \ System Messageãã®ããã©ãŒãã³ã¹ã®çµæãããã¥ãŒã ãã§ãªããã¹ãŠã®ããŒãžã«è¡šç€ºãããããšã äžè¬ã«ãå€èŠ³ãå€æŽããããã®ãã©ã°ã€ã³ãå¢ãããããšæããŸãã ãªããªã ãŸã第äžã«ãããã¯ç®¡çè ã®äœæ¥ã容æã«ããéçšã«é¢ãã質åãå°ãªãã»ã©ãéçºã®ããã®æéãæ®ããŸãã
ãã©ã°ã€ã³ãåæ§ç¯ããŸãã Rebuild Pluginã«ä»¥åã®ãã«ããåæ¢ããæ¹æ³ãåŠãã§ãããããå Žåã¯ããªãã«ããã¿ã³ãã¯ãªãã¯ããŠã圌ã¯å¥ã®ãã«ãã®ã¿ãèšç»ããŸããã
PSç§ã欲ãããã®ã¯å¿ éåãšã¯ã»ã©é ãããšãç¥ã£ãŠããŸããããããã¯ããããå®å šãªå¹žçŠã®ããã«ååã§ã¯ãªããã®ã§ãã ãã®èšäºã誰ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã