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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚGitlab CI´î½¨³ÖÐø¼¯³É»·¾³
 
À´Ô´:¼òÊé ·¢²¼ÓÚ:2017-10-24
  5245  次浏览      28
 

ʲôÊdzÖÐø¼¯³É

³ÖÐø¼¯³É£¨Continuous integration£¬¼ò³ÆCI£©Ö¸µÄÊÇ£¬Æµ·±µØ£¨Ò»Ìì¶à´Î£©½«´úÂ뼯³Éµ½Ö÷¸É¡£

ËüµÄºÃ´¦Ö÷ÒªÓÐÁ½¸ö¡£

¿ìËÙ·¢ÏÖ´íÎó¡£Ã¿Íê³ÉÒ»µã¸üУ¬¾Í¼¯³Éµ½Ö÷¸É£¬¿ÉÒÔ¿ìËÙ·¢ÏÖ´íÎ󣬶¨Î»´íÎóÒ²±È½ÏÈÝÒס£

·ÀÖ¹·ÖÖ§´ó·ùÆ«ÀëÖ÷¸É¡£Èç¹û²»ÊǾ­³£¼¯³É£¬Ö÷¸ÉÓÖÔÚ²»¶Ï¸üУ¬»áµ¼ÖÂÒԺ󼯳ɵÄÄѶȱä´ó£¬ÉõÖÁÄÑÒÔ¼¯³É¡£

³ÖÐø¼¯³ÉµÄÄ¿µÄ£¬¾ÍÊÇÈòúÆ·¿ÉÒÔ¿ìËÙµü´ú£¬Í¬Ê±»¹Äܱ£³Ö¸ßÖÊÁ¿¡£ËüµÄºËÐÄ´ëÊ©ÊÇ£¬´úÂ뼯³Éµ½Ö÷¸É֮ǰ£¬±ØÐëͨ¹ý×Ô¶¯»¯²âÊÔ¡£Ö»ÒªÓÐÒ»¸ö²âÊÔÓÃÀýʧ°Ü£¬¾Í²»Äܼ¯³É¡£

³ÖÐø½»¸¶¡¢³ÖÐø²¿ÊðµÄ¸ÅÄî

³ÖÐø½»¸¶£¨Continuous delivery£©Ö¸µÄÊÇ£¬Æµ·±µØ½«Èí¼þµÄа汾£¬½»¸¶¸øÖÊÁ¿ÍŶӻòÕßÓû§£¬ÒÔ¹©ÆÀÉó¡£Èç¹ûÆÀÉóͨ¹ý£¬´úÂë¾Í½øÈëÉú²ú½×¶Î¡£

³ÖÐø²¿Êð£¨continuous deployment£©ÊdzÖÐø½»¸¶µÄÏÂÒ»²½£¬Ö¸µÄÊÇ´úÂëͨ¹ýÆÀÉóÒÔºó£¬×Ô¶¯²¿Êðµ½Éú²ú»·¾³¡£

³ÖÐø¼¯³ÉµÄÔ­Ôò

Òµ½çÆÕ±éÈÏͬµÄ³ÖÐø¼¯³ÉµÄÔ­Ôò°üÀ¨£º

ÐèÒª°æ±¾¿ØÖÆÈí¼þ±£ÕÏÍŶӳÉÔ±Ìá½»µÄ´úÂë²»»áµ¼Ö¼¯³Éʧ°Ü¡£³£Óõİ汾¿ØÖÆÈí¼þÓÐ git¡¢svn µÈ£»

¿ª·¢ÈËÔ±±ØÐ뼰ʱÏò°æ±¾¿ØÖÆ¿âÖÐÌá½»´úÂ룬Ҳ±ØÐë¾­³£ÐԵشӰ汾¿ØÖÆ¿âÖиüдúÂëµ½±¾µØ£»

ÐèÒªÓÐרÃŵɷþÎñÆ÷À´Ö´Ðм¯³É¹¹½¨¡£¸ù¾ÝÏîÄ¿µÄ¾ßÌåʵ¼Ê£¬¼¯³É¹¹½¨¿ÉÒÔ±»Èí¼þµÄÐÞ¸ÄÀ´Ö±½Ó´¥·¢£¬Ò²¿ÉÒÔ¶¨Ê±Æô¶¯£¬Èçÿ°ë¸öСʱ¹¹½¨Ò»´Î£»

±ØÐë±£Ö¤¹¹½¨µÄ³É¹¦¡£Èç¹û¹¹½¨Ê§°Ü£¬ÐÞ¸´¹¹½¨¹ý³ÌÖеĴíÎóÊÇÓÅÏȼ¶×î¸ßµÄ¹¤×÷¡£Ò»µ©ÐÞ¸´£¬ÐèÒªÊÖ¶¯Æô¶¯Ò»´Î¹¹½¨¡£

³ÖÐø¼¯³ÉϵͳµÄ×é³É

Óɴ˿ɼû£¬Ò»¸öÍêÕûµÄ¹¹½¨ÏµÍ³±ØÐë°üÀ¨£º

Ò»¸ö×Ô¶¯¹¹½¨¹ý³Ì£¬°üÀ¨×Ô¶¯±àÒë¡¢·Ö·¢¡¢²¿ÊðºÍ²âÊԵȡ£

Ò»¸ö´úÂë´æ´¢¿â£¬¼´ÐèÒª°æ±¾¿ØÖÆÈí¼þÀ´±£ÕÏ´úÂëµÄ¿Éά»¤ÐÔ£¬Í¬Ê±×÷Ϊ¹¹½¨¹ý³ÌµÄËØ²Ä¿â¡£

Ò»¸ö³ÖÐø¼¯³É·þÎñÆ÷¡£

Gitlab CI½éÉÜ

GitLabÌṩ¿É³ÖÐø¼¯³É·þÎñ¡£Ö»ÒªÔÚÄãµÄ²Ö¿â¸ùĿ¼ ´´½¨Ò»¸ö.gitlab-ci.yml Îļþ£¬ ²¢Îª¸ÃÏîĿָÅÉÒ»¸öRunner£¬µ±Óкϲ¢ÇëÇó»òÕß pushµÄʱºò¾Í»á´¥·¢build¡£

Õâ¸ö.gitlab-ci.yml Îļþ¶¨ÒåGitLab runnerÒª×öÄÄЩ²Ù×÷¡£ ĬÈÏÓÐ3¸ö[stages(½×¶Î)]: build¡¢test¡¢deploy¡£

µ±buildÍê³Éºó(·µ»Ø·ÇÁãÖµ)£¬Äã»á¿´µ½pushµÄ commit»òÕߺϲ¢ÇëÇóÇ°Ãæ³öÏÖÒ»¸öÂÌÉ«µÄ¶ÔºÅ¡£ Õâ¸ö¹¦Äܷܺ½±ãµÄÈÃÄã¼ì²é³öÀ´ºÏ²¢ÇëÇóÊÇ·ñ»áµ¼ÖÂbuildʧ°Ü£¬ ÃâµÄÄãÈ¥¼ì²é´úÂë¡£

´ó²¿·ÖÏîÄ¿ÓÃGitLab's CI·þÎñÅÜbuild²âÊÔ£¬ ¿ª·¢Õß»áºÜ¿ìµÃµ½·´À¡£¬ÖªµÀ×Ô¼ºÊÇ·ñд³öÁËBUG¡£

ËùÒÔ¼òµ¥µÄ˵£¬ÒªÈÃCI¹¤×÷¿É×ܽáΪÒÔϼ¸µã:

ÔÚ²Ö¿â¸ùĿ¼´´½¨Ò»¸öÃûΪ.gitlab-ci.yml µÄÎļþ

Ϊ¸ÃÏîÄ¿ÅäÖÃÒ»¸öRunner

Íê³ÉÉÏÃæµÄ²½Öèºó£¬Ã¿´Îpush´úÂëµ½Git²Ö¿â£¬ Runner¾Í»á×Ô¶¯¿ªÊ¼pipeline¡£

»ùÓÚGitlab CI¿ìËٴ³ÖÐø¼¯³É»·¾³

¿ªÆô Gitlab CI ¹¦ÄÜ

ÔÚ×Ô¼ºµÄGitlabÖдò¿ªCI½çÃæ£¬±ÈÈçѸÀ×µÄGitlab£¬µØÖ·ÊÇ https://gitlab.xunlei.cn/ci/projects£¬ÕÒµ½×Ô¼ºÏîÄ¿ºóÑ¡Ôñ ¡°Add project To CI¡±

ÏîÄ¿ Gitlab CI ÅäÖÃ

¿ÉÒÔ¶ÔÏîÄ¿µÄ¹¹½¨½øÐÐÏêϸÅäÖ㬱ÈÈç¹¹½¨µÄʱ¼ä±í¼°ÐèÒª CI ½øÐгÖÐø¼¯³ÉµÄ·ÖÖ§µÈ£¬ÕâÀïÅäÖÃÁË ¶ÔmasterºÍdevelop·ÖÖ§½øÐгÖÐø¼¯³É¡£

ÅäÖÃÒ»¸ö Runner

GitLab CI ÖУ¬runner ÊÇÒ»¸ö¸ôÀëµÄÐéÄâ»úÆ÷£¬ÓÃÀ´ÅäºÏ Gitlab CI ½øÐй¹½¨¡£

°²×° GitLab-Runner

°²×°gitlab-ci-multi-runner

»·¾³£ºcentos 7, ʹÓÃÁËÇ廪´óѧµÄ¾µÏñ

н¨ gitlab-ci-multi-runner.repo

touch /etc/yum.repos.d/gitlab-ci-multi-runner.repo

½«ÒÔÏÂÄÚÈÝдÈëÎļþ

[gitlab-ci-multi-runner]
name=gitlab-ci-multi-runner
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

Ö´ÐÐ

sudo yum makecache
sudo yum install gitlab-ci-multi-runner

ÆäËûϵͳ°²×°

https://docs.gitlab.com/runner/install/

Gitlab CI Multi Runner ¹úÄÚ¾µÏñ

https://mirrors.tuna.tsinghua.edu.cn/help/gitlab-ci-multi-runner/

Runner µÄÇø·Ö

Ö¸¶¨ Runner£º ¿ÉÒÔÖ¸¶¨ÔËÐÐijһ¸öGitlab CI µÄÏîÄ¿

¹²Ïí Runner£º¿ÉÒÔÔËÐÐËùÓÐµÄ CI ÏîÄ¿

Gitlab Runner ºÍ Gitlab ²»Äܰ²×°ÔÚͬһ¸ö»úÆ÷

×¢²áÒ»¸öÖ¸¶¨µÄrunner

×¢²á¹²ÏíµÄRunner ÐèÒª gitlab µÄ admin ȨÏÞ

sudo gitlab-ci-multi-runner register

ÊäÈëGitlab CIµØÖ·, (e.g. https://gitlab.xunlei.cn/ci)

ÊäÈëÏîÄ¿CI token

ÊäÈë Runner ÃèÊö£¨e.g. home.xl9.xunlei.com ²âÊÔrunner£©

ÊäÈë Runner ±êÇ©£¬¿ÉÒÔ¶à¸ö£¬ÓöººÅ¸ô¿ª£¨e.g. 10.10.34.91-dev£©

ÊäÈë Runner Ö´ÐеÄÓïÑÔ (e.g. shell)

×¢²áÍê³ÉÖ®ºó£¬GitLab-CIÁ¢¿Ì¾Í»á¶à³öÒ»ÌõRunner¼Ç¼

Æô¶¯ runner

ÕâÀï°ÑÅúÁ¿ÔËÐÐRunnerÕâ¸ö¹¦Äܰ²×°ÎªÒ»Ïî·þÎñ

# Install runner as service and start it:

cd ~
gitlab-ci-multi-runner install
gitlab-ci-multi-runner start

´´½¨.gitlab-ci.yml

.gitlab-ci.yml ÎļþÊÇʲô

.gitlab-ci.yml ÓÃÀ´ÅäÖà CI ÓÃÄãµÄÏîÄ¿ÖÐ×öÄÄЩ²Ù×÷£¬Õâ¸öÎļþλÓÚ²Ö¿âµÄ¸ùĿ¼¡£

µ±ÓÐÐÂÄÚÈÝpushµ½²Ö¿âºó£¬GitLab»á²éÕÒÊÇ·ñÓÐ.gitlab-ci.ymlÎļþ£¬Èç¹ûÎļþ´æÔÚ£¬ Runners ½«»á¸ù¾Ý¸ÃÎļþµÄÄÚÈÝ¿ªÊ¼build ±¾´Îcommit¡£

.gitlab-ci.yml ʹÓÃYAMLÓï·¨£¬ ÄãÐèÒª¸ñÍâ×¢ÒâËõ½ø¸ñʽ£¬ÒªÓÿոñÀ´Ëõ½ø£¬²»ÄÜÓÃtabsÀ´Ëõ½ø¡£

´´½¨.gitlab-ci.yml

stages:
- test
- deploy
# ±äÁ¿
variables:
DEV_RSYNC_PATH: "/data/deploy/xunlei.com/misc.xl9.xunlei.com/d/"
# ËùÓÐ stage ֮ǰµÄ²Ù×÷
before_script:
- npm set registry http://xnpm.sz.xunlei.cn
- npm install
# ´úÂë¼ì²é
lint:
stage: test
script: npm run lint
# µ¥Ôª²âÊÔ
unit:
stage: test
script: npm run unit
# ²¿Êð²âÊÔ·þÎñÆ÷
deploy_dev:
stage: deploy
tags:
- 10.10.34.91-dev
only:
- develop
script:
- rsync -av --delete-after --exclude-from=/data/shell/home.xl9.xunlei_exclude.list . $DEV_RSYNC_PATH
- chmod -R 755 $DEV_RSYNC_PATH
- chown -R nobody:nobody $DEV_RSYNC_PATH
- find $DEV_RSYNC_PATH -type f -exec chmod 644 {} \;
- cd $DEV_RSYNC_PATH
- npm install

ÍÆË͹¹½¨ÅäÖÃÎļþ

ÅäÖúÃ.gitlab-ci.ymlÎļþÖ®ºó£¬Ö»Òª°ÑËü¼ÓÈëgitºóÈ»ºóÍÆË͵½Ô¶³Ì²Ö¿â£¬CI¾Í»á¿ªÊ¼×Ô¶¯»¯¼¯³É

²é¿´¿ÉÊÓ»¯µÄ¹¹½¨¹ý³Ì

Gitlab CI ÌṩÁË¿ÉÊÓ»¯µÄ¹¹½¨¹ý³ÌµÄÏÔʾ¿ÉÒÔËæÊ±²é¿´¡£

ÆôÓù¹½¨Óʼþ֪ͨ

Gitlab CIÌá¸ßÁËһЩ Service£¬ ±ÈÈçÓʼþ֪ͨ£¬¿ÉÒÔÅäÖÃһϵÁнÓÊÜÓʼþµÄµØÖ·ºÍÊÇ·ñÖ»ÓÐʧ°ÜµÄʱºò²Å·¢ËÍÓʼþ¡£

»ÕÕÂ

»ÕÕ£¬µ±PipelinesÖ´ÐÐÍê³É£¬»áÉú³É»ÕÕ£¬Äã¿ÉÒÔ½«ÕâЩ»ÕÕ¼ÓÈëµ½ÄãµÄREADME.mdÎļþ»òÕßÄãµÄÍøÕ¾¡£build status

½áÓï

±¾Îļòµ¥½éÉÜÁ˳ÖÐø¼¯³ÉµÄ¸ÅÄî²¢×ÅÖØ½éÉÜÁËÈçºÎ»ùÓÚ Gitlab CI ¿ìËÙ¹¹½¨³ÖÐø¼¯³É»·¾³£¬Ö÷Òª½éÉÜÁË Gitlab CI µÄ»ù±¾¹¦ÄܺÍÈëÃŲÙ×÷Á÷³Ì¡£

Ï£ÍûÔÚ½øÒ»²½µÄѧϰºÍÓ¦ÓÃÖÐÓë´ó¼Ò·ÖÏí Gitlab CI µÄÆäËü¸ß¼¶µÄÓ¦Óá£

   
5245 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

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

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

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