ç§ãã¡ã¯ã§ããéãæåãå°œãã㊠DevOps ãéçºããŸããã ç§ãã¡ã¯ 8 人ã§ããããVasya ã Windows ã§äžçªã¯ãŒã«ã§ããã çªç¶ãVasya ãå»ããç§ã¯ Windows éçºããæäŸãããæ°ãããããžã§ã¯ããç«ã¡äžããä»»åãè² ãããšã«ãªããŸããã Windows éçºã¹ã¿ãã¯å šäœãããŒãã«ã«æŸãåºãããšãããã®ç¶æ³ã倧å€ã§ããããšã«æ°ã¥ããŸãã...
ç©èªã¯ããããŠå§ãŸã ã¢ã¬ã¯ãµã³ãã©ã»ã·ã³ããã Ма
TFSãPuppetãLinux .NET Core ã䜿çšããŠãããžã§ã¯ããç°¡åãã€æ¥œã« RPM ã«é
ä¿¡ããã«ã¯ã©ãããã°ããã§ãããã? éçºããŒã ã Postgres ãš Flyway ãšããèšèãåããŠèãããšããç· ãåããæåŸæ¥ã ã£ãå Žåããããžã§ã¯ã ããŒã¿ããŒã¹ã®ããŒãžã§ã³ç®¡çãã©ã®ããã«ãµããŒãããã°ããã§ãããã? Docker ãšçµ±åããã«ã¯ã©ãããã°ããã§ãã? .NET éçºè
ã« Windows ãšã¹ã ãŒãžãŒãæšãŠãŠ Puppet ãš Linux ãæ¯æãããã«ã¯ã©ãããã°ããã§ãããã? Windows ãéçšç°å¢ã§ç¶æããåãæ欲ããªãœãŒã¹ããªãå Žåãã€ããªãã®ãŒã®å¯Ÿç«ãã©ã®ããã«è§£æ±ºããã°ããã§ãããã? ããã«ã€ããŠãWeb ãããã€ããã¹ããCIãæ¢åã®ãããžã§ã¯ãã§ã® TFS ã®äœ¿çšæ¹æ³ããããŠãã¡ãããå£ããæŸèæãšå®çšçãªãœãªã¥ãŒã·ã§ã³ã«ã€ããŠãAlexander ã®ã¬ããŒãã®è»¢åã«èšèŒãããŠããŸãã
ããã§ãVasyaã¯å»ããŸããããã®ä»äºã¯ç§ã«ãããéçºè ã¯ããããã©ãŒã¯ãæã£ãŠåŸ ã¡ãã³ãŠããŸãã ã€ãã«ãŽã¡ã·ã£ãè¿ãããšãã§ããªãããšã«æ°ã¥ãããšããç§ã¯æ¬é¡ã«åãæãããŸããã ãŸããããªãŒãå ã® Win VM ã®å²åãè©äŸ¡ããŸããã ã¹ã³ã¢ã¯ Windows ã«æå©ã§ã¯ãããŸããã§ããã
ç§ãã¡ã¯ DevOps ã®éçºãç©æ¥µçã«è¡ã£ãŠãããããæ°ããã¢ããªã±ãŒã·ã§ã³ãæäŸããã¢ãããŒãã§äœããå€æŽããå¿
èŠãããããšã«æ°ã¥ããŸããã 解決ç㯠XNUMX ã€ã ãã§ããå¯èœã§ããã°ããã¹ãŠã Linux ã«è»¢éããããšã§ãã Google ãç§ãå©ããŠãããŸãããåœæã.Net ã¯ãã§ã« Linux ã«ç§»æ€ãããŠãããããã解決çã§ããããšã«æ°ã¥ããŸããã
ãªã .NET Core ã Linux ãšçµã¿åãããŠäœ¿çšââããã®ã§ãããã?
ããã«ã¯ããã€ãã®çç±ããããŸããã ããéãæããããæããªãããã§èšãã°ãç§ã®ããã«ã倧å€æ°ã¯åŸè ãéžæããã§ãããã MSDB ã®ã©ã€ã»ã³ã¹ã®è²»çšã¯çŽ 1 ãã«ã§ãããWindows ä»®æ³ãã·ã³ã®ããªãŒãã®ç¶æã«ã¯æ°çŸãã«ã®è²»çšãããããŸãã 倧äŒæ¥ã«ãšã£ãŠãããã¯å€§ããªåºè²»ã§ãã ãããçç±ã§ã 貯è - æåã®çç±ã æãéèŠã§ã¯ãããŸããããéèŠãªãã®ã® XNUMX ã€ã§ãã
Windows ä»®æ³ãã·ã³ã¯ãä»ã® Linux ä»®æ³ãã·ã³ãããå€ãã®ãªãœãŒã¹ãæ¶è²»ããŸã - 圌ãã¯éãã§ãã 倧äŒæ¥ã®èŠæš¡ãèæ ®ããŠãLinux ãéžæããŸããã
ã·ã¹ãã ã¯æ¢åã® CI ã«ç°¡åã«çµ±åãããŸãã ç§ãã¡ã¯èªåãã¡ãé²æ©ç㪠DevOps ã§ãããšèããŠãããBambooãJenkinsãGitLab CI ã䜿çšããŠãããããã»ãšãã©ã®äœæ¥ã¯ Linux äžã§å®è¡ãããŠããŸãã
æåŸã®çç±ã¯ã 䟿å©ãªäŒŽå¥ã ç§ãã¡ã¯ãæè¡çãªéšåãç解ããäžæã®ãªããµãŒãã¹ã確ä¿ããXNUMX çªç®ã®ã©ã€ã³ããã®ãµãŒãã¹ãç¶æããããšã¹ã³ãŒããã®åå ¥éå£ãäžããå¿ èŠããããŸããã 圌ãã¯ãã§ã« Linux ã¹ã¿ãã¯ã«ç²ŸéããŠãããããWindows ãã©ãããã©ãŒã çšã®ãœãããŠã§ã¢ã®åãæ©èœãç解ããããã«è¿œå ã®ãªãœãŒã¹ãè²»ããããããæ°ãã補åãç解ãããµããŒãããä¿å®ããæ¹ãã¯ããã«ç°¡åã§ãã
å¿ èŠæ¡ä»¶
äœããããŸã - éçºè ã«ãšã£ãŠã®æ°ãããœãªã¥ãŒã·ã§ã³ã®å©äŸ¿æ§ã ç¹ã« Linux ãšããèšèã話é¡ã«ãªã£ãåŸã¯ããã®ãã¹ãŠãå€åã«å¯Ÿå¿ããæºåãã§ããŠããããã§ã¯ãããŸããã§ããã éçºè ã¯ãæ°ã«å ¥ãã® Visual Studioãã¢ã»ã³ããªãšã¹ã ãŒãžãŒã®èªåãã¹ããåãã TFS ãæãã§ããŸãã æ¬çªç°å¢ãžã®é ä¿¡ãã©ã®ããã«è¡ããããã¯ã圌ãã«ãšã£ãŠéèŠã§ã¯ãããŸããã ãããã£ãŠãWindows éçºã§ã¯éåžžã®ããã»ã¹ãå€æŽããããã¹ãŠãå€æŽããªãããšã«ããŸããã
æ°ãããããžã§ã¯ããå¿ èŠã§ã æ¢åã® CI ã«çµ±åããã ã¬ãŒã«ã¯ãã§ã«ååšããŠãããæ§æ管çã·ã¹ãã ãåãå ¥ããããé ä¿¡æšæºãç£èŠã·ã¹ãã ã®ãã©ã¡ãŒã¿ãŒãèæ ®ããŠãã¹ãŠã®äœæ¥ãè¡ãå¿ èŠããããŸããã
ãµããŒããšæäœã®ãããããããŸããŸãªéšéããã³ãµããŒãéšéããã®ãã¹ãŠã®æ°èŠåå è ã®æäœåå åºæºã®æ¡ä»¶ãšããŠã
ç· ãåã - æšæ¥.
Winéçºã°ã«ãŒã
ãã®ãšã Windows ããŒã ã¯äœã«åãçµãã§ããã®ã§ãããã?
ä»ãªãèªä¿¡ãæã£ãŠããèšããŸã ã¢ã€ãã³ãã£ãã£ãµãŒããŒ4 åæ§ã®æ©èœãåãã ADFS ã«ä»£ããåªããç¡æã®ä»£æ¿æ段ã§ãã ãšã³ãã£ãã£ãã¬ãŒã ã¯ãŒã¯ã³ã¢ - éçºè
ã«ãšã£ãŠã¯æ¥œåã§ãããããã SQL ã¹ã¯ãªãããæžãå¿
èŠããªããããŒã¿ããŒã¹å
ã®ã¯ãšãªã OOP çšèªã§èšè¿°ã§ããŸãã ããããã®åŸãè¡åèšç»ã®è°è«äžã«ãç§ã¯ãã®ã¹ã¿ãã¯ãããããã·ã¥ã¡ãŒã«èªã®æ¥åœ¢æåã§ãããã®ããã«èŠãŠãPostgreSQL ãš Git ã ããèªèããŸããã
åœæã¯ç©æ¥µçã«äœ¿ã£ãŠããŸãããã 人圢 æ§æ管çã·ã¹ãã ãšããŠã ç§ãã¡ã®ãããžã§ã¯ãã®ã»ãšãã©ã§äœ¿çšããã®ã¯ã GitLab CI, ãšã©ã¹ãã£ãã¯ããã©ã³ã¹ã®åããé«è² è·ãµãŒãã¹ã䜿çšã㊠HAãããã· ãã¹ãŠãç£èŠããŸãã ã¶ããã¯ã¹ãé垯 ã°ã©ãã¡ã О ããã¡ããŠã¹, ã€ã§ãŒã¬ãŒãããŠããã¯ãã¹ãŠéçã®äžã§å転ããŠããŸãã HP c ESXi Ма ãŽã€ãšã ãŠã§ã¢ã 誰ãããããç¥ã£ãŠããŸã - ãã®ãžã£ã³ã«ã®å€å žã§ãã
ããããã¹ãŠã®ä»å
¥ãéå§ããåã«äœãèµ·ãã£ãã®ããèŠãŠç解ããŠã¿ãŸãããã
äœã§ãã
TFS ã¯éåžžã«åŒ·åãªã·ã¹ãã ã§ãããéçºè ããæçµçãªéçšãã·ã³ã«ã³ãŒããé ä¿¡ããã ãã§ãªããã¯ãã¹ãã©ãããã©ãŒã ã¬ãã«ã§ CI ãæäŸããããã«ãããŸããŸãªãµãŒãã¹ãšéåžžã«æè»ã«çµ±åããããã®ã»ãããåããŠããŸãã
以åã¯ããããã¯ãœãªãããŠã£ã³ããŠã§ããã TFS ã¯ãå€ãã®ãããžã§ã¯ããçµã¿ç«ãŠãããã«è€æ°ã®ãã«ã ãšãŒãžã§ã³ãã䜿çšããŸããã åãšãŒãžã§ã³ãã«ã¯ã¿ã¹ã¯ã䞊ååããŠããã»ã¹ãæé©åããããã« 3 ïœ 4 人ã®ã¯ãŒã«ãŒãããŸãã ãã®åŸããªãªãŒã¹èšç»ã«åŸã£ãŠãTFS ã¯çŒãããŠã®ãã«ãã Windows ã¢ããªã±ãŒã·ã§ã³ ãµãŒããŒã«é
ä¿¡ããŸããã
ç§ãã¡ã¯äœãéæãããã£ãã®ã§ãããã?
ç§ãã¡ã¯é ä¿¡ãšéçºã« TFS ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã Linux ã¢ããªã±ãŒã·ã§ã³ ãµãŒããŒäžã§å®è¡ããŸãããããã®éã«ã¯ããçš®ã®éæ³ããããŸãã ãã Magic Box ãããŠãããããã®ä»äºã®å¡©ããããŸãã å解ããåã«ãäžæ©èã«çœ®ããŠããã®ã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠå°ãã話ããŸãã
ãããžã§ã¯ã
ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãããªãã€ã ã«ãŒããåŠçããããã®æ©èœãæäŸããŸãã
ã¯ã©ã€ã¢ã³ã
ãŠãŒã¶ãŒã«ã¯ XNUMX ã€ã®ã¿ã€ãããããŸããã æåã® SSL SHA-2 蚌ææžã䜿çšããŠãã°ã€ã³ããããšã§ã¢ã¯ã»ã¹ãååŸããŸããã U 第2 ãã°ã€ã³ãšãã¹ã¯ãŒãã䜿çšããŠã¢ã¯ã»ã¹ã§ããŸããã
ããããã·
ãã®åŸãã¯ã©ã€ã¢ã³ã ãªã¯ãšã¹ã㯠HAProxy ã«éä¿¡ããã次ã®åé¡ã解決ãããŸããã
- äžæ¬¡èªå¯ã
- SSL çµç«¯ã
- HTTP ãªã¯ãšã¹ãã®èª¿æŽã
- ãããŒããã£ã¹ããªã¯ãšã¹ãã
ã¯ã©ã€ã¢ã³ã蚌ææžã¯ãã§ãŒã³ã«æ²¿ã£ãŠæ€èšŒãããŸããã ç§ãã¡ã¯ - æš©åš ç§ãã¡èªèº«ãã¯ã©ã€ã¢ã³ãã«ãµãŒãã¹ãæäŸããããã«èšŒææžãçºè¡ããŠããããããããè¡ãäœè£ããããŸãã
XNUMX çªç®ã®ç¹ã«æ³šç®ããŠãã ãããããã«ã€ããŠã¯å°ãåŸã§èª¬æããŸãã
ããã¯ãšã³ã
圌ãã¯ããã¯ãšã³ãã Linux äžã«äœæããããšãèšç»ããŠããŸããã ããã¯ãšã³ãã¯ããŒã¿ããŒã¹ãšå¯Ÿè©±ããå¿ èŠãªæš©éã®ãªã¹ããããŒãããæ¿èªããããŠãŒã¶ãŒãæã€æš©éã«å¿ããŠã財åæžé¡ã«çœ²åããŠå®è¡çšã«éä¿¡ããããããçš®ã®ã¬ããŒããçæãããããããã®ã¢ã¯ã»ã¹ãæäŸããŸãã
HAProxy ã«ããç¯çŽ
åã¯ã©ã€ã¢ã³ããããã²ãŒããã XNUMX ã€ã®ã³ã³ããã¹ãã«å ããŠãã¢ã€ãã³ãã£ã㣠ã³ã³ããã¹ãããããŸããã ã¢ã€ãã³ãã£ãã£ãµãŒããŒ4 ãã°ã€ã³ããã ãã§ãããã¯ç¡æã§åŒ·åãªé¡äŒŒç©ã§ãã ADFS - Active Directoryãã§ãã¬ãŒã·ã§ã³ãµãŒãã¹.
ID ãªã¯ãšã¹ãã¯ããã€ãã®æé ã§åŠçãããŸããã æåã®äžæ© - 顧客 ããã¯ãšã³ãã«äŸµå ¥ããŸããããã®ãµãŒããŒãšéä¿¡ããã¯ã©ã€ã¢ã³ãã®ããŒã¯ã³ã®ååšã確èªããŸããã èŠã€ãããªãã£ãå Žåããªã¯ãšã¹ãã¯éä¿¡å ã®ã³ã³ããã¹ãã«æ»ãããŸãããããªãã€ã¬ã¯ããè¡ããããªãã€ã¬ã¯ãã«ãã£ãŠ ID ã«éãããŸããã
第 XNUMX ã¹ããã - ãªã¯ãšã¹ããåä¿¡ãããŸãã IdentityServer ã®èªèšŒããŒãžã«ç§»åãã ã¯ã©ã€ã¢ã³ããç»é²ãããå Žæã«ãåŸ æã®ããŒã¯ã³ã IdentityServer ããŒã¿ããŒã¹ã«è¿œå ãããŸããã
第äžæ®µé - ã¯ã©ã€ã¢ã³ãã¯ãªãã€ã¬ã¯ããããŠæ»ãããŸãã ãããç±æ¥ããã³ã³ããã¹ãã«ã
IdentityServer4 ã«ã¯æ¬¡ã®æ©èœããããŸãã è¿åŽãªã¯ãšã¹ãã«å¯Ÿããã¬ã¹ãã³ã¹ãHTTPçµç±ã§è¿ããŸããã ãµãŒããŒã®èšå®ã«ã©ãã ãèŠåŽããŠããããã¥ã¡ã³ãã§ã©ãã ãåçºããŠããHTTPS çµç±ã® URL ãæã€æåã®ã¯ã©ã€ã¢ã³ãèŠæ±ãåãåããã³ã«ãIdentityServer ã¯åãã³ã³ããã¹ãã HTTP ã§è¿ããŸããã ç§ãã¡ã¯ã·ã§ãã¯ãåããŸããïŒ ãããŠãããããã¹ãŠãã¢ã€ãã³ãã£ã㣠ã³ã³ããã¹ããéã㊠HAProxy ã«è»¢éããããããŒã§ HTTP ãããã³ã«ã HTTPS ã«å€æŽããå¿
èŠããããŸããã
äœãæ¹åãããŸããã?ã©ãã«ä¿åããŸããã?
IdentityServer4 ãå¥ã®ã»ã°ã¡ã³ãå ã®å¥ã®ããŒããšããŠé 眮ãããã¢ããªã±ãŒã·ã§ã³ã®ããã¯ãšã³ããå®è¡ãããåããµãŒããŒäžã®ããã¯ãšã³ããšãšãã«äœ¿çšããããããŠãŒã¶ãŒããªãœãŒã¹ã®ã°ã«ãŒããæ¿èªããããã®ç¡æã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããããšã§ã³ã¹ããç¯çŽããŸããã ã
ã©ã®ããã«æ©èœããã¹ãã
ããã§ãçŽæããããã«ãããžãã¯ããã¯ã¹ã§ãã ç§ãã¡ã¯ Linux ãžã®ç§»è¡ã確å®ã§ããããšããã§ã«ç解ããŠããŸãã 解決çãå¿ èŠãªå ·äœçãªã¿ã¹ã¯ãå®åŒåããŸãããã
人圢ãçŸããŸãã ãµãŒãã¹ãšã¢ããªã±ãŒã·ã§ã³ã®æ§æãæäŸããã³ç®¡çããã«ã¯ãåªããã¬ã·ããäœæããå¿
èŠããããŸããã éçã®ããŒã«ã¯ããããããã«è¿
éãã€å¹ççã«è¡ãããããéåŒã«ç€ºããŠããŸãã
é éæ¹æ³ã æšæºã¯RPMã§ãã Linux ã§ã¯ãããªãã§ã¯ãã£ãŠãããªãããšã¯èª°ããç解ããŠããŸãããã¢ã»ã³ããªåŸã®ãããžã§ã¯ãèªäœã¯ãå®è¡å¯èœãª DLL ãã¡ã€ã«ã®ã»ããã§ããã ãã®æ°ã¯çŽ150ã§ããããžã§ã¯ãã¯éåžžã«å°é£ã§ããã å¯äžã®èª¿åã®ãšãã解決çã¯ããã®ãã€ããªã RPM ã«ããã±ãŒãžåããããããã¢ããªã±ãŒã·ã§ã³ããããã€ããããšã§ãã
ããŒãžã§ã³ç®¡çã é »ç¹ã«ãªãªãŒã¹ããå¿ èŠããããããã±ãŒãžåãã©ã®ããã«ãããã決ããå¿ èŠããããŸããã ããã¯ãTFS ãšã®çµ±åã¬ãã«ã®åé¡ã§ãã Linux äžã«ãã«ã ãšãŒãžã§ã³ãããããŸããã TFS ã¯ã¿ã¹ã¯ããã³ãã©ãŒ (ã¯ãŒã«ãŒ) ã«ãã«ã ãšãŒãžã§ã³ãã«éä¿¡ãããšãã«ããã³ãã©ãŒ ããã»ã¹ã®ç°å¢ã«å«ãŸããå€æ°ã®å€æ°ãæž¡ããŸãã ãããã®ç°å¢å€æ°ã«ã¯ããã«ãåãããŒãžã§ã³åããã®ä»ã®å€æ°ãå«ãŸããŸãã 詳现ã«ã€ããŠã¯ããRPM ããã±ãŒãžã®æ§ç¯ãã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
TFS ã®ã»ããã¢ãã çµå±ãã€ãã©ã€ã³ã®èšå®ã«åãæãããŸããã 以åã¯ããã¹ãŠã® Windows ãããžã§ã¯ãã Windows ãšãŒãžã§ã³ãã«åéããŠããŸããããçŸåšã¯ Linux ãšãŒãžã§ã³ãã衚瀺ãããŸãããã«ã ãšãŒãžã§ã³ãã¯ãã«ã ã°ã«ãŒãã«å«ããå¿ èŠããããããã€ãã®ã¢ãŒãã£ãã¡ã¯ãã§åŒ·åããããã®ãã«ã ãšãŒãžã§ã³ãã§ã©ã®ãããªçš®é¡ã®ãããžã§ã¯ãããã«ãããããã瀺ããŸãã ããã€ãã©ã€ã³ãäœããã®æ¹æ³ã§å€æŽããŸãã
ã¢ã€ãã³ãã£ãã£ãµãŒããŒã ADFS ã¯ç§ãã¡ã®ããæ¹ã§ã¯ãªãããªãŒãã³ãœãŒã¹ãç®æããŠããŸãã
ã³ã³ããŒãã³ããèŠãŠã¿ãŸãããã
Magic Box
XNUMX ã€ã®éšåã§æ§æãããŸãã
Linux ãã«ã ãšãŒãžã§ã³ãã Linux ã¯ãç§ãã¡ã Linux çšã«æ§ç¯ããŠãããããè«ççã§ãã ãã®éšå㯠XNUMX ã€ã®ã¹ãããã§å®è¡ãããŸããã
- ã¯ãŒã«ãŒãæ§æãã ãããžã§ã¯ãã§ã¯åæ£ããŠäœæ¥ããããšãäºæ³ãããŠãããããäžäººã§ã¯ãããŸããã§ããã
- .NET Core 1.x ãã€ã³ã¹ããŒã«ããã æšæºãªããžããªã§ã¯ãã§ã« 1 ãå©çšå¯èœã§ããã®ã«ããªã 2.0.x ãªã®ã§ãããã? ãšããã®ã¯ãéçºãéå§ããæç¹ã§ã¯å®å®çã 1.09 ã ã£ãã®ã§ããããããŒã¹ã«ãããžã§ã¯ããäœãããšã«ãªããŸããã
- Git 2.x.
RPM ãªããžããªã RPM ããã±ãŒãžã¯ã©ããã«ä¿åããå¿ èŠããããŸããã ãã¹ãŠã® Linux ãã¹ãã§äœ¿çšã§ããåãäŒæ¥ RPM ãªããžããªã䜿çšããããšãæ³å®ãããŠããŸããã ããã圌ãã®ããããšãªã®ã§ãã ãªããžããªãµãŒããŒãèšå®ãããŠãã ãŠã§ããã㯠ããã«ãããæå®ãããå Žæããå¿ èŠãª RPM ããã±ãŒãžãããŠã³ããŒããããŸããã ããã±ãŒãžã®ããŒãžã§ã³ã¯ããã«ã ãšãŒãžã§ã³ãã«ãã£ãŠ Webhook ã«å ±åãããŸããã
GitLabã 泚æïŒ ããã§ã® GitLab ã¯éçºè ã§ã¯ãªããéçšéšéã«ãã£ãŠã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ãããã±ãŒãžã®ããŒãžã§ã³ã管çãããã¹ãŠã® Linux ãã·ã³ã®ã¹ããŒã¿ã¹ãç£èŠããããã«äœ¿çšãããã¬ã·ã (ãã¹ãŠã® Puppet ãããã§ã¹ã) ãä¿åãããŸãã
人圢 â ç©è°ãéžãåé¡ããã¹ãŠè§£æ±ºããGitlab ããå¿ èŠãªæ§æãæ£ç¢ºã«æäŸããŸãã
ãã€ãã³ã°ãå§ããŸãã RPM ãžã® DLL é ä¿¡ã¯ã©ã®ããã«æ©èœããŸãã?
DDL ãã RPM ãžã®é ä¿¡
.NET éçºã®ããã¯ã¹ã¿ãŒããããšããŸãã Visual Studio ã䜿çšããŠãªãªãŒã¹ ãã©ã³ããäœæããŸãã ãã®åŸãããã Git ã«ã¢ããããŒãããŸããããã§ã® Git 㯠TFS ãšã³ãã£ãã£ãã€ãŸãéçºè ã䜿çšããã¢ããªã±ãŒã·ã§ã³ ãªããžããªã§ãã
ãã®åŸãTFS ã¯æ°ããã³ããããå°çããããšã確èªããŸãã ã©ã®ã¢ããªã§ããïŒ TFS èšå®ã«ã¯ãç¹å®ã®ãã«ã ãšãŒãžã§ã³ããã©ã®ãããªãªãœãŒã¹ãæã£ãŠãããã瀺ãã©ãã«ããããŸãã ãã®å Žåã圌ã¯ã.NET Core ãããžã§ã¯ãããã«ãããŠããããšãèªèããããŒã«ãã Linux ãã«ã ãšãŒãžã§ã³ããéžæããŸãã
ãã«ã ãšãŒãžã§ã³ãã¯ãœãŒã¹ãåãåããå¿ èŠãªãã¡ã€ã«ãããŠã³ããŒãããŸãã äŸåé¢ä¿ .NET ãªããžããªãnpm ãªã©ããã ã¢ããªã±ãŒã·ã§ã³èªäœããã«ãããŠãã®åŸã®ããã±ãŒãžåãè¡ã£ãåŸãRPM ããã±ãŒãžã RPM ãªããžããªã«éä¿¡ããŸãã
äžæ¹ã§ã次ã®ãããªããšãèµ·ãããŸãã éçšéšéã®ãšã³ãžãã¢ã¯ãããžã§ã¯ãã®å±éã«çŽæ¥é¢äžããããã±ãŒãžã®ããŒãžã§ã³ãå€æŽããŸãã ããšã© ã¢ããªã±ãŒã·ã§ã³ã¬ã·ããä¿åãããŠãããªããžããªå ããã®åŸãPuppet ãããªã¬ãŒãããŸãã ã€ã ããªããžããªããæ°ããããã±ãŒãžãååŸãããšãã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ã䜿çšã§ããããã«ãªããŸãã
èšèã§èšããšãã¹ãŠç°¡åã§ãããBuild ãšãŒãžã§ã³ãèªäœã®å
éšã§ã¯äœãèµ·ãã£ãŠããã®ã§ãããã?
DLL RPM ã®ããã±ãŒãžå
TFS ãããããžã§ã¯ã ãœãŒã¹ãšãã«ã ã¿ã¹ã¯ãåãåããŸããã ãã«ããšãŒãžã§ã³ã ãœãŒã¹ãããããžã§ã¯ãèªäœã®æ§ç¯ãéå§ããŸãã çµã¿ç«ãŠããããããžã§ã¯ãã¯ã»ãããšããŠå©çšå¯èœã§ã DLLãã¡ã€ã«ããã¡ã€ã« ã·ã¹ãã ã®è² è·ã軜æžããããã«ãzip ã¢ãŒã«ã€ãã«ããã±ãŒãžåãããŠããŸãã
ZIP ã¢ãŒã«ã€ãã¯ç Žæ£ãããŸã RPM ããã±ãŒãžã®ãã«ã ãã£ã¬ã¯ããªã«ã³ããŒããŸãã 次ã«ãBash ã¹ã¯ãªããã¯ç°å¢å€æ°ãåæåãããã«ã ããŒãžã§ã³ããããžã§ã¯ã ããŒãžã§ã³ããã«ã ãã£ã¬ã¯ããªãžã®ãã¹ãèŠã€ããŠãRPM-build ãå®è¡ããŸãã ãã«ããå®äºãããšãããã±ãŒãžã¯æ¬¡ã®å Žæã«å ¬éãããŸãã ããŒã«ã«ãªããžããªãããã¯ãã«ã ãšãŒãžã§ã³ãäžã«ãããŸãã
次ã«ãBuild ãšãŒãžã§ã³ããã RPM ãªããžããªå ã®ãµãŒããŒãž JSONãªã¯ãšã¹ããéä¿¡ããã ããŒãžã§ã³ãšãã«ãã®ååã瀺ããŸãã å ã»ã©èª¬æãã Webhook ã¯ããŸãã«ãã®ããã±ãŒãžããã«ã ãšãŒãžã§ã³ãã®ããŒã«ã« ãªããžããªããããŠã³ããŒãããæ°ããã¢ã»ã³ããªãã€ã³ã¹ããŒã«ã§ããããã«ããŸãã
RPM ãªããžããªãžã®ãã®ç¹å®ã®ããã±ãŒãžé
ä¿¡ã¹ããŒã ã䜿çšããçç±ã¯äœã§ãã? ã¢ã»ã³ãã«ãããããã±ãŒãžãããã«ãªããžããªã«éä¿¡ã§ããªãã®ã¯ãªãã§ãã? å®ã¯ãããå®å
šæ§ã確ä¿ããããã®æ¡ä»¶ãªã®ã§ãã ãã®ã·ããªãªã«ãããæš©éã®ãªããŠãŒã¶ãŒããã¹ãŠã® Linux ãã·ã³ã«ã¢ã¯ã»ã¹ã§ãããµãŒããŒã« RPM ããã±ãŒãžãã¢ããããŒãããå¯èœæ§ãå¶éãããŸãã
ããŒã¿ããŒã¹ã®ããŒãžã§ã³ç®¡ç
éçºããŒã ãšã®åè°ã§ã圌ã㯠MS SQL ã«è¿ãããšãå€æããŸããããWindows 以å€ã®ã»ãšãã©ã®ãããžã§ã¯ãã§ã¯ãã§ã« PostgreSQL ãå šåã§äœ¿çšããŠããŸããã ææã®ãã®ã¯ãã¹ãŠæŸæ£ããããšã«æ±ºããŠããã®ã§ãããã§ã PostgreSQL ã䜿ãå§ããŸããã
ãã®ããŒãã§ã¯ãããŒã¿ããŒã¹ã®ããŒãžã§ã³ç®¡çæ¹æ³ãšãFlyway ãš Entity Framework Core ã®ã©ã¡ããã©ã®ããã«éžæãããã«ã€ããŠèª¬æããããšæããŸãã ãããã®é·æãšçæãèŠãŠã¿ãŸãããã
ã³ã³ãº
ãã©ã€ãŠã§ã€ã¯äžæ¹åã«ããé²ã¿ãŸãããç§ãã¡ã¯ å·»ãæ»ãããšã¯ã§ããŸãã - ããã¯é倧ãªæ¬ ç¹ã§ãã éçºè ã®å©äŸ¿æ§ã®èŠ³ç¹ãããä»ã®æ¹æ³ã§ Entity Framework Core ãšæ¯èŒã§ããŸãã ç§ãã¡ããããæåç·ã«çœ®ããäž»ãªåºæºã¯ Windows éçºã®ããã«äœãå€æŽããªãããšã§ãã£ãããšãèŠããŠããã§ãããã
ãã©ã€ãŠã§ã€ã«ãšã£ãŠ äœããã®ã©ãããŒãå¿ èŠã ã£ã奎ããæžããªãããã« SQLã¯ãšãªã ããã㯠OOP ã®èŠ³ç¹ããã®åäœã«ã¯ããã«è¿ããã®ã§ãã ããŒã¿ããŒã¹ ãªããžã§ã¯ããæäœããããã®æé ãèšè¿°ããSQL ã¯ãšãªãçæããŠå®è¡ããŸããã ããŒã¿ããŒã¹ã®æ°ããããŒãžã§ã³ã®æºåãå®äºãããã¹ããããŸããããã¹ãŠåé¡ãªãããã¹ãŠåäœããŸãã
Entity Framework Coreã«ã¯ãã€ãã¹ç¹ããããŸã - éãè² è·ãããããš æé©ã§ã¯ãªã SQL ã¯ãšãªãæ§ç¯ãããããŒã¿ããŒã¹ã®ãããŒããŠã³ã倧ãããªãå¯èœæ§ããããŸãã ããããç§ãã¡ã¯é«è² è·ã®ãµãŒãã¹ãæã£ãŠããªããããè² è·ãæ°çŸ RPS ã§èšç®ããããšã¯ãªãããããã®ãªã¹ã¯ãåãå ¥ããåé¡ãå°æ¥ã®ç§ãã¡ã«å§ããŸããã
ãããã¡
ãšã³ãã£ãã£ãã¬ãŒã ã¯ãŒã¯ã³ã¢ ããã«äœ¿çšã§ããéçºãç°¡åã§ãããã©ã€ãŠã§ã€ æ¢åã®CIã«ç°¡åã«çµ±åã ããããç§ãã¡ã¯éçºè ã«ãšã£ãŠäŸ¿å©ãªããã«ããŠããŸã:)
ããŒã«ã¢ããæé
Puppet ã¯ã移è¡ãæ åœããããŒãžã§ã³ãå«ããããã±ãŒãžã®ããŒãžã§ã³ãå€æŽãããããšãèªèããŸãã ãŸãã移è¡ã¹ã¯ãªãããšããŒã¿ããŒã¹é¢é£ã®æ©èœãå«ãããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã ãã®åŸãããŒã¿ããŒã¹ãšé£æºããã¢ããªã±ãŒã·ã§ã³ãåèµ·åãããŸãã 次ã«ãæ®ãã®ã³ã³ããŒãã³ãã®ã€ã³ã¹ããŒã«ãè¡ãããŸãã ããã±ãŒãžãã€ã³ã¹ããŒã«ãããã¢ããªã±ãŒã·ã§ã³ãèµ·åãããé åºã¯ãPuppet ãããã§ã¹ãã«èšè¿°ãããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ããŒã¯ã³ãããŒã¿ããŒã¹ã®ãã¹ã¯ãŒããªã©ã®æ©å¯ããŒã¿ã䜿çšããŸãããããã¯ãã¹ãŠ Puppet ãã¹ã¿ãŒããèšå®ã«åã蟌ãŸããæå·åããã圢åŒã§ä¿åãããŸãã
TFSã®åé¡
ãã¹ãŠãå®éã«ããŸãæ©èœããŠãããšå€æããåŸãä»ã®ãããžã§ã¯ãã® Win éçºéšéå šäœãšã㊠TFS ã®ã¢ã»ã³ããªã§äœãèµ·ãã£ãŠããã®ãã確èªããããšã«ããŸããããã«ã/ãªãªãŒã¹ãè¿ éã«è¡ãããŠãããã©ããã«é¢ä¿ãªããé床ã«é¢ããé倧ãªåé¡ãçºèŠããŸããã
äž»èŠãªãããžã§ã¯ãã® 12 ã€ã¯çµã¿ç«ãŠãã®ã« 15 ïœ XNUMX åããããŸããããã¯é·ãæéã§ããããããªç掻ã¯ã§ããŸããã ç°¡åãªåæã«ãããI/O ã®ã²ã©ãäœäžãå€æããŸãããããã¯ã¢ã¬ã€äžã§çºçããŠããŸããã
æåããšã«åæããçµæãXNUMX ã€ã®ç å·£ãç¹å®ãããŸããã åã - ãã«ã¹ãã«ã¹ã㌠ã¢ã³ããŠã€ã«ã¹ãããã¹ãŠã® Windows ãã«ã ãšãŒãžã§ã³ãã®ãœãŒã¹ãã¹ãã£ã³ããŸãã XNUMXçª - Windows ã€ã³ãã¯ãµã ããã¯ç¡å¹åãããŠããããå±éããã»ã¹äžã«ãã«ã ãšãŒãžã§ã³ãäžã§ãã¹ãŠããªã¢ã«ã¿ã€ã ã§ã€ã³ããã¯ã¹ä»ããããŸããã
äžçªç® - NPMã€ã³ã¹ããŒã«ã ã»ãšãã©ã®ãã€ãã©ã€ã³ã§ããŸãã«ãã®ã·ããªãªã䜿çšããŠããããšãå€æããŸããã ãªã圌ãæªãã®ã§ããããïŒ Npm ã€ã³ã¹ããŒã«æé ã¯ãäŸåé¢ä¿ããªãŒã圢æããããšãã«å®è¡ãããŸãã ããã±ãŒãžããã¯.json, ããã«ã¯ããããžã§ã¯ãã®ãã«ãã«äœ¿çšãããããã±ãŒãžã®ããŒãžã§ã³ãèšé²ãããŸãã æ¬ ç¹ã¯ãNpm install ãæ¯åã€ã³ã¿ãŒãããããææ°ããŒãžã§ã³ã®ããã±ãŒãžãååŸããããã倧èŠæš¡ãªãããžã§ã¯ãã®å Žåã¯ããã«æéããããããšã§ãã
éçºè ã¯ããããžã§ã¯ãã®ç¹å®ã®éšåãŸãã¯å šäœãã©ã®ããã«æ©èœãããããã¹ãããããã«ãããŒã«ã« ãã·ã³ã§å®éšãè¡ãããšããããŸãã å°å ã§ã¯ãã¹ãŠãããŸããã£ãŠããããšãå€æããã®ã«ãçµã¿ç«ãŠãŠå±éããŠãäœãæ©èœããªãããšãå€æããããšããããŸããã ç§ãã¡ã¯åé¡ãäœã§ããããç解ãå§ããŸã - ãããäŸåé¢ä¿ãæã€ããã±ãŒãžã®ç°ãªãããŒãžã§ã³ã§ãã
ãœãªã¥ãŒã·ã§ã³
- AV äŸå€ã®ãœãŒã¹ã
- ã€ã³ããã¯ã¹äœæãç¡å¹ã«ããŸãã
- ã«è¡ã npmci.
npm ci ã®å©ç¹ã¯æ¬¡ã®ãšããã§ãã äŸåé¢ä¿ããªãŒãäžåºŠåéããŸããéçºè ã«æäŸããæ©äŒãåŸãããŸãã çŸåšã®ããã±ãŒãžã®ãªã¹ããããŒã«ã«ã§å¥œããªã ãå®éšã§ããŸãã ãã æéãç¯çŽãã ã³ãŒããæžãéçºè ã
èšå®
ããã§ããªããžããªã®æ§æã«ã€ããŠå°ã説æããŸãã æŽå²çã«ç§ãã¡ã䜿çšããŠããã®ã¯ã Nexus ãªããžããªã®ç®¡ççšã å éšãªããžããªã ãã®å éšãªããžããªã«ã¯ãèªå·±äœæã®ã¢ãã¿ãªã³ã°ãªã©ãå éšç®çã§äœ¿çšãããã¹ãŠã®ã³ã³ããŒãã³ããå«ãŸããŠããŸãã
ç§ãã¡ã䜿ã£ãŠããŸã NuGetä»ã®ããã±ãŒãžãããŒãžã£ãŒãšæ¯èŒããŠãã£ãã·ã¥ãåªããŠããããã§ãã
çµæ
ãã«ã ãšãŒãžã§ã³ããæé©åããåŸãå¹³åãã«ãæé㯠12 åãã 7 åã«ççž®ãããŸããã
Windows ã§äœ¿çšã§ãããã·ã³ããã®ãããžã§ã¯ã㧠Linux ã«åãæ¿ãããã¹ãŠã®ãã·ã³ãæ°ãããšãçŽ 10 ãã«ãç¯çŽã§ããŸãããããã¯ã©ã€ã»ã³ã¹ã®éé¡ã ãã§ãããå 容ãèæ ®ãããšããã«å€ããªããŸãã
äºå®
次ã®ååæã§ã¯ãã³ãŒãé ä¿¡ã®æé©åã«åãçµãäºå®ã§ããã
ããªãã«ã Docker ã€ã¡ãŒãžãžã®åãæ¿ãã TFS ã¯ãDocker ã€ã¡ãŒãžã®ããªã¬ãŒããŒã¹ã®ã¢ã»ã³ããªãªã©ããã€ãã©ã€ã³ãžã®çµ±åãå¯èœã«ããå€ãã®ãã©ã°ã€ã³ãåããåªããæ©èœã§ãã ãã®ããªã¬ãŒãåããã®ã«ããã ããã±ãŒãžããã¯.jsonã ãããžã§ã¯ãã®æ§ç¯ã«äœ¿çšãããã³ã³ããŒãã³ãã®æ§æãäœããã®çç±ã§å€æŽãããå Žåã¯ãæ°ãã Docker ã€ã¡ãŒãžãæ§ç¯ããŸãã ããã¯ãåŸã§ãçµã¿ç«ãŠãããã¢ããªã±ãŒã·ã§ã³ãå«ãã³ã³ãããŒããããã€ããããã«äœ¿çšãããŸãã çŸåšã¯ããã§ã¯ãããŸãããã瀟å ã§ç©æ¥µçã«éçºãè¡ã£ãŠãããé·ãéå®çšŒåãœãªã¥ãŒã·ã§ã³ãæäŸããŠãã Kubernetes ã®ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£ã«åãæ¿ããäºå®ã§ãã
ãµããªãŒ
ç§ã¯çããã« Windows ãæšãŠãããšããå§ãããŸãããããã¯ç§ã Windows ã®äœãæ¹ãç¥ããªãããã§ã¯ãããŸããã ãã®çç±ã¯ãã»ãšãã©ã®ãªãŒãã³ãœãŒã¹ ãœãªã¥ãŒã·ã§ã³ã Linuxã¹ã¿ãã¯ã 倧äžå€«ã§ãã è³æºãç¯çŽããã ç§ã®æèŠã§ã¯ãæªæ¥ã¯åŒ·åãªã³ãã¥ããã£ãæ〠Linux äžã®ãªãŒãã³ãœãŒã¹ ãœãªã¥ãŒã·ã§ã³ã«å±ããŸãã
ã¢ã¬ã¯ãµã³ããŒã»ã·ã³ãããã®è¬æŒè
ãããã£ãŒã«
DevOps äŒè° ã¯ãå°é家ã«ããå°é家ã®ããã®éçºããã¹ããéçšããã»ã¹ã®çµ±åã«é¢ããã«ã³ãã¡ã¬ã³ã¹ã§ãã ããããã¢ã¬ã¯ãµã³ããŒã話ãããããžã§ã¯ãã®çç±ã§ããïŒ å®è£ ãããŠåäœããããã©ãŒãã³ã¹åœæ¥ã«ã¯ XNUMX ã€ã®ãªãªãŒã¹ãæåããŸããã ã®äžRIT++ ã§ã® DevOps ã«ã³ãã¡ã¬ã³ã¹ 27æ28æ¥ãšXNUMXæ¥ã«ã¯ãéæ¥å»ããåæ§ã®ã±ãŒã¹ãããã«å¢ããã ããã ãŸã æåŸå°Ÿã®è»äž¡ã«é£ã³ä¹ãããšãã§ããŸãããã¬ããŒããéä¿¡ ãŸãã¯æéããããŠãã ããæ¬ ãã±ããã ã¹ã³ã«ã³ãã§ãäŒãããŸããã!
åºæïŒ habr.com