±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚIT½ç´óÉñ²©¿Í£¬×Ô´Ó
Jenkins 2.0 °æ±¾Éý¼¶Ö®ºó£¬Ö§³ÖÁËͨ¹ý´úÂ루Groovy DSL£©À´ÃèÊöÒ»¸ö¹¹½¨Á÷Ë®Ïߣ¬¶øÔÚ2016
Jenkins World ´ó»áÉÏ·¢²¼ÁË1.2°æ±¾£¬±¾ÎĽ«¶Ô±ÈÕâÁ½ÖÖ¶¨ÒåÁ÷Ë®Ïߵķ½Ê½ÒÔ¼°ÌØÐÔ¡£ |
|
×Ô´Ó Jenkins 2.0 °æ±¾Éý¼¶Ö®ºó£¬Ö§³ÖÁËͨ¹ý´úÂ루Groovy
DSL£©À´ÃèÊöÒ»¸ö¹¹½¨Á÷Ë®Ïߣ¬Áé»î·½±ãµØÊµÏÖ³ÖÐø½»¸¶£¬´ó´óÌáÉý Jenkins Job ά»¤µÄЧÂÊ£¬ÊµÏÖ´Ó
CI µ½ CD µ½×ª±ä¡£¶øÔÚ2016 Jenkins World ´ó»áÉÏ£¬Jenkins ·¢²¼ÁË1.0°æ±¾µÄÉùÃ÷ʽÁ÷Ë®Ïß
- Declarative Pipeline£¬Ä¿Ç°ÒѾµ½·¢²¼ÁË1.2°æ±¾£¬ËüÊÇÒ»ÖÖеĽṹ»¯·½Ê½¶¨ÒåÒ»¸öÁ÷Ë®Ïß¡£½ñÌìÎÒÃÇÒ»Æð¶Ô±ÈÕâÁ½ÖÖ¶¨ÒåÁ÷Ë®Ïߵķ½Ê½ÒÔ¼°ÌØÐÔ¡£
Pipeline ÌØÐÔ - Pipeline As Code
Jenkins ´Ó¸ù±¾ÉϽ²ÊÇÒ»ÖÖÖ§³Ö¶àÖÖ×Ô¶¯»¯Ä£Ê½µÄ×Ô¶¯»¯ÒýÇæ¡£Pipeline ΪÆäÌí¼ÓÁËÒ»Ì×Ç¿´óµÄ×Ô¶¯»¯¹¤¾ß£¬Ö§³Ö´Ó¼òµ¥µÄ³ÖÐø¼¯³Éµ½È«ÃæµÄ³ÖÐø½»¸¶¡£Jenkins
Pipeline ÌØÐÔÈçÏ£º
´úÂ룺Pipeline ÒÔ´úÂëµÄÐÎʽÃèÊö£¬Í¨³£´æ´¢ÓÚÔ´´úÂë¿ØÖÆÏµÍ³£¬Èç Git£¬Ê¹ÍŶÓÄܹ»±à¼£¬Éó²éºÍµü´úÆäÁ÷³Ì¶¨Òå¡£
³Ö¾ÃÐÔ£ºPipeline ¿ÉÒÔÔڼƻ®ºÍ¼Æ»®ÍâÖØÐÂÆô¶¯ Jenkins Master ¹ÜÀíʱ²»±»Ó°Ïì¡£
¿ÉÔÝÍ££ºPipeline ¿ÉÒÔÑ¡ÔñÍ£Ö¹²¢µÈ´ýÈ˹¤ÊäÈë»òÅú×¼£¬È»ºóÔÙ¼ÌÐø Pipeline ÔËÐС£
¶à¹¦ÄÜ£ºPipeline Ö§³Ö¸´ÔÓµÄÏîÄ¿³ÖÐø½»¸¶ÒªÇ󣬰üÀ¨²¢ÐзÖÖ§/Á¬½Ó£¬Ñ»·ºÍÖ´ÐÐ Job µÄÄÜÁ¦¡£
¿ÉÀ©Õ¹£ºPipeline ²å¼þÖ§³ÖÆä DSL µÄ×Ô¶¨ÒåÀ©Õ¹ÒÔ¼°ÓëÆäËû²å¼þ¼¯³É¡£
»ùÓÚ Jenkins Pipeline£¬Óû§¿ÉÒÔÔÚÒ»¸ö JenkinsFile ÖпìËÙʵÏÖÒ»¸öÏîÄ¿µÄ´Ó¹¹½¨¡¢²âÊÔÒÔµ½·¢²¼µÄÍêÕûÁ÷³Ì£¬²¢ÇÒ¿ÉÒÔ±£´æÕâ¸öÁ÷Ë®Ïߵ͍Òå¡£
ÏÂÃæµÄÁ÷³ÌͼÊÇÔÚ Jenkins Pipeline Öн¨Ä£µÄÒ»¸ö³ÖÐø½»¸¶·½°¸µÄʾÀý£º

Pipeline »ù±¾¸ÅÄî
Node: Ò»¸ö Node ¾ÍÊÇÒ»¸ö Jenkins ½Úµã£¬»òÕßÊÇ Master£¬»òÕßÊÇ Agent£¬ÊÇÖ´ÐÐ
Step µÄ¾ßÌåÔËÐл·¾³£¬Pipeline Ö´ÐÐÖеĴ󲿷ֹ¤×÷¶¼ÊÇÔÚÒ»¸ö»ò¶à¸öÉùÃ÷ Node ²½ÖèµÄÉÏÏÂÎÄÖÐÍê³ÉµÄ¡£
Stage: Ò»¸ö Pipeline ¿ÉÒÔ´ÓÂß¼ÉÏ»®·ÖΪÈô¸É¸ö Stage£¬Ã¿¸ö Stage ´ú±íÒ»×é²Ù×÷£¬È磺Build¡¢Test¡¢Deploy¡£×¢Ò⣬Stage
ÊÇÒ»¸öÂß¼·Ö×éµÄ¸ÅÄ¿ÉÒÔ¿ç¶à¸ö Node¡£
Step: Step ÊÇ×î»ù±¾µÄ²Ù×÷µ¥Ôª£¬Ð¡µ½Ö´ÐÐÒ»¸ö Shell ½Å±¾£¬´óµ½¹¹½¨Ò»¸ö Docker
¾µÏñ£¬Óɸ÷Àà Jenkins Plugin Ìṩ£¬µ±²å¼þÀ©Õ¹Pipeline DSL ʱ£¬Í¨³£Òâζ×Ųå¼þÒѾʵÏÖÁËÒ»¸öеIJ½Öè¡£
ÁíÍâÔÚ Jenkins Pipeline Öж¨ÒåµÄ Stage£¨¸÷¸ö½×¶ÎµÄÂß¼»®·Ö£©£¬Jenkins
ÌṩÁË Stage View ²å¼þ£¬°´ÕÕ Stage Âß¼»®·ÖÈÎÎñ£¬¶ÔÓû§Í¸Ã÷»¯¡¢¿ÉÊÓ»¯Õ¹Ê¾Á÷Ë®ÏßµÄÖ´ÐУ¬ÈçÏÂͼ£º

Scripted Pipeline

ÉÏͼͨ¹ý Jenkinsfile ¶¨ÒåÁËÁ÷Ë®Ïߵĸ÷¸ö½×¶Î£¨²»½öÏÞÕ⼸¸ö½×¶Î£©£º¹¹½¨£¬²âÊÔÒÔ¼°·¢²¼£¬ÔÚÿ¸ö½×¶Î¿ÉÒÔÖ´ÐÐÏàÓ¦µÄÈÎÎñ£¬¶øÔÚ
Scripted Pipeline ÖУ¬Óû§¿ÉÒÔʹÓà Groovy Óï·¨½Å±¾À´×Ô¶¨ÒåÁ÷³Ì¿ØÖÆ£¬ÈçÏ£º

CurrentBuild ¿ÉÒÔ»ñÈ¡µµ´ÎÖ´ÐеĽá¹û£¬¿ÉÒÔÓÃÓÚÅжÁºóÐøÁ÷³Ì×ßÏò£¬Jenkins »¹ÌṩÁ˸ü¶àÄÚÖû·¾³±äÁ¿ÒÔ¼°
DSL ¶ÔÏ󣬷½±ãÎÒÃDzÙ×÷Á÷Ë®ÏßÈÎÎñ£¬È磺BUILD_ID¡¢JOB_NAME¡¢BRANCH_NAME¡¢CHANGE_ID
µÈµÈ£¬¿É²Î¿¼Global Variable¡£ÕâÖÖ·½Ê½ÊÜ Jenkins µÄÏÞÖÆ½ÏÉÙ£¬ÎÒÃÇ¿ÉÒÔÁé»î¿ØÖƺͶ¨ÒåÒ»¸öÁ÷Ë®Ïߣ¬ÉõÖÁÎÒÃÇ¿ÉÒÔÔÚ
JenkinsFile Öж¨Òå¶à¸ö Groovy º¯ÊýÀ´À©Õ¹ Jenkins Pipeline µÄÄÜÁ¦¡£
Declarative Pipeline

ͬÑùµÄ£¬ÉÏͼ¶¨ÒåÁËÁ÷Ë®Ïߵĸ÷¸ö½×¶Î£¬Declarative Pipeline ÕâÖÖ·½Ê½ÊÜ Jenkins
ÏÞÖÆ½Ï¶à£¬ÐèʹÓÃÔ¤¶¨ÒåµÄ½á¹¹¡£Jenkins ÒѾԤÖÃÁ˺ܶàÃèÊöÁ÷Ë®ÏߵĽṹ£¬¿ÉÒÔÔÚûÓÐ Groovy
»ù´¡ÉÏ¿ìËÙ½¨Á¢Á÷Ë®Ïߣ¬µ±È»ÔÚ Declarative Pipeline ͬÑùÖ§³Öд Groovy ½Å±¾£¬µ«¹Ù·½²»ÍƼö°Ñ½Å±¾Ö±½ÓдÔÚÁ÷Ë®ÏßÖУ¬Ó¦¸Ã°ÑÕâЩÂß¼¶¨ÒåÔÚ
Shared Libraries ÖС£
ÈçÏ£º

Declarative Pipeline Óï·¨
ÏÂÃæ½éÉܼ¸¸öÖØµã Declarative Pipeline Óï·¨£º
¶¨ÒåÖ´Ðл·¾³
ͨ¹ý Agent À´¶¨Òå Pipeline µÄÖ´Ðл·¾³£¬ÔÚÿ¸ö Pipeline£¬Agent
ÊDZØÐè´æÔڵġ£Agent Ò²¿ÉÒÔÓà Label Ö¸¶¨¾ßÌåµÄ Jenkins Slave Node£¬²¢ÇÒÿ¸ö
Stage ¿ÉÒÔµ¥¶ÀÖ¸¶¨ Agent£¬Áé»îµ÷¶È×ÊÔ´ÒÔ¼°ÔËÐл·¾³¡£

»·¾³±äÁ¿
¿ÉÒÔ¶¨ÒåΪȫ¾ÖµÄ£¬Ò²¿ÉÒÔΪ Stage À´¶¨Òå¡£

ÒѶ¨ÒåµÄ»·¾³±äÁ¿£¬¿ÉÒÔͨ¹ý Env À´·ÃÎÊ£¬Óë Scripted Pipeline
Ò»Ñù£¬¿ÉÒÔ·ÃÎÊ Jenkins Ô¤ÖõĻ·¾³±äÁ¿¡£

²ÎÊý
¿ÉÒÔͨ¹ý Params ¶ÔÏóÀ´·ÃÎʹ¹½¨Ê±µÄ²ÎÊý¡£È磺

Á÷³Ì¿ØÖÆ
¿ÉÒÔͨ¹ý When Óï·¨¿ØÖÆÁ÷³Ì×ßÏò£¬Åжϻ·¾³±äÁ¿»ò×Ô¶¨Òå±í´ïʽ£¬ÊÇ·ñÖ´ÐÐijһ¸ö
Stage£¬Í¬Ê± Anyof, Allof ½øÐÐÂß¼ÔËË㣬Anyof ¶ÔÓ¦»òÔËË㣬Allof ¶ÔÓ¦ÓëÔËËã¡£

³¬Ê±¡¢ÖØÊÔ»úÖÆ

×ÊÔ´µÄÇåÀí¹¤×÷ & ½áÊøºó²Ù×÷
ʹÓà Post À´Íê³ÉһЩ×ÊÔ´µÄÇåÀí¹¤×÷¡£ÆäºÍ Stages ƽ¼¶£º

ÇåÀí½áÊø½×¶ÎÒ²¿ÉÒÔÖ´ÐÐÒ»¸öÓʼþ֪ͨ£º

²¢·¢ Stages
Declarative Pipeline 1.2 °æ±¾¶Ô²¢·¢Óï·¨×öÁËÉý¼¶£º

ÆäÖÐ FailFast ¿ÉÒÔ¿ØÖÆÈç¹û²¢·¢µÄÈÎÎñµÄÆäÖÐÒ»¸öʧ°Ü£¬Á¢¼´½áÊøÁ÷Ë®Ïߣ¬Ö´ÐÐÇåÀí½áÊøÈÎÎñ¡£
×ܽá
Scripted Pipeline ºÍ Declarative Pipeline Á½ÖÖÁ÷Ë®Ïß¶¨ÒåµÄÖ÷񻂿±ðÔÚÓÚÓï·¨ºÍÁé»îÐÔÉÏ£¬
Declarative Pipeline Óï·¨ÒªÇó¸üÑÏ£¬ÐèʹÓà Jenkins Ô¤¶¨ÒåµÄDSL ½á¹¹£¬Ê¹Óüòµ¥£»
Scripted Pipeline ÊÜÏÞºÜÉÙ£¬ÏÞÖÆÖ÷ÒªÔÚ Groovy µÄ½á¹¹ºÍÓï·¨£¬´ó¼Ò¿ÉÒÔ¸ù¾Ý¸öÈË»òÆóÒµµÄÇé¿öÑ¡ÔñÁ½ÖÖ·½Ê½£¬±ÈÈçÈç¹û¹«Ë¾Ã»ÓÐ
Groovy ¼¼ÊõÕ»£¬¿ÉÒÔ¿¼ÂÇÖ±½ÓʹÓà Declarative Pipeline£¬ ѧϰÇúÏߵͣ¬¿ÉÒÔ¿ìËÙÉÏÊÖ£¬²¢ÇÒеÄ
Blue Ocean Editor ²å¼þ¿ÉÒÔ°ïÖúÎÒÃÇ¿ÉÊÓ»¯µÄ´´½¨Ò»¸öÁ÷Ë®Ïߣ¬Èç¹û¶Ô Groovy ·Ç³£ÊìϤ£¬ÄÇ
Scripted Pipeline ÊÇÒ»¸ö²»´íµÄÑ¡Ôñ¡£ |