ÕâÆªÎÄÕÂÎÒ½«¾Í³ÖÐø¼¯³ÉµÄ»°Ìâ¼ÌÐøÉîÈëµØÌ½ÌÖÒ»·¬¡£
³ÖÐø¼¯³ÉµÄËĸö²½Öè
´úÂë¼¶±ðµÄ¼¯³É
Õâ¸ö¼¶±ðµÄ¼¯³É²»ÒÀÀµ¶ÀÁ¢µÄ³ÖÐø¼¯³É¹¤¾ßÒ²¿ÉÒÔʵÏÖ£¬Ò»°ãÓïÑÔµÄbuild¹¤¾ß»ù±¾ÄÚÖ㬱ÈÈçJavaµÄmaven£¬gradle£¬GoÄÚÖõÄbuild¹¤¾ß¡£
¼¯³É Workflow
µ¥Ò»µÄ±àÒë-¹¹½¨¹¤¾ßÖ𽥵ز»ÄÜÂú×ã²úÆ·¿ìËÙ½»¸¶µÄÐèÇó¡£
Õû¸ö¿ª·¢Á÷³ÌµÄÖØÐÄ´Ó¡º´úÂë¼¶±ðµÄ¼¯³É¡»×ªÒƵ½Á˸ü×Ô¶¯»¯µØ±àÒëºÍ¸üÍêÃÀµÄ²âÊÔÑéÖ¤£¬ÖÂÁ¦ÓÚÔÚ×î¶ÌµÄʱ¼äÄÚ·¢ÏÖÎÊÌ⣬Ëõ¶Ì¿ª·¢ÖÜÆÚ£¬Ìá¸ßÈí¼þÖÊÁ¿¡£±È½Ï³£¼ûµÄÒ»¸ö³¡¾°£¬Ä³¸öÍŶÓÏȽøÐдúÂë
Build£¬´¥·¢µ¥Ôª²âÊÔ¡¢¼¯³É²âÊÔ£¬´ò°ü²âÊÔÍê±ÏºóÔÙ×Ô¶¯²¿Êðµ½²âÊÔ»·¾³£¬Ñ»·Íù¸´£¬Ðγɡ¸±àÒë-¹¹½¨-²âÊÔ-¼¯³É-²¿Êðµ½²âÊÔ»·¾³¡¹µÄ
Workflow.
³ÖÐø²¿ÊðÓë½»¸¶
ÔÚÉϸö½×¶ÎÖУ¬²úÆ·ÊÇ×Ô¶¯²¿ÊðÔÚ²âÊÔ»·¾³£¬ÊÖ¶¯²¿ÊðÔÚÉú²ú»·¾³¡£Ö®ËùÒÔÕâÑùÑ¡Ôñ£¬ÊÇÒòΪ²úÆ·ÔÚ´ÓÐèÇóµ½²¿ÊðµÄ¹ý³ÌÖУ¬»á¾ÀúÈô¸ÉÖÖ²»Í¬µÄ»·¾³£¬ÀýÈç
QA »·¾³¡¢¸÷ÖÖ×Ô¶¯»¯²âÊÔÔËÐл·¾³¡¢Éú²ú»·¾³µÈ¡£ÕâЩ»·¾³µÄ´î½¨¡¢ÅäÖᢹÜÀí£¬ÔÚ²»Í¬»·¾³ÖеľßÌ岿ÊðÊDZȽϸ´Ôӵġ£¾³£»áÓöµ½ÕâôһÖÖ³¡¾°£ºÃ÷Ã÷ÔÚ²âÊÔ»·¾³ÒѾ²¿Êð³É¹¦£¬µ«ÏßÉÏ»·¾³ÓÖ³öÏÖ²¿Êð¹ÊÕÏ¡£ÕâÖÖÇé¿öºÜ¿ÉÄÜÊÇÉú²ú»·¾³ºÍ²âÊÔ»·¾³µÄÒì¹¹Ôì³ÉµÄ¡£
ÕâʱºòÐèÒª¸Ä½øÄãµÄ CI ϵͳ£¬½¨Á¢±ê×¼»¯µÄ»·¾³²¿Êð˳Ðò£¬ÔÚ Workflow ÖÐÔö¼Ó²¿ÊðÔ¤Éú²ú»·¾³²¢½øÐлҶȼ¯³É²âÊÔµÄÁ÷³Ì£¬×öºÃÏßÉÏ»·¾³²¿ÊðºóµÄ»Ø¹é²âÊÔ¡£µ½ÕâÀÒÑ¾ÕæÕý×öµ½Á˳ÖÐø½»¸¶¡£
³ÖÐø½»¸¶²¢²»ÊÇÖ¸Èí¼þÿһ¸ö¸Ä¶¯¶¼Òª¾¡¿ì²¿Êðµ½²úÆ·»·¾³ÖУ¬ËüÖ¸µÄÊÇÈκεĴúÂëÐ޸ͼ¿ÉÒÔÔÚÈκÎʱºòʵʩ²¿Êð¡£¶ø¡º³ÖÐø²¿Ê𡻣¬¼´×Ô¶¯²¿Êðµ½Éú²ú»·¾³ÖжøÎÞÐèÊÖ¹¤¸ÉÔ¤£ºµÃµ½Ò»¸ö°æ±¾ºó£¬×Ô¶¯²¿Êð¸Ã°æ±¾µ½Éú²ú»·¾³ÖС£Êµ¼ùÖ¤Ã÷£¬Ïà¶Ô¶ÀÁ¢¿ìËٵز¿Êðй¦ÄÜÊÇÒ»¸öºËÐľºÕùÁ¦£¬¿ÉÒÔ¼õÇá´ó¹æÄ£¹¦Äܱä¸üµÄ·çÏÕ¡£

²¢Ðжàworkflow¼¯³ÉÒÔ¼°¸öÐÔ»¯¼¯³É
Ëæ×ÅÏîÄ¿ºÍÍŶӹæÄ£Ôö³¤£¬Ä£¿éÖ®¼äÒÀÀµ¹ØÏµ±äµÃ¸´ÔÓ£¬ÈçºÎÈ·±£´úÂëÖÊÁ¿µÄͬʱ£¬±£Ö¤´úÂë¹¹½¨µÄÒ»ÖÂÐÔºÍÎȶ¨ÐÔ£¬³ÉΪһ´óÌôÕ½¡£Docker
¿ÉÒÔ·½±ãµØÒÔ¡ºÈÝÆ÷»¯¡»µÄ·½Ê½²¿Êð£¬Ëü¾ÍÏñ¼¯×°ÏäÒ»Ñù£¬´ò°üÁËËùÓÐÒÀÀµ£¬ÔÚÆäËû·þÎñÆ÷Éϲ¿ÊðºÜÈÝÒ×£¬²»ÖÁÓÚ»»·þÎñÆ÷ºó·¢ÏÖ¸÷ÖÖÅäÖÃÎļþÉ¢ÂäÒ»µØ£¬ÕâÑù¾Í½â¾öÁ˱àÒëʱÒÀÀµºÍÔËÐÐʱÒÀÀµµÄÎÊÌâ¡£
»¹ÓÐÒ»¸öÎÊÌ⣬¿ª·¢µÄ·ÖÖ§Ô½À´Ô½¶à£¬Ã¿¸ö»îÔ¾·ÖÖ§¶¼½øÐл·¾³²¿ÊðºÍ¼¯³É²âÊÔ£¬¶Ô³ÖÐø¼¯³É»·¾³µÄά»¤³É±¾Ò²¾ÍÔ½¸ß¡£dockerµÄ¿ìËÙÆô¶¯ºÍ¾µÏñ²Ö¿âÊÇÌìÉúΪ
CI/CD Éè¼ÆµÄ£¬ÒÔǰÆô¶¯Ò»¸öÐéÄâ»úÐèÒª¼¸·ÖÖÓ£¬¶øÆô¶¯ Docker Ö»ÐèÒª¼¸ÃëÖÓ£¬Èò¢ÐеijÖÐø¼¯³É²ÅÄܳÉΪ¿ÉÄÜ¡£
Ŀǰ£¬±È½Ï³£¼ûµÄ»ùÓÚ Docker ½øÐгÖÐø¼¯³ÉµÄÁ÷³ÌÈçÏ£º
¿ª·¢ÕßÌá½»´úÂë
´¥·¢¾µÏñ¹¹½¨
¹¹½¨¾µÏñÉÏ´«ÖÁ˽Óвֿâ
¾µÏñÏÂÔØÖÁÖ´ÐлúÆ÷
¾µÏñÔËÐÐ
³ÖÐø¼¯³É¹¤¾ß
´«Í³µÄCI¹¤¾ß
µÚÒ»¸öÕý¹æµÄ³ÖÐø¼¯³É¹¤¾ßÊÇÓÚ2001ÄêËùÍÆ³öµÄCruiseControl£¬ÕâÊÇÒ»¸ö»ùÓÚJava¿ª·¢µÄ¿ªÔ´Èí¼þ¡£³ýÁ˳ÖÐø¹¹½¨Á÷³ÌÖ®Í⣬Ëü»¹ÌṩÁËÓʼþ֪ͨ¡¢AntÒÔ¼°¶Ô¸÷ÖÖÔ´´úÂë¿ØÖÆÏµÍ³µÄÖ§³Ö£¬²¢ÍƳöÁËÖ§³Ö.NETÓëRubyµÄÒÆÖ²°æ±¾¡£¾¡¹ÜJenkinsºóÀ´¾ÓÉÏ£¬³ÉΪµÚÒ»¸öµÃµ½¹ã·ºÓ¦ÓõÄCI¹¤¾ß£¬µ«CruiseControlÒѾ¾ß±¸ÁËÒ»¸öCI¹¤¾ßµÄ»ù±¾¹¦ÄÜ£¬ÎªCI¹ý³ÌµÄÍÆ¹ã×ö³öÁ˺ܴóµÄ¹±Ïס£
JenkinsµÄ³öÏÖÓë·¢Õ¹ÆÄÓд«ÆæÉ«²Ê£¬ËüµÄǰÉíÊÇÓÉһλÀ´×ÔSun¹«Ë¾µÄ¿ª·¢Õß´¨¿ÚºÆ½é£¨Kohsuke
Kawaguchi£©ÓÚ2004Ä꿪·¢µÄÒ»¸ö»ùÓÚJavaµÄCI¹¤¾ßHudson¡£¾¹ýÈý/ËÄÄêµÄ·¢Õ¹ºó£¬ËüÖð½¥³¬Ô½CruiseControl³ÉΪÁË×îÁ÷ÐеÄCI¹¤¾ß¡£µ«×Ô´ÓOracleÊÕ¹ºÁËSunÖ®ºó£¬Ï£Íû½«Hudson×÷ΪÊշѵÄÉÌÒµ¹¤¾ß½øÐпª·¢¡£ÒÔ´¨¿ÚΪÊ׵Ŀª·¢ÕßÉçÇøÔò¾ö¶¨ÒÔJenkinsµÄÃûÒå¼ÌÐøÃâ·Ñ°æ±¾µÄ¿ª·¢¡£ÓÐȤµÄÊÇ£¬HudsonÓëJenkinsµÄ¿ª·¢Õ߸÷×Ô½«¶Ô·½ÊÓΪ×Ô¼ºµÄ·ÖÖ§°æ±¾£¬¶ø½«×ÔÉíÊÓΪÕýͳ¡£ÔÚ2013Äêºó£¬JenkinsµÄ·¢Õ¹ÊÆÍ·ÒÑÓг¬Ô½Ö®ÊÆ£¬ËüµÄÿÈÕÌá½»´ÎÊýÔ¶Ô¶µØ³¬Ô½ÁËHudson£¬Èç½ñÒѳÉΪÊÐÃæÉÏ×îÁ÷ÐеÄCI¹¤¾ß¡£
ÔçÆÚµÄJenkinsÓëÆäËû´«Í³CIÒ»Ñù£¬Ö»Ö§³Ö±¾µØÍйܡ£¶øÏÖÔÚÒѾÓÐÒ»Ð©ÔÆ¼ÆËãÆ½Ì¨ÍÆ³öÁË»ùÓÚJenkinsµÄSaaS·½°¸¡£Õâ·½Ãæ±È½ÏÍ»³öµÄÓÐCloudBees£¬ËüËùÌṩµÄ·½°¸ÊÇÒ»ÖÖ¼¯³ÉÁËCIÓëCDµÄ»ìºÏ·½°¸£¬¿Éͨ¹ýDocker
Pipeline²å¼þÌṩ¶ÔDockerÈÝÆ÷µÄÖ§³Ö¡£
³ýÁËJenkinsÖ®Í⣬ÆäËûһЩÁ÷ÐеÄCI¹¤¾ß»¹°üÀ¨ÓÉJetBrainsÍÆ³öµÄTeamCity£¬ÒÔ¼°ÓÉAtlassianÍÆ³öµÄBambooµÈµÈ¡£ÕâЩCI¹¤¾ß»ù±¾¶¼ÌṩÁËÒÔϹ¦ÄÜ£º
¶ÔÔ´´úÂë¿ØÖÆÏµÍ³µÄÖ§³Ö£¬ÀýÈçGit¡¢Subversion¡¢TFSµÈµÈ¡£¿ÉÒÔÔÚ´úÂë¿ØÖÆµÄÖ÷Ïß·¢Éú´úÂëÌύʱ×Ô¶¯´¥·¢ºóÐøµÄһϵÁв½Ö裬ÀýÈç¹¹½¨¡¢²âÊÔÓ벿ÊðµÈµÈ¡£
¶ÔÒÀÀµ¹ÜÀí¹¤¾ßµÄÖ§³Ö£¬ÈçJavaµÄMaven¡¢NodeJSµÄNPM¡¢RubyµÄGem£¬ÒÔ¼°.NETµÄNugetµÈµÈ¡£
¶Ô¸÷ÖÖÀàÐͲâÊÔµÄÖ§³Ö¡£ÔçÆÚµÄCIÖ»Ö§³Öµ¥Ôª²âÊÔ£¬¼´µ¥¸ö¶ÔÏó»ò×é¼þµÄ¹¦ÄÜÑéÖ¤¡£Ëæºó¼ÓÈëÁ˶Լ¯³É²âÊÔµÄÖ§³Ö£¬¼´¶Ô×é¼þÖ®¼äµÄͨÐÅÓë½»»¥½øÐÐÄÑ¡£¾¡¹ÜÈç´Ë£¬Õ⻹²»×ãÒÔÑé֤ϵͳȷʵ°´ÕÕÓû§ÆÚÍûµÄ·½Ê½½øÐй¤×÷¡£Òò´ËÏÖ´ú»¯µÄCI¹¤¾ß¿ªÊ¼Ö§³Ö¹¦ÄÜÐÔ²âÊÔ£¬½«ÔÏȵÄÊÖ¹¤²âÊÔÌæ´úΪ»ùÓÚSeleniumµÈ¹¤¾ßµÄ×Ô¶¯»¯²âÊÔ¡£
ÔÆ¼ÆËã»·¾³ÖеÄCI¹¤¾ß
ÔøÔÚ´ó¹æÄ£ÆóÒµÖг¢ÊÔ¹ýCIʵ¼ùµÄ¿ª·¢Õ߷dz£Á˽⣺´úÂëµÄ¹¹½¨Óë²âÊÔµÄÖ´ÐÐÊÇÒ»Öַdz£ÏûºÄ×ÊÔ´µÄ²Ù×÷£¬Èç¹ûÓжà¸öÍŶÓʹÓÃͬһ¸öCIƽ̨£¬ÄÇôÕâÖÖÇé¿ö½«½øÒ»²½¼Ó¾ç¡£½ü¼¸ÄêÀ´£¬Èí¼þÍŶÓÖð½¥Ñá¾ëÁ˱¾µØÍйܵÄCIϵͳ¶Ôʱ¼äÓ뾫Á¦µÄÒªÇó¡£¶ø»ùÓÚÔÆ¼ÆËãÆ½Ì¨µÄSaaS½â¾ö·½°¸µÄ³öÏÖ¿ìËÙµØÃÖ²¹ÁËÕâ·½ÃæÊг¡µÄȱʧ¡£
Travis CIÊÇÒ»¸ö»ùÓÚGitHub APIËù´òÔìµÄÍйÜCI·þÎñ£¬Ê¹ÓÃTravis CIÓÐÒ»¸öÏȾöÌõ¼þ£¬¼´Ô´´úÂëÐèÒªÔÚGitHub½øÐÐÍйܡ£Travis
CIͨ¹ýwebhook¶ÔGitHub´úÂë²Ö¿âÖеĸ÷Öֱ仯½øÐÐÏìÓ¦£¬ÀýÈç´úÂëÌá½»»òpull requestµÈµÈ¡£Travis
CIÒ²ÒÀÀµGitHubÌṩµÄ·þÎñ¶ÔÓû§ºÍ×éÖ¯½øÐÐÈÏÖ¤¡£
ʹÓûùÓÚÔÆ»·¾³µÄCIϵͳÈÿª·¢ÕßµÃÒÔ´Ó¶Ô±¾µØCIϵͳµÄ°²×°¡¢ÅäÖùý³ÌÖнâÍÑ£¬²»±ØÔÙ¹Ø×¢ÓÚ»ù´¡ÉèÊ©ºÍÓû§ÈÏÖ¤ÓëÊÚȨ·½ÃæµÄÎÊÌâ¡£´ËÍ⣬ÓÉÓÚ´ó¶àÊýSaaS·½°¸¶¼ÌṩÁ˶ÔÓ¦µÄAPI£¬Òò´ËÕû¸ö¹¤×÷Á÷¶¼¿ÉÒÔʵÏÖAPIÇý¶¯¡£
»ùÓÚÔÆ»·¾³µÄCIϵͳ»¹ÓÐÁíÒ»´óÓÅÊÆ£¬ËûÃÇͨ³£»áÌṩ¸ü¶àµÄ²âÊÔ¹¦ÄÜ£¬ÀýÈç¶Ô²»Í¬ä¯ÀÀÆ÷Óë²Ù×÷ϵͳ×éºÏÌõ¼þµÄ²âÊÔ¡£ÀýÈçTravis¾ÍÖ§³ÖÔÚLinux¡¢MacºÍWindowsϵͳÉϵIJâÊÔ£¬²¢Ö§³ÖPHP¡¢NodeJS¡¢goºÍCµÈ¸÷ÖÖÓïÑÔ¡£
ÓÃÓÚÒÆ¶¯Ó¦ÓõÄCI¹¤¾ß
Ëæ×ÅÖÇÄÜÊÖ»úµÄÈÕÒæÆÕ¼°£¬Òƶ¯Ó¦ÓõÄÊýÁ¿Ò²ÔÚ²»¶ÏÔö³¤¡£µ«ÓÉÓÚÒÆ¶¯Ó¦ÓÃÓëWebÓ¦ÓÃÏà±ÈÓÐÒ»Ð©ÌØ±ðÖ®´¦£¬ÀýÈçËüµÄ²âÊÔÓë·¢²¼·½Ê½£¬ÒÔ¼°ÍêÈ«²»Í¬µÄÒÀÀµ¹ÜÀí»úÖÆ£¬Òò´ËÒÆ¶¯Ó¦ÓöÔÓÚ¹¹½¨¡¢²âÊÔ¼°²¿ÊðÁ÷³ÌÌá³öÁËÍêÈ«²»Í¬µÄÒªÇó£¬ÕâÊÇ´«Í³µÄCI¹¤¾ßÁ¦Ëù²»¼°µÄ¡£ºÃÔÚÈç½ñÒѾÓм¸¼ÒÖ÷Á÷µÄCIÌṩÉÌʵÏÖÁËÖ§³ÖÒÆ¶¯Ó¦ÓõÄCI¹¤¾ß£¬ÀýÈçCircleCIÒѾÌṩÁ˶ÔiOSÓ¦ÓõÄÖ§³Ö¡£
ÒÆ¶¯Ó¦ÓõIJâÊÔÓëWebÓ¦ÓþßÓкܴóµÄ²î±ð£¬WebÓ¦ÓõĿͻ§¶Ë¶àÊý¼¯ÖÐÔÚһЩÖ÷Á÷µÄä¯ÀÀÆ÷Óë²Ù×÷ϵͳÉÏ£¬¶øÒƶ¯Ó¦ÓõĿͻ§¶ËÍùÍùÊÇǧ²îÍò±ðµÄ£¬ÌرðÊÇÔÚAndroidƽ̨ÉÏ¡£Ä³Ð©²âÊÔ¿ò¼Ü£¬ÀýÈçEspressoÒÔ¼°AppiumÄܹ»×Ô¶¯ÌæÄã½â¾öÐí¶àÀ§ÄÑ¡£¶øÏñCrashlyticsÓëHockeyAppÕâÑùµÄ¹¤¾ß³ýÁËÄÚÖõÄCI¹¦ÄÜÖ®Í⣬»¹Äܹ»×Ô¶¯Éú³ÉÓ¦ÓñÀÀ£µÄ±¨¸æ£¬Îª¿ª·¢Õß½øÐÐÎÊÌâÕï¶ÏÌṩ³ä·ÖµÄÉÏÏÂÎÄ¡£
¶øÓÉÓÚÒÆ¶¯¿Í»§¶ËµÄ¶àÑùÐÔ£¬ÒÔ¼¯Öл¯µÄ·½Ê½½øÐÐËùÓвâÊԵķ½Ê½ÊDz»Ì«Êµ¼ÊµÄ¡£Òò´Ë£¬Òƶ¯¿ª·¢ÉçÇø¸üÍÆ³çbeta²âÊԵķ½Ê½£¬Í¨¹ýTestFairy»òTestFlightµÈ¹¤¾ß½«Ç±ÔÚµÄа汾·¢²¼¸øbeta²âÊÔÈËÔ±¡£
ÒÆ¶¯Ó¦ÓõÄÁíÒ»¸ö¶ÀÌØÖ®´¦ÔÚÓÚËüµÄ·¢²¼·½Ê½£¬Í¨³£ÐèÒª¾¹ýÂþ³¤¶ø·±ËöµÄÉóºËÁ÷³Ì²Å¿É·¢²¼ÖÁ¶ÔÓ¦µÄÓ¦ÓÃÉ̵ꡣÕâ²»½ö½µµÍÁ˳ÖÐø½»¸¶µÄËÙ¶È£¬»¹²»µÃ²»ÔÚÁ÷³ÌÖÐÒýÈë¸÷ÖÖÈ˹¤²½Ö裬ʹȫ×Ô¶¯»¯µÄÁ÷³ÌÎÞ·¨ÊµÏÖ¡£
Ϊ´Ë£¬ÏñFastlaneÕâÑùµÄ¹¤¾ß¿ÉʵÏÖ½«Ó¦ÓÃÉóºËÁ÷³ÌÖеĴ󲿷ÖÔªËØÊµÏÖ×Ô¶¯»¯£¬ÀýÈçΪÐÂÓ¦ÓýøÐÐÆÁÄ»½ØÍ¼¼°´¦ÀíÈÏÖ¤µÈÐÅÏ¢¡£¿É½áºÏJenkinsµÈCI¹¤¾ßÒÔÍêÉÆÕû¸ö¹¤×÷Á÷¡£
CI¹¤¾ßµÄδÀ´
CIÓëCD¹ý³ÌÈç½ñÒѳÉΪÏÖ´ú»¯Ó¦Óÿª·¢ÖÐÒ»¸ö²¢²»¿ÉÉÙµÄÔªËØ£¬¾ø´ó¶àÊý¿ª·¢ÍŶÓÔÚÈí¼þÏîÄ¿Öж¼ÐèÒªÉè¼ÆÒ»¸öÍêÉÆµÄCIÓëCD¹¤×÷Á÷¡£
¶øCIµÄ·¢Õ¹²¢²»»áÍ£Ï½Ų½£¬ËüÈÔ´¦ÓÚ¸ßËٵķ¢Õ¹ÖС£ÔÚ¶ÔWeb¼°Òƶ¯ÏîĿ֧³ÖµÄ»ù´¡ÉÏ£¬Î´À´¼¸ÄêÖ®ÄÚ£¬ÎÒÃǽ«¿´µ½CIÔÚÆäËûÀàÐ͵Ŀª·¢ÖеÄÓ¦Óã¬ÀýÈçÖÇÄÜÊÖ±í¡¢ÖÇÄÜÆû³µÒÔ¼°ÎïÁªÍøÖУ¬ÉõÖÁÊÇÔÚÐéÄâÏÖʵÓëÉúÎï¿Æ¼¼ÏîÄ¿ÖеÄÓ¦Óá£
CI¹ý³ÌĿǰËùÃæÁÙµÄÒ»¸öÌôÕ½ÔÚÓÚÔÚ¿ª·¢»·¾³ÖÐÖ´ÐеÄ×Ô¶¯»¯²âÊÔÓëÉú²ú»·¾³Ö®¼ä×ÜÊÇ´æÔÚ×Å»ò¶à»òÉٵIJî±ð¡£Ëæ×ŽüÀ´ÄêÒÔDockerΪ´ú±íµÄÈÝÆ÷»¯¼¼ÊõÔÚ£¨Î¢£©·þÎñϵͳÖеĹ㷺ӦÓã¬CI¹ý³ÌÒ²´ÓÈÝÆ÷µÄʹÓÃÖÐÊÜÒæ·Ëdz¡£DockerµÄ¸ß¿ÉÒÆÖ²ÐÔʹ¶à¸öCIÌṩÉÌ¿ªÊ¼Óµ±§Docker¡£¾ÙÀýÀ´Ëµ£¬CircleCI¾ÍÖ§³Ö»ùÓÚÈÝÆ÷µÄÓ¦Ó㬶øCodeShip½üÆÚÒ²ÍÆ³öÁËJet£¬ÕâÊÇÒ»¸ö¶ÔDockerÓ¦ÓýøÐвâÊÔÓ벿ÊðµÄ½â¾ö·½°¸¡£
³ÖÐø¼¯³É×î¼Ñʵ¼ùÒªµã
³ÖÐø¼¯³ÉÎÞÂÛÊǹ¤¾ßʹÓû¹ÊÇÁ÷³Ì¶¨Ò壬Æäʵ¶¼²»ÄÑ£¬ÄѵÄÊÇÈçºÎÐγÉÕâÑùµÄϰ¹ßÓëÎÄ»¯¡£±ÊÕßͨ¹ý×Ô¼ºµÄʵ¼ù¾Ñé×ܽáÁËÒÔϳÖÐø¼¯³ÉµÄ×î¼Ñʵ¼ùÒªµã£¬¿ÉÒÔ°ïÖúÈÃÕâ¸ö¸Ä½ø¸üÈÝÒ×Щ£º
Ê×ÏÈҪѡÔñÒ»¸ö¿ÉÒÔÍÑÀëIDE½øÐÐbuildµÄÓïÑÔÒÔ¼°ÏîÄ¿¶¨Ò幤¾ß¡£Õâ¸öºÜÃ÷ÏÔ£¬CIÊÇÒªÔÚ·þÎñÆ÷ÉÏÅܵġ£Èç¹ûÄãµÄÍŶӽøÐÐbuild»¹ÍêÈ«ÒÀÀµIDE£¬ÕâÊÂÇé¾Íû·¨¸ã¡£
CI¹¤¾ßÔ½ÔçÒýÈëÔ½ºÃ£¬×îºÃÊÇдµÚÒ»ÐдúÂëµÄʱºò¾ÍÏÈŪ¸öCI£¬µ«ÅäÖò»ÓÃÒ»²½µ½Î»£¬¿ÉÒÔ°´ÕÕÉÏÃæµÄ½ø½×Ò»²½²½ÍêÉÆ¡£ÕâÑù²ÅÈÝÒ×ÐγÉÎ§ÈÆCI½øÐпª·¢µÄϰ¹ß¡£
¼¯³É²âÊÔÓÃÀý×îºÃʹÓÃÏîÄ¿±¾Éí¿ª·¢ÓïÑÔ±àдºÍµ¥Ôª²âÊÔÀàËÆ£¬ÖÁÉÙÊÇÍŶӿª·¢ÈËÔ±¶¼ÊìϤµÄÓïÑÔ¡£²¢ÇÒÏîÄ¿´úÂëÒªºÍ¼¯³É²âÊÔÓÃÀýÔÚͬһ¸öÔ´Âë²Ö¿âÀï¡£Èç¹ûÄãµÄÍŶÓÓÐרÃŵÄQAÈËԱд²âÊÔÓÃÀý£¬ÄÇ×îºÃÈÃQAºÍ¿ª·¢ÈËÔ±¹²Ïíͬһ¸ö´úÂë²Ö¿â¡£Èç¹ûÄãµÄ¼¯³É²âÊÔϵͳÊÇͨ¹ýÅäÖÃʵÏֵģ¬ÄÇÒ²Ç뽫²âÊÔÓÃÀý×÷ΪÅäÖÃÎļþ·Åµ½´úÂë²Ö¿âÖУ¬¶ø²»ÊÇͨ¹ýweb±à¼Æ÷·Åµ½Êý¾Ý¿âÖС£ÕâÑù×öµÄ×î´óºÃ´¦ÊÇÏîÄ¿´úÂëºÍ¼¯³É²âÊÔ´úÂë¹²Ïíͬһ¸ö·ÖÖ§£¬Í¬Ò»¸öbuild
number£¬Ö»ÓÐÕâÑù²ÅÄÜ×ö¶à·ÖÖ§µÄ²¢ÐвâÊÔ¡£·ñÔòÈç¹û²âÊÔÓÃÀýµ¥¶Àά»¤£¬´úÂëµÄ·ÖÖ§ÈçºÎºÍ²âÊÔÓÃÀý¶ÔÓ¦ÆðÀ´£¿×îºóµÄ½á¹û¾ÍÊÇ£¬×Ô¶¯»¯²âÊÔÓÃÀý¶¼ÊÇÉÏÏߺ󲹳äµÄ£¬ÉÏÏßǰ»¹ÊÇÒÀÀµÈËÈâ²âÊÔ¡£
±àд²âÊÔÓÃÀýºÍ¹¦ÄÜ¿ª·¢×îºÃÊÇͬһ¸öÈË£¬Èç¹û×ö²»µ½£¬±àд²âÊÔÓÃÀýµÄ¿ª·¢Ò²ÒªÓÐȨÏÞÐÞ¸ÄÒµÎñ´úÂë¡£ÒòΪҪ×ö×Ô¶¯»¯²âÊÔ±ØÐëÔÚϵͳÖÐÁôһЩºóÃÅÀ´¸ø×Ô¶¯»¯²âÊÔÌṩ±ãÀû¡£±ÈÈçÌṩÓû§µÄÅúÁ¿Éú³ÉºÍÏú»Ù£¬±ÈÈç¶Ô²âÊÔµÄÇëÇ󲻼Ǽµ½Í³¼ÆÈÕÖ¾Öеȵȡ£
²¿ÊðµÄ½Å±¾»òÕßÅäÖÃ×îºÃºÍÏîÄ¿ÔÚͬһ¸öÔ´Âë²Ö¿â¡£Ö»ÓÐÕâÑù£¬×Ô¶¯»¯²¿Êð²Å·½±ãʵʩ¡£ÒòΪÏîÄ¿µÄ¸Ä½øÒÔ¼°Öع¹£¬ÍùÍù°éËæ×ÅÒÀÀµ×ÊÔ´ÒÔ¼°²¿Êð»úÖÆÉϵĸÄÔì¡£
·þÎñ×îºÃ²»ÒÀÀµÍⲿÈÝÆ÷£¬¿ÉÒÔ¶ÀÁ¢ÔËÐС£Õâ¸öרָjavaµÄÈÝÆ÷£¬ÆäËûµÄÈçgo,nodejs¶¼Ã»ÓÐÕâ¸öÎÊÌâ¡£javaµÄÈÝÆ÷ÊÇÆóÒµÓ¦ÓÃΪÁ˽µµÍ²¿Êð³É±¾´øÀ´µÄϰ¹ß£¬µ«µ±Ç°ÐéÄ⻯£¬dockerµÈ¼¼ÊõÕâÑù³ÉÊìµÄÇé¿öÏ£¬Ó¦ÓÃÈÝÆ÷ÒѾÍêȫû±ØÒªÁË¡£Èç¹û·ÇÒªÓã¬Ò²×îºÃÖ±½ÓºÍÓ¦Óôò°üÔÚÒ»Æð£¬ÈÃÓ¦ÓÿÉÒÔÖ±½ÓÔËÐУ¬Õâ¶Ô¿ª·¢Ð§ÂÊÒÔ¼°¼¯³É²âÊÔ£¬¶¼·Ç³£ÓаïÖú¡£
×îºÃÌṩһÖÖÖ±½Ó¿ÉÒÔµ¥½ø³ÌÔËÐÐÕû¸öϵͳ¶ø²»ÒÀÀµÍⲿ×ÊÔ´µÄÅäÖã¬Íⲿ×ÊÔ´¶¼ÓÃÄÚ´æ°æµÄ¿â½øÐÐmock¡£ÕâÑù×öµÄºÃ´¦ÊÇ¿ÉÒԷdz£¿ìËٵĽøÐгõ²½µÄ¼¯³É²âÊÔÑéÖ¤£¬Í¬Ê±Ò²·Ç³£·½±ãͳ¼Æ¼¯³É²âÊÔ¸²¸ÇÂÊ£¨Í¨¹ýµ¥Ôª²âÊÔ¸²¸ÇÂʹ¤¾ß¼´¿ÉʵÏÖ£©¡£
Èç¹û¹«Ë¾Óжà¸öÑз¢ÍŶӣ¬×îºÃ¹²ÏíCI³Ø£¬ÕâÑù³É±¾×îС¡£ÓеĹ«Ë¾ÎªÁËʡǮ£¬±ÜÃⳬ¹ýÃâ·ÑÏÞÖÆ£¬²¿Êð¶àÌ×CI¡£ÆäʵËãÏÂÀ´ÕâÑù³É±¾±È¹ºÂòÉÌÒµ°æ¸ü¸ß¡£
×ܽá
³ÖÐø¼¯³ÉÊÇ×îÄÜÌåÏÖÒ»¸öÍŶӵÄDevOps£¨¹ØÓÚDevOps½«ÔÚ½ÓÏÂÀ´µÄÎÄÕÂÖнøÐн²½â£©·ÕΧÒÔ¼°Ë®Æ½µÄÒ»¸ö³¡¾°£¬ÒòΪÕû¸öÁ÷³ÌÐèÒª¿ª·¢£¬²âÊÔ£¬ÔËάµÄ½ôÃÜÐ×÷£¬È±Ò»²»¿É¡£ |