¶ÔÓÚDockerÖ÷Á÷µÄÓ¦Óó¡¾°£º³ÖÐø¼¯³ÉºÍ³ÖÐø²¿Êð(CI/CD)´ó¼ÒÒ²Ðí²¢²»Ä°Éú¡£ÕâÆªÎÄÕ´ӶÀÌØµÄÊӽDzûÊöÁËÈçºÎÀûÓø÷ÖÖÔÆÆ½Ì¨¹¹½¨ÊôÓÚ×Ô¼ºµÄCI/CDÈÝÆ÷£¬±ÊÕß»¹×Ô¼ºÀ©Õ¹ÁËGitlab
CIÒýÇæ£¬¶ÔCI¸ÐÐËȤµÄͬѧ¶ÔÕâ¸öÎÄÕÂÓ¦¸ÃºÜ¸ÐÐËȤ¡£
ÎÒÔø¾Ê¹ÓÃDockerÁËÒ»¶Îʱ¼ä£¬ÔÚ¹ýÈ¥µÄÒ»ÄêÀï°éËæ×ÅÖÚ¶àµÄDockerÈÝÆ÷Ó¿È룬°ïÖúÓû§ÃǸüÈÝÒ׵IJ¿ÊðDockerÈÝÆ÷µ½Éú²ú»·¾³ÖС£Ò»Ð©¹¤¾ßÊǵÚÈý·½¹«Ë¾Ìṩ£¬µ±È»Ò²°üÀ¨Docker¹«Ë¾×Ô¼ºµÄÈÝÆ÷¹¤¾ß(ÀýÈç:Docker
Swarm¡¢Docker MachineºÍ Docker Compose)¡£¾¡¹ÜÈç´Ë£¬×î½üÎÒÔÚ²âÊÔÒ»ÖÖеÄDocker¹¤×÷Á÷£¬Ëü¿ÉÒÔÔÊÐíÎÒÍÆËÍ´úÂ룬²¢×ö²âÊÔ¡¢¹¹½¨ÏîÄ¿£¬»¹¿ÉÒÔ½«´úÂ벿Êðµ½ÅÜDockerµÄÉú²ú»·¾³¼¯ÈºÖС£
½ÓÏÂÀ´Â¡ÖؽéÉÜÎÒµÄй¤¾ß bar service¡ª¡ªThreeBar¢Ù£¬Ò»¸ö¿ÉÒÔÔÚHerokuÉÏÔËÐгÖÐø¼¯³É/³ÖÐø²¿Êð(CI/CD)ϵͳ¡£Í¨³£Çé¿öÏ£¬Ð¿ª·¢µÄ´úÂ벿Êðµ½·þÎñÆ÷×ñÑÏÂÃæµÄÁ÷³Ì:
1.´´½¨Ò»¸ö±¾µØ×é¼þ
2.ÍÆËÍ´úÂëµ½git²Ö¿âµÄfeature/development·ÖÖ§
3.Shippable£¬Ò»¸ö³ÖÐø¼¯³ÉÒýÇæ£¬Ò»µ©¼ì²âµ½ÓÐеÄÌá½»(commit)£¬Í¨¹ýpull»ñÈ¡×îеĴúÂë²¢ÇÒÔËÐÐÏà¹ØµÄ²âÊÔ
4.Èç¹û²âÊÔÈ«¶¼Í¨¹ýÁ˵È×ű»²¿Êðµ½Éú²ú»·¾³ÖУ¬¾Í»á´´½¨Ò»¸öºÏ²¢(merge)·ÖÖ§µÄÇëÇó²¢ÇÒÖ´Ðиúϲ¢(merge)
5.ShippableÒ»µ©¼ì²âµ½ÓÐеÄÌá½»µ½Ô¶³Ìmaster·ÖÖ§£¬Í¬Ê±»áÖ´ÐвâÊÔ£¬²¢ÇÒÍÆËÍÔ´Âëµ½HerokuµÄgit²Ö¿âÖÐ
6.Heroku ½«»á×Ô¶¯¹¹½¨Õâ¸öÓ¦ÓóÌÐò²¢ÇÒ²¿ÊðËü¡£
Õâ¸ö¹¤¾ßÕæµÄ¿ÉÒÔ·½±ã¡¢¿ì½ÝµØ²¿ÊðÏîÄ¿²¢ÇÒ±£Ö¤ËùÓв¿Êðµ½Éú²ú»·¾³µÄ´úÂë¶¼¾¹ýÁ˲âÊÔ¶øÇÒÊǿɿ¿µÄ¡£
¾¡¹ÜÈç´Ë£¬»¹ÊÇÓÐÒ»¸öÎÊÌ⣬ÄǾÍÊÇ´ó¹æÄ£²¿ÊðHerokuÐèÒª»¨·Ñ¸ß°ºµÄ·ÑÓá£Ñ¡ÔñʹÓÃHeroku£¬Ä㽫»á»ñµÃHerokuÌṩµÄÃâ·ÑʹÓÃÓŻݢڣ¬Ò»¸ö±ê×¼µÄ512ÄÚ´æµÄÓÉHerokuÌṩµÄDynoÈÝÆ÷Ö»ÐèÒª35$¡£¹«Æ½µÄ˵£¬HerokuÌṩµÄÐéÄâÖ÷»ú·þÎñÒѾ¹»Êµ»ÝÁË,µ«ÊÇһЩӦÓõĸ´Ôӳ̶ÈÒªÇóHerokuÌṩ¸üÁé»îµÄ¶¨ÖÆ»¯ÐèÇó£¬ÊÕȡһ¶¨·ÑÓÃÒ²Î޿ɺñ·Ç¡£
µ±È»Docker¿ÉÒÔÌæ´úHeroku£¬ÌṩÏàÓ¦µÄ´úÂ벿Êð·þÎñ¡£µ«ÊÇÉÏÃæÌ¸µ½µÄÎÊÌâÈԾɴæÔÚ¡£µ±ÄãµÄ´úÂëÐèÒª²¿ÊðµÄʱºò£¬Æµ·±ÊÖ¶¯Æô¶¯ºÍ¹Ø±Õ·þÎñÊǵò»³¥Ê§µÄ¡£ÈÃÎÒÃÇÀ´±È½Ïһϲ»Í¬³ÖÐø¼¯³É/³ÖÐø²¿ÊðÒýÇæºÍDockerÏà±ÈÓÐʲô²»Í¬¡£
ѰÕÒ½â¾ö·½°¸
Docker²¢²»ÊǵÚÒ»¸öÒ²²»ÊÇ×îºóÒ»¸ö¶Ëµ½¶ËµÄ³ÖÐø¼¯³É¹¤×÷Á÷½â¾ö·½°¸¡£Òò´ËÎÒÃÇÐèÒª½«Öڶ಻ͬµÄ¼¼Êõ×éºÏµ½Ò»ÆðÓÃÀ´Íê³ÉÎÒÃÇÏëÒªµÄ¹¦ÄÜ¡£ÏÂÃæ½«»á½éÉÜÈý¸öÖ÷Á÷µÄÌṩ¹¹½¨ÒýÇæµÄ·þÎñ:Ò»¸öÊÇCI/CDµÄ²âÊÔÔËÐÐÒýÇæ£¬Ò»¸öÊÇwebÈÝÆ÷£¬Ò»¸öÊÇÈÝÆ÷ÊÊÅäÆ÷¡£
CI/CD ·þÎñÆ÷,²âÊÔÔËÐÐÒýÇæ
µ±ÎÒÃÇÑ¡ÔñÒ»¸öCI/CD·þÎñ£¬Äã±ØÐëÈ·¶¨ËûÃDZØÐëÖ§³ÖDockerÈÝÆ÷µÄ¹¹½¨¡£ÏÂÃæµÄÕâЩ·þÎñ¶¼°üº¬ÁËÕâÒ»¹¦ÄÜ:
1.Shippable (ĿǰÕýÔÚʹÓÃ)
2.Circle CI
3.GitLab CI
µ±È»»¹ÓÐһЩÆäËûµÄ·þÎñ£¬°üÀ¨´óÃû¶¦¶¦µÄJenkins CI server¡£ÕâÀïÄã¿ÉÒÔ×Ô¼ºÈ¥ËÑË÷ÕâЩ·þÎñ¡£Ò»Ð©·þÎñÔÚÈÝÆ÷ÉÏÔËÐй¹½¨£¬µ«ÊÇËûÃÇÏ໥֮¼äÊÇÍêÈ«¶ÀÁ¢µÄ¡£ÉÔºóÄã¾Í»á¿´µ½£¬Äã¿ÉÒÔÔÚDocker-in-DockerÉÏÔËÐзþÎñ£¬Í¬Ê±¿ÉÒÔʹÓÃÔÚDockerÈÝÆ÷ÖÐÔËÐÐµÄÆäËû·þÎñÀ´¹¹½¨ÄãµÄDockerÈÝÆ÷¡£
ÔÚÎÒµÄÊÔÑéÖУ¬ÎÒÑ¡ÔñÁ˺ÍGitlab °æ±¾¹ÜÀí·þÎñÆ÷¶ËͬʱÔËÐÐGitLab CI ϵͳ¡£Í¨¹ýGitlab°æ±¾¹ÜÀí·þÎñÆ÷£¬ÎÒ¿ÉÒÔºÜÇå³þµÄ¿´µ½Ã¿´Îcommit¡£Ñ¡ÔñGitlab²»½öÊÇÒòΪËûÊÇÒ»¸öÃâ·ÑµÄ¿ªÔ´Ô´ÂëÍйֿܲâºÍ¶ÔÍйÜÔÚÉÏÃæµÄÏîÄ¿ÌṩµÄ³ÖÐø²¿ÊðÒýÇæ£¬Í¬Ê±Ò²ÊÇÒ»¸öͨ¹ý°²×°gitlabÔËÐÐÄã×Ô¼ºµÄ·þÎñµÄ¿ªÔ´Èí¼þ¡£
Èç¹ûÄãÑ¡ÔñʹÓÃGitlab CI System´î½¨ÄãµÄ³ÖÐø¼¯³É¿ò¼Ü£¬Äã±ØÐëÌṩÊôÓÚ×Ô¼ºµÄ²âÊÔÔËÐзþÎñ¡£ËÞÖ÷»úµÄ³ÖÐø¼¯³ÉÈí¼þÖ»ÄÜÔËÐÐÌØ¶¨µÄ²âÊÔ·þÎñ£¬Êµ¼ÊÉÏËü×Ô¼º²¢²»ÄÜ×Ô¼ºÖ´ÐвâÊÔÈÎÎñ£¬Í¨³£¶¼ÊÇÆô¶¯Óɱ¾»úÌṩÏàÓ¦µÄ²âÊÔ·þÎñÀ´Ö´Ðеģ¬Äã²»¹â¿ÉÒÔͨ¹ý·þÎñÌṩÉÌÆô¶¯ÒýÇæ»òÕßÄãÖ±½ÓÔËÐÐÄã±¾»úÉϵķþÎñ(ÐéÄâ»úVM»òDockerÈÝÆ÷)¡£
·þÎñÆ÷ÍйÜÌṩÉÌ
µ±È»ÄãͬʱҲÐèÒªÒ»¸ö·þÎñÆ÷ÍйÜÌṩÉÌÈÃDockerÊØ»¤½ø³Ì¿ÉÒÔÔÚËüÖ®ÉÏÔËÐС£²»ÐÒµÄÊÇ£¬Ê¹ÓÃDockerÒâζמ³£ÐèÒªÔËÐк͹ÜÀí×Ô¼ºµÄ·þÎñÆ÷£¬Ò²¾ÍÊÇÄ㽫Ҫ¸ºÔðÕâ¸öÖ÷»úµÄÔËά¡£µ«ÊÇ£¬ÎÒÏëͨ¹ýÏÂÃæµÄÄÚÈÝ˵Ã÷£¬Äã¿ÉÒÔÔÚDockerÔËÐÐÒ»¸ö¸ß¿ÉÓᢶàÊý¾ÝÖÐÐļܹ¹£¬ÕâÒâζ׿´±ãÊÇÍ£»úÒ»¸öСʱҲ²»»áÏñÒÔǰÄÇÑù¶ÔÒµÎñÓ°ÏìÄÇô¾Þ´ó¡£
³£ÓõķþÎñÆ÷ÍйÜÌṩḚ́üÀ¨ÏÂÃæµÄ¼¸¸ö¢Û£º
1.Amazon Web Services EC2
2.Digital Ocean
3.Vultr
4.RunAbove
ÒµÎñÁ÷³Ì
¼´ÊÇÄãÓÐÁËÒ»Ì×¹¹½¨ºÃÁ˵ÄDockerÈÝÆ÷ºÍÄܹ»ÔËÐÐDockerÊØ»¤½ø³ÌµÄ·þÎñÆ÷¡£Ä㻹ÊÇÐèÒªÒ»¸öÄܹ»±»ÇáÒׯô¶¯µÄÈÝÆ÷²¢ÇÒÄܹ»ÔÚ¹¹½¨Ò»¸öоµÏñµÄʱºòÄÜÖØ¸´²¿ÊðËûÃÇ¡£ÕýÈçÎÒ×î½üÕýÔÚʹÓõÄÃû½ÐTutumµÄÒµÎñÁ÷³Ì·þÎñ¡£
Ŀǰ£¬TutumÊÇÒ»¸öÄܰïÖúÄã¹ÜÀíÄãµÄÈÝÆ÷²¿Êð¹¤×÷Á÷µÄ·þÎñÐÎʽ¡£Óë´Ëͬʱ£¬Ä㻹ÄÜÔÚ¸÷ÖÖÔÆÆ½Ì¨ÉÏ¿ìËÙ¶¯Ì¬Ôö¼Ó½Úµã£¬´´½¨Ð·þÎñ£¬Í¨¹ýÒ»¸ö˽ÓеÄregisterÀ´²¿ÊðÄãµÄÓ¦Óá£
´ËÍ⣬Tutum»¹ÎªÄãµÄÈÝÆ÷´´½¨ÁËÒ»¸ö˽ÓÐÍøÂ磬Òâζ×Å¿ÉÒÔͨ¹ýÄãµÄTutumÕË»§ÄãµÄDockerÈÝÆ÷ÓµÓÐ×Ô¼ºµÄ˽Óй̶¨IPµØÖ·²¢ÇÒͨ¹ý·ÓÉÀ´·ÃÎÊÆäËûÈÝÆ÷¡£ÎÞÂÛÄãµÄÎïÀí»úÊÇ·ñÔÚͬһ¸öÊý¾ÝÖÐÐÄ£¬»¹ÊÇͨ¹ýÊÀ½ç¸÷µØµÄ²»Í¬µÄ·þÎñÆ÷ÍйÜÌṩÉÌ¡£Ëü¶¼½«ÔÊÐíÄã´´½¨Ò»¸ö»ùÓÚ¶à·þÎñÆ÷¡¢¶àÔÆÆ½Ì¨µÄµ¯ÐԵĽâ¾ö·½°¸¡£Èç¹ûÄã֮ǰ¼û¹ýFlannel
by CoreOS£¬TutumµÄ˽ÓÐÍøÂçºÍËü²î²»¶à¡£
ÎÒÒ»Ö±ÔÚѰÕÒÀàËÆÉÏÃæÌ¸µ½µÄÕâÖÖ·þÎñ¡£¾ÍÔÚǰ²»¾Ã£¬ÎÒ¸Õ×öÁËÒ»¸öʵÑ飺ÔÚ¶àÈÝÆ÷DockerÖ®¼äͨ¹ývpn´´½¨Ò»¸öP2PÍøÂç¡£ÕâÊǺܾÃ֮ǰµÄDockerÍøÂçÅäÖôﲻµ½µÄÐèÇ󣬵«ÊÇÏÖÔÚTutum×öµ½ÁË¡£
Tutum ͬʱҲÕûºÏÁËCI/CD×é¼þ£¬²¢ÇÒÖ§³ÖgitÍÆËÍ(push)¡£µ±Tutum Íê³É¹¦ÄܵÄʱºò£¬Ëü¿ÉÄܳÉΪΨһµÄÄãÐèÒª°üº¬µÄµ½Ô´Âë²Ö¿âÖÐµÄÆäËû·þÎñ¡£
Tutum ÓµÓÐÎÒÃÇÐèÒª½øÐÐCI/CDµÄ¼¸¸ö¹Ø¼ü×é¼þ£º
1.Ò»¸ö˽ÓеÄΪÈÝÆ÷¾µÏñ×¼±¸µÄ×¢²áÖÐÐÄ
2.µ±ÐµľµÏñÍÆË͵½×¢²áÖÐÐĵÄʱºòÖØÐ²¿ÊðÈÝÆ÷
3.¼ò±ãµÄÈÝÆ÷À©ÈÝ(ÔÚ½çÃæÊÓͼÉÏ,¿ÉÒÔͨ¹ý»¬¶¯N »òMµÄ·½Ê½µ÷ÕûÈÝÆ÷´óС)
4.ÔÚTutumµÄ½çÃæÉÏÌí¼Ó½Úµã
ÆäËûÎÒÃÇÖµµÃ¹Ø×¢µÄ×é¼þ£º
1.ÔÚ¶ÔÒ»¸öwebÓ¦ÓÃÈÝÆ÷Ëõ·Åºó,»ùÓÚ×ÔÊ¡µÄ·½Ê½µÄDNS¶¯Ì¬½âÎö¡£¾Ù¸öÀý×Ó,ÄãµÄhaproxy·ÓÉ»á×Ô¶¯·¢ÏÖÐÂÔöÈÝÆ÷²¢ÇÒÌí¼Óµ½Â·ÓÉÁбíÖС£
2.˽ÓеÄÍøÂ縲¸Ç
3.²»ÔÙÊܲ»Í¬Ôƹ©Ó¦É̵ÄÏÞÖÆ,´´½¨×Ô¼ºµÄ½Úµã
°ÑËùÓж«Î÷×é×°µ½Ò»Æð
ÏÂÃæ¾ÍÌô¸É»õ˵ÏÂÎÒµÄʵÑé¹ý³Ì£º
1.ËÞÖ÷»úʹÓÃGitlab´î½¨µÄÔ´ÂëÔ¶³Ì²Ö¿â
2.ËÞÖ÷»úʹÓÃGitlab CI´î½¨µÄCI/CDÒýÇæ
3.RunAbove×÷Ϊ·þÎñÆ÷ÌṩÉ̶ÔËùÓÐCI/CDÔËÐÐÒýÇæµÄÈÝÆ÷ÍйܢÜ
4.Tutum ×÷ΪҵÎñÁ÷³ÌºÍ·þÎñµÄ¹ÜÀí·þÎñÌṩ
µ±ËùÓеÄÊÂÇé½áÊø£¬Ò²×é×°Íê±Ï£¬gitµÄÌá½»¼Ç¼»î¶¯Í¼£¬ÈçÏÂͼËùʾ:

²¿ÊðTutum ´úÀí
ÕýÒòΪÈç´Ë£¬ÎÒÃÇÊÂʵÉÏÊÇʹÓÃTutumÈ¥²¿ÊðGitLab CI runners¡£ÎÒ¸øÄãµÄ½¨ÒéÊÇ£¬ÏȰ²×°Tutum
agents¡£Æô¶¯ËùÓÐÄãÏ£ÍûʹÓõķþÎñ£¬ÕâÑùÔÚTutumµÄÒDZíÅÌÉϾÍÄÜ¿´µ½Bring your own
node ×ÖÑùµÄ°´Å¥¡£µã»÷Ëü£¬Ä㽫»áÊÕµ½Ò»¸öÈçÏÂÃæËùʾµÄÃüÁîÐУº
curl -Ls https://get.tutum.co/ | sudo -H sh -s XXXXXXXXXXXXXXXXXXX |
ͨ³£ÔÚijһ¸ö½ÚµãÔËÐÐÉÏÊöÃüÁî×Ô¶¯Ìí¼Óµ½ÄãµÄTutumÕË»§£¬Óë´Ëͬʱ½ø³ÌÒ²»á×Ô¶¯Ìí¼Óµ½ÆäËû½Úµã(ÿ´Îµ±Äãµã»÷Bring
your own node°´Å¥µÄʱºò)¡£
Ò»µ©Tutum agent°²×°µ½ÄãµÄËùÓнڵãÉÏ£¬Ä㽫»áÔÚÒDZíÅÌÉÏ¿´µ½Ëü¡£ÔÚÕâÒ»µãÉÏ£¬ÄãÒ²ÐíÏë¸øÕâ¸ö½ÚµãÌùÉÏÊʵ±µÄ±êÇ©¡£ÔÊÐí¶ÔÓ¦µÄ·þÎñÆ÷ÔÚÄĸö½ÚµãÉÏÔËÐС£¾Ù¸öÀý×Ó£¬Äã¿ÉÄÜÓÐÒ»×é½Úµã±ê¼ÇΪtag»òproductionÄ¿µÄÊÇΪÁË´´½¨Ò»Ì×»·¾³£¬Òà»òÕßÊÇÓÃÀ´×ö³ÖÐø¼¯³ÉµÄÒ»¸ö½Úµã±ê¼Ç£¬ÕâЩֻÄÜÔÚËÞÖ÷»úÉÏÔËÐС£
Äã¿ÉÒÔͨ¹ýµã»÷½ÚµãÃû³ÆÀ´±ê¼ÇÒ»¸ö½Úµã£¬Ìí¼ÓµÄ±ê¼Ç½«»áÏÔʾÔÚ×ó²à±ßÀ¸¡£
²¿ÊðÒ»¸öGitlab CI ÔËÐÐÒýÇæ
ÏÖÔÚÄã¿ÉÒÔͨ¹ýTutumÀ´²¿ÊðÒ»¸öGitlab CIÔËÐÐÒýÇæ¡£È»¶ø£¬ÎÒÃÇÐèÒªÒ»ÖÖÌØÊâÀàÐ͵ijÖÐøÔËÐÐÒýÇæ¡ª¡ªÐèÒªÄܹ»ÔÚÕâ¸öÈÝÆ÷ÖÐÔËÐÐDocker²¢ÇÒÄܹ»¹¹½¨ÎÒÃÇ×Ô¼ºµÄDocker¾µÏñ¡£
Äã¿ÉÄÜÏ룬ÕâÔõô¿ÉÄÜÄØ£¿¼ÙÈçÎÒÃÇʹÓÃTutumÔËÐÐGitlab CI ÒýÇæ£¬ËüÖ»ÄÜÔËÐÐÔÚÈÝÆ÷Àï¡£ÄÇôÎÊÌâÀ´ÁË£¬ÈçºÎÔÚDockerÈÝÆ÷ÀïÔËÐÐDockerÄØ£¿
ÆäʵÕâÍêÈ«¿ÉÒÔ×öµ½¡£ÊÂʵÉÏ£¬ÎÒÃÇ¿ÉÒÔÔËÐÐÔÚÄãÄÜÏëÏ󵽵ĸüÉî²ãDockerÖС£ÎÒÃǵÄDockerÈÝÆ÷¼Ü¹¹ÈçÏÂͼËùʾ£º

ÕýÈçÄãËù¿´µ½µÄ£¬ÔÚÎÒÃǵĽڵãµÄDockerÈÝÆ÷ÀïTutumÔËÐÐGitLab CIÒýÇæ¡£´ËÍ⣬¸ÃGitLab
CIÒýÇæÊµ¼ÊÉÏʹÓÃDocker¹¹½¨¾µÏñ²¢ÔËÐвâÊÔ,ÕâÒâζ×ÅÎÒÃÇÓÐÁ½¸öǶÌײã´Î¡£
ͨ¹ýfork GitLab CI Runner£¬ÎÒÒѾ½¨Á¢ÁËÏàÓ¦¹¦ÄܵķÖÖ§¡£ÕâÑù¾Í¿ÉÒÔÓÐЧµÄ¸ú×ÙÔÚgithubºÍ¹Ù·½Docker×¢²áÖÐÐĵıä¸ü¡£
ÔÚ½¨Á¢ÄãµÄGiLab CI runnerǰ£¬È·±£ÄãÒѾ´æÔÚÒ»¸öGitLabµÄʵÀý²Ö¿â£¬²¢ÇÒÄܹ»Í¬Ê±ÔËÐÐGitLab
CIÒýÇæ¡£ÕýÈçÇ°ÃæÌáµ½µÄ£¬Äã¿ÉÒÔ½¨Á¢×Ô¼ºµÄʵÀý£¬»òÕßÖ±½ÓʹÓÃgitlab¹Ù·½ÌṩµÄÃâ·ÑÍйֿܲâºÍ³ÖÐø²¿Êð·þÎñ¡£
Ò»µ©Äã×¢²áÁËGitlab²Ö¿â¡£ÄãËù×öµÄÖ»ÐèҪͨ¹ýµã»÷Á´½ÓÄãµÄGitlab
CI Õ˺š£ÔÚÄã¹ØÁªÁËGitlab CIÕ˺ÅÖ®ºó£¬Ä㽫»áͨ¹ýGitlabµÄÒDZíÅÌ¿´µ½ÄãµÄGitlab²Ö¿âÁÐ±í£¬²¢ÇÒͨ¹ýµã»÷"Add
project to CI" °´Å¥À´Ìí¼ÓÄãµÄÏîÄ¿µ½Gitlab CI ÒýÇæÖС£µã»÷Íê±Ïºó£¬Äã¾Í»áGitlabµÄÒDZíÅÌÉÏ¿´µ½ÄãÐÂÌí¼ÓµÄÏîÄ¿ÐÅÏ¢ÁË¡£ÈçÏÂͼËùʾ£º

Èç¹ûÄãÇá´ÁGitlabµÄÓû§½çÃæ£¬Ä㽫»á×¢Òâµ½Ò»¸ö²Ëµ¥±êÌâΪ¡°Runners¡±¡£ÔÚÕâ¸öÒ³ÃæÓÐÒ»¸ö×¢²á±ê¼Ç£¬Í¬Ê±»¹ÓÐÈçºÎ´´½¨Ò»¸öеġ°Runner¡±µÄ¹¦ÄÜ˵Ã÷¡£ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÎÒ½«»áʹÓÃTutum²¿ÊðÎÒÃǵÄGitlab
CI ¾µÏñ¡£È·¶¨ÄãÒѾ¸´ÖÆÁË×¢²á±ê¼ÇºÍGitlab CIµÄurlµØÖ·¡ª¡ªÒ»»áÄ㽫»áÓõ½ËûÃÇ¡£
ÔÚÄãµÄTutum½çÃæÉÏ£¬´´½¨Ò»¸öеķþÎñ¡£ÔÚTutumÖзþÎñµÄ¸ÅÄîÊÇÒ»¸öDockerÈÝÆ÷×飬ËûÃÇʹÓÃÏàͬµÄÈí¼þ²¢ÔËÐÐ×ÅÏàͬÅäÖá£
ÿ¸ö·þÎñ¿ÉÒÔÓÐÁã¸ö»òÕß¶à¸öÈÝÆ÷ÔÚͬһʱ¼äÔËÐУ¬²¢ÇÒTutum½«»á¹ÜÀíÄãËùÓнڵãµÄе÷ºÍËõ·Å¹¤×÷¡£
ÔÚÆô¶¯Ïòµ¼µÄµÚÒ»¸ö½çÃæ£¬Ä㽫»á¿´µ½¼¸¸ö±êÇ©£¬ÈÃÄãÑ¡Ôñ²»Í¬À´Ô´µÄDocker¾µÏñÔ´¡£TutumÓµÓÐÒ»¸öÄÚÖõġ¢Ë½ÓеÄ×¢²áÖÐÐÄ£¬Í¨¹ýËÑË÷ÆäËû×¢²áÖÐÐÄͬʱ֧³ÖһЩ¾ßÓÐÌØ¶¨¹¦ÄܵľµÏñ£¬µ±È»ÕâÀïÒ²°üÀ¨DockerµÄ¹Ù·½¾µÏñ¡£Çл»µ½¡°¹«¹²¾µÏñ¡±Ñ¡Ï£¬ËÑË÷¡°wizardapps/dind-gitlab-ci-runner¡±¾µÏñ£¬Õâ¾ÍÊÇÎÒÇ°ÃæÃèÊöµÄÔÚgithubÉÏforkµÄGitLab
CI ÒýÇæÔ´Âë²Ö¿âÖÐÎÒ×Ô¼º½¨Á¢µÄ·ÖÖ§¡£
ÄãÒ»µ©È·¶¨Ñ¡ÔñÁ˾µÏñ£¬Ä㽫»á¿´µ½Ò»¸ö½çÃæÉÏÃæÄã¶ÔÁ½¸öÈÝÆ÷Ö®¼äµ÷¶ÈµÄ¹¦ÄÜÑ¡ÏîºÍһЩ»ù±¾ÅäÖ㬶ÔÓÚ²¿Êð²ßÂÔ£¬ËäȻĬÈϵÄÉèÖÃÒ²¿ÉÒÔÔËÐгÖÐø¼¯³É£¬µ«ÊÇÎÒ½¨Ò黹ÊÇͨ¶ÁÏÂTutum¹Ù·½µÄ˵Ã÷Îĵµ.³ý·ÇÄãÏë×öƽÐй¹½¨£¬·ñÔò½«ÈÝÆ÷ÊýÁ¿ÉèÖÃΪ1¡£Èç¹ûÄãÏÈǰÒѾ¶Ô²¿ÊðÔÚTutumµÄ½Úµã´òÁ˶ÔÓ¦µÄ±êÇ©£¬ÇëÈ·±£ÔÚ¡°Delpoy
Tags¡±ÊäÈë¿òÊäÈëÁËÕýÈ·µÄ±êÇ©Ãû³Æ¡£´Ó±¾ÖÊÉϽ²£¬Tutum»áŬÁ¦Ñ°ÕÒËùÓÐÂú×ãÄãÒªÇó¡°Delpoy Tags¡±ÖÐÉùÃ÷µÄ±êÇ©£¬²¢ÇÒ²¿ÊðËûÃǵ½Ò»¸ö½Úµã¡£
ÏÂͼ˵Ã÷µ±ÄãµÚÒ»´Î±ØÐëÒª¸Ä¶¯µÄÒ»¸öÖØÒªµÄÅäÖÃÐÅÏ¢£¬ÕâÊÇÔÚ¡°Advanced
Options¡±²¿·ÖµÄ¡°Privileged Mode¡±Ñ¡ÏDockerÐèҪѡÖÐÕâ¸öÑ¡ÏÕâÑù±£Ö¤Tutum¿ÉÒÔºÜÈÝÒ׵ĻñµÃ¸ÃÐÅÏ¢¡£

ÔÚÅäÖúÃ˽ÓÐģʽºó£¬Ä㽫»á¿´µ½ÏÂÒ»¸öÆÁÄ»-Óйػ·¾³±äÁ¿ÅäÖÃÐÅÏ¢¡£
ÏñDockerÃüÁîÐÐÒ»Ñù£¬TutumÔÊÐíÄãÉùÃ÷Ò»¸ö»·¾³±äÁ¿Ê¹Ö®¿ÉÒÔÔÚÄãµÄDockerÈÝÆ÷ÀïʹÓá£
²»½öÈç´Ë£¬ÔÚTutumÖУ¬Ã¿Ò»¸ö²¿ÊðµÄÈÝÆ÷¶¼¿ÉÒÔʹÓÃÕâ¸ö»·¾³±äÁ¿¡£¾¡¹ÜÎÒÃDz»»áÔÙGitlab CI ÒýÇæÉÏʹÓÃlink¹¦ÄÜ£¬ÎÒÃÇʹÓõÄÊÇTutumÌṩµÄ¶¯Ì¬link,ÈÝÆ÷ÒÀÈ»ÔÊÐíʹÓÃÆäËûÈÝÆ÷ÖеĻ·¾³±äÁ¿¡£
ÏÂÃæÊÇÈýÖÖÐèÒªÉèÖõÄÖØÒªµÄ»·¾³±äÁ¿£º
1.REGISTRATION_TOKEN£º ×¢²áÐÅÏ¢¾ÍÊÇ֮ǰÎÒÃÇÔÚGilab
CI Öп½±´µÄ¡°Runner¡±¡£
2.CI_SERVER_URL£ºÔÚGitlab CIÒ³ÃæÉÏ֮ǰÌṩ¸øÎÒÃǵÄurlµØÖ·£¬Èç¹ûÄãʹÓõÄÊǹٷ½ÌṩµÄgitlab
CI·þÎñ£¬Ö±½ÓÌîд¡°https://ci.gitlab.com/¡±¡£
3.GITLAB_SERVER_FQDN£ºÕâÀïÉùÃ÷µÄÊÇgitlab µÄÓòÃû£¬ÕâÊÇÓÃÀ´Ö´ÐÐÒ»¸össh-keyscan¡£Èç¹ûÄãÓõÄÊǹٷ½µÄÍйܷþÎñ£¬ÇëÌîд
"ci.gitlab.com"¡£
ÔÚÅäÖÃÍêÕâЩ±äÁ¿Ö®ºó£¬ÖÕÓÚ¿ÉÒÔ¡°´´½¨²¢²¿Êð¡±ÎÒÃǵķþÎñÁË¡£
Ò»µ©ÄãµÄÈÝÆ÷Æô¶¯Íê±Ï, Äã¿ÉÒÔ·µ»ØGitLab CIµÄ¡°Runners¡±Ò³Ãæ²¢ÇÒÄã¿´µ½Ò»¸öеÄÈë¿Ú¡£ÏÖÔÚÄã¿ÉÒÔ×ÅÊÖ×¼±¸½¨Á¢
GitLab CI ÈÎÎñ°É¡£
´´½¨Ò»¸öGitLab CI ÈÎÎñ
ÖÕÓÚµ½×îºóÒ»²½ÁË£¬ÎÒÃÇÔÚGitlab CI ÉÏÌí¼ÓÒ»¸öʵ¼ÊµÄ½Å±¾Ä¿µÄÊǽ¨Á¢Ò»¸ö ³ÖÐø¼¯³É/³ÖÐø²¿ÊðµÄ¹¤×÷Á÷¡£ÏÖÔÚ£¬Õ⽫ȡ¾öÓÚÄãµÄʵ¼ÊÏîÄ¿µÄÖÖÀ࣬µ«´óÌå·½ÏòÓ¦¸ÃÊÇÏàͬµÄ£¬Äã»áʹÓÃDocker¾µÏñÀ´¹¹½¨DockerÈÝÆ÷£¬È»ºóÉÏ´«µ½ÄãµÄ¾µÏñ¿â¡£ÔÚÕâÖÖÇé¿öÏ£¬½«»áÉÏ´«µ½TutumÌṩµÄ˽ÓоµÏñ¿â¡£
ÔÚ¡°¹¤×÷¡±Ñ¡ÏÖУ¬Gitlab CI¹¤×÷¿ÉÒÔ½øÐÐÐ޸ġ£ÔÚÕâ¸ö²¿·Ö£¬ÓÐÁ½¸ö²»Í¬µÄ×ÓÑ¡Ïî-¡°test¡±ºÍ¡°deploy¡±¡£ÕýÈçËûÃÇÃû×ÖËù°µÊ¾µÄ£¬²âÊԽű¾Í¨³£ÓÃÀ´ÔËÐе¥ÔªºÍ¼¯³É²âÊÔ¡£²¿Êð½Å±¾Ö»ÔËÐÐÒ»µ©²âÊÔÍê³ÉºóµÄÌØ¶¨·ÖÖ§¡£ÕâÑù¾Í¿ÉÒÔÔÊÐíÄãÔÚÿ´ÎÌá½»(commit)ºóÔËÐÐÄãµÄ²âÊԽű¾£¬Óë´Ëͬʱ²¿Êð½Å±¾µ±ÇÒ½öµ±ËùÓвâÊÔÈ«²¿Í¨¹ýµÄʱºò²¿ÊðÔ¶³Ìmaster·ÖÖ§¡£
ÏÂÃæÊǽű¾ÊµÀý£º
docker login-u[USERNAME]-e[EMAIL]-p="[PASSWORD]"tutum.co Build the Docker image and tag it for Tutum
docker build-twizardapps/app. docker tag-fwizardapps/app tutum.co/wizardapps/app:latest |
ÉÏÃæµÄ²âÊԽű¾²¢Ã»ÓÐʵ¼ÊÔËÐÐÈκβâÊÔ£¬µ«ÊÇËûÈ·ÄÜΪÎÒÃǵÄÓ¦ÓóÌÐò¹¹½¨Docker¾µÏñ²¢´òÉ϶ÔÓ¦µÄ±êÇ©¡£Èç¹ûÄãÔÚ³õʼ»¯½×¶ÎʹÓÃ×Ô¼ºµÄ½Å±¾£¬ÇëÈ·±£ÄãµÄÓû§¡¢ÓÊÏä¡¢ÃÜÂëºÍTutumÉϵÄ×¢²áÐÅÏ¢±¨Ö½Ò»Ö¡£ÒòΪTutumÌṩµÄÊÇÒ»¸ö˽ÓÐDocker×¢²áÖÐÐÄ£¬È·±£ÄãµÄ²âÊԽű¾ÄÜͨ¹ýÏàÓ¦µÄУÑé¢Ý¡£
È»ºó£¬ÎÒÃÇ»¹¿ÉÒÔ´´½¨Ò»¸ö²¿Êð½Å±¾£¬Êµ¼ÊÉÏÊÇÍÆËÍÎÒÃǵľµÏñµ½TutumµÄ×¢²áÖÐÐÄ£¬²¢¿ªÊ¼¹¹½¨¡£
docker push tutum.co/wizardapps/app |
×Ô¶¯²¿Êð
µ½ÁËÕâÒ»²½£¬ÄãµÄϵͳӦ¸ÃÒѾ¹¹½¨³É¹¦²¢ÔËÐУ¬Ð´úÂëÓ¦¸Ã¿ÉÒÔ³ÖÐø¼¯³É²¢ÉÏ´«µ½TutumµÄ×¢²áÖÐÐÄ¡£Ê£ÏµĹ¤×÷¾ÍÊÇÔÚTutumÉÏ´´½¨Äã×Ô¼ºµÄ·þÎñ£¬È·±£ÖØÆôºó»¹¿ÉÒÔ¼ÌÐøÊ¹Óá£
ÕâºÍÎÒÃÇ´´½¨Gitlab CI ·þÎñÀàËÆ£¬Ëù²»Í¬µÄÊÇÎÒÃÇÈ÷þÎñ¡°Ë½Óл¯¡±£¬ÎÒÃÇÖ»ÐèÒª´ò¿ª¡°Auto Redeploy¡±¿ª¹Ø¼´¿É¡£ÅäÖÃËùÓеķþÎñ¶Ë¿Ú£¬»·¾³±äÁ¿£¬Á´½ÓºÍ¾í±ê£¬È»ºóµã»÷һϲ¿Êð¼´¿É¡£
¹§Ï²Ä㣬ÄãÏÖÔÚÒѾӵÓÐÁËÖ»ÓÐÔÚ¾¹ý²âÊԺ󣬿ÉÒÔ¿ìËÙ½øÐгÖÐø²¿Êð£¬×Ô¶¯»¯²¿ÊðµÄDockerÓ¦ÓóÌÐò¡£
ÆäËû×ÊÔ´
GitLab CI Multi-Runner µØÖ·£º https://github.com/ayufan/gitlab-ci-multi-runner
ÎÒÃÇͨ¹ýÔÚTutumÀィÁ¢Ã¿¸öÏîÄ¿É϶¼ÐèÒªµÄ³ÖÐø¼¯³É ¡°·þÎñ¡±£¬¿ÉÒԺܿìÉÏÊÖ¡£×÷ΪһÖÖÌæ´ú·½°¸£¬Äã¿ÉÒÔ³¢ÊÔʹÓÃGitLab
CI Multi-Runner£¬Õâ¸öÏîĿͨ¹ýÒ»¸öÅäÖÃÎļþÔÊÐí¶à¸öÏîĿͬʱ½øÐй¹½¨¡£
¢Ù. ÎÒÓÐһЩºÜ¿áµÄ¶«Î÷ºÍ´ó¼Ò·ÖÏí£¬Õâ¾ÍÊÇThreeBar¡ª¡ªÒ»¸öÔ¶Ô¶³¬³öÄãÏëÏóµÄ¹¤¾ß¡£Ò»µ©Äã×öºÃ×¼±¸¼ÓÈ룬Ä㽫»á·¢ÏÖDocker³ÖÐø-²¿Êð-Ó¦ÓõÄÇ¿´ó¹¦ÄÜ¡£
¢Ú. Heroku ÔËӪģʽ£¬ÄúÖ»ÐèÒª°´Ð¡Ê±Ö§¸¶Ê¹Ó÷ѡ£Ã¿Ò»¸ö¡°ÐéÄâ»ú¡±ÔËÐÐÄãµÄ´úÂë±»³ÆÖ®Îª¡°Dyno¡±£¬Äã¿ÉÒÔ½ö½öͨ¹ýÔËÐÐÒ»¸öÃüÁî¾Í¿ÉÒÔ×öµ½Ò»¼ü²¿Êð£¬ÀýÈçweb·þÎñÆ÷»òÕ߯äËûÇëÇó¶ÓÁзþÎñ¡£Ä㽫»áÿ¸öÔ»ñµÃ750СʱµÄ¡°Dyno¡±Ãâ·ÑʹÓÃȨ¡£ÕâÒâζ×ÅÈç¹ûÄãÔ¸ÒâµÄ»°¿ÉÒÔÔÚHerokuÉÏÔËÐÐÒ»¸öÃâ·ÑµÄweb·þÎñÆ÷¡£
¢Û. ÎÒ¸öÈËʹÓÃÁËÒÔÏÂËùÓеķþÎñÆ÷ÌṩÉÌ£¬ÎÒҲͨ¹ý²©¿ÍÁ´½Óµã»÷»ñµÃÁËһЩÊÕÈë¡£µ«ÊÇ£¬ºÜ¿Éϧ£¬ÈκÎÒ»¸ö·þÎñÆ÷ÌṩÉ̶¼²»»áÔÊÐíÄãÔÚ´´½¨Äã×Ô¼ºDocker·þÎñ²¢ÔËÐÐÔÚLinuxʵÀýÉÏ¡£
¢Ü. RunAboveµÄɳÏäÊÇÒ»¸öΰ´óµÄʵÑ飬ÒòΪÔÚËüÉÏÃæÓдóÁ¿µÄRAM£¬SSD´æ´¢£¬²¢ÇÒ»¨·Ñ¼«µÍ¡ª¡ªÃ¿ÔÂÖ»ÓÐ3ÃÀ½ðÔÚÒ»¸ö2GÄÚ´æµÄ·þÎñÆ÷ÉÏ¡£¾¡¹ÜÈç´Ë£¬ÔÚÄǸöʱºòËûÃDz»±»SALËù½ÓÊÜ£¬Òò´ËÄãÖ»ÄÜÑ¡ÔñÆäËûµÄ·þÎñÌṩÉÌ¡£
¢Ý. ´Ëʱ´Ë¿Ì£¬Äã±ØÐë°ÑÄãµÄTutumµÄÕ˺źÍÃÜÂëÖ±½ÓÈÓµ½½Å±¾ÖС£ºÜ²»ÐÒµÄÊÇ£¬utum²»ÌṩÕâÑùµÄµ¥¶ÀÃÜÂë×¢²á±íAPI£¬ËùÒÔÕâ¸ö·½°¸Ò²Òò´ËÁôÏÂÒ»¸öDZÔڵݲȫ©¶´¡£ |