RIT 2019 ã§ãç§ãã¡ã®ååã¢ã¬ã¯ãµã³ããŒã»ã³ããã³ãã¯æ¬¡ã®ããã«è¿°ã¹ãŸããã
ãŒãã¬ãã«
ããŒãã¬ãã«ãªããŠãªãããããªããšã¯ç¥ããªãã
æ ç»ãã«ã³ããŒã»ãã³ããã®ãã¹ã¿ãŒã»ã·ã
CIAN ã«ãããèªååã¯ãäŒç€Ÿèšç«ãã 14 幎åŸã«å§ãŸããŸããã åœæã®éçºããŒã ã¯35åã§ããã ä¿¡ããããªãã§ãããïŒ ãã¡ãããèªååã¯äœããã®åœ¢ã§ååšããŠããŸããããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšã³ãŒãé ä¿¡ãšããå¥ã®æ¹åæ§ã 2015 幎ã«å ·äœåãå§ããŸããã
åœæãPythonãC#ãPHP ã®å·šå€§ãªã¢ããªã¹ã Linux/Windows ãµãŒããŒã«ãããã€ãããŠããŸããã ãã®ã¢ã³ã¹ã¿ãŒãå±éããã«ã¯ãæåã§å®è¡ããäžé£ã®ã¹ã¯ãªãããå¿ èŠã§ããã ãŸããã¢ããªã¹ã®çµã¿ç«ãŠãè¡ããããã©ã³ãã®ããŒãžãæ¬ é¥ã®ä¿®æ£ãããã«ãå ã®ç°ãªãäžé£ã®ã¿ã¹ã¯ã«ãããåæ§ç¯ã®éã«ç«¶åãçºçããçã¿ãšèŠãã¿ãããããããŸããã ç°¡ç¥åããããã»ã¹ã¯æ¬¡ã®ããã«ãªããŸãã
ç§ãã¡ã¯ããã«æºè¶³ã§ãããç¹°ãè¿ãå¯èœã§èªååããã管çãããããã«ããšãããã€ã¡ã³ãã®ããã»ã¹ãæ§ç¯ããããšèããŠããŸããã ãã®ããã«ã¯ CI/CD ã·ã¹ãã ãå¿
èŠã§ãããTeamcity ã®ç¡æããŒãžã§ã³ãš Jenkins ã®ç¡æããŒãžã§ã³ã®ã©ã¡ãããéžæããŸããããªããªããç§ãã¡ã¯åœŒããšååããŠãããæ©èœã»ããã®ç¹ã§ã©ã¡ããç§ãã¡ã«é©ããŠããããã§ãã ããæ°ãã補åãšã㊠Teamcity ãéžæããŸããã åœæãç§ãã¡ã¯ãŸã ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£ã䜿çšããŠãããã倧éã®ã¿ã¹ã¯ããããžã§ã¯ããçºçãããšã¯äºæ³ããŠããŸããã§ããã
ç¬èªã®ã·ã¹ãã ã®ã¢ã€ãã¢ã«ãã©ãçã
Teamcity ã®å®è£ ã«ããåé€ãããã®ã¯æåäœæ¥ã®äžéšã ãã§ããæ®ã£ãŠããã®ã¯ããã« ãªã¯ãšã¹ãã®äœæãJira ã§ã®ã¹ããŒã¿ã¹ããšã®èª²é¡ã®ææ Œãããã³ãªãªãŒã¹ãã課é¡ã®éžæã§ãã Teamcity ã·ã¹ãã ã¯ããã«å¯Ÿå¿ã§ããªããªããŸããã ãããªãèªååã®éãéžæããå¿ èŠããããŸããã Teamcity ã§ã¹ã¯ãªããã䜿çšãããããµãŒãããŒãã£ã®èªååã·ã¹ãã ã«åãæ¿ãããªãã·ã§ã³ãæ€èšããŸããã ãããæçµçã«ã¯ãåœç€Ÿç¬èªã®ãœãªã¥ãŒã·ã§ã³ã®ã¿ãæäŸã§ããæ倧éã®æè»æ§ãå¿ èŠã§ãããšå€æããŸããã ããããIntegro ãšåŒã°ããå éšèªååã·ã¹ãã ã®æåã®ããŒãžã§ã³ãç»å Žããæ¹æ³ã§ãã
Teamcity ã¯ãã«ãããã³å±éããã»ã¹ã®éå§ã¬ãã«ã§ã®èªååã«åãçµãã§ããŸãããIntegro ã¯éçºããã»ã¹ã®ãããã¬ãã«ã®èªååã«çŠç¹ãåœãŠãŠããŸããã Jira ã§ã®èª²é¡ã«é¢ããäœæ¥ãšãBitbucket ã§ã®é¢é£ãœãŒã¹ ã³ãŒãã®åŠçãçµã¿åãããå¿ èŠããããŸããã ãã®æ®µéã§ãIntegro ã¯ããŸããŸãªçš®é¡ã®ã¿ã¹ã¯ãåŠçããããã®ç¬èªã®ã¯ãŒã¯ãããŒãæã¡å§ããŸããã
ããžãã¹ ããã»ã¹ã®èªååã®å¢å ã«ãããTeamcity ã§ã®ãããžã§ã¯ããšå®è¡ã®æ°ãå¢å ããŸããã ããã§ãæ°ããªåé¡ãçºçããŸãããç¡æã® Teamcity ã€ã³ã¹ã¿ã³ã¹ 3 ã€ã§ã¯äžåå (ãšãŒãžã§ã³ã 100 ã€ãšãããžã§ã¯ã 3) ã ã£ãã®ã§ãå¥ã®ã€ã³ã¹ã¿ã³ã¹ (ãšãŒãžã§ã³ã 100 ã€ãšãããžã§ã¯ã XNUMX) ãè¿œå ããããã«ã€ã³ã¹ã¿ã³ã¹ãè¿œå ããŸããã ãã®çµæã管çãé£ããè€æ°ã®ã¯ã©ã¹ã¿ãŒãããªãã·ã¹ãã ã«ãªããŸããã
4 çªç®ã®ã€ã³ã¹ã¿ã³ã¹ã®åé¡ãçãããšãã4 ã€ã®ã€ã³ã¹ã¿ã³ã¹ããµããŒãããããã®ç·ã³ã¹ãããã¯ãå¶éå
ã§ã¯ãªããªã£ããããç§ãã¡ã¯ãã®ãŸãŸã§ã¯ãããªãããšã«æ°ã¥ããŸããã ææã® Teamcity ã賌å
¥ããããç¡æã® Jenkins ãéžæããããšããçåãçããŸããã ç§ãã¡ã¯ã€ã³ã¹ã¿ã³ã¹ãšèªååèšç»ãèšç®ããJenkins ã䜿çšããããšã«æ±ºããŸããã æ°é±éåŸãç§ãã¡ã¯ Jenkins ã«åãæ¿ããè€æ°ã® Teamcity ã€ã³ã¹ã¿ã³ã¹ã®ç¶æã«äŒŽãé çã®çš®ãããã€ã解æ¶ããŸããã ãã®ãããç§ãã¡ã¯ Integro ã®éçºãš Jenkins ã®ã«ã¹ã¿ãã€ãºã«éäžããããšãã§ããŸããã
åºæ¬çãªèªåå (ãã« ãªã¯ãšã¹ãã®èªåäœæãã³ãŒã ã«ãã¬ããžããã®ä»ã®ãã§ãã¯ã®åéãšå ¬éãšãã圢ã§) ã®æé·ã«äŒŽããæåãªãªãŒã¹ãå¯èœãªéãæŸæ£ãããã®äœæ¥ãããããã«ä»»ããããšãã匷ãèŠæãé«ãŸã£ãŠããŸãã ããã«ãå瀟ã¯ç€Ÿå ã§ãã€ã¯ããµãŒãã¹ãžã®ç§»è¡ãéå§ããŸããããããã«ã¯é »ç¹ãªãªãªãŒã¹ãå¿ èŠã§ãããçžäºã«åå¥ã«ãªãªãŒã¹ããå¿ èŠããããŸããã ãã®ããã«ããŠãåŸã ã«ãã€ã¯ããµãŒãã¹ã®èªåãªãªãŒã¹ã«å°éããŸãã (ããã»ã¹ã®è€éãã®ãããçŸåšã¯ã¢ããªã¹ãæåã§ãªãªãŒã¹ããŠããŸã)ã ãããããã€ãã®ããã«ãæ°ããªè€éããçããŸããã
ãã¹ããèªååããŸã
ãªãªãŒã¹ã®èªååã«ãããäžéšã®ãã¹ã段éãçç¥ãããããšããããéçºããã»ã¹ãå éãããŸããã ãããŠããã«ãããäžæçãªå質ã®äœäžãçºçããŸããã äºçŽ°ãªããšã®ããã«èãããŸããããªãªãŒã¹ã®å éã«äŒŽãã補åéçºææ³ã®å€æŽãå¿
èŠã«ãªããŸããã ãã¹ãã®èªååããªãªãŒã¹ãããã³ãŒããšãã®äžã®ãã°ã«å¯Ÿããéçºè
ã®å人責任 (ããã§ã¯ééçãªçœ°éã§ã¯ãªãããé ã®äžã§ã¢ã€ãã¢ãåãå
¥ãããããšã«ã€ããŠè©±ããŠããŸã) ã課ãããšãããã³æ¬¡ã®æ±ºå®ã«ã€ããŠèããå¿
èŠããããŸãããèªåãããã€ã¡ã³ããéããŠã¿ã¹ã¯ããªãªãŒã¹ãããã©ããã
å質äžã®åé¡ã解決ããããã«ãç§ãã¡ã¯ XNUMX ã€ã®éèŠãªæ±ºå®ã«è³ããŸãããã«ããªã¢ ãã¹ãã®å®æœãéå§ããéå°ãªãšã©ãŒã«èªåçã«å¯Ÿå¿ãããšã©ãŒ ããã¯ã°ã©ãŠã³ãã®èªåç£èŠãå°å ¥ããŸããã XNUMX ã€ç®ã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãã³ãŒããæ¬çªç°å¢ã«å®å šã«ãªãªãŒã¹ãããåã«æãããªãšã©ãŒãçºèŠããããšãã§ããXNUMX ã€ç®ã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãæ¬çªç°å¢ã§ã®åé¡ã«å¯Ÿããå¿çæéãççž®ãããŸããã ãã¡ããééãã¯èµ·ãããŸãããç§ãã¡ã¯ééããä¿®æ£ããããšã§ã¯ãªããééããæå°éã«æããããšã«æéãšåŽåã®ã»ãšãã©ãè²»ãããŸãã
èªååããŒã
çŸåšãåœç€Ÿã«ã¯ 130 åã®éçºè
ã¹ã¿ããããããä»åŸãç¶ç¶çã«éçºãç¶ããŠãããŸãã
DevOps ã¯ãCIAN ãµã€ãã®éçº/ããŒã¿ç°å¢ã§ãã Integro ç°å¢ãæ åœããéçºè ãåé¡ã解決ããç°å¢ãã¹ã±ãŒãªã³ã°ããããã®æ°ããã¢ãããŒããéçºããã®ãæ¯æŽããŸãã Integro ã®éçºæ¹åã§ã¯ãIntegro èªäœãšé¢é£ãµãŒãã¹ (JenkinsãJiraãConfluence çšã®ãã©ã°ã€ã³ãªã©) ã®äž¡æ¹ãæ±ããéçºããŒã åãã®è£å©ãŠãŒãã£ãªãã£ãã¢ããªã±ãŒã·ã§ã³ãéçºããŸãã
DI ããŒã ã¯ãã¢ãŒããã¯ãã£ãã©ã€ãã©ãªãéçºã¢ãããŒãã瀟å ã§éçºãããã©ãããã©ãŒã ããŒã ãšååããŠäœæ¥ããŸãã åæã«ãCIAN å ã®éçºè ã¯å šå¡ãããŒã ã®ããŒãºã«åãããŠãã€ã¯ããªãŒãã¡ãŒã·ã§ã³ãäœæããããèªååãããã«æ¹åããæ¹æ³ã«é¢ããã¯ãŒã«ãªã¢ã€ãã¢ãå ±æããããããªã©ãèªååã«è²¢ç®ã§ããŸãã
CIAN ã®èªååã®ã¬ã€ã€ãŒã±ãŒã
èªååã«é¢äžãããã¹ãŠã®ã·ã¹ãã ã¯ãããã€ãã®å±€ã«åå²ã§ããŸãã
- å€éšã·ã¹ãã (JiraãBitbucket ãªã©)ã éçºããŒã ã¯åœŒããšååããŠäœæ¥ããŸãã
- ã€ã³ãã°ããã©ãããã©ãŒã ã ã»ãšãã©ã®å Žåãéçºè ã¯ãããçŽæ¥æäœããŸãããããã¹ãŠã®èªååãå®è¡ãç¶ããã®ã¯ããã§ãã
- é ä¿¡ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãããã³æ€åºãµãŒãã¹ (JekninsãConsulãNomad ãªã©)ã 圌ãã®å©ããåããŠãã³ãŒãããµãŒããŒã«ãããã€ãããµãŒãã¹ãçžäºã«åäœããããšã確èªããŸãã
- ç©çå±€ïŒãµãŒããŒãOSãé¢é£ãœãããŠã§ã¢ïŒã ç§ãã¡ã®ã³ãŒãã¯ãã®ã¬ãã«ã§åäœããŸãã ããã¯ãç©çãµãŒããŒãŸãã¯ä»®æ³ãµãŒã㌠(LXCãKVMãDocker) ã®ããããã«ãªããŸãã
ãã®èãæ¹ã«åºã¥ããDIããŒã å ã§æ åœé åãåæ ããŠããŸãã æåã® XNUMX ã€ã®ã¬ãã«ã¯ Integro éçºæ¹åã®è²¬ä»»ã®é åã«ãããæåŸã® XNUMX ã€ã®ã¬ãã«ã¯ãã§ã« DevOps ã®è²¬ä»»ã®é åã«ãããŸãã ãã®åé¢ã«ãããç§ãã¡ã¯ãäºãã«è¿ãã«ããŠåžžã«ç¥èãçµéšã亀æã§ãããããä»äºã«éäžããããšãã§ããçžäºäœçšã劚ããããšã¯ãããŸããã
ã€ã³ãã°ã
Integro ã«çŠç¹ãåœãŠããã¯ãããžãŒ ã¹ã¿ãã¯ããå§ããŸãããã
- CentOS 7
- Docker + Nomad + Consul + Vault
- Java 11 (å€ã Integro ã¢ããªã¹ã¯ Java 8 ã«æ®ããŸã)
- Spring Boot 2.X + Spring Cloud Config
- PostgreSQL 11
- RabbitMQã®
- ã¢ãããã»ã€ã°ãã€ã
- ã«ã ã³ã (åã蟌ã¿)
- ã°ã©ãã¡ã + ã°ã©ãã¡ã€ã + ããã¡ããŠã¹ + ã€ã§ãŒã¬ãŒ + ELK
- Web UI: React (CSR) + MobX
- SSO: ããŒã¯ããŒã¯
ç§ãã¡ã¯ãIntegro ã®åæããŒãžã§ã³ã®ã¢ããªã¹ã®åœ¢ã§ã¬ã¬ã·ãŒãæã£ãŠããŸããããã€ã¯ããµãŒãã¹éçºã®ååãéµå®ããŠããŸãã åãã€ã¯ããµãŒãã¹ã¯ç¬èªã® Docker ã³ã³ãããŒã§å®è¡ããããµãŒãã¹ã¯ HTTP ãªã¯ãšã¹ããš RabbitMQ ã¡ãã»ãŒãžãä»ããŠçžäºã«éä¿¡ããŸãã ãã€ã¯ããµãŒãã¹ã¯ Consul ãéããŠãäºããèŠã€ããŠãªã¯ãšã¹ããè¡ããSSO (KeycloakãOAuth 2/OpenID Connect) ãéããŠèªå¯ãæž¡ããŸãã
å®éã®äŸãšããŠã次ã®æé ã§æ§æããã Jenkins ãšã®å¯Ÿè©±ãèããŠã¿ãŸãããã
- ã¯ãŒã¯ãããŒç®¡çãã€ã¯ããµãŒãã¹ (以äžããã㌠ãã€ã¯ããµãŒãã¹ãšåŒã³ãŸã) ã¯ãJenkins ã§ãã«ããå®è¡ããããšèããŠããŸãã ãããè¡ãããã«ã圌㯠Consul ã䜿çšã㊠Jenkins ãšçµ±åããããã®ãã€ã¯ããµãŒãã¹ (以äžãJenkins ãã€ã¯ããµãŒãã¹ãšåŒã³ãŸã) ã® IP:PORT ãèŠã€ããããã«éåæãªã¯ãšã¹ããéä¿¡ããŠãJenkins ã§ã®ãã«ããéå§ããŸãã
- ãªã¯ãšã¹ããåä¿¡ãããšãJenkins ãã€ã¯ããµãŒãã¹ã¯ãžã§ã ID ãçæããŠå¿çããŸãããžã§ã ID ã¯ãäœæ¥ã®çµæãèå¥ããããã«äœ¿çšã§ããŸãã åæã«ãREST API åŒã³åºããä»ã㊠Jenkins ã§ã®ãã«ããããªã¬ãŒããŸãã
- Jenkins ã¯ãã«ããå®è¡ããå®äºåŸãå®è¡çµæãå«ã Webhook ã Jenkins ãã€ã¯ããµãŒãã¹ã«éä¿¡ããŸãã
- Webhook ãåä¿¡ãã Jenkins ãã€ã¯ããµãŒãã¹ã¯ããªã¯ãšã¹ãåŠçã®å®äºã«é¢ããã¡ãã»ãŒãžãçæããå®è¡çµæãããã«æ·»ä»ããŸãã çæãããã¡ãã»ãŒãžã¯ RabbitMQ ãã¥ãŒã«éä¿¡ãããŸãã
- RabbitMQ ãéããŠããããªãã·ã¥ãããã¡ãã»ãŒãžã¯ Flow ãã€ã¯ããµãŒãã¹ã«å°éãããªã¯ãšã¹ããšåä¿¡ããã¡ãã»ãŒãžã®ãžã§ã ID ãç §åããããšã§ãã¿ã¹ã¯ã®åŠççµæãåŠç¿ããŸãã
çŸåšãçŽ 30 åã®ãã€ã¯ããµãŒãã¹ããããããã€ãã®ã°ã«ãŒãã«åé¡ã§ããŸãã
- æ§æ管çã
- ãŠãŒã¶ãŒãšã®æ å ±ããã³å¯Ÿè©± (ã¡ãã»ã³ãžã£ãŒãã¡ãŒã«)ã
- ãœãŒã¹ã³ãŒãã®æäœã
- ãããã€ã¡ã³ãããŒã« (jenkinsãnomadãconsul ãªã©) ãšã®çµ±åã
- ã¢ãã¿ãªã³ã° (ãªãªãŒã¹ããšã©ãŒãªã©)ã
- Web ãŠãŒãã£ãªã㣠(ãã¹ãç°å¢ã®ç®¡çãçµ±èšã®åéãªã©ã®ããã® UI)ã
- ã¿ã¹ã¯ãã©ãã«ãŒãåæ§ã®ã·ã¹ãã ãšã®çµ±åã
- ããŸããŸãªã¿ã¹ã¯ã®ã¯ãŒã¯ãããŒç®¡çã
ã¯ãŒã¯ãããŒã¿ã¹ã¯
Integro ã¯ãã¿ã¹ã¯ã®ã©ã€ããµã€ã¯ã«ã«é¢é£ããã¢ã¯ãã£ããã£ãèªååããŸãã ç°¡ç¥åãããšãã¿ã¹ã¯ã®ã©ã€ã ãµã€ã¯ã«ã¯ãJira ã®ã¿ã¹ã¯ã®ã¯ãŒã¯ãããŒãšããŠç解ãããŸãã åœç€Ÿã®éçºããã»ã¹ã«ã¯ããããžã§ã¯ããã¿ã¹ã¯ã®çš®é¡ãç¹å®ã®ã¿ã¹ã¯ã§éžæããããªãã·ã§ã³ã«å¿ããŠãããã€ãã®ã¯ãŒã¯ãããŒã®ããªãšãŒã·ã§ã³ããããŸãã
æãé »ç¹ã«äœ¿çšããã¯ãŒã¯ãããŒãèŠãŠã¿ãŸãããã
å³ã§ã¯ãæ¯è»ã¯é·ç§»ã Integro ã«ãã£ãŠèªåçã«åŒã³åºãããããšã瀺ãã人ç©ã®å³ã¯é·ç§»ã人ã«ãã£ãŠæåã§åŒã³åºãããããšã瀺ããŸãã ãã®ã¯ãŒã¯ãããŒã§ã¿ã¹ã¯ããã©ãããšã®ã§ããããã€ãã®ãã¹ãèŠãŠã¿ãŸãããã
ã«ããªã¢ ãã¹ããè¡ããªã DEV+BETA ã§ã®å®å šãªæåãã¹ã (éåžžããããã¢ããªã¹ããªãªãŒã¹ããæ¹æ³ã§ã):
ä»ã®é·ç§»ã®çµã¿åãããååšããå¯èœæ§ããããŸãã 課é¡ãééãããã¹ã¯ãJira ã®ãªãã·ã§ã³ãéããŠéžæã§ããå ŽåããããŸãã
ã¿ã¹ã¯ã®ç§»å
ã¿ã¹ã¯ããDEV ãã¹ã + ã«ããªã¢ ãã¹ããã¯ãŒã¯ãããŒãééãããšãã«å®è¡ãããäž»ãªæé ãèŠãŠã¿ãŸãããã
1. éçºè ãŸã㯠PM ãã¿ã¹ã¯ãäœæããŸãã
2. éçºè ã¯ã¿ã¹ã¯ãå®è¡ããŸãã å®äºåŸã¯ãIN REVIEWãç¶æ ã«åãæ¿ãããŸãã
3. Jira ã¯ãJira ãã€ã¯ããµãŒãã¹ (Jira ãšã®çµ±åãæ åœ) ã« Webhook ãéä¿¡ããŸãã
4. Jira ãã€ã¯ããµãŒãã¹ã¯ãã¯ãŒã¯ãããŒãéå§ããããã«ããã㌠ãµãŒãã¹ (äœæ¥ãå®è¡ãããå éšã¯ãŒã¯ãããŒãæ åœ) ã«ãªã¯ãšã¹ããéä¿¡ããŸãã
5. ãã㌠ãµãŒãã¹å :
- ã¬ãã¥ãŒæ åœè ã¯ã¿ã¹ã¯ (ãŠãŒã¶ãŒã«ã€ããŠãã¹ãŠãç¥ã£ãŠãããŠãŒã¶ãŒ ãã€ã¯ããµãŒãã¹ + Jira ãã€ã¯ããµãŒãã¹) ã«å²ãåœãŠãããŸãã
- Source ãã€ã¯ããµãŒãã¹ (ãªããžããªãšãã©ã³ãã«ã€ããŠã¯èªèããŠããŸãããã³ãŒãèªäœã¯æ©èœããŸãã) ãéããŠãåé¡ã®ãã©ã³ããå«ããªããžããªã®æ€çŽ¢ãè¡ãããŸã (æ€çŽ¢ãç°¡ç¥åããããã«ããã©ã³ãã®ååã¯åé¡ãšäžèŽããŸã) Jira ã®çªå·)ã ã»ãšãã©ã®å Žåãã¿ã¹ã¯ã«ã¯ XNUMX ã€ã®ãªããžããªã«ãã©ã³ãã XNUMX ã€ã ããããŸããããã«ããããããã€ã¡ã³ã ãã¥ãŒã®ç®¡çãç°¡çŽ åããããªããžããªéã®æ¥ç¶ãæžå°ããŸãã
- èŠã€ãã£ããã©ã³ãããšã«ã次ã®äžé£ã®ã¢ã¯ã·ã§ã³ãå®è¡ãããŸãã
i) master ãã©ã³ã (ã³ãŒããæäœããããã® Git ãã€ã¯ããµãŒãã¹) ãæŽæ°ããŸãã
ii) ãã©ã³ãã¯éçºè (Bitbucket ãã€ã¯ããµãŒãã¹) ã«ããå€æŽãããããã¯ãããŠããŸãã
iii) ãã®ãã©ã³ã (Bitbucket ãã€ã¯ããµãŒãã¹) ã«å¯ŸããŠãã« ãªã¯ãšã¹ããäœæãããŸãã
iv) æ°ãããã« ãªã¯ãšã¹ãã«é¢ããã¡ãã»ãŒãžãéçºè ãã£ããã«éä¿¡ãããŸã (éç¥ãæäœããããã®éç¥ãã€ã¯ããµãŒãã¹)ã
v) ãã«ãããã¹ããããã³ãããã€ã®ã¿ã¹ã¯ã¯ DEV (Jenkins ãšé£æºããããã® Jenkins ãã€ã¯ããµãŒãã¹) äžã§éå§ãããŸãã
vi) åã®æé ããã¹ãŠæ£åžžã«å®äºãããšãIntegro ã¯ãã« ãªã¯ãšã¹ã (Bitbucket ãã€ã¯ããµãŒãã¹) ã«æ¿èªãå ¥ããŸãã - Integro ã¯ãæå®ãããã¬ãã¥ãŒæ åœè ããã®ãã« ãªã¯ãšã¹ãã®æ¿èªãåŸ ã¡ãŸãã
- å¿ èŠãªæ¿èªããã¹ãŠåä¿¡ããããš (èªåãã¹ãã®åæ Œãå«ã)ãIntegro ã¯ã¿ã¹ã¯ã Test on Dev (Jira ãã€ã¯ããµãŒãã¹) ã¹ããŒã¿ã¹ã«ç§»è¡ããŸãã
6. ãã¹ã¿ãŒãã¿ã¹ã¯ããã¹ãããŸãã åé¡ããªãå Žåãã¿ã¹ã¯ã¯ [Ready For Build] ã¹ããŒã¿ã¹ã«è»¢éãããŸãã
7. Integro ã¯ãã¿ã¹ã¯ããªãªãŒã¹ã®æºåãã§ããŠããããšããèªèãããã«ããªã¢ ã¢ãŒã (Jenkins ãã€ã¯ããµãŒãã¹) ã§ãã®ãããã€ã¡ã³ããéå§ããŸãã ãªãªãŒã¹ã®æºåãã§ããŠãããã©ããã¯ãäžé£ã®ã«ãŒã«ã«ãã£ãŠæ±ºãŸããŸãã ããšãã°ãã¿ã¹ã¯ãå¿ èŠãªã¹ããŒã¿ã¹ã«ãããä»ã®ã¿ã¹ã¯ã«ããã¯ããªããçŸåšãã®ãã€ã¯ããµãŒãã¹ã®ã¢ã¯ãã£ããªã¢ããããŒãããªãããªã©ã§ãã
8. ã¿ã¹ã¯ã¯ Canary ã¹ããŒã¿ã¹ (Jira ãã€ã¯ããµãŒãã¹) ã«è»¢éãããŸãã
9. Jenkins ã¯ãNomad ãä»ããŠã«ããªã¢ ã¢ãŒãã§ãããã€ã¡ã³ã ã¿ã¹ã¯ãèµ·åã (é垞㯠1 ïœ 3 åã®ã€ã³ã¹ã¿ã³ã¹)ããããã€ã¡ã³ãã«ã€ããŠãªãªãŒã¹ç£èŠãµãŒãã¹ (DeployWatch ãã€ã¯ããµãŒãã¹) ã«éç¥ããŸãã
10. DeployWatch ãã€ã¯ããµãŒãã¹ã¯ãšã©ãŒã®èæ¯ãåéããå¿ èŠã«å¿ããŠããã«å¯Ÿå¿ããŸãã ãšã©ãŒ ããã¯ã°ã©ãŠã³ããè¶ ãããš (ããã¯ã°ã©ãŠã³ãåºæºã¯èªåçã«èšç®ãããŸã)ãNotify ãã€ã¯ããµãŒãã¹ãä»ããŠéçºè ã«éç¥ãããŸãã 5 åçµéããŠãéçºè ãå¿çããªã ([å ã«æ»ã] ãŸã㯠[åæ¢] ãã¯ãªãã¯ãã) å Žåãã«ããªã¢ ã€ã³ã¹ã¿ã³ã¹ã®èªåããŒã«ããã¯ãéå§ãããŸãã ããã¯ã°ã©ãŠã³ããè¶ ããŠããªãå Žåãéçºè ã¯ã(UI ã®ãã¿ã³ãã¯ãªãã¯ããŠ) éçšç°å¢ãžã®ã¿ã¹ã¯ã®ãããã€ã¡ã³ããæåã§éå§ããå¿ èŠããããŸãã 60 å以å ã«éçºè ãéçšç°å¢ãžã®ãããã€ã¡ã³ããéå§ããªãã£ãå Žåãã»ãã¥ãªãã£äžã®çç±ããã«ããªã¢ ã€ã³ã¹ã¿ã³ã¹ãããŒã«ããã¯ãããŸãã
11. éçšç°å¢ãžã®å±éãéå§ããåŸã次ã®æé ãå®è¡ããŸãã
- ã¿ã¹ã¯ã¯éçšã¹ããŒã¿ã¹ (Jira ãã€ã¯ããµãŒãã¹) ã«è»¢éãããŸãã
- Jenkins ãã€ã¯ããµãŒãã¹ã¯ãããã€ã¡ã³ã ããã»ã¹ãéå§ãããããã€ã¡ã³ãã«ã€ã㊠DeployWatch ãã€ã¯ããµãŒãã¹ã«éç¥ããŸãã
- DeployWatch ãã€ã¯ããµãŒãã¹ã¯ãéçšç°å¢äžã®ãã¹ãŠã®ã³ã³ãããæŽæ°ãããããšã確èªããŸã (ãã¹ãŠãæŽæ°ãããŠããªãå ŽåããããŸãã)ã
- Notify ãã€ã¯ããµãŒãã¹ãéããŠããããã€ã¡ã³ãã®çµæã«é¢ããéç¥ãéçšç°å¢ã«éä¿¡ãããŸãã
12. ãã€ã¯ããµãŒãã¹ã®äžæ£ãªåäœãæ€åºãããå Žåãéçºè 㯠30 åé以å ã«æ¬çªç°å¢ããã¿ã¹ã¯ã®ããŒã«ããã¯ãéå§ããå¿ èŠããããŸãã ãã®æéãçµéãããšãã¿ã¹ã¯ã¯èªåçã«ãã¹ã¿ãŒ (Git ãã€ã¯ããµãŒãã¹) ã«ããŒãžãããŸãã
13. ãã¹ã¿ãŒãžã®ããŒãžãæåãããšãã¿ã¹ã¯ã®ã¹ããŒã¿ã¹ãã¯ããŒãºã (Jira ãã€ã¯ããµãŒãã¹) ã«å€æŽãããŸãã
ãã®å³ã¯å®å šã«è©³çŽ°ã§ããããã«ã¯èŠããŸããã (å®éã«ã¯ããã«å€ãã®ã¹ãããããããŸã)ãããã»ã¹ãžã®çµ±åã®çšåºŠãè©äŸ¡ããããšãã§ããŸãã ç§ãã¡ã¯ãã®ã¹ããŒã ãçæ³çã§ãããšã¯èããŠããããèªåãªãªãŒã¹ãšå±éãµããŒãã®ããã»ã¹ãæ¹åããŠããŸãã
次ã®ã¹ããã
ç§ãã¡ã¯èªååã®éçºã«é¢ãã倧ããªèšç»ãç«ãŠãŠããŸããããšãã°ãã¢ããªã¹ãªãªãŒã¹äžã®æåæäœã®æé€ãèªåå±éäžã®ã¢ãã¿ãªã³ã°ã®æ¹åãéçºè ãšã®å¯Ÿè©±ã®æ¹åãªã©ã§ãã
ããããä»ã¯ããã§ãããŸãããã èªååã¬ãã¥ãŒã§ã¯å€ãã®ãããã¯ãè¡šé¢çã«åãäžããŸãããããŸã£ãã觊ããããŠããªããããã¯ããããŸããã®ã§ãã質åã«åãã§ãçãããããŸãã äœã詳ããåãäžããã¹ããã«ã€ããŠã®ææ¡ãã³ã¡ã³ãã«æžã蟌ãã§ãåŸ
ã¡ããŠããŸãã
åºæïŒ habr.com