ç§ã®ååã¯ã¢ã¬ã¯ãµã³ããŒãã§ã«ãã³ãã§ã ãç§ã¯ããºãã«ãã³ã¯ãšã¹ãã«ãã¯ã®ããžã¿ã«ã³ãŒãã¬ãŒããã³ã¯éšéã®éçºè²¬ä»»è ã§ãã
ä»æ¥ãSberbank Business OnlineïŒSBBOLïŒã®DevOpsã«ã€ããŠã話ããŸããSBBOLã¯ã倧èŠæš¡ãªã¬ãã¥ãŒïŒ1æ¥75 PRïŒãè¡ãããªã倧ããªããŒã ïŒéçºè 125人ïŒã§æ§ç¯ããŸããã çŸåšããã«ãªã¯ãšã¹ãïŒä»¥éPRïŒã®ãããã°ãããCDïŒCIïŒããã»ã¹ã¯ãä»äºãšç§ãã¡ã®èªãã®äžå¯æ¬ ãªéšåã§ãã
ããã§ãç§ãã¡ã¯äœãããŸãããïŒ
- Bitbucketçšã®ç¹å¥ãªãã©ã°ã€ã³ãMega PluginããäœæããŸãã
- ãžã§ã³ãã³ã¹ãšå¯Ÿè©±ãããã圌ã«æãã
- ããããPrCheckïŒã¢ã»ã³ããªãã»ã¬ã³ãã¹ãããªã³ã¿ãŒïŒããã蟌ã¿ãŸã
ç»åå
ã®ããã»ã¹
ãããã©ã®ããã«å§ãŸã£ããã«ã€ããŠã®è©³çŽ°ã 1ã€ã®UIãªããžããªãŒã®äŸã«ã€ããŠèª¬æããŸããä»ã®ãªããžããªãŒã«èå³æ·±ãæ©èœãããå Žåã¯ãåå¥ã«äœæããŸãã
éçºè ãšã¯äœã§ããïŒ
ãããããããã³ãŒãã¬ãã¥ãŒã§è¡šç€ºãããããã€ãã®å°ããªãšã©ãŒã®ããã«ãéçºã¯çµ¶ããäžæããŸããã ãããã¯ãJSã©ã³ã¿ã€ã ãšã©ãŒãTypescriptã³ã³ãã€ã«ãšã©ãŒãã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã¹ã¿ã€ã«ãšã©ãŒïŒããŒãžå šäœããåå²ãããããšãïŒãªã©ã§ããããã£ããã§ã¯ã誰ããããç¥ã£ãŠãã質åãåžžã«ãããŸããã ã¢ããã°ã¬ãŒãã§ããŸããïŒãããä»ã«éçºããªãã®ã¯èª°ã§ããïŒ ãŸãã¯ãç§ã¯ãã®ãããªãã®ãæã£ãŠããŸããïŒããããŠãä»ã®äººããããŠãããŒã ã¯10人ã§ããããããŠãèšç»ã¯9-10人ã®10-15ã¹ã¯ã©ã ããŒã ã«æé·ããããã«å°å¹³ç·ã«è¿«ãå§ããŸããã
git pre-push hookã䜿çšããŠå®å®æ§ã®åé¡ã解決ããããšèããŸãããããã®ã¢ãããŒãã¯2ã€ã®çç±ã§æ©èœããŸããã§ããã
- å®å®æ§ã¯ã人çèŠå ãããå Žæã§ã¯ããããŸããã
- ããã·ã¥ã®åã«ãã¹ãŠã®éçºè ã«ãããžã§ã¯ãã®å®å šãªã¢ã»ã³ããªãåŸ æ©ããããªã³ã¿ãŒããã®ä»ã®ãã§ãã¯ãå®è¡ããããšã¯ç¡çã§ããïŒãã®åŸãSeleniumãã¹ãã¯ãããŸããã§ããïŒã ããã«ãæéã®å€§èŠæš¡ãªã·ã³ãã«ã
ç§ãã¡ã¯PRã®æ®µéã§éå£ã«åãã£ãŠèãå§ããŸããã
ãžã§ã³ãã³ã¹äœæŠã¯äžå¯èœ
æåã®å®è£ ã§ã¯ããžã§ãã®èµ·åã¯ãã®ãã©ã°ã€ã³ã«ãã£ãŠè¡ãããŸããã ã€ãŸã 15åïŒcronïŒããšã«ã圌ã¯æ°ããã³ã¡ã³ãã§ãã®ããªãŒãºãŸãã¯æ°ããPR ããã¹ãããä»äºãå§ããŸããã ã¢ã»ã³ããªã®åŸãã·ã§ã«ã¹ã¯ãªããã§PRïŒæå/倱æïŒã«ã³ã¡ã³ããæžã蟌ã¿ãŸããã å°é家ã¯ã³ãŒããèŠãŠããã®æ¿èªãèšå®ããŸããïŒå³å¯ã«è±èªãå€æããªãã§ãã ãããè¯ãå矩èªã¯èŠã€ãããŸããã§ããïŒã
ãã ããéžæãããã®ã ããã³ãŒããæ¿å ¥ã§ããŸãããŽããã¢ãŒãã éåžžãã¢ã»ã³ããªãæåããããšã確èªãããBUILD SUCCESSããèŠã€ããã¢ããã°ã¬ãŒãã®åæ°ãæ°ããåŸãMergeãã¿ã³ãã¯ãªãã¯ããå¿ èŠãããã®ã¯ããªããžããªäžã®1人ã§ããã ãããŠãçµéšãããããã¯é埳çã«éåžžã«é£ããããšããäŒãããŸãã æ¿èªããããããã§ãã¯ãã«åæ Œããããã«èŠããŸããããšã«ããããªãã¯æ³šã蟌ã¿ãããªãã«ã責任ããããŸãã 誰ã3é±é以äžãããææ ¢ã§ããŸããã§ããã 矩åãå§ãŸããŸãã:)ãããŠãããã»ã¹ã®èŠ³ç¹ãããããã¯ãŸã çãéŠã§ããããªããªãããã¹ãŠã®èŠä»¶ãæºããããåŸã§ããããŒã ã¯ãã¿ã³ãæŒã人ãèŠã€ããå¿ èŠãããããã§ãã ãã®çµæã1æéãã1æ¥ãå Žåã«ãã£ãŠã¯æ°é±éã«ããã£ãŠãããŒã ã¯ãã®ãéžæããããã®ããèŠã€ããããšãã§ãããããŒãããããããŒã®é ã«é ããŠããŸããã
Bitbucketã«ã¯ãã¢ã»ã³ããªã®ã¹ããŒã¿ã¹ã衚瀺ããæšæºãªãã·ã§ã³ããããŸãã ãŸãã ãã§ãã¯ãªã¹ãã®ããŒãž ïŒæŽæ°ã®æå°æ°ãå°ãªããšã1ã€ã®ã¢ã»ã³ããªã®æåããã¹ãŠã®ã³ã¡ã³ãïŒãã§ãã¯ããŒã¯ïŒãªã©ãèš±å¯ãããŸããããããããã§ã¯ååã§ã¯ãããŸããã§ããã
ãã®åŸããã©ã°ã€ã³ã®ã¢ã€ãã¢ãçãŸããã°ããã§ã圌ãã¯ããã«ããã®æå°èŠä»¶ãäœæããéçºãéå§ããŸããã Bitbucketçšã«äœãæžããããšããªããAPIã䜿çšããªãã£ãMaratSadretdinovã ããã1ãæåŸã«äœæ¥çšãããã¿ã€ããæäŸããŠãããŸããïŒåœŒã¯æãªãšãã«æžããŸããïŒã æåªå äºé ã¯èŠä»¶ã§ããã圱é¿åã®ããPRã®ãªã¹ããååŸããŸãã èšå®ããåºæºïŒ
- çµã¿ç«ãŠã¯æåããŸããã
- å¿ èŠãªå°é家ã奜転ããŸããïŒå°æ¥ã圌ãã¯ãããã©ãã«ã«çµåããŸãããããã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãïŒã
ä»çµã¿ïŒ
PRãäœæãããŸã>>ã³ã¡ã³ããæžããŠãã¹ãããŠãã ãã >>ãã©ã°ã€ã³ã¯Mergeãã¿ã³ããããã¯ããgithubãã©ã°ã€ã³ã¯ã³ã¡ã³ããç£èŠããJenkinsã§ãžã§ããéå§ããŸã>> Jenkinsã¯å®äºæã«æå/倱æãéä¿¡ããŸã>>ãã¹ãŠã®åºæºãæåããå Žåããã©ã°ã€ã³ã¯Mergeãã¿ã³ãã¢ã¯ãã£ãã«ããŸã>> "ç¥ã¢ãŒããŠãŒã¶ãŒãã¯ãå°ããã€ã³ãŒããæ¿å ¥ããŸãã
ããã ãã§ã ãããã°ããã°ä¿®æ£ãJenkinsãšBitbucketéã®é 延ïŒãã©ã°ã€ã³ããã¹ãŠã®ã³ã¡ã³ããã¹ãã£ã³ããããã1ç§ããšã«ãã¹ãŠã®PRã調ã¹ãã®ã¯å°é£ã§ããïŒã«1é±éãŸãã¯2é±éã ãããŠä¹Ÿæ¯ïŒ å£ããéçºã«ã€ããŠã®è³ªåã¯æ¶ããŸããã
ãããããã®åŸããã¹ãŠãããã«é¢çœããªããéçºãããŒãžã£ãŒãšè²ªæ¬²ãªéçºè ã¯ãèèªããæãã§ããŸããã
- test testãšãããã¬ãŒãºãåé€ããŠãèªåçã«éå§ããŸãããã
- ãããããã人ãPRãæŽæ°ããå Žåã以åã®ã¢ã»ã³ããªããã³ã°ããæ°ããã¢ã»ã³ããªãèµ·åããå¿ èŠããããŸãã
- ãããŠããããã©ã®ã·ãŒã±ã³ã¹ã§å®è¡ããããJenkinsã«ã¯ãã§ã«ãã¥ãŒããããŸãããã®ããããã¥ãŒã®æåŸã«äœçœ®ããŸããïŒ
- æ©æ¢°ã«æ³šããŸãããïŒ æã§æŒããªãã§ãã ããã
- ããŸããŸãªã«ãŒã«ã«åŸã£ãŠãæåã¯é»è²ã®PRã«æããããã©ãã«ãäœæããŸãããã ãããããã¹ãŠç·è²ã«å€ãããšããã«-PRãæµã蟌ã¿ãŸãã
- Telegramã®å°é家ã«ãæ°ããPRãæã£ãŠãããã2æ¥ä»¥äžã泚ãããŠããªãå Žåãªã©ãæžããŠããããŸãã
- ãã¹ãŠã®ããŒããŠã§ã¢ãçµã¿ç«ãŠããããŸã§ãçµã¿ç«ãŠãéå§ããªãã§ãã ãã
- ã¢ã»ã³ããªãçµéããããéåžžã«é·ãæéïŒ1é±é以äžïŒã®å Žåãã€ãŸã ãå€ããPRãæåã®ã©ãã«ããªã»ããããå¿ èŠããããŸãã
圌ããæãã§ãããã®ã®å€ãã¯ãç§ãã¡ãäœã«ãªã£ãã®ããæããŠãã ããã
ã©ãã«
ã¡ã€ã³ã©ãã«-expertããå§ããŸãããã
ãŸã第äžã«ããªãªãŒã¹æ¥ãã³ãŒãã®äŸåæ§ãšåœ±é¿ãäžè¬çãªã¢ãããŒããšå®è·µããããŠãã¡ããã³ãŒãã®æžãæ¹ãç¥ã£ãŠãããããžã§ã¯ãã®æãçµéšè±å¯ãªéçºè ã®ã°ã«ãŒãããããŸãã
ããŒã ã
ããŒã ã®ã©ãã«ã ããŒã ã®aruvã®æå°æ°ãå ¬éããŸããã éçºè ã§ããå¿ èŠã¯ãªããPRãUIã«ããå Žåã¯jsããã¯ããŒã ã§ããå¿ èŠã¯ãããŸããã äž»ãªç®æšã¯ãããŒã ãéçºãèšç»ããæ¹åã«é²ãã§ããããšã確èªããããšã§ãã å°é家ã«å ç«ã£ãŠååã«ã³ã¡ã³ãããã®ã¯ãçµéšè±å¯ãªéçºè ãããããŸããã
ã¢ãŒã
ã³ã¢ãå ±éã³ã³ããŒãã³ãããŠãŒãã£ãªãã£ãå€æŽããããšãã«ããã®ãããªã©ãã«ãæãã€ããŸããã ãã®ãããªPRã¯éåžžãéåžžã«å€ãã®ãã©ãŒã ãšããŒãžã«åœ±é¿ãäžããæ©èœãèããæãªãå¯èœæ§ããããŸãã ãããžã§ã¯ãã®éåžžã®éåžžã®æ§é ïŒãã©ã«ããŒsrc / Coreãsrc / Commonãªã©ïŒã«ãã£ãŠæ±ºå®ãããŸãã
prCheck
æãéèŠãªæè¡ã©ãã«ã ä¿¡é Œæ§ã®ä¿èšŒã UIãªããžããªã§ã¯ããããã¯tslintãlesslintãjsonlintãtypescriptãwebpackã§ããããã€ãŠã¯ã°ã«ãŒãŽã£ãŒãªe2eãã¹ãã§ããããŸãã ããã¯-ã³ã³ãã€ã«ãçµ±åãã¹ãAPIã ãã¹ãŠãããã«ãŒã§ãã
oracle ã security ã admin ã devops
ååéã®é«åºŠãªå°é家ã
ãœããŒ
ããã¯ãœããŒã§ãã ã³ãŒããã¹ãã£ã³ãããããžã§ã¯ãã§æ¡çšããã«ãŒã«ã§ã¿ã¹ã¯ãéå§ããŸãã
predvnedrezh
ã€ã³ãã©ã³ãã錻ã®äžã«ãããšãïŒ1é±éãŸãã¯2é±éïŒã®ãäºåå€æãã®æéã®ç¹å¥ãªã©ãã«ã§ãäœã泚ãããšã¯ã§ããŸããã ãããŠãç§ãã¡ã¯äœã泚ããŸããã ã»ãŒã ããŠãããªãã¯ç解ããŠããŸã;ïŒ
not_taskãnot_storyãnot_bugãnot_test
Jiraããã®æšæ¶ä»ãã®ã©ãã«ã PRã¯åžžã«Jiraããã®ã¿ã¹ã¯ãšæ¥ç¶ããŠããŸããããã¯ãã¿ã¹ã¯çªå·ãæå®ããã«ã³ããããå®è¡ã§ããªãããã§ãïŒãµãŒããŒäžã®å€ãã®äººããã®ãããªgitããã¯ãèšå®ããŠãããšæããŸãïŒã ãã©ã°ã€ã³ã¯ãåã«Jiraã®ã¿ã¹ã¯ã®ã¿ã€ãã調ã¹ãŸãã ãããã£ãŠããã®ã©ãã«ã¯ãã³ãŒããããªããæåŸ ãããã®ã§ã¯ãªããä»ã®äœãã«ãã£ãŠæ¯é ãããŠãããšèšããŸãã
css
PRã«ã¯ã¹ã¿ã€ã«ãã¡ã€ã«ããããã¹ã¿ã€ã«ãã¬ã€ã¢ãŠãããã¶ã€ã³ã®é人ãå¿ èŠã ãšåœŒã¯èšããŸãã
ãã®å Žæã¯ããªãã®ã©ãã«ãããããŸãã
ãŸããã©ãã«ãæåã§è¿œå ããå¯èœæ§ãèªèããŸããïŒäžéšã®èŠåãèŠå¶ã§ããªãå ŽåïŒãPRã®äœæè ãŸãã¯å°é家èªèº«ããããå€ãã®å°é家ïŒããã«å€ãã®å°é家ïŒïŒãè¿œå ã§ããŸãã
ã©ãã«ã¯ãªãã·ã§ã³ã«ããããšãã§ããŸã;ããŒãžãã¿ã³ããããã¯ããŸããã
ããã©ã«ãã®ã¬ãã¥ãŒæ åœè
ãã©ã°ã€ã³ã®ãã1ã€ã®èå³æ·±ãã¹ãã«ã¯ãèªåçã«ãšãã¹ããŒããä»»åœããããšã§ãã ãã©ã°ã€ã³ã®åã«ãåéçºè ã¯ãå°é家ãããŒã ã¡ã€ããããã³é¢å¿ã察å¿ããã©ãã«ã«ãã£ãŠåœ±é¿ãåããä»ã®äººãé 眮ããŸããã æåã¯ãã·ã¢ã®ã«ãŒã¬ããã§ãäžã«å°ããªã«ãŠã³ã¿ãŒããããŸããã å°ãªããšã2人ã®å°é家ã«ããè©äŸ¡ã®ã«ãŒã«ããªããžããªã§æ©èœããå Žåããã¹ãŠãã3人ã®å°é家ãéžæãããŸãã
ããªãã¯ããªãPRã®å°é家ã2人ã3人éžã¶ã®ããšå°ããã§ããã ãªã¹ãå šäœããã¹ãŠã®PRã«å²ãåœãŠãŠã¿ãŸãããïŒ èª°ãã§ãã-圌ã¯èŠãŸãã ãããã圌ããèšãããã«ããäžè¬ã¯èª°ãæå³ããªããã ãããããã¯ã«ã¯éç¥ä»ãã®ãã«ãããã1æ¥ããã50ã®PRãããå Žåãåãšãã¹ããŒãïŒããšãã°10人ïŒã¯ãã®ã«ãŠã³ã¿ãŒãåžžã«ãŒãã«ãé§åãããå¿ èŠããããŸããã ïŒå°é家ãã³ãŒããæžãããšãèãããšïŒã»ãšãã©äžå¯èœã§ããããããŒã ã®å£«æ°äœäžã«ã€ããŠã®çåãåã³çããŸããã ãã©ã°ã€ã³ã¯ç§ãã¡ãã¹ãŠãæã£ãã
次ã«ãå°é家ïŒäŒæãç æ°ïŒãç¡å¹ã«ããæ©èœãããã³å人ã®å€åã¹ã±ãžã¥ãŒã«ã®å°å ¥ãè¿œå ããŸããã äžéšã®ããŒã ãšå°é家ã¯ä»ã®éœåžã«åº§ã£ãŠããŸãã ãããããã©ã°ã€ã³ããããèæ ®ã«å ¥ããªãã£ãå Žåãåå5æã«MSCãPRãäœæãã10ã®MSCã«æ¥ã2人ã®Muscovitesãå²ãåœãŠãããããšãå€æããŸããã ãã®PRãããã«èŠãããšãã§ããå°é家ã¯ããŸãããã
aprovsã®åªå é äœãŸãã¯ãããã£ãºã ãžã®å¯ŸåŠæ¹æ³
ãµãŒããŒãªããžããªã®1ã€ã§ã圌ãã¯apruvã®åªå é äœïŒãŸãã¯éã¿ïŒã®ãããªããŒã·ã§ã³ãæãã§ããŸããã ããã¯äœã§ãã
ããŒã ã«ããå°é家ïŒããªãªãªã©ïŒãããŸãïŒä»»å€©å ãªã©ïŒã ååãPRãå ¬éããããªãªãäžåºŠã«2ã€ã®ã©ãã«ãæ ¹ãããã«ããç·åããŸã-nintendo_teamãšãšãã¹ããŒãã 圌ã¯å°é家ã§ãã ãã®ã³ãŒããæ åœããŠããŸããããŸã çãããããŸãã ç§ãã¡ã¯ãªããžããªãæ°ã«ããªãããšã«æ±ºããŸããããå¥ã®ãã®ã«ããããšæããŸããã ããŒã ã©ãã«ã®åªå 床ãé«ããªãããããã®ããŒã ã®ãšãã¹ããŒãã¯ã°ãªãŒã³ãšãã¹ããŒãã«ãªããŸããã ãããããã§ãããããŒã ïŒããã€ãã®2ã€ã®ä»»å€©å ãšãã³ãã£ã®ããŒã ïŒéã®ãããã£ãºã ã®åé¡ã¯è§£æ±ºããŠããŸããã§ãã:)ãŸãã¯å€åããã¯âŠ
äŸåãã«ãªã¯ãšã¹ãã®ã¯ã©ã
ç§ãã¡ã ãã§ãªãããã®ãããªããŒãºããããŸããããšãã°ãåæã«æ°ããAPIãç·šéãããã§ã«æ°ããã³ãŒãã§ã¢ããªã±ãŒã·ã§ã³å šäœããã§ãã¯ãããªã©ãäŸåããPRãUIãšBackã«ããã«é 眮ããå¿ èŠããããŸãã ãããè¡ãããã«ããã©ã°ã€ã³ã®ãåŸå±PRãšãããã®åæ圱é¿ãã®æ¹èšçãæãã€ããŸããã PRã§ã¯ãå¿ èŠãªå¥ã®ãªããžããªã«PRã®ãªã³ã¯ãé 眮ãããšããã©ã³ããšäŸåPRãã©ã³ãããåæã«ã¢ã»ã³ããªãã¢ã»ã³ãã«ãããŸãã APIã¢ãã«ãã¯ã©ã€ã¢ã³ã+ãµãŒããŒã«åæã«å€æŽãããšãéåžžã«åœ¹ç«ã¡ãŸããããšãã°ã
// Dog: {age: number, id: string} // Dog: {age: string, guid: string}
ãŸãã¯ã1ã€ã®ãªããžããªã§ãã¹ããç·šéããå Žåããã©ãŠã¶ã§ãã¬ãŒãºãå«ããã¿ã³ãæ¢ããŸã
@FindBy("//button[text()=""]") class MyButton
UIã³ãŒãã§ã¯ä»¥åãšåãã§ãïŒ
<button></button>
ãã®åŸã2ã€ã®ãªããžããªã§å床線éããå¿ èŠããããŸãã
ããŸããŸãªã³ãã³ããã¿ã³
åé¡ãçºçããå Žåã«ãã§ãã¯ãåéãã[åèµ·å]ãã¿ã³ããããŸãã
ãã¹ãŠã®ã©ãã«ãç Žæ£ããŠåèšç®ããå¿ èŠãããå Žåã¯ã[åèšç®]ã[ãªãµã€ã¯ã«]ãã¿ã³ããããŸãã
æå¥ãèšãã®ã奜ããªäººã®ããã«ãããŸãã«ãé·ãã¬ãã¥ãŒããã¿ã³ããããŸãã ãã©ããžãã¡ãã»ãŒãžãéä¿¡ãããŸãã ããããããã«ããå°é家ã®å€æŽããã50ã«ãŒãã«ã®å¯ä»ããªã©ã®éèŠã§èå³æ·±ããã¿ã³ãè¿œå ããŸãã
ãããããããç§ãç¹ã«å ±æããããšæã£ããã¹ãŠã§ãã ãããç§ã¯ã»ãšãã©å¿ããŠããŸããã ãã©ã°ã€ã³ç®¡çããã«ã¯ãŸã ãããŸãã
質åãæžããŠãããŠããããšãã ç§ãã¡ã®èå³æ·±ãçµéšãããªãã®ä»äºã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã