±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚinfoq£¬±¾ÎÄÖ÷Òª½éÉÜÁËSpark
CI ³ÖÐø¼¯³Éʵ¼ùÓ벿Êð£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£ |
|

Spark CI ³ÖÐø¼¯³Éʵ¼ù
CI ½éÉÜ
³ÖÐø¼¯³ÉÊÇÖ¸£¬¼°Ê±µØ½«×îпª·¢µÄÇÒ¾¹ý²âÊԵĴúÂ뼯³Éµ½Ö÷¸É·ÖÖ§ÖС£

³ÖÐø¼¯³ÉµÄÓŵã
1.¿ìËÙ·¢ÏÖ´íÎó ÿ´Î¸üж¼¼°Ê±¼¯³Éµ½Ö÷¸É·ÖÖ§ÖУ¬²¢½øÐвâÊÔ£¬¿ÉÒÔ¿ìËÙ·¢ÏÖ´íÎ󣬷½±ã¶¨Î»´íÎó
2.±ÜÃâ×Ó·ÖÖ§´ó·ùÆ«ÀëÖ÷¸É·ÖÖ§ Ö÷¸ÉÔÚ²»¶Ï¸üУ¬Èç¹û²»¾³£¼¯³É£¬»á²úÉúºóÆÚ¼¯³ÉÄѶȱä´ó£¬ÉõÖÁÄÑÒÔ¼¯³É£¬²¢Ôì³É²»Í¬¿ª·¢ÈËÔ±¼ä²»±ØÒªµÄÖØ¸´¿ª·¢
3.Ϊ¿ìËÙµü´úÌṩ±£ÕÏ ³ÖÐø¼¯³ÉΪºóÎĽéÉܵijÖÐø·¢²¼Óë³ÖÐø²¿ÊðÌṩÁ˱£Ö¤
Spark CI ʵ¼ù
ĿǰÖ÷Á÷µÄ´úÂë¹ÜÀí¹¤¾ßÓУ¬Github¡¢Gitlab µÈ¡£±¾ÎÄËù½éÉܵÄÄÚÈÝÖУ¬ËùÓдúÂë¾ùÍйÜÓÚ˽ÓеÄ
Gitlab ÖС£
¼øÓÚ Jenkins ¼¸ºõÊÇ CI ÊÂʵÉϵıê×¼£¬±¾ÎĽéÉÜµÄ Spark CI CD &
CD ʵ¼ù¾ù»ùÓÚ Jenkins Óë Gitlab¡£
Spark Ô´Âë±£´æÔÚ spark-src.git ¿âÖС£
ÓÉÓÚÒÑÓв¿Êðϵͳ֧³Ö Git£¬Òò´Ë¿É½«¼¯³ÉºóµÄ distribution ±£´æµ½ Gitlab µÄ·¢²¼¿â£¨spark-bin.git£©ÖС£
ÿ´Î¿ª·¢ÈËÔ±Ìá½»´úÂëºó£¬¾ùͨ¹ý Gitlab ·¢ÆðÒ»¸ö Merge Requet£¨Ï൱ÓÚ Gitlab
µÄ Pull Request£©¡£
ÿµ±ÓÐ MR ±»´´½¨£¬»òÕß±»¸üУ¬Gitlab ͨ¹ý Webhook ֪ͨ Jenkins »ùÓÚ¸Ã
MR ×îдúÂë½øÐÐ build¡£¸Ã build ¹ý³Ì°üº¬ÁË
1.±àÒë Spark ËùÓÐ module
2.Ö´ÐÐ Spark ËùÓе¥Ôª²âÊÔ
3.Ö´ÐÐÐÔÄܲâÊÔ
4.¼ì²é²âÊÔ½á¹û¡£Èç¹ûÓÐÈÎÒâ²âÊÔÓÃÀýʧ°Ü£¬»òÕßÐÔÄܲâÊÔ½á¹ûÃ÷ÏÔ²îÓÚÉÏÒ»´Î²âÊÔ£¬Ôò
Jenkins ¹¹½¨Ê§°Ü
Jenkins ½« build ½á¹û֪ͨ Gitlab£¬Ö»ÓÐ Jenkins ¹¹½¨³É¹¦£¬Gitlab
µÄ MR Ò³Ãæ²ÅÔÊÐí Merge¡£·ñÔò Gitlab ²»ÔÊÐí Merge¡£
ÁíÍ⣬»¹ÐèÈ˹¤½øÐÐ Code Review¡£Ö»ÓÐÁ½¸öÒÔÉ쵀 Reviewer ͨ¹ý£¬²ÅÄܽøÐÐ×îÖÕ
Merge¡£
ËùÓвâÊÔÓë Reivew ͨ¹ýºó£¬Í¨¹ý Gitlab Merge ¹¦ÄÜ×Ô¶¯½«´úÂë Fast forward
Merge µ½Ä¿±ê·ÖÖ§ÖС£
¸ÃÁ÷³Ì±£Ö¤ÁË
1.ËùÓкϲ¢½øÄ¿±ê·ÖÖ§ÖеĴúÂë¶¼¾¹ýÁ˵¥Ôª²âÊÔ£¨°×ºÐ²âÊÔ£©ÓëÐÔÄܲâÊÔ£¨ºÚºÐ²âÊÔ£©
2.ÿ´Î·¢Æð MR ºó¶¼»á¼°Ê±×Ô¶¯·¢Æð²âÊÔ£¬·½±ã¼°Ê±·¢ÏÖÎÊÌâ
3.ËùÓдúÂë¸üж¼Äܼ°Ê±ºÏ²¢½øÄ¿±ê·ÖÖ§
Spark CD ³ÖÐø½»¸¶
CD ³ÖÐø½»¸¶½éÉÜ
³ÖÐø½»¸¶ÊÇÖ¸£¬¼°Ê±µØ½«Èí¼þµÄа汾£¬½»¸¶¸øÖÊÁ¿±£ÕÏÍŶӻòÕßÓû§£¬ÒÔ¹©ÆÀÉó¡£³ÖÐø½»¸¶¿É¿´×÷ÊdzÖÐø¼¯³ÉµÄÏÂÒ»²½¡£ËüÇ¿µ÷µÄÊÇ£¬²»¹ÜÔõô¸üУ¬Èí¼þ¶¼ÊÇ¿ÉËæÊ±½»¸¶µÄ¡£
ÕâÒ»½×¶ÎµÄÆÀÉó£¬Ò»°ãÊǽ«ÉÏÎļ¯³ÉºóµÄÈí¼þ²¿Êðµ½¾¡¿ÉÄÜÌù½üÉú²ú»·¾³µÄ Staging »·¾³ÖУ¬²¢Ê¹ÓÃÌù½üÕæÊµ³¡¾°µÄÓ÷¨£¨»òÕßÁ÷Á¿£©½øÐвâÊÔ¡£

³ÖÐø·¢²¼µÄÓŵã
¿ìËÙ·¢²¼ ÓÐÁ˳ÖÐø¼¯³ÉÓë³ÖÐø·¢²¼£¬¿É¿ìËÙ½«×îй¦ÄÜ·¢²¼³öÀ´£¬Ò²¿É¿ìËÙÐÞ¸´ÒÑÖª bug
¿ìËÙµü´ú ÓÉÓÚ·¢²¼¼°Ê±£¬¿ÉÒÔ¿ìËÙÅжϲúÆ·ÊÇ·ñ·ûºÏ²úÆ·¾ÀíµÄÔ¤ÆÚ»òÕßÊÇ·ñÄÜÂú×ãÓû§µÄÐèÇó
Spark CD ³ÖÐø·¢²¼Êµ¼ù
ÕâÀïÓÐÌṩÈýÖÖ·½°¸£¬¹©¶ÁÕ߲ο¼¡£ÍƼö·½°¸Èý
·½°¸Ò»£ºµ¥·ÖÖ§
Õý³£Á÷³Ì
ÈçÏÂͼËùʾ£¬»ùÓÚµ¥·ÖÖ§µÄ Spark ³ÖÐø½»¸¶·½°¸ÈçÏÂ
1.ËùÓпª·¢¶¼ÔÚ spark-src.git/dev£¨¼´ spark-src.git
µÄ dev branch£© ÉϽøÐÐ
2.ÿÖÜÒ»½«µ±Ç°×îдúÂë´ò°ü£¬·Å½ø spark-bin.git/dev
µÄ spark-${ build # }£¨ÈçͼÖÐµÚ 2 ÖÜµÄ spark-72£©Îļþ¼ÐÄÚ
3.spark-prod Ö¸Ïòµ±Ç° spark-dev Ö¸ÏòµÄÎļþ¼Ð£¨ÈçͼÖеÄ
spark-71 £©
4.spark-dev Ö¸Ïò spark-${ build # }£¨ÈçͼÖеÄ
spark-72£©
5.×Ô¶¯½« spark-bin.git ×îÐÂÄÚÈÝÉÏÏßµ½ Staging
»·¾³£¬²¢Ê¹Óà spark-dev ½øÐвâÊÔ
6.spark-prod ±È spark-dev ÍíÒ»ÖÜ£¨Ò»¸ö release
ÖÜÆÚ£©£¬ÕâÒ»ÖÜÓÃÓÚ Staging »·¾³ÖвâÊÔ

×¢£º
À¶É«Ô²ÐÎÊÇÕý³£ commit
´¹Ö±ÐéÏßÊÇ·¢²¼Ê±¼äµã£¬week 1¡¢week 2¡¢week 3¡¢week 4
×îÉÏ·½ºÚÉ«´ÖºáÏßÊÇÔ´Âëʱ¼äÏß
Ï·½»ÆÉ«´ÖºáÏßÊÇ release ʱ¼äÏß
ÂÌÉ«·½¿òÊÇÿÖÜÉú³ÉµÄ release£¬´ø build #
À¶É«·½¿òÊÇ¿ª·¢°æ±¾µÄ symbolic
éÙÉ«·½¿òÊÇÏßÉϰ汾µÄ symbolic
bug fix
ÔÚ Staging »·¾³Öз¢ÏÖ spark-dev µÄ bug ʱ£¬ÐÞ¸´¼°¼¯³ÉºÍ½»¸¶·½°¸ÈçÏÂ
1.Èç¹ûÔÚ Staging »·¾³Öз¢ÏÖÁË spark-dev µÄ bug£¬ÇÒ±ØÐëÒªÐÞ¸´£¨Èç²»ÐÞ¸´£¬»á´øµ½Ï´εÄ
spark-prod µÄ release ÖУ©£¬ÔòÌá½»Ò»¸ö commit£¬²¢ÇÒ commit message
°üº¬ bugfix ×ÖÑù£¨ÈçͼÖкÚɫԲÐÎ commit 9 Ëùʾ£©
2.¸Ã bugfix ±» Merge ºó£¬Jenkins µÃµ½Í¨Öª
3.Jenkins ·¢Ïָà commit ÊÇ bugfix£¬Á¢¼´Æô¶¯¹¹½¨£¬Éú³Éspark-${
build \# }£¨ÈçͼÖÐµÄ spark-73£©
4.spark-dev Ö¸Ïò spark-${ build \#
} £¨ÈçͼÖÐµÄ spark-73 £©

hot fix
Éú²ú»·¾³Öз¢ÏÖ bug ʱÐÞ¸´¼°½»¸¶·½°¸ÈçÏÂ
1.Èç¹û·¢ÏÖÏßÉϰ汾£¨¼´ spark-prod£©ÓÐÎÊÌ⣬Ð뼰ʱÐÞ¸´£¬ÔòÌá½»Ò»¸ö
commit£¬²¢ÇÒ commit message °üº¬ hotfix ×ÖÑù £¨ÈçͼÖкìɫԲÐÎ commit
9 Ëùʾ£©
2.¸Ã hotfix ±» Merge ºó£¬Jenkins µÃµ½Í¨Öª
3.Jenkins ·¢Ïָà commit ÊÇ hotfix£¬Á¢¼´Æô¶¯¹¹½¨£¬Éú³É
spark-${ build \# }£¨ÈçͼÖÐµÄ spark-73£©
4.spark-dev Óë spark-prod ¾ùÖ¸Ïò spark-${
build \# } £¨ÈçͼÖÐµÄ spark-73 £©

Pros.
spark-src.git Óë spark-bin.git ¶¼Ö»ÓÐÒ»¸ö·ÖÖ§£¬Î¬»¤·½±ã
spark-prod ÂäºóÓÚ spark-dev Ò»ÖÜ£¨Ò»¸ö release£©£¬Òâζ×Å spark-prod
¶¼³É¹¦Í¨¹ýÁËÒ»ÖÜµÄ Staging »·¾³²âÊÔ
Cons.
ʹÓà spark-prod Óë spark-dev Á½¸ö symbolic£¬Èç¹ûÒª×ö»Ò¶È·¢²¼£¬ÐèÒªÓû§ÐÞ¸ÄÏàӦ·¾¶£¬³É±¾½Ï¸ß
hotfix ʱ£¬ÒýÈëÁ˹ýÈ¥Ò»Öܶࣨ×î¶àÁ½ÖÜ£©Î´¾ Staging »·¾³ÖÐͨ¹ý spark-dev
²âÊ﵀ commit£¬Ôö¼ÓÁ˲»È·¶¨ÐÔ£¬Ò²Î¥±³ÁËËùÓÐ·Ç hotfix commit ¶¼¾¹ýÁËÒ»¸ö·¢²¼ÖÜÆÚ²âÊÔµÄÔÔò
·½°¸¶þ£ºÁ½·ÖÖ§
Õý³£Á÷³Ì
ÈçÏÂͼËùʾ£¬»ùÓÚÁ½·ÖÖ§µÄ Spark ³ÖÐø½»¸¶·½°¸ÈçÏÂ
1.spark-src.git Óë spark-bin.git ¾ù°üº¬Á½¸ö·ÖÖ§£¬¼´
dev branch Óë prod branch
2.ËùÓÐÕý³£¿ª·¢¶¼ÔÚ spark-src.git/dev ÉϽøÐÐ
3.ÿÖÜÒ»£¨Èç¹ûÊÇ weekly release£©´Ó spark-src.git/dev
´ò°ü³öÒ»¸ö release ·Å½ø spark-bin.git/dev µÄ spark-${ build
\# } Îļþ¼ÐÄÚ£¨ÈçͼÖÐµÚ 2 ÖÜÉÏ·½µÄµÄ spark-2 £©¡£Ëü°üº¬ÁË֮ǰËùÓеÄÌá½»£¨commit
1¡¢2¡¢3¡¢4£©
4.spark-bin.git/dev µÄ spark ×÷Ϊ symbolic
Ö¸Ïò spark-${ build \# } Îļþ¼ÐÄÚ£¨ÈçͼÖÐµÚ 2 ÖÜÉÏ·½µÄµÄ spark-2£©
5.spark-src.git/prod ͨ¹ý fast-forward
merge ½« spark-src.git/dev Ò»ÖÜǰ×îºóÒ»¸ö commit ¼°Ö®Ç°µÄËùÓÐ commit
¶¼ merge ¹ýÀ´£¨ÈçͼÖÐµÚ 2 ÖÜÐ轫 commit 1 merge ¹ýÀ´£©
6.½« spark-src.git/prod ´ò°ü³öÒ»¸ö release
·Å½ø spark-bin.git/prod µÄ spark-${ build \# } Îļþ¼ÐÄÚ£¨ÈçͼÖеÚ
2 ÖÜÏ·½µÄµÄ spark-1 £©
7.spark-bin.git/prod µÄ spark ×÷Ϊ symbolic
Ö¸Ïò spark-${ build \# }

bug fix
ÔÚ Staging »·¾³Öз¢ÏÖÁË dev °æ±¾µÄ bug ʱ£¬ÐÞ¸´¼°¼¯³ÉºÍ½»¸¶·½°¸ÈçÏÂ
ÔÚ spark-src.git/devÉÏÌá½»Ò»¸ö commit £¨ÈçͼÖкÚÉ«µÄ commit 9£©£¬ÇÒ
commit message °üº¬ bugfix ×ÖÑù
Jenkins ·¢Ïָà commit Ϊ bugfix ºó£¬Á¢¼´¹¹½¨£¬´Ó spark-src.git/dev
´ò°üÉú³ÉÒ»¸ö release ²¢·Å½ø spark-bin.git/dev µÄ spark-${ build
\# } Îļþ¼ÐÄÚ£¨ÈçͼÖеڶþÖÜÓëµÚÈýÖÜÖ®¼äÉÏ·½µÄµÄ spark-3 £©
spark-bin.git/dev ÖÐµÄ spark ×÷Ϊ symbolic Ö¸Ïò spark-${
build \# } 
hot fix
ÔÚÉú²ú»·¾³Öз¢ÏÖÁË prod °æ±¾µÄ bug ʱ£¬ÐÞ¸´¼°¼¯³ÉºÍ½»¸¶·½°¸ÈçÏÂ
ÔÚ spark-src.git/dev ÉÏÌá½»Ò»¸ö commit£¨ÈçͼÖкìÉ«µÄ commit 9£©£¬ÇÒ
commit message °üº¬ hotfix ×ÖÑù
Jenkins ·¢Ïָà commit Ϊ hotfix ºó£¬Á¢¼´½« spark-src.git/dev
´ò°üÉú³É release ²¢ commit µ½ spark-bin.git/dev µÄ spark-${
build \# } £¨ÈçͼÖÐÉÏ·½µÄ spark-3 £©Îļþ¼ÐÄÚ¡£ spark ×÷Ϊ symbolic
Ö¸Ïò¸Ã spark-${ build \# }
ͨ¹ý cherry-pick ½« commit 9 double commit µ½ spark-src.git/prod£¨ÈçÎÞ³åÍ»£¬Ôò¸ÃÁ÷³ÌÈ«×Ô¶¯Íê³É£¬ÎÞÐèÈ˹¤²ÎÓë¡£Èç·¢Éú³åÍ»£¬Í¨¹ý¸æ¾¯ÏµÍ³Í¨Öª¿ª·¢ÈËÔ±ÊÖ¹¤½â¾ö³åÍ»ºóÌá½»£©
½« spark-src.git/prod ´ò°üÉú³É release ²¢ commit µ½ spark-bin.git/prod
µÄ spark-${ build \# } £¨ÈçͼÖÐÏ·½µÄ spark-3 £©Îļþ¼ÐÄÚ¡£spark
×÷Ϊ symbolic Ö¸Ïò¸Ãspark-${ build \# } 
Pros.
ÎÞÂÛÊÇ dev °æ»¹ÊÇ prod °æ£¬Â·¾¶¶¼ÊÇ spark¡£Çл»°æ¶ÔÓû§Í¸Ã÷£¬ÎÞÇ¨ÒÆ³É±¾
·½±ã»Ò¶È·¢²¼
hotfix ²»»áÒýÈëδ¾²âÊ﵀ commit£¬Îȶ¨ÐÔ¸üÓб£ÕÏ
prod °æÂäºóÓÚ dev °æÒ»ÖÜ£¨Ò»¸ö release ÖÜÆÚ£©£¬¼´ prod ¾¹ýÁËÒ»¸ö release
ÖÜÆÚµÄ²âÊÔ£¬Îȶ¨ÐÔÇ¿
Cons.
hot fix ʱ£¬Ê¹Óà cherry-pick£¬µ« spark-src.git/dev£¨°üº¬ commit
1¡¢2¡¢3¡¢4¡¢5£© Óë spark-src.git/prod£¨°üº¬ commit 1£© µÄ base
²»Ò»Ñù£¬Óз¢Éú³åÍ»µÄ·çÏÕ¡£Ò»µ©·¢Éú³åÍ»£¬±ãÐèÈ˹¤½éÈë
hot fix ºóÔÙ´Ó spark-src.git/dev ºÏ²¢ commit µ½ spark-src.git/prod
ʱÐèҪʹÓà rebase ¶ø²»ÄÜÖ±½Ó fast-forward merge¡£¶ø¸Ã rebase ¿ÉÄÜÔٴη¢Éú³åÍ»
bug fix ÐÞ¸´µÄÊǵ±Ç° spark-bin.git/dev µÄ bug£¬¼´Í¼ÖÐµÄ commit
1¡¢2¡¢3¡¢4 ºóµÄ bug£¬¶ø bug fix commit ¼´ commit 9 µÄ base
ÊÇ commit 5£¬´æÔÚÒ»¶¨³Ì¶ÈµÄ²»Ò»ÖÂ
bug fix ºó£¬µÚ 3 ÖÜʱ£¬×îÐ嵀 spark-bin.git/dev °üº¬ÁË bug fix£¬¶ø×îеÄ
spark-bin.git/prod δ°üº¬¸Ã bugfix £¨ËüÖ»°üº¬ÁË commit 2¡¢3¡¢4
¶ø²»°üº¬ commit 5¡¢9£©¡£Ö»Óе½µÚ 4 ÖÜ£¬spark-bin.git/prod ²Å°üº¬¸Ã
bugfix¡£Ò²¼´ Staging »·¾³Öз¢ÏÖµÄ bug£¬ÐèÒªÔÚÒ»Öܶࣨ×î¶àÁ½ÖÜ£©²ÅÄÜÔÚ prod
»·¾³Öб»ÐÞ¸´¡£»»ÑÔÖ®£¬Staging »·¾³Öмì²â³öµÄ bug£¬ÈÔÈ»»á¼ÌÐø³öÏÖÔÚÏÂÒ»¸öÉú²ú»·¾³µÄ release
ÖÐ
spark-src.git/dev Óë spark-src.git/prod Öаüº¬µÄ commit
ÊýÒ»Ö£¨ÒòΪֻÔÊÐí fast-forward merge£©£¬ÄÚÈÝÒ²×îÖÕÒ»Ö¡£µ«ÊÇ commit ˳Ðò²»Ò»Ö£¬ÇÒ¸÷
commit ÄÚÈÝÒ²¿ÉÄܲ»Ò»Ö¡£Èç¹ûά»¤²»µ±£¬ÈÝÒ×Ôì³ÉÁ½¸ö·ÖÖ§²î±ðÔ½À´Ô½´ó£¬²»Ò׺ϲ¢
·½°¸Èý£º¶à·ÖÖ§
Õý³£Á÷³Ì
ÈçÏÂͼËùʾ£¬»ùÓÚ¶à·ÖÖ§µÄ Spark ³ÖÐø½»¸¶·½°¸ÈçÏÂ
Õý³£¿ª·¢ÔÚ spark-src.git/master ÉϽøÐÐ
ÿÖÜһͨ¹ý fast-forward merge ½« spark-src.git/master ×îдúÂëºÏ²¢µ½
spark-src.git/dev¡£ÈçÏÂͼÖУ¬µÚ 2 Öܽ« commit 4 ¼°Ö®Ç°ËùÓÐ commit
ºÏ²¢µ½ spark-src.git/dev
½« spark-src.git/dev ´ò°üÉú³É release ²¢Ìá½»µ½ spark-bin.git/dev
µÄ spark-${ build \# }£¨ÈçÏÂͼÖÐµÚ 2 ÖÜµÄ spark-2£© Îļþ¼ÐÄÚ¡£spark
×÷Ϊ symbolic£¬Ö¸Ïò¸Ã spark-${ build \# }
ÿÖÜһͨ¹ý fast-forward merge ½« spark-src.git/master Ò»ÖÜǰ×îºóÒ»¸ö
commit ºÏ²¢µ½ spark-src.git/prod¡£ÈçµÚ 3 Öܺϲ¢ commit 4 ¼°Ö®Ç°µÄ
commit
ÉÏÒ»²½ÖУ¬Èç¹û commit 4 ºó½ôÁÙÓÐÒ»¸ö»ò¶à¸ö bugfix commit£¬¾ùÐèºÏ²¢µ½ spark-src.git/prod
ÖУ¬ÒòΪËüÃÇÊÇ¶Ô commit 4 ½øÐÐµÄ bug fix¡£ºóÎĽéÉÜµÄ bug fix Á÷³Ì±£Ö¤£¬Èç¹û¶Ô
commit 4 ºó·¢²¼°æ±¾Óжà¸ö bug fix£¬ÄÇÕâ¶à¸ö bug fix commit ½ôÃÜÏàÁ¬£¬Öм䲻»á±»Õý³£
commit ·Ö¿ª
½« spark-src.git/prod ´ò°üÉú³É release ²¢Ìá½»µ½ spark-bin.git/prod
µÄ spark-${ build \# }£¨ÈçÏÂͼÖÐµÚ 2 ÖÜµÄ spark-2£© Îļþ¼ÐÄÚ¡£spark
×÷Ϊ symbolic£¬Ö¸Ïò¸Ã spark-${ build \# } 
bug fix
ÔÚ Staging »·¾³Öз¢ÏÖÁË dev °æ±¾µÄ bug ʱ£¬ÐÞ¸´¼°¼¯³ÉºÍ½»¸¶·½°¸ÈçÏÂ
ÈçÏÂͼÖУ¬µÚ 2 ÖÜÓëµÚ 3 ÖÜÖ®¼äÔÚ Staging »·¾³Öз¢ÏÖ dev °æ±¾µÄ bug£¬ÔÚ spark-src.git/dev£¨°üº¬
commit 1¡¢2¡¢3¡¢4£© ÉÏÌá½»Ò»¸ö commit£¨ÈçͼÖкÚÉ«µÄ commit 9£©£¬ÇÒ commit
message Öаüº¬ bugfix ×ÖÑù
Jenkins ·¢Ïָà bugfix µÄ commit ºóÁ¢¼´Ö´Ðй¹½¨£¬½« spark-src.git/dev
´ò°üÉú³É release ²¢Ìá½»µ½ spark-bin.git/dev µÄ spark-${ build
\# }£¨ÈçͼÖÐµÄ spark-3£© Îļþ¼ÐÄÚ£¬spark ×÷Ϊ symbolic£¬Ö¸Ïò¸Ã spark-${
build \# }
ͨ¹ý git checkout master Çл»µ½ spark-src.git/master £¬ÔÙͨ¹ý
git rebase dev ½« bugfix µÄ commit rebase µ½ spark-src.git/master£¬Èç¹û
rebase ·¢Éú³åÍ»£¬Í¨¹ý¸æ¾¯Í¨Öª¿ª·¢ÈËÔ±È˹¤½éÈë´¦Àí³åÍ»
ÔÚÒ»¸ö release ÖÜÆÚÄÚ£¬Èç·¢ÏÖ¶à¸ö dev °æ±¾µÄ bug£¬¶¼¿É°´ÉÏÊö·½Ê½½øÐÐ bug fix£¬ÇÒÕ⼸¸ö
bug fix µÄ commit ÔÚ spark-src.git/dev ÉÏ˳ÐòÏàÁ¬¡£Òò´ËËüÃDZ» rebase
µ½ spark-src.git/master ºóÈÔȻ˳ÐòÏàÁ¬

hot fix
ÔÚÉú²ú»·¾³Öз¢ÏÖÁË prod °æ±¾µÄ bug ʱ£¬ÐÞ¸´¼°¼¯³ÉºÍ½»¸¶·½°¸ÈçÏÂ
ÔÚ spark-src.git/prod ÖÐÌá½»Ò»¸ö commit£¬ÇÒÆä commit message
Öаüº¬ hotfix ×ÖÑù
Jenkins ·¢Ïָà commit Ϊ hotfix£¬Á¢¼´Ö´Ðй¹½¨£¬½« spark-src.git/prod
´ò°üÉú³É release ²¢Ìá½»µ½ spark-bin.git/prod µÄ spark-${ build
\# }£¨ÈçͼÖÐµÄ spark-3£© Îļþ¼ÐÄÚ£¬spark ×÷Ϊ symbolic£¬Ö¸Ïò¸Ã spark-${
build \# }
ͨ¹ý git checkout master Çл»µ½ spark-src.git/master£¬ÔÙͨ¹ý
git rebase prod ½« hotfix rebase µ½ spark-src.git/master
ÔÚÒ»¸ö release ÖÜÆÚÄÚ£¬Èç·¢ÏÖ¶à¸ö prod °æ±¾µÄ bug£¬¶¼¿É°´ÉÏÊö·½Ê½½øÐÐ hot fix 
»Ò¶È·¢²¼
±¾ÎĽéÉܵÄʵ¼ùÖУ¬²»¿¼ÂǶà¸ö°æ±¾£¨¾Êµ¼ù¼ìÑ飬¶à¸ö°æ±¾Î¬»¤³É±¾Ì«¸ß£¬ÇÒÒ»°ãÎÞ±ØÒª£©£¬Ö»¿¼ÂÇÒ»¸ö prod
°æ±¾£¬Ò»¸ö dev °æ±¾
ÉÏÎĽéÉܵijÖÐø·¢²¼ÖУ¬¿É½« spark-bin.git/dev ²¿ÊðÖÁÐèҪʹÓÃ×îаæµÄ»·¾³ÖУ¨²»Ò»¶¨ÊÇ
Staging »·¾³£¬¿ÉÒÔÊDz¿·ÖÉú²ú»·¾³£©´Ó¶øÊµÏÖ dev °æµÄ²¿Êð¡£½« spark-bin.git/prod
²¿ÊðÖÁÐèҪʹÓÃÎȶ¨°æµÄ prod »·¾³ÖÐ
»Ø¹ö»úÖÆ
±¾ÎĽéÉܵķ½·¨ÖУ¬ËùÓÐ release ¶¼·Åµ½ spark-${ build \# } ÖУ¬ÓÉ spark
ÕâÒ» symbolic Ñ¡ÔñÖ¸Ïò¾ßÌåÄĸö release¡£Òò´Ë»Ø¹ö·½Ê½±È½ÏÖ±¹Û
¶ÔÓÚͬһ¸ö´ó°æ±¾£¨dev »òÕß prod£©µÄ»Ø¹ö£¬Ö»Ð轫 spark Ö¸Ïò build # ½ÏСµÄ
release ¼´¿É
Èç¹ûÊǽ«²¿·Ö»·¾³ÖÐµÄ prod °æÇ¨ÖÁ dev °æ£¨»òÕß dev °æ¸ÄΪ prod °æ£©ºó£¬ÐèÒª»Ø¹ö£¬Ö»Ð轫
dev ¸Ä»Ø prod °æ£¨»òÕß½« prod °æ¸Ä»Ø dev °æ£©¼´¿É
Pros.
Õý³£¿ª·¢ÔÚ spark-src.git/master ÉϽøÐУ¬Staging »·¾³µÄ bug fix
ÔÚ spark-src.git/dev ÉϽøÐУ¬Éú²ú»·¾³µÄ hot fix ÔÚ spark-src.git/prod
ÉϽøÐУ¬ÇåÎúÃ÷ÁË
bug fix ÌύʱµÄ code base Óë Staging »·¾³Ê¹Óð汾µÄ code ÍêȫһÖ£¬´Ó¶ø¿É±£Ö¤
bug fix µÄÕýÈ·ÐÔ
bug fix ºÏ²¢»Ø spark-src.git/master ʱʹÓà rebase£¬´Ó¶ø±£Ö¤ÁË
spark-src.git/dev Óë spark-src.git/master ËùÓÐ commit
µÄ˳ÐòÓëÄÚÈݵÄÒ»ÖÂÐÔ£¬½ø¶ø±£Ö¤ÁËÕâÁ½¸ö branch µÄÒ»ÖÂÐÔ
hot fix ÌύʱµÄ code base Óë Éú²ú»·¾³Ê¹Óð汾µÄ code ÍêȫһÖ£¬´Ó¶ø¿É±£Ö¤
hot fix µÄÕýÈ·ÐÔ
hot fix ºÏ²¢»Ø spark-src.git/master ʱʹÓà rebase£¬´Ó¶ø±£Ö¤ÁË
spark-src.git/dev Óë spark-src.git/master ËùÓÐ commit
µÄ˳ÐòÐÔ¼°ÄÚÈݵÄÒ»ÖÂÐÔ£¬½ø¶ø±£Ö¤ÁËÕâÁ½¸ö branch µÄÒ»ÖÂÐÔ
¿ª·¢ÈËÔ±Ö»ÐèҪרעÓÚРfeature µÄ¿ª·¢£¬bug fix µÄÌá½»£¬Óë hot fix µÄÌá½»¡£ËùÓеİ汾ά»¤¹¤×÷È«²¿×Ô¶¯Íê³É¡£Ö»Óе±
bug fix »ò hot fix rebase »Ø spark-src.git/master ·¢Éú³åͻʱ²ÅÐèÈ˹¤½éÈë
spark-bin.git/dev Óë spark-bin.git/prod ½«¿ª·¢°æ±¾ÓëÉú²ú°æ±¾·Ö¿ª£¬·½±ã¶ÀÁ¢²¿Êð¡£¶øÆä·¾¶Í³Ò»£¬·½±ã°æ±¾Çл»Óë»Ò¶È·¢²¼
Cons.
ÔÚ±¾µØ spark-src.git/master Ìύʱ£¬ÐëÏÈ rebase Ô¶³Ì·ÖÖ§£¬¶ø²»Ó¦Ö±½ÓʹÓÃ
merge¡£ÔÚ±¾·½°¸ÖУ¬Õâ²»½öÊÇ×î¼Ñʵ¼ù£¬»¹ÊÇÓ²ÐÔÒªÇó
ËäÈ» bug fix Óë hot fix commit ¶¼Í¨¹ý rebase ½øÈë spark-src.git/master¡£µ«·¢Éú³åͻʱ£¬ÐèÒªÏàÓ¦ÐÞ¸Ä
spark-src.git/master ÉϺóÐø commit¡£ÈçÉÏͼÖУ¬Ìá½»ºìÉ« commit 9
ÕâÒ» hot fix ºó£¬ÔÚ rebase »Ø spark-src.git/master ʱ£¬ÈçÓгåÍ»£¬¿ÉÄÜÐèÒªÐÞ¸Ä
commit 2 »òÕß commit 3¡¢4¡¢5¡£¸ÃÐ޸ĻáÔì³É±¾µØ½â¾öÍê³åÍ»ºóµÄ°æ±¾ÓëÔ¶³Ì°æ±¾³åÍ»£¬ÐèÒªÇ¿ÖÆ
push »ØÔ¶³Ì·ÖÖ§¡£¸Ã²Ù×÷´æÔÚÒ»¶¨·çÏÕ
Spark CD ³ÖÐø²¿Êð
³ÖÐø²¿ÊðÊÇÖ¸£¬Èí¼þͨ¹ýÆÀÉóºó£¬×Ô¶¯²¿Êðµ½Éú²ú»·¾³ÖС£

ÉÏÊö Spark ³ÖÐø·¢²¼Êµ¼ùµÄ½éÉܶ¼Ö»µ½ " ½« *** Ìá½»µ½ spark-bin.git"
½áÊø¡£¿ÉʹÓûùÓÚ git µÄ²¿Êð£¨ÎªÁËÐÔÄܺÍÀ©Õ¹ÐÔ£¬Ò»°ã²»Ö±½ÓÔÚ´ý²¿Êð»úÆ÷ÉÏʹÓà git pull
--rebase£¬¶øÊÇʹÓÃ×ÔÑеÄÉÏÏß·½°¸£¬´Ë´¦²»Õ¹¿ª£©½«¸Ã release ÉÏÏßµ½ Staging
»·¾³»òÉú²ú»·¾³¡£
|