Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚ Kubernetes µÄ Jenkins ¹¹½¨¼¯ÈºÊµ¼ù
 
  2314  次浏览      27
 2019-2-19 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚDevOpsʱ´ú ,¸ø´ó¼Ò·ÖÏíµÄ¸ü¶àÊǾ۽¹ÔÚ Jenkins ±¾Éí£¬½áºÏ×÷ÕßÔÚ Jenkins ʵ¼ÊʹÓùý³ÌÖкÍÕû¸ö Jenkins Slave ¹ÜÀíÑÝ»¯µÄ¹ý³ÌµÄ°¸Àý£¬ÕâÑùÄܸø´ó¼Ò´øÀ´¸üºÃµÄ½è¼øºÍ²Î¿¼ÌåÑé¡£

ÏÂÃæÊÇÖ÷ÒªÒª·ÖÏíµÄËÄ´óÄÚÈÝ£º

Jenkins·Ö²¼Ê½¹¹½¨¼Ü¹¹

»ùÓÚLableµÄSlave¼¯Èº¹ÜÀí

»ùÓÚDocker²å¼þµÄÈÝÆ÷»¯Êµ¼ù

»ùÓÚKubernetesµÄÈÝÆ÷»¯Êµ¼ù

Ò». Jenkins·Ö²¼Ê½¹¹½¨¼Ü¹¹

1.1 ¼Ü¹¹Í¼

Jenkins ·Ö²¼Ê½¼Ü¹¹Ò»¸ö Master ºÍ¶à¸ö Slave Node ·Ö²¼Ê½µÄ¼Ü¹¹¡£

ÔÚ Jenkins Master ÉϹÜÀíÄãµÄÏîÄ¿£¬¿ÉÒÔ°ÑÄãµÄһЩ¹¹½¨ÈÎÎñ·Öµ£µ½²»Í¬µÄ Slave Node ÉÏÔËÐУ¬Master µÄÐÔÄܾÍÌá¸ßÁË¡£

Èç¹ûµ¥´¿µÄʹÓà Master È¥¹¹½¨£¬³ýÁËÒª³Ðµ£ÏîÄ¿ÉϵıàÒë¡¢²âÊԵȿªÏúÍ⣬»¹»á´ó´óµÄÓ°Ïì Jenkins Ó¦Óñ¾ÉíÕ¼Óà memory ºÍ CPU ×ÊÔ´¡£

1.2 Jenkins Slave Á¬½Ó·½Ê½

Jenkins Slave Á¬½Ó·½Ê½³£Ê¹ÓÃÏÂÃæÁ½ÖÖ£º

ͨ¹ý SSH Æô¶¯ Slave ´úÀí

ÔÚ Jenkins ÉÏÖ±½ÓÅäÖã¬Ï൱ÓÚ´Ó Master Íù Slave ÉÏÁ¬½Ó£¬´Ó Master ÉÏÖ÷¶¯·¢ÆðµÄÇëÇó¡£

ͨ¹ý JNLP Æô¶¯´úÀí

»ùÓÚ Java Web Start µÄ JNLP µÄÁ¬½Ó£¬´Ó Slave Íù Master Ö÷¶¯µÄ·½Ê½¡£

ÕâÁ½ÖÖÖ÷ÒªµÄÁ¬½Ó·½Ê½£¬ÔÚºóÃæµÄ¼¯Èº slave µÄ¹ÜÀí·½°¸Öж¼»áÉæ¼°µ½¡£

1.3 Jenkins µ÷¶È²ßÂÔ

Óû§ÊÓ½Ç

Ö±½ÓʹÓà slave name,¹¹½¨Ê¹ÓÃÖ¸¶¨ slave

ʹÓà label,¹¹½¨¶àÊýʹÓÃͬһ¸öµÄ slave,ż¶ûʹÓÃÆäËû slave

ϵͳʵÏÖ

consistent hashing algorithm (node,available executors,job name)

ÿһ¸ö Job ¶¼ÓÐÒ»¸ö¶ÔÓ¦ËùÓÐ Node µÄÓÅÏȼ¶Áбí

ÆäËü²å¼þ

Least Load (https://plugins.jenkins.io/leastload)

Commercial plugin (Even Scheduler Plugin)

ÔÚʹÓõĹý³ÌÖУ¬ÊDz»ÊǶ¼»á¾­³£¸Ð¾õµ½ÏÂÃæÁ½ÖÖÇéÐΣº

Èç¹ûÒ»¸öÏîÄ¿µÄ¹¹½¨Ö¸¶¨ÁËÒ»¸ö Slave£¬ÄÇôÕâ¸öÏîÄ¿ËùÓеÄÿ´Î¹¹½¨¶¼Ö»ÓÃÕâ¸öSlave¹¹½¨¡£

Èç¹ûʹÓÃÁËlabel È¥¹ÜÀí¶à¸ö Slave£¬¸øÒ»¸öÏîÄ¿µÄ¹¹½¨Ö¸¶¨ÁËÕâ¸ö label£¬»á·¢ÏÖÕâ¸öÏîÄ¿µÄ¶à´Î¹¹½¨£¬´ó¶àÊý¶¼ÊÇʹÓÃͬһ¸ö Slave£¬²¢Ã»ÓÐʹÓà label ÀïµÄÆäËü Slave¡£

´Ó Jenkins ±¾ÉíµÄʵÏֽǶÈÀ´Ëµ£¬Jenkins ·ÖÅäËüµÄµ÷¶È²ßÂÔµÄʱºò£¬ÓÐÒ»¸öÒ»ÖÂÐԵĹþÏ£Ëã·¨£¬»á½«ÄãÌí¼ÓµÄ Slave£¬Ò²¿ÉÒÔ³ÆÎª node ½Úµã£¬ÒÔ¼° node ÉÏÃæ¿ÉÓÃµÄ executors£¬°üÀ¨ job name£¬×îºóËã³öÀ´Ò»¸öÏ൱ÓÚÄãµÄ job ºÍËùÓÐ Slave ¶ÔÓ¦µÄÓÅÏȼ¶ÁÐ±í£¬»áÑ¡ÔñÓÅÏȼ¶×î¸ßµÄSlaveÈ¥¹¹½¨£¬µ±²»Âú×ãÌõ¼þ»òÕßûÓпÉÓÃµÄ executors ʱ£¬²Å»áÑ¡ÓÃÏÂÒ»¸ö½Úµã¡£Õâ¸öÊÇ Jenkins ĬÈϵĵ÷¶È²ßÂÔ£¬¿Éͨ¹ýÆäËü²å¼þÀ´¸Ä±äÕâ¸ö²ßÂÔ£¬Èç Least Load ²å¼þ£¬Ñ¡ÔñÒ»¸öÊýÄ¿×îÉÙµÄ×î¿ÕÏеĽڵ㡣

¶þ. »ùÓÚ Lable µÄ Slave ¼¯Èº¹ÜÀí

2.1 Android ²úÆ·¸´ÔÓ»·¾³

ÕâÊÇÀÖÊÓ°²×¿²úÆ·µÄ»·¾³¡£

ÒµÎñ²úÆ·²îÒìÐÔ£¬ÒªÖ§³Ö¶à¸ö²úÆ·£¬ÈçÊÖ»ú¡¢µçÊÓ¡¢³µ¡¢ºÐ×Ó¡¢VRµÈ£¬ÎÒËùÔڵijÖÐø¼¯³É²¿ÃÅ£¬È«Ã渺ÔðËùÓÐÉú̬ҵÎñµÄ CI »·¾³¡£

¶àÖÖ¹¹½¨ÀàÐÍ£¬ÎÒÃdz£¼ûµÄÒµÎñ³¡¾°ÀïÃæ£¬ÓÐ Daily Build£¬Test Build£¬Continiuous build£¬APK ±àÒëµÈ£¬¹¹½¨µÄÀàÐͲ»Í¬¡£

´úÂëÁ¿´ó£¬ÕâÊǰ²×¿²úÆ·µÄÒ»¸öÌØµã¡£Ïñÿһ¸öTVµÄ´úÂ룬Դ´úÂëÕû¸öÏÂÏÂÀ´¾ÍÊÇ50¶àGB£¬ºÍÒ»¸öÆÕͨµÄ»¥ÁªÍøÓ¦Óã¬ÕæµÄÊDzî±ðÌ«´óÁË¡£

±àÒë¿Õ¼ä´ó£¬Õâô´óµÄ´úÂëÌåÁ¿È¥×ö±àÒ룬ËùÐèµÄ¿Õ¼ä¿ÉÏë¶øÖª£¬Ò»¶¨Òª±ÈÄãµÄ´úÂëÁ¿»¹´ó£¬±àÒëÍêÕû¸ö±àÒë¿Õ¼äÄÜ´ïµ½100-200GB

±àÒëʱ¼ä³¤£¬´úÂëÁ¿´ó£¬±àÒëÐèÒªµÄ¿Õ¼ä¶à£¬ÏàÓ¦µÄËüµÄ±àÒëʱ¼ä¾ÍºÜ³¤¡£ÎÒÃÇÏÖÔÚ²¢ÐеÄÎïÀí»ú24Ïß³ÌÈ¥±à£¬Ò»°ã2-3¸öСʱÍê³ÉÕû¸ö¹ý³Ì¡£

ÒµÎñ¼äÏà¶Ô¶ÀÁ¢¡£ÎÒÃÇÓжà¸ö²úÆ·£¬ÒµÎñÖ®¼ä»¹Ïà¶Ô¶ÀÁ¢£¬Õâ¸ö¶ÀÁ¢ÌåÏÖÔÚÁ½¸ö·½Ã棬һ¸öÊÇÎÒÃDz»Í¬µÄ²úÆ·£¬±ÈÈçÊÖ»úºÍµçÊÓ£¬ÓÐ×Ô¼ºµÄרÊô±àÒë·þÎñÆ÷¡£ÁíÒ»¸öÊÇ·þÎñÆ÷ÉÏÓжÀÁ¢µÄ¹¹½¨»·¾³£¬Ã»ÓÐͳһ£¬ÕâÊÇÒµÎñÖ®¼äµÄ¸´ÔÓÐÔ¾ö¶¨µÄ¡£

·þÎñÆ÷²îÒ죬°æ±¾¡¢CPU¡¢memory¡¢DiskµÈÅäÖò»Ò»Ñù¡£

ÕûÌåÀ´½²£¬ÎÒÃÇËùÃæ¶ÔµÄ°²×¿²úÆ·µÄ CI »·¾³±È½Ï¸´ÔÓ£¬ÏÂÃæµÄÄÚÈÝÒ²½«Î§ÈÆÕâ¸öÍ´µãÀ´½²µÄ¡£

2.2 ÆÕ±éÎÊÌâ

±íÏóÎÊÌ⣺

Slave ºÜ¶à£¬¿ÕÏÐµÄ Slave Ò²ºÜ¶à

¶ÓÁÐÖеȴý¹¹½¨ÈÎÎñºÜ¶à

һЩ¹¹½¨Ê§°Ü,±©Â¶ workspace ¿Õ¼ä²»×ãÎÊÌâ

Ô­Òò·ÖÎö£º

ÒµÎñ¼ä,±àÒë»·¾³²»Í³Ò»,²»ÄÜ¿çÒµÎñ¹²Ïí

ÒµÎñÄÚ,ÌØ¶¨ jobs Ö±½Ó°ó¶¨Ìض¨ slave,²¢·¢Á¿ÊÜÏÞÓÚ executor ÊýÄ¿

Slave ÉϹ¹½¨ workspace µÄÒÅÁô,Õ¼ÓôóÁ¿¿Õ¼ä

ÒµÎñÁ¿Ôö´ó,н¨ Jobs Ôö¶à,Æ¿¾±³öÏÖ

ÎÒÃÇÔÚʹÓà Jenkins ¹ý³ÌÖб©Â¶³öһЩÎÊÌ⣬ÎÒÃǹÒÔØµÄ Slave ºÜ¶à£¬¿ÕÏеÄÒ²ºÜ¶à£¬Ã»Óб»³ä·ÖÀûÓÃÆðÀ´¡£ÁíÍ⣬¹ÒÔØÄÇô¶àµÄ Slave£¬ÎÒÃǶÓÁÐÖеȴý¹¹½¨µÄ»¹ºÜ¶à£¬Ï൱ÓÚÄÇô¶àµÄ Slave ûÓнâ¾ö²¢·¢µÄÎÊÌ⣬ÈÎÎñ»¹Ôڵȴý¡£»¹ÓÐһЩ¹¹½¨Ê§°ÜÁË£¬ÊÇÒòΪ workspace ¿Õ¼ä²»×ã¡£

Ϊʲô»á²úÉúÉÏÊöÎÊÌâÄØ£¿

Ò»¸öÊÇÒµÎñ¼ä£¬±àÒë»·¾³²»Í³Ò»£¬²»ÄÜ¿çÒµÎñ¹²Ïí¡£Ò»Ì¨ Jenkins ÉϹÒÁËÄÇô¶à Slave ¸ø²»Í¬ÒµÎñÓã¬Ïà¶ÔÀ´Ëµ²»Í¬µÄÒµÎñÖ»ÄÜʹÓÃÕâô¶à Slave ÖеÄһЩ×Ó¼¯¡£

µÚ¶þÊÇÒµÎñÄÚ£¬ÓÐЩҵÎñµÄͬѧȥÅäÖà job µÄʱºò£¬Ö±½Ó°ó¶¨Ìض¨µÄ Slave£¬Ï൱ÓÚÖ±½Ó°ó¶¨ÄǸö Slave µÄ name£¬¶ø²»ÊÇ Lable£¬ÕâЩ job ËùÓеĹ¹½¨Ö»ÒÀÀµÓÚÕâ¸ö Slave£¬Õâ¸ö²¢·¢¾ÍÊܵ½±»°óµÄ Slave µÄ executor ÊýÄ¿ÏÞÖÆ¡£

µÚÈý£¬Slave ÉϹ¹½¨ workspace ÓÐÒÅÁô£¬Õ¼ÓôóÁ¿¿Õ¼ä¡£Ò»¸ö job ¹¹½¨½áÊøºó£¬±àÒëµÄ¿Õ¼äÒÅÁôÔÚ Slave ÉÏ£¬³ý·ÇÔÚÄãµÄ job ÀïÅäÖÃÁËÇåÀí¹æÔò¡£

´ËÍâ£¬Ëæ×ÅÒµÎñÁ¿Ôö´ó£¬Ð½¨µÄ job Ò²¶à£¬ÂýÂýÆ¿¾±¾Í³öÏÖÁË£¬ÎÊÌâÒ²¾Í¶¼±©Â¶³öÀ´ÁË¡£

ÔÚ×ùµÄÍ¬Ñ§Ëæ×ÅÄãÃǹ«Ë¾ÒµÎñµÄ·¢Õ¹£¬ÕâЩÎÊÌâ¿ÉÄܶ¼»áÓöµ½µÄ¡£

2.3 ÓÅ»¯¸Ä½ø

Ãæ¶ÔÉÏÊöµÄÎÊÌâÎÒÃǸÄÈçºÎ½øÐÐÓÅ»¯¸Ä½øÄØ£¿ÎÒÃÇ×öÁËËĸö·½ÃæµÄÓÅ»¯£º

ͬÖÊ slaves Ìí¼ÓÏàͬ Label,ͬÀàÐÍ jobs ʹÓà Label ½øÐй¹½¨

ÊÊÁ¿Ôö´ó slave µÄ executor ÊýÄ¿

¶¨Ê±É¨ÃèÇåÀí slaves ÉÏµÄ·ÏÆú jobs µÄÒÅÁô workspace

ÒµÎñ jobs ÅäÖà workspace ÇåÀí¹æÔò

ÏÂÃæÏ¸ËµÏ¡£

ÎÒÃǰÑÎÒÃÇͬÖÊ Slaves Ìí¼ÓÏàͬ Lable£¬Óà Lable À´¹ÜÀíÎÒµÄ Slaves£¬Ç°ÃæÓÐ˵µ½ÎÒÃǵÄÒµÎñ²»Í¬µÄ²úÆ·Ïߣ¬Ï൱ÓÚÎÒÃǵıàÒë»·¾³²»Ò»Ñù£¬Í¬Ò»ÌײúÆ·£¬°ÑͬÖÊ Slaves ͨ¹ý Lable ʹÓã¬Í¬ÀàÐÍ jobs ¿ÉÒÔʹÓà Lable ½øÐй¹½¨¡£

ÊÊÁ¿Ôö´ó executor ÊýÄ¿£¬Ò»¶¨»áÔö´ó²¢·¢Á¿¡£ÎªÊ²Ã´ÊÇÊÊÁ¿£¿±àÒëÏ൱ÓÚÎÒÃÇÓÃÎïÀí»ú24Ï̲߳¢·¢È¥ÅÜ£¬¸ù¾ÝÒµÎñµÄ³¡¾°²»Í¬£¬ÎÒÃÇÊÇÊÊÁ¿µÄ¡£±ÈÈçÔ­À´Ò»¸öÎïÀí»úÖ»ÅäÒ»¸ö£¬¸ù¾ÝÓеIJúÆ·ÏßµÄ job ûÓÐÏûºÄÄÇô¶àµÄ CPU¡¢memory£¬±àÒëʱ¼äÒªÇ󲻸ߣ¬ÓÐһЩ Slave ´ÓÒ»¸ö executor Ôö¼Óµ½Á½¸ö£¬¾ÍÄܽâ¾ö job ²¢·¢Á¿µÄÎÊÌâ¡£

µÚÈý¸öÒª½â¾ö Slaves ÉÏÒÅÁôµÄ±àÒë workspace µÄÎÊÌ⣬¶¨Ê±É¨Ãè Slave É쵀 workspace¡£ÓÐÁ½µãҪעÒ⣬һµãÊÇÔÚÄãʹÓùý³ÌÖУ¬¿ÉÄÜ»áÆµ·±µÄÖØÃüÃû job£¬Èç¹û°Ñ job ÖØÃüÃûÁË£¬Ô­À´µÄ±àÒë¿Õ¼ä¾ÍÁôÏÂÀ´ÁË£¬¾ÍûÓÐÒâÒåÁË¡£ÁíÍ⣬´ÓÒµÎñjobÅäÖÃÉÏ£¬Ò»¶¨ÒªÅäÖÃÏàÓ¦µÄ workspace ÇåÀí¹æÔò¡£±ÈÈç˵±àÒë½áÊøÁË£¬´«µ½°æ±¾·þÎñÆ÷»òÕßÖÆÆ·²Ö¿â£¬workspace ʵ¼ÊÉÏûÓÐÒâÒ壬¿ÉÒÔÔÚ¹¹½¨½áÊøºó¾ÍÅäÖÃÏàÓ¦µÄÇåÀí¹æÔò£¬°Ñ workspace ÇåÀíµô£¬ÕâÑùÄãµÄ Slave ÉϵĿռä¾Í±»¼°Ê±ÊÍ·ÅÁË£¬¶ø²»»áµÈµ½ÏÂÒ»´Î¹¹½¨µÄʱºòÓÉÓڿռ䲻×ãµ¼ÖµÄʧ°Ü¡£

ÔÚ Jenkins job ÀïÃæ Post build Action£¬ÓÐdelate workspace ÅäÖ㬿ÉÒÔÕë¶Ô¹´Ñ¡µÄ¹¹½¨µÄ״̬£¨³É¹¦¡¢Ê§°ÜµÈ£©£¬°ÑÕâ¸ö workspace ÇåÀíµô¡£Ä¬ÈÏÇåÀíµÄʱºò»á°ÑÕû¸ö workspace ¶¼ÇåÀíµô£¬Ò»µã¶¼²»Áô¡£

¿¼Âǵ½ÎÒÃÇÌØÊâµÄÒµÎñ³¡¾°ºÍ±àÒëµÄʱ¼äÌØ±ð³¤£¬ÎÒÃÇÖмäÓÐһЩ±àÒ뻺´æ£¬Èç ccache£¬±£ÁôµÄ»°¶ÔÏ´ι¹½¨µÄ±àÒëËÙ¶ÈÉÏÊÇÓкܴóÌá¸ßµÄ¡£ÔÚÅäÖÃÇåÀí¹æÔòµÄʱºò£¬ÎÒÃÇûÓÐÍêÈ«ÇåÀí£¬¶øÊDZ£ÁôÁËÐèÒªµÄ£¬ÆäËüµÄ¶¼±»ÇåÀíµô¡£´Ó200GBÇåÀíµ½×îºó¿ÉÄÜÖ»ÓÐ50GB£¬Õâ¾ÍÒѾ­´ó´óÊÍ·ÅÁ˿ռ䡣

2.4 ÓÅ»¯Ð§¹û

ͨ¹ýÉÏÊöµÄÓÅ»¯¸Ä½ø£¬ÎÒÃÇÈ¡µÃÁËÏÂÃæÈý¸öЧ¹û£º

²¢·¢ÄÜÁ¦ÔöÇ¿,¶ÓÁÐÖй¹½¨ÈÎÎñ»º½â

Slave ¿Õ¼äÓÐЧÀûÂÊÌá¸ß,¿Õ¼ä²»×ãÔì³ÉµÄ¹¹½¨Ê§°Ü´ó´ó¼õÉÙ

Slave ¼¯Èº×ÛºÏ×ÊÔ´ÀûÓÃÂÊÌá¸ß(Disk,CPU),Ç÷ÓÚÒ»ÖÂÐÔ

²¢·¢ÄÜÁ¦ÔöÇ¿£¬À´×ÔÓÚÓà Lable È¥¹ÜÀíÁË£¬±¾Éí Lable ¹ØÁªÁ˶à¸öSlave£¬Õâ¸ö¾ÍÏ൱ÓÚSlave¹¹³ÉÁËÒ»¸ö×ÊÔ´³Ø£¬²¢·¢ÄÜÁ¦¾ÍÌá¸ßÁË¡£´øÀ´µÄÖ±½ÓЧ¹û£¬²¢·¢ÄÜÁ¦Ç¿£¬¶ÓÁÐÖй¹½¨ÈÎÎñµÈ´ýµÄÊýÄ¿¾ÍϽµÁË¡£

Slave ÕûÌåµÄ¿Õ¼äÀûÓÃÂÊÓÐЧÌá¸ß£¬Õâ·½Ãæ×öÁËһЩÇåÀí£¬¿Õ¼ä²»×ãÔì³ÉµÄ¹¹½¨Ê§°Ü´ó´ó¼õÉÙ¡£

Õû¸ö¼¯Èº£¬Í¨¹ý Lable ¹ÜÀí£¬×ÛºÏÀûÓÃÂÊÌá¸ßÁË£¬·´Ó¦µ½ Disk ºÍ CPU ÉÏ¡£ÉÏÃæÁ½¸öͼ£¬×ó±ßÊDZàÒë·þÎñÆ÷µÄ disk£¬Ç°ÃæÃ¿Ò»¸ö Slave ÉÏËüµÄ disk ʹÓÃÂÊÊDz»¾ùºâµÄ£¬Í¨¹ýʹÓà Lable ÒÔºó£¬Ïà¶ÔÀ´Ëµ job ·Öµ½ Slave Éϸü¼Ó¾ùºâ£¬disk ÂýÂýÇ÷ÓÚÒ»Ö£¬¶øÇÒÊDZ£³Öµ½Ïà¶ÔºÏÀíµÄˮƽ¡£ÓÒ±ßÕâ¿éÊÇ´ÓCPUµÄ½Ç¶È£¬´Óǰ°ë²¿·Ö¿ªÊ¼¿´£¬²»Í¬µÄ Slave ½ÚµãÉÏ£¬Éϰ벿·ÖÕ⼸̨±àÒëµÄʱºò CPU ÀûÓÃÂʺܸߣ¬µ«Ï°벿·ÖÕ⼸̨·Ç³£¿Õ¡£Ëæ×żÓÁË Lable ÒÔºó£¬ËüÃǵÄÇ÷ÊÆÇ÷ÓÚÒ»Ö¡£

2.5 Lable ·½°¸·´Ë¼

Õâ¸öÊǶÔʹÓà Lable ¹ÜÀí Slave µÄһЩ×ܽáºÍ·´Ë¼£º

Òæ´¦£º

Slave ×ÊÔ´³Ø»¯,ÕûÌå×ÊÔ´ÀûÓÃÂÊÌá¸ß

²¢·¢Á¿Ôö´ó(ÊÜËùÓÐ slave µÄ executor ÊýÁ¿ÏÞÖÆ)

Slave µÄ¹ÜÀí¶Ô Job ÅäÖÃ͸Ã÷»¯(Job ÅäÖà Label ʹÓÃ)

¾ÖÏÞÐÔ£º

Jenkins ÄÚÖõĵ÷¶È²ßÂÔ,×ÊÔ´ÀûÓò»¾ùºâ

ͬһ¸ö job µÄ¶à´Î¹¹½¨ÇãÏòÓÚʹÓÃͬһ¸ö slave

ͬһ¸ö job µÄ²¢·¢¹¹½¨£¬ÍùÍùʹÓÃͬһ¸ö slave£¬×ÊÔ´¾ºÕùÔì³É¹¹½¨Ê±¼äÔö¼ÓµÈ

ij¼¸¸ö jobs ¹¹½¨£¬ÍùÍùʹÓÃͬһ¸ö slave£¬×ÊÔ´¾ºÕùÔì³É¹¹½¨Ê±¼äÔö¼ÓµÈ

»·¾³¸ôÀëÎÊÌâ

²»Í¬ÀàÐ굀 job ×ÊÔ´ÐèÇó²»Í¬£¬»·¾³¸´Óúó×ÊÔ´µ÷¶ÈÊÇÎÊÌ⣬¼Ó´ó¹ÜÀí³É±¾

»·¾³²»Í³Ò»£¬ÒµÎñµ÷Õû£¬×ÊÔ´ÔÙ·ÖÅäÒª»ØÂ¯Öع¹(°²×°¶ÔÓ¦µÄ¹¤¾ßϵͳµÈ)

»ù´¡ÉèʩһÖÂÐÔÎÊÌâ

¶à¸öÈÎÎñÅÜÔÚͬһ̨×ÊÔ´ÉϵÄDZÔÚ·çÏպͳåÍ»£¬²»¿É±ä»ù´¡ÉèÊ©

»·¾³ÎÊÌâµ¼ÖµÄCIÐÅÈÎÎÊÌ⣬´úÂëû´í£¬ÊÇ»·¾³ÎÊÌâ

Õâ¸ö¾Í²»Õ¹¿ªÀ´ËµÁË£¬ÓÐÀûÓбף¬Ó¦ÒÔʵ¼ÊÐèÇóÇé¿öÀ´½øÐкÏÀíµÄÇ÷±Ü¡£

Èý. »ùÓÚ Docker ²å¼þµÄÈÝÆ÷»¯Êµ¼ù

3.1 APK ±àÒëÐèÇó

APK ±àÒëÐèÇóËùÃæÁÙµÄÏÖ×´Ö÷ÒªÓÐÒÔϼ¸µã£º

µ¥µã±àÒë·þÎñÆ÷Ö§³ÖËùÓÐ APK ±àÒë¹¹½¨

·þÎñÆ÷ÐÔÄܱȽϲî

»·¾³ÒÀÀµ¸´ÔÓ,¹¤¾ßά»¤³É±¾¸ß

¹¹½¨ÈÎÎñ²¢·¢±È½ÏÀ§ÄÑ

¸ÃÈçºÎÈ¥¸Ä½øÕâЩÎÊÌâÄØ£¿ÎÒÃǾö¶¨Ê¹ÓÃÈÝÆ÷»¯£¬»ùÓÚÈÝÆ÷»¯È¥¹¹½¨ Jenkins Slave£¬Ö±½ÓʹÓà Docker ²å¼þ½øÐÐÈÝÆ÷»¯¡£

ÒµÎñµÄÐèÇóÒÀÈ»ÊǵÚÒ»Çý¶¯Á¦¡£

3.2 Docker image ¹Ì»¯±àÒë»·¾³

¹Ì»¯ Docker image ÄÚÈÝ£¬×î»ù±¾µÄÒªÓÐÕ˺źÍȨÏÞ£¬ÀïÃæÒªÓÐÏàÓ¦µÄ¹¹½¨Õ˺ţ¬°üÀ¨È¨ÏÞ¡£ÒòΪ Docke image ÓпÉÄÜȥϴúÂ룬°æ±¾²Ö¿âµÈµÈÆäËûµÄ¼¯³É£¬¶¼ÐèÒªÏàÓ¦µÄȨÏÞ¡£

ʹÓà Docker ²å¼þÈ¥¹¹½¨£¬Õâ¸ö¾ÍÀàËÆÓÚÆÕͨµÄ Jenkins Slave¡£ÓëÓà SSHD·½Ê½Ò»Ñù£¬Docker image ±ØÐëÓõ½ JDK ºÍ SSHD¡£

ÁíÍâÔÚÒµÎñÉÏ£¬APK ±àÒëµÄÒÀÀµ¹¤¾ß£¬±ÈÈ粻ͬ°²×¿ SDK/NDK¡¢libs ºÍ¹¤¾ßµÈ¡£

Ôڹ̻¯ Docker image ¹ý³ÌÖл¹ÓÐһЩҪ¿¼ÂǵÄÎÊÌ⣬±ÈÈç Docker image ºÍÒµÎñ²úÆ·ÒÔ¼°²»Í¬°æ±¾¹¤¾ß¼¯µÄ¹ØÏµ¡£ÎÒÃÇÊǶàÌײúÆ·£¬Ôõôȥ¹ÜÀíÄØ£¿ÊÇ×öÒ»¸ö´ó¶øÈ«µÄ Docker image À´º­¸ÇËùÓеϹÊÇÿһ¸ö²úÆ·Ïß×öÒ»¸ö Docker image£¬Ã¿Ò»¸ö²úÆ·ÏßÀ﹤¾ßÓв»Í¬µÄ°æ±¾¡£ÎÒÃÇÏÖÔÚ»ù±¾ÉÏÊǰ´²úÆ·Ïß×ߵ쬱ÈÈçÊÖ»ú¡¢µçÊӵģ¬ÎÒÃǸøËüÒ»Ì× Docker image¡£

ÁíÍâÊÇ Docker image ×Ô¶¯»¯ÅäÌ×ÉèÊ©£¬Èç×Ô¶¯»¯¹¹½¨¡¢¸üС¢ÉÏ´«¡¢²¿ÊðµÈ£¬ÕâЩÅäÌ׵ĴëÊ©ÐèÒª¶îÍâȥά»¤µÄ£¬ÕâºÍÆÕͨµÄ Slave ²»Ò»Ñù¡£

3.3 Jenkins ¼¯³É Docker ²å¼þ

ÕâÀïÊÇÎÒÃÇʹÓà Docker ²å¼þµÄÐÅÏ¢£¬Ê¹Óõİ汾ÊÇ0.15.0£¬ËüËùÖ§³ÖµÄÁ¬½Ó·½Ê½Ö»ÄÜÊÇ SSH µÄÁ¬½Ó·½Ê½¡£´Ó0.16.0°æ±¾¿ªÊ¼Ö§³ÖJNLPµÄÁ¬½Ó·½Ê½¡£(×îа汾ÒѾ­²»ÊÇ0.16.2ÁË£¬ÏêϸÐÅÏ¢Çë²é¿´¹Ù·½ÍøÕ¾¡£±àÕß×¢)

²å¼þµÄÅäÖÃÓÐÁ½µãÖµµÃ×¢ÒâµÄ£º

¿ÉÒÔÌí¼Ó1¸ö»òÕß¶à¸ö Docker host µÄÐÅÏ¢£¬Docker Ò²Ìṩһ¸ö Cloud ¼¯Èº£¬Õâ¸ö Docker host ¿ÉÒÔÀí½â³ÉÎÒÃÇÔ­À´ÆÕͨµÄ Slave¡£

ÿһ¸ö Docker host ÏÂÃæ¿ÉÒÔÌí¼Ó¹ØÁª1¸ö»òÕß¶à¸ö Docker Template¡£

3.4 ÅäÖÃʾÀý

¿´Ò»ÏÂÅäÖÃʾÀý¡£

Name ÒªÖ¸¶¨Ò»¸ö Docker ÅäÖõÄÃû×Ö¡£

Docker URL ÊÇÄã Docker µÄURL£¬Í¨¹ýʲôÑùµÄ·½Ê½È¥Á¬½Ó Docker host¡£

Container Cap ÉèÖò¢·¢ÊýÁ¿¡£

Docker Template ¿ÉÒÔÌí¼Ó¶à¸ö Docker Ä£°å£¬ÕâÀïÖ»ÊÇÁÐÁËÒ»¸ö£¬Ã¿¸ö Docker Ä£°åʵ¼ÊÉÏÊÇ´ÓÄÄÀï¿ÉÒÔ»ñµÃÄãµÄ Docker image¡£

Launch method ÓÐÒ»¸öÁ¬½Ó·½Ê½£¬µ±Ê±Õâ¸ö²å¼þÖ»Ö§³ÖSSH£¬ÎÒÃÇÖ»ÄÜͨ¹ýSSHµÄ·½Ê½¡£

3.5 Docker²å¼þ·´Ë¼

Õâ¸öÊǶÔʹÓà Docker ²å¼þµÄһЩ×ܽáºÍ·´Ë¼£º

Òæ´¦£º

ÈÝÆ÷»¯(»·¾³±ê×¼»¯,¸ôÀëÐÔ,°æ±¾,¿ÉÒÆÖ²ÐÔ µÈµÈ)

ÈÝÆ÷ Slave °´Ð赯ÐÔÊÕËõ,×Ô¶¯´´½¨,ʹÓÃ,Ïú»Ù

×ÊÔ´¹²Ïí

¶à¸ö jobs ʹÓò»Í¬ÈÝÆ÷ slave ¿ÉÒÔÔËÐÐÔÚͬ¸ö Docker host

ͬһ Job ͨ¹ýʹÓà label,Ò²¿ÉÒÔÈù¹½¨ÔËÐÐÔÚ²»Í¬ Docker host ÉϵÄÈÝÆ÷ slave ÉÏ

²¢·¢Á¿(²å¼þÉ趨 cloud/template Capacity)

¾ÖÏÞÐÔ£º

²å¼þÅäÖÃÖÐ Docker host Óë Docker image µÄÇ¿ñîºÏÐÔ,ÅäÖò»·½±ã

Docker host ÊýÁ¿ºÜ¶àµÄʱºò

Docker image ÐèÒªÅäÖõ½¶à¸ö Docker hostÉϵÄʱºò

ʹÓÃJenkinsÄÚÖõĵ÷¶È²ßÂÔ,×ÊÔ´ÀûÓò»¾ùºâ

Ïàͬ Docker image ÅäÖõ½¶à¸ö Docker hostÉÏ Ê¹ÓÃÏàͬ label µÄʱºò

ʹÓÃÕâ¸ö·½°¸¸øÎÒÃÇ´øÀ´ÁËʲôÑùµÄºÃ´¦£¬ÓÐûÓÐʲôÑùµÄ¾ÖÏÞÐÔÄØ£¿

´øÀ´µÄºÃ´¦ÓУº

µÚÒ»£¬ÈÝÆ÷»¯¡£»·¾³±ê×¼»¯¡¢¸ôÀëÐÔ¡¢±¾Éí Docker image Óа汾£¬Ï൱ÓÚ¶Ô¹¹½¨ÓÐÒ»¸ö°æ±¾¿ØÖÆ£¬»¹ÓпÉÒÆÖ²ÐÔ£¬¹¹½¨Ò»´Î£¬host¶¼¿ÉÒÔÈ¥Åä¶¼¿ÉÒÔȥʹÓá£

µÚ¶þ£¬Í¨¹ý Docker ²å¼þÅäÖÃÁË Cloud Slave ¼Ü¹¹£¬ÈÝÆ÷µÄ Slave ¾Í¿ÉÒÔµ¯ÐÔ½øÐÐÊÕËõ¡£Ò»µãÓÐÁ˹¹½¨ÐèÇó£¬Ëü¾Í»áÈ¥¶¯Ì¬µÄÉú³ÉÒ»¸ö Docker ÈÝÆ÷¹ÒÔØÎª Jenkins Slave ½øÐй¹½¨¡£¹¹½¨½áÊøÒÔºó£¬Õâ¸öÈÝÆ÷¾Í»á±»×Ô¶¯Ïú»Ù¡£ËùÒÔÕû¸ö¹ý³Ì²»ÔÙÊÇÔ­À´ÄÇÖÖÆÕͨµÄ Slave ³¤Á¬½ÓµÄ·½Ê½¹ÒÔØ£¬ÕâÖÖÍùÍùʹÓùýÁË£¬¾Í¿´²»µ½ÁË£¬¶¯Ì¬Ïú»ÙÁË¡£

µÚÈý£¬×ÊÔ´Äܵõ½¹²Ïí£¬ÒòΪ¶à¸ö job ÎÒÃÇʹÓò»Í¬µÄÈÝÆ÷ slave£¬¿ÉÒÔÔËÐе½Í¬Ò»¸ö Docker host£¬Ò²¾ÍÊÇ˵ Docker host ÉÏÎÒÃÇ¿ÉÒÔÅäÖöà¸ö Docker image£¬Ìṩ²»Í¬µÄÄ£°å£¬²»Í¬µÄ job ¶¼¿ÉÒÔʹÓ㬺ܶà job µÄ¹¹½¨¿ÉÒÔÈÓµ½Í¬Ò»¸÷Docker host ÉÏÈ¥Óá£ÁíÍâͬһ¸ö job£¬Í¨¹ýÅäÖà Lable¿ÉÒÔÈÃÄãµÄ¹¹½¨ÔËÐÐÔÚ²»Í¬µÄ Docker host¡£Ã¿Ò»¸öÈÝÆ÷£¬ÄãÌí¼Ó Docker image×÷Ϊģ°åµÄʱºò£¬¶¼ÓÐÒ»¸ö Lable£¬Õâ¸öºÍÆÕͨµÄ Slave Ò»Ñù£¬Äã¿ÉÒÔÌí¼ÓÒ»¸ö»ò¶à¸ö Lable¡£

µÚËÄ£¬²¢·¢Á¿£¬ÔÚ²å¼þÀïÉ趨¡£Õû¸ö Cloud£¬Äã¿ÉÒÔÉ趨ÄÜÖ§³Ö¶àÉÙ¸öʵÀý¡£template Capacity ¾ö¶¨ÁËÄã×î´óµÄ²¢·¢Á¿¡£Ã¿Ò»¸öÄ£°å£¬Ã¿Ò»¸ö image Ò²¿ÉÒÔ¿ØÖƵġ£

Óкô¦¾ÍÓв»ºÃµÄµØ·½£¬²å¼þÖÐµÄ Docker host ºÍ Docker image ÊÇÇ¿ñîºÏÐÔ£¬±ØÐëÔÚÿһ¸ö Docker host ÏÂÃæÅäÖÃÄãÐèÒªµÄÓ¦Óá£ÔÚ Docker host ÊýÁ¿ºÜ¶à£¬Docker image ÐèÒªÅäÖõ½¶à¸ö Docker host ÉϹ²ÏíµÄʱºò£¬ÕâÖÖÅäÖþͺܲ»·½±ãÁË¡£

ÁíÍ⣬µ÷¶È»¹ÊÇʹÓÃÄÚÖõIJßÂÔ£¬Ò²´æÔÚ²»¾ùºâÐÔ¡£±ÈÈçÓÐÁ½Ì¨ Docker host£¬ÉÏÃæÅäÖÃÁËͬһ¸ö Docker image£¬ÍùÍùÊÇÏÈÈÔµ½µÚÒ»¸ö Docker hostÉϹ¹½¨¡£

ËÄ. »ùÓÚ Kubernetes µÄÈÝÆ÷»¯Êµ¼ù

Ç°ÃæÍ¨¹ýʹÓà Lable µ½ Docker ²å¼þ£¬ÎÒÃÇÒ»²½²½È¥¸Ä½ø¡£Í¬Ê±Ò²·¢ÏÖ»ùÓÚ Docker µÄÈÝÆ÷»¯£¬»¹ÊÇ´æÔÚÉÏÃæµÄ¾ÖÏÞÐÔ£¬²¢²»ÄÜÂú×ãÎÒÃǵÄÐèÇó£¬Òò´Ë»¹ÊÇÐèÒª½øÒ»²½ÓÅ»¯¿´Äܲ»ÄÜÓиü¸ßµÄÌá¸ß¡£

4.1 What is Kubernetes?

kubernetes£¬Ê¹ÓùýÕâ¸öÈÝÆ÷¹¤¾ßµÄ¿ÉÄܱȽÏÊìϤ¡£¿ªÔ´µÄ£¬¿ÉÒÔ×Ô¶¯»¯£¬ÈÝÆ÷»¯Ò»Ð©Ó¦ÓõIJ¿Êð¡£

Õâ¸öÊÇËüµÄÒ»¸ö¼Ü¹¹Í¼£¬ÕâÀïÃæÓÐÒ»¸ö pod µÄ¸ÅÄÏ൱ÓÚÒ»¸ö pod ¿ÉÒÔÓжà¸ö Container¡£ºóÃæÎÒÃǽ²µ½µÄ kubernetes ²å¼þ¾ÍÊÇͨ¹ý´´½¨Ò»¸ö pod À´¹ÒÔØÒ»¸öÈÝÆ÷ slave µÄ·½Ê½¡£

4.2 ÒµÎñÐèÇó

ÕâÊÇÎÒÃǵÄÒ»¸öÒµÎñÐèÇó£º

×ÊÔ´ÊÕËõÑÏÖØ,ÒµÎñÐèÒªÕý³£ÔËת

ÈÝÆ÷»¯/±ê×¼»¯,¹¹½¨»·¾³¸ôÀë

K8s×ÊÔ´ÏÞÖÆ,µ÷¶È²ßÂÔ,·þÎñÆ÷×ÊÔ´¹²Ïí

ÆäËû¿¼ÂÇÒòËØÓУº

ÈÝÆ÷»¯¹¹½¨ÐÔÄܶԱÈ

°æ±¾µÄÑ¡Ôñ

Docker registry

Docker imageµÄ¹¹½¨¸üÐÂ×Ô¶¯»¯

¹¹½¨»·¾³¹¤¾ßÒÀÀµ

¹¹½¨ÓÅ»¯(´úÂë mirror,±àÒ뻺´æµÈ)

4.3 Êý¾ÝÑéÖ¤¿ÉÐÐÐÔ

ÕâÊÇÎÒÃÇ×öµÄһЩÊý¾ÝÑéÖ¤£¬Ö®Ç°ÎÒÃÇÊÇ¶Ô APK ±àÒ룬¾ÍÊÇÒ»¸ö¼òµ¥µÄÓ¦Óᣵ«ÊÇÎÒÃÇÒª¶ÔÕû¸ö°²×¿²úÆ·£¬±ÈÈçÊÖ»úµçÊÓ£¬Õâ¸öÁ¿¾Í²»Ò»ÑùÁË¡£ÎÒÃDZØÐëÒª×öºÃ³ä·ÖµÄ²âÊÔ£¬Ê¹ÓÃÈÝÆ÷È¥±àÒëÐÔÄܵ½µ×¿¿²»¿¿Æ×¡£

ͨ¹ýʹÓÃVMÈ¥±àÒëºÍʹÓà Docker ÈÝÆ÷±àÒ룬²»Í¬µÄ³¡¾°×öÁËÒ»¸ö¶Ô±È²âÊÔ£¬±àÒëÐÔÄÜ»ù±¾ÉÏÊÇÒ»Öµġ£ËùÒÔ²ÅϾöÐİÑÎÒÃǵÄÒµÎñ¶¼ÍùÕâÉÏÃæÈ¥Ç¨ÒÆ¡£

4.4 Ñ¡Ôñ°æ±¾

Õâ¸öÊǸø´ó¼ÒÒ»¸ö²Î¿¼£¬ÎÒÃÇËùʹÓõÄһЩÖ÷Òª¹¤¾ß»òÕß×é¼þµÄ°æ±¾¡£

4.5 Docker imageµÄ¹¹½¨

ͨ¹ý Dockerfile ×Ô¶¯»¯¹¹½¨ÎÒÃÇµÄ Docker image¡£ÁíÍ⣬ÎÒÃÇʹÓà Ansible À´ÅúÁ¿²¿Êð¹ÜÀí»·¾³¡£ÎÒÃǵÄCI¹¹½¨»·¾³×öµÃ·Ç³£²»´íµÄ£¬Õâ¸öµØ·½ÑØÓÃÁËÎÒÃǵÄÓÅÊÆ£¬»ùÓÚ Ansible playbook µÄ»ù´¡ÉÏÀ´¹¹½¨ÎÒÃǵÄÈÝÆ÷¡£ÉÏÃæÊÇ Dockerfile µÄÒ»¸öʾÀý¡£

4.6 ¹¹½¨»·¾³ÒÀÀµ

Íⲿ¹¤¾ß

µ¥Ò»¿ÉÐÅÊý¾ÝÔ´,µ¥¶À·þÎñÆ÷¹ÜÀí, Ceph´æ´¢

ËùÓÐk8s Node ͨ¹ýNFS¹ÒÔØ

ÈÝÆ÷ͨ¹ý volume ʹÓÃ

´úÂë mirror

ËùÓÐ k8s Node ±¾µØÄ¿Â¼

ÈÝÆ÷ͨ¹ý volume ʹÓÃ

Jenkins job ×Ô¶¯»¯¸üв¿Êð

±àÒë cache

ËùÓÐ k8s Node ±¾µØÄ¿Â¼

ÈÝÆ÷ͨ¹ý volume ʹÓÃ

ÃüÖÐÂÊͳ¼ÆºÍ¶à»ùÏ߸´ÓÃ

4.7 Jenkins ¼¯³É k8s È«¾°

ÕâÀïÊÇÒ»¸öÈ«¾°Í¼¡£Jenkins ÀïÓÐk8sµÄ²å¼þ£¬ÖмäÕâ¿éÊÇk8s¼¯Èº£¬¶ą̀ÎïÀí»ú×ök8sµÄ½Úµã£¬ÎÒÃÇËùÓеıàÒë¹¹½¨Êµ¼ÊÉ϶¼ÊÇͨ¹ý²å¼þÔÚ Node ÉϽ¨ÁËÒ»¸öÈÝÆ÷£¬Õâ¸öÈÝÆ÷¹ÒÔØÎª Jenkins µÄÒ»¸ö Slave¡£ÓұߺÍÉÏÃæÕâ¿éÊÇÍⲿµÄÒÀÀµ£¬±ÈÈç cache¡¢Tools¡¢Mirror¡¢HARBOR¡¢GrafanaµÈµÈ¡£

4.8 ʵÏÖЧ¹û

Ç¨ÒÆµ½ÈÝÆ÷»¯ÒÔºó£¬ÎÒÃÇÕû¸ö×ÊÔ´ÀûÓÃÂÊÓÐ50%ÒÔÉϵÄÌáÉý£¬×ÊÔ´³É±¾Ò²Ï½µÁË35%£¬ÁíÍâÊÇÐÂÒµÎñл·¾³ÉÏÏߣ¬Õâ¸ö´øÀ´µÄºÃ´¦Ã»·¨Í³¼Æ£¬Ïà¶ÔÀ´ËµÊǺܴóµÄ¡£

4.9 Kubernetes²å¼þ

ÅäÖÃ Kubernetes API URL

Ìí¼Ó1¸ö»ò¶à¸ökubernetes pod template (image)

kubernetes pod template µÄÆô¶¯ÃüÁî¼ä½ÓʹÓÃJNLP

kubernetes pod template ¿ÉÒÔÅäÖÃ×ÊÔ´ÏÞÖÆ, Ö÷ÒªÊÇCPUºÍMemory×ÊÔ´

4.10 ÅäÖÃʾÀý

ÕâÊÇÒ»¸öÅäÖÃʾÀý£¬×¢Òâ»®Ïß²¿ÃÅ¡£

4.11 ×ÊÔ´ÏÞÖÆÅäÖÃʾÀý

ÕâÊÇÒ»¸ö×ÊÔ´ÏÞÖÆÅäÖÃʾÀý¡£¶ÔCPU¡¢memory×öһЩ×ÊÔ´ÏÞÖÆ¡£

4.12 ÈÝÆ÷Æô¶¯½Å±¾Ê¾Àý

ÈÝÆ÷Æô¶¯½Å±¾Ê¾Àý£¬ÕâÉÏÃæÁ½¸ö²ÎÊý SECERT¡¢SLAVE_NAME£¬ÕâÊÇk8s²å¼þĬÈÏ´«µÝ¹ýÀ´µÄÆô¶¯²ÎÊý¡£JENKINS_URLĬÈÏ ÉèÖÃΪPODµÄ»·¾³±äÁ¿¡£

4.13 Kubernetes²å¼þ·´Ë¼

ÿһ¸ö·½°¸ÎÒÃÇ×îºó¶¼ÒªÈ¥×öÒ»¸ö·´Ë¼ºÍ×ܽᡣ

k8s²å¼þµÄÒæ´¦£º

ÈÝÆ÷»¯(»·¾³±ê×¼»¯,¸ôÀëÐÔ,°æ±¾,¿ÉÒÆÖ²ÐÔ µÈµÈ)

ÈÝÆ÷Slave °´Ð赯ÐÔÊÕËõ,×Ô¶¯´´½¨,ʹÓÃ,Ïú»Ù

×ÊÔ´¹²Ïí(ËùÓеÄÈÝÆ÷slave¿ÉÒÔ¹²Ïí Kubernetes cluster)

²¢·¢Á¿(²å¼þÉ趨Cloud/Template Capacity)

k8s²å¼þµÄ¾ÖÏÞÐÔ:

Kubernetes Cluster µÄ¸ß¿ÉÓÃÐÔ

µ¥master,Õâ¸öMasterÒª¹ÒÁËËùÓй¹½¨¼¯Èº¶¼¹ÒÁË

ÐèÒªÓû§ÊµÏÖHA·½°¸

4.14 ³ÖÐø¸Ä½ø

³ÖÐø¸Ä½ø·½Ã棺

Jenkins masterÈÝÆ÷»¯

Jenkins Job½Å±¾»¯

Á÷Ë®ÏßÇý¶¯³ÖÐø½»¸¶

4.15 ×ܽá

·½°¸ Ч¹û ×¢Òâµã
Lable 1.Slave×ÊÔ´³Ø»¯,ÕûÌå×ÊÔ´ÀûÓÃÂÊÌá¸ß
2.¹¹½¨²¢·¢Á¿
3.SlaveµÄ±ä¶¯¶ÔJobÅäÖÃ͸Ã÷»¯
1.»·¾³Ò»ÖÂÐÔ,ÏàͬlabelÏÂslaveÒªÇóͬÖÊ
2.SlaveÉÏjobs¹¹½¨ÒÅÁôworkspaceÎÊÌâ
3.JenkinsĬÈϵ÷¶È²ßÂԵIJ»ÍêÃÀÐÔ
Docker 1.ÈÝÆ÷»¯´øÀ´µÄºÃ´¦(»·¾³±ê×¼»¯,¸ôÀë ÐÔ,°æ±¾,¿ÉÒÆÖ²ÐÔ µÈµÈ)
2.ÈÝÆ÷Slave°´Ð赯ÐÔÊÕËõ,×Ô¶¯´´½¨, ʹÓÃ,Ïú»Ù
3.·þÎñÆ÷×ÊÔ´¹²Ïí
4.¹¹½¨²¢·¢Á¿ÉèÖÃ
1.Docker hostÓëDocker imageµÄÇ¿ñîºÏÐÔ,²å¼þÅäÖò»·½±ãÐÔ
2.ʹÓÃJenkinsĬÈϵ÷¶È²ßÂÔ
3.Docker registry¡¢image¹ÜÀíµÈÅäÌ×¹¤×÷
Kubernetes 1.Docker²å¼þÏàͬµÄÓŵã
2.×ÊÔ´ÉêÇëÏÞÖÆµÈÅäÖÃ,Âú×㲻ͬ¹¹½¨ÐèÇó
3.ʹÓÃKubernetesµ÷¶È²ßÂÔ
1.Kubernetes ClusterµÄ¸ß¿ÉÓÃÐÔÎÊÌâ
2.¼à¿ØµÄÖØÒªÐÔ
3.Kubernetes¡¢Docker registry¡¢image¹ÜÀíµÈÅäÌ×¹¤×÷

 

Õâ¸öÊÇÉÏÃæÈýÖÖ·½°¸µÄÒ»¸ö×ܽᡣÿһ¸ö·½°¸¶¼ÓкõÄЧ¹ûºÍ×¢Òâµã£¬²»Í¬µÄ·½°¸¶¼Óи÷×Ô²»Í¬µÄÓÅȱµã£¬Ë­ÓÅË­ÁÓÈ¡¾öÓÚ¾ßÌåʵʩ³¡¾°¡£Ó¦¸ù¾ÝÒµÎñʵ¼ÊÇé¿öÀ´Ñ¡È¡Êʺϵķ½°¸¡£

   
2314 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ