¾³£»áÌýµ½³ÖÐø¼¯³É£¬³ÖÐø½»¸¶£¬³ÖÐø²¿Êð£¬ÈýÕß¾¿¾¹ÊÇʲô£¬ÓкÎÁªÏµºÍÇø±ðÄØ£¿

¼ÙÈç°Ñ¿ª·¢¹¤×÷Á÷³Ì·ÖΪÒÔϼ¸¸ö½×¶Î£º
±àÂë -> ¹¹½¨ -> ¼¯³É -> ²âÊÔ -> ½»¸¶ -> ²¿Êð
ÕýÈçÄãÔÚÉÏͼÖп´µ½£¬¡¸³ÖÐø¼¯³É£¨Continuous Integration£©¡¹¡¢¡¸³ÖÐø½»¸¶£¨Continuous
Delivery£©¡¹ºÍ¡¸³ÖÐø²¿Êð£¨Continuous Deployment£©¡¹ÓÐ×Ų»Í¬µÄÈí¼þ×Ô¶¯»¯½»¸¶ÖÜÆÚ¡£
³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÊÇÖ¸Èí¼þ¸öÈËÑз¢µÄ²¿·ÖÏòÈí¼þÕûÌ岿·Ö½»¸¶£¬Æµ·±½øÐм¯³ÉÒÔ±ã¸ü¿ìµØ·¢ÏÖÆäÖеĴíÎ󡣡°³ÖÐø¼¯³É¡±Ô´×ÔÓÚ¼«ÏÞ±à³Ì£¨XP£©£¬ÊÇ
XP ×î³õµÄ 12 ÖÖʵ¼ùÖ®Ò»¡£

CI ÐèÒª¾ß±¸ÕâЩ£º
È«ÃæµÄ×Ô¶¯»¯²âÊÔ¡£ÕâÊÇʵ¼ù³ÖÐø¼¯³É&³ÖÐø²¿ÊðµÄ»ù´¡£¬Í¬Ê±£¬Ñ¡ÔñºÏÊʵÄ×Ô¶¯»¯²âÊÔ¹¤¾ßÒ²¼«ÆäÖØÒª£»
Áé»îµÄ»ù´¡ÉèÊ©¡£ÈÝÆ÷£¬ÐéÄâ»úµÄ´æÔÚÈÿª·¢ÈËÔ±ºÍ QA ÈËÔ±²»±ØÔÙ´ó·ÑÖÜÕÛ£»
°æ±¾¿ØÖƹ¤¾ß¡£Èç Git£¬CVS£¬SVN µÈ£»
×Ô¶¯»¯µÄ¹¹½¨ºÍÈí¼þ·¢²¼Á÷³ÌµÄ¹¤¾ß£¬Èç Jenkins£¬flow.ci£»
·´À¡»úÖÆ¡£Èç¹¹½¨/²âÊÔµÄʧ°Ü£¬¿ÉÒÔ¿ìËٵط´À¡µ½Ïà¹Ø¸ºÔðÈË£¬ÒÔ¾¡¿ì½â¾ö´ïµ½Ò»¸ö¸üÎȶ¨µÄ°æ±¾¡£
³ÖÐø¼¯³ÉµÄÓŵã
¡°¿ìËÙʧ°Ü¡±£¬ÔÚ¶Ô²úƷûÓзçÏÕµÄÇé¿öϽøÐвâÊÔ£¬²¢¿ìËÙÏìÓ¦£»
×î´óÏ޶ȵؼõÉÙ·çÏÕ£¬½µµÍÐÞ¸´´íÎó´úÂëµÄ³É±¾£»
½«Öظ´ÐÔµÄÊÖ¹¤Á÷³Ì×Ô¶¯»¯£¬Èù¤³Ìʦ¸ü¼ÓרעÓÚ´úÂ룻
±£³ÖƵ·±²¿Ê𣬿ìËÙÉú³É¿É²¿ÊðµÄÈí¼þ£»
Ìá¸ßÏîÄ¿µÄÄܼû¶È£¬·½±ãÍŶӳÉÔ±Á˽âÏîÄ¿µÄ½ø¶ÈºÍ³ÉÊì¶È£»
ÔöÇ¿¿ª·¢ÈËÔ±¶ÔÈí¼þ²úÆ·µÄÐÅÐÄ£¬°ïÖú½¨Á¢¸üºÃµÄ¹¤³ÌʦÎÄ»¯¡£
³ÖÐø¼¯³É£¬¸Ã´ÓºÎÈëÊÖ
×îÖØÒªµÄÒ»»·ÊÇÑ¡ÔñºÏÊʵijÖÐø¼¯³Éϵͳ¡£ÊǴ˽Óв¿Êð»¹ÊÇÑ¡ÔñÍйÜÐͳÖÐø¼¯³Éϵͳ£¬¹Ø¼üÔÚÓÚÍŶÓÔËÐеĻù´¡ÉèÊ©£¬ÍŶӶԳÖÐø¼¯³ÉϵͳµÄ×ÊԴͶÈëÁ¦¶È¡£
¶Ô±ÈÒ»ÏÂ˽Óв¿ÊðºÍÍйÜÐͳÖÐø¼¯³Éϵͳ£¬»òÐíÄܰïÖúÄã¸üºÃµØ×ö³öÑ¡Ôñ¡£
Self Hosted CI Ö¸µÄÊǽ«Èí¼þ²¿ÊðÔÚ¹«Ë¾µÄ»ú·¿»òÄÚÍøÖУ¬ÐèÒªÌṩ¶ą̀·þÎñÆ÷À´Íê³É CI ϵͳµÄÔËת£¬Í¬Ê±ÐèÒª¶Ô²»Í¬»úÆ÷Ö®¼ä½øÐл·¾³ÅäÖᣱÈÈçMaven
»ò Gradle »ò Jenkins £¬ËûÃǵÄÌØµãÊÇ×ÔÓÉ¿ªÔ´£¬ÇÒÎĵµÖ§³Ö¹ã·º¡£ÓŵãÔÚÓÚ¶Ô¹¹½¨»·¾³ÓÐÍêÈ«µÄ¿ØÖÆÈ¨£¬Äܹ»ÊµÏÖÍêÈ«¶¨ÖÆ¡£µ«ÐèÒª´î½¨»·¾³ºÍÅäÖá¢Î¬»¤³É±¾¸ß£¬ÐèÒªÂòרÃŵĻúÆ÷£¬»¨·Ñ½Ï¶àÈËÁ¦ÎïÁ¦ÇÒ¸üÐÂÇ¨ÒÆ·çÏոߣ»
Hosted CI Ö¸µÄÊÇÓÉ SaaS Ð굀 CI ·þÎñ£¬È«³ÌÔÚÏß½øÐй¹½¨ÅäÖ㬲»ÐèÒª¿¼ÂÇ×°»úÆ÷£¬×°Èí¼þ£¬»·¾³´î½¨µÈ³É±¾¡£³£¼ûµÄÓÐ
CircleCI£¬Codeship ºÍ TravisCI µÈ£¬»¹ÓйúÄÚ×îеijÖÐø¼¯³É·þÎñ¡ª¡ªflow.ci
¡£SaaS Ð굀 CI µÄÌØµãÔÚÓÚÎÞÐè¶îÍâ»úÆ÷£¬¼¸·ÖÖӾͿÉÒÔÓÃÆðÀ´¡£¿ÉÒÔ¸ù¾ÝÄãµÄÐèÒª¶¯Ì¬µ÷¶È×ÊÔ´¡£Ê¡Ê±£¬Ê¡ÐÄ£¬Ê¡Á¦¡£
ÕûÌå¶øÑÔ£¬Jenkins ¹ýÈ¥Ò»Ö±ÊǴ󲿷ֹ«Ë¾µÄÑ¡Ôñ£¬µ«Õâ¸öÏÖÏóÕýÔÚ·¢Éú¸Ä±ä£¬Ëæ×Ź«ÓÐÔÆ·þÎñ¡¢Docker£¬SaaS
µÄÆÕ¼°£¬Ô½À´Ô½¶àµÄÆóÒµ¿ªÊ¼Ñ¡Ôñ Hosted CI£¬Ò²¾ÍÊÇÍйÜÐͳÖÐø¼¯³Éϵͳ¡£
ÁíÍ⣬ÔÚÑ¡ÔñºÏÊʵijÖÐø¼¯³É·þÎñʱ£¬»¹ÐèÒª¿¼Á¿ÏµÍ³µÄÁé»î¶ÈÒÔÊÊÓ¦¹«Ë¾²»Í¬½×¶ÎµÄ¿ª·¢²âÊÔÐèÇó¡£
Ñ¡Ôñ³ÖÐø¼¯³ÉϵͳֻÊdzÖÐø¼¯³ÉÓ¦ÓÃµÄÆäÖÐÒ»²½£¬»¹ÐèÒª½¨Á¢ºÏÊʵijÖÐø¼¯³ÉÎÄ»¯±ÈÈç´úÂëÖÊÁ¿¹Ü¿Ø¡¢²âÊÔÎÄ»¯µÈ¡£×öºÃ³ÖÐø¼¯³É£¬¿ÉΪ³ÖÐø½»¸¶Óë³ÖÐø²¿Êð´òºÃ¼áʵ»ù´¡¡£
³ÖÐø½»¸¶
³ÖÐø½»¸¶ÔÚ³ÖÐø¼¯³ÉµÄ»ù´¡ÉÏ£¬½«¼¯³ÉºóµÄ´úÂ벿Ê𵽸üÌù½üÕæÊµÔËÐл·¾³µÄ¡¸ÀàÉú²ú»·¾³¡¹£¨production-like
environments£©ÖС£³ÖÐø½»¸¶ÓÅÏÈÓÚÕû¸ö²úÆ·ÉúÃüÖÜÆÚµÄÈí¼þ²¿Ê𣬽¨Á¢ÔÚ¸ßˮƽ×Ô¶¯»¯³ÖÐø¼¯³ÉÖ®ÉÏ¡£

ÊÔÏëÏ룬Èç¹û˵µÈµ½ËùÓж«Î÷¶¼Íê³ÉÁ˲ÅÏòϸö»·½Ú½»¸¶£¬µ¼ÖÂËùÓеÄÎÊÌâÖ»ÄÜÔÙ×îºó²Å±¬·¢³öÀ´£¬½â¾ö³É±¾¾Þ´óÉõÖÁÎÞ·¨½â¾ö¡£±ÈÈ磬ÎÒÃÇÍê³Éµ¥Ôª²âÊԺ󣬿ÉÒÔ°Ñ´úÂ벿Êðµ½Á¬½ÓÊý¾Ý¿âµÄ
Staging »·¾³ÖнøÐиü¶àµÄ×Ô¶¯»¯²âÊÔ¡£Èç¹û´úÂëûÓÐÎÊÌ⣬¿ÉÒÔ¼ÌÐøÊÖ¶¯²¿Êðµ½Éú²ú»·¾³ÖС£µ±È»£¬³ÖÐø½»¸¶²¢²»ÊÇÖ¸Èí¼þÿһ¸ö¸Ä¶¯¶¼Òª¾¡¿ì²¿Êðµ½²úÆ·»·¾³ÖУ¬ËüÖ¸µÄÊÇÈκεĴúÂëÐ޸ͼ¿ÉÒÔÔÚÈκÎʱºòʵʩ²¿Êð¡£
³ÖÐø½»¸¶µÄºÃ´¦
³ÖÐø½»¸¶ºÍ³ÖÐø¼¯³ÉµÄÓŵã·Ç³£ÏàËÆ£º
¿ìËÙ·¢²¼¡£Äܹ»Ó¦¶ÔÒµÎñÐèÇ󣬲¢¸ü¿ìµØÊµÏÖÈí¼þ¼ÛÖµ¡£
±àÂë->²âÊÔ->ÉÏÏß->½»¸¶µÄƵ·±µü´úÖÜÆÚËõ¶Ì£¬Í¬Ê±»ñµÃѸËÙ·´À¡£»
¸ßÖÊÁ¿µÄÈí¼þ·¢²¼±ê×¼¡£Õû¸ö½»¸¶¹ý³Ì±ê×¼»¯¡¢¿ÉÖØ¸´¡¢¿É¿¿£¬
Õû¸ö½»¸¶¹ý³Ì½ø¶È¿ÉÊÓ»¯£¬·½±ãÍŶÓÈËÔ±Á˽âÏîÄ¿³ÉÊì¶È£»
¸üÏȽøµÄÍŶÓÐ×÷·½Ê½¡£´ÓÐèÇó·ÖÎö¡¢²úÆ·µÄÓû§ÌåÑéµ½½»»¥ Éè¼Æ¡¢¿ª·¢¡¢²âÊÔ¡¢ÔËάµÈ½ÇÉ«ÃÜÇÐÐ×÷£¬Ïà±ÈÓÚ´«Í³µÄÆÙ²¼Ê½Èí¼þÍŶӣ¬¸üÉÙÀË·Ñ¡£
³ÖÐø²¿Êð
³ÖÐø²¿ÊðÊÇÖ¸µ±½»¸¶µÄ´úÂëͨ¹ýÆÀÉóÖ®ºó£¬×Ô¶¯²¿Êðµ½Éú²ú»·¾³ÖС£³ÖÐø²¿ÊðÊdzÖÐø½»¸¶µÄ×î¸ß½×¶Î¡£ÕâÒâζ×Å£¬ËùÓÐͨ¹ýÁËһϵÁеÄ×Ô¶¯»¯²âÊԵĸ͝¶¼½«×Ô¶¯²¿Êðµ½Éú²ú»·¾³¡£ËüÒ²¿ÉÒÔ±»³ÆÎª¡°Continuous
Release¡±¡£

Ϊʲô˵³ÖÐø²¿ÊðÊÇÀíÏëµÄ¹¤×÷Á÷³Ì£¿
¡°¿ª·¢ÈËÔ±Ìá½»´úÂ룬³ÖÐø¼¯³É·þÎñÆ÷»ñÈ¡´úÂ룬ִÐе¥Ôª²âÊÔ£¬¸ù¾Ý²âÊÔ½á¹û¾ö¶¨ÊÇ·ñ²¿Êðµ½Ô¤ÑÝ»·¾³£¬Èç¹û³É¹¦²¿Êðµ½Ô¤ÑÝ»·¾³£¬½øÐÐÕûÌåÑéÊÕ²âÊÔ£¬Èç¹û²âÊÔͨ¹ý£¬×Ô¶¯²¿Êðµ½²úÆ·»·¾³£¬È«³Ì×Ô¶¯»¯¸ßЧÔËת¡£¡±
ʵ¼ÊÉÏ£¬²úÆ·ÔÚ´ÓÐèÇóµ½²¿ÊðµÄ¹ý³ÌÖУ¬»á¾ÀúÈô¸ÉÖÖ²»Í¬µÄ»·¾³£¬ÀýÈç QA »·¾³¡¢¸÷ÖÖ×Ô¶¯»¯²âÊÔÔËÐл·¾³¡¢Éú²ú»·¾³µÈ¡£ÕâЩ»·¾³µÄ´î½¨¡¢ÅäÖᢹÜÀí£¬²úÆ·ÔÚ²»Í¬»·
¾³ÖеľßÌ岿Êð£¬×´¿öÊDZȽϷdz£¸´Ôӵ쬴ÓÍ·µ½Î²µØÈ«×Ô¶¯³ÖÐø²¿ÊðµÄÈ·À§ÄÑ¡£ÄÇô£¬Èç¹ûÄÜ×öµ½³ÖÐø½»¸¶£¬±£Ö¤´úÂëÔÚÄ£Äâ»·¾³Ã»ÎÊÌ⣬ҲÐíÍŶӳÉÔ±×öµ½ÕæÕýµÄÐÄÀíÓÐÊý¡£
³ÖÐø²¿ÊðµÄÓŵã
³ÖÐø²¿ÊðÖ÷ÒªºÃ´¦ÊÇ£¬¿ÉÒÔÏà¶Ô¶ÀÁ¢µØ²¿ÊðÐµĹ¦ÄÜ£¬²¢ÄÜ¿ìËÙµØÊÕ¼¯ÕæÊµÓû§µÄ·´À¡¡£
¡°You build it, you run it¡±£¬ÕâÊÇ Amazon Ò»Äê¿ÉÒÔÍê³É 5000 Íò´Î²¿Êð£¬Æ½¾ùÿ¸ö¹¤³ÌʦÿÌ첿Ê𳬹ý
50 ´ÎµÄºËÐÄÃØ¼®¡£
×îºó
¡¸³ÖÐø¼¯³É£¨Continuous Integration£©¡¹¡¢¡¸³ÖÐø½»¸¶£¨Continuous Delivery£©¡¹ºÍ¡¸³ÖÐø²¿Êð£¨Continuous
Deployment£©¡¹ÌṩÁËÒ»¸öÓÅÐãµÄ DevOps »·¾³£¬¶ÔÓÚÕû¸öÍŶÓÀ´Ëµ£¬ºÃ´¦ÓëÌôÕ½²¢ÐС£ÎÞÂÛÈçºÎ£¬Æµ·±²¿Ê𡢿ìËÙ½»¸¶ÒÔ¼°¿ª·¢²âÊÔÁ÷³Ì×Ô¶¯»¯¶¼½«³ÉΪδÀ´Èí¼þ¹¤³ÌµÄÖØÒª×é³É²¿·Ö¡£
|