当前位置: 首页 > 后端技术 > Node.js

纯Git实现前端CI-CD

时间:2023-04-03 14:14:10 Node.js

鏈€杩戝墠绔痳eact椤圭洰闇€瑕侀珮鏁堥儴缃插埌绉佹湇锛岀爺绌朵簡鍑犵鎸佺画閮ㄧ讲鏂规銆傝繖鏄竴涓畝鐭殑鎻忚堪銆傞儴缃叉€濊矾涓€鑸湁涓ょ锛氱紪璇戞枃浠堕儴缃叉簮鐮侀儴缃茬紪璇戞枃浠堕儴缃诧紝鍗冲厛鍦ㄦ湰鍦版墦鍖卬pmrunbuild锛岀敓鎴恇uild鏂囦欢澶癸紝鐒跺悗灏哹uild鏂囦欢澶逛紶鍒版湇鍔″櫒涓婏紝鐒跺悗鐢∟ginx閰嶇疆涓€涓潤鎬佸垎鏋愯冻澶熴€傝繖涓柟妗堝彲浠ョ洿鎺ョ敤rsync涓婁紶锛岃繖閲屽氨涓嶈禈杩颁簡銆傛簮鐮侀儴缃插氨鏄妸婧愮爜鏂囦欢涓婁紶鍒版湇鍔″櫒锛岀劧鍚庯細$npminstall&&npmrunbuild杩欎釜鏂规硶鏄妸鎵撳寘鐨勫伐浣滀氦缁欐湇鍔″櫒锛堟垨鑰呭叾浠栨瀯寤哄伐鍏凤級锛屾湰鍦板彧鏄妸婧愮爜鎺ㄤ笂鍘伙紝git鐩戝惉鎺ㄩ€佺劧鍚庤嚜鍔ㄥ紑濮嬫瀯寤恒€傝繖鏄幇鍦ㄦ瘮杈冩祦琛岀殑涓€绉嶆柟寮忥紝澶ч儴鍒嗙殑鎸佺画闆嗘垚宸ュ叿閮芥槸杩欐牱鍋氱殑銆備粖澶╃殑閲嶅ご鎴忔潵浜嗭紒鎴戜滑涓嶄緷璧栧叾浠栨瀯寤哄伐鍏凤紝浠呬娇鐢ㄧ函Git鐩戞帶鎺ㄩ€佸苟鑷姩鏋勫缓銆傜浉淇℃垜锛岃繖涓€姝ュ緢鏈夋剰鎬潂鏈嶅姟鍣ㄩ鍏堝噯澶囦竴鍙版湇鍔″櫒锛屽畨瑁卬odegitnginx锛屽紑濮嬪伐浣溿€傛湇鍔″櫒淇℃伅濡備笅锛歨ost:198.234.456.8(fake)椤圭洰鐩綍锛?home/react-test鍒涘缓瑁镐粨搴撳苟鐧诲綍鏈嶅姟鍣紝鍦ㄦ湇鍔″櫒鐨?opt鐩綍涓嬪垱寤鸿8浠撳簱浠€涔堟槸a瑁镐粨锛熻8浠撳簱鏄病鏈夊伐浣滅洰褰曠殑浠撳簱銆傝鐧戒簡灏辨槸浣犻」鐩洰褰曚笅鐨?git鏂囦欢澶规墽琛屽懡浠ゅ垱寤猴細$cd/opt$gitinit--barereact-test.git鍒涘缓瀹屾垚鍚庯紝react-test浼氱敓鎴?git鏂囦欢澶癸紝鎵€浠ユ垜浠殑瑁镐粨搴撲綅缃槸/opt/react-test.git锛岃浣忓悗闈細鐢ㄥ埌銆傛帴涓嬫潵杩涘叆react-test.git鏂囦欢澶癸紝鍦ㄩ噷闈㈡壘鍒颁竴涓猦ook鏂囦欢澶广€傝繖鏄斁缃瓽it鈥滄寕閽┾€濈殑鏂囦欢澶广€傛墍璋撯€滈挬瀛愨€濓紝鍏跺疄灏辨槸涓€涓猻hell鏂囦欢銆傚湪鎵цgit鎿嶄綔锛堜緥濡傦細鎺ㄣ€佹媺锛夋椂瑙﹀彂鎵ц銆傜幇鍦ㄦ垜浠垱寤轰竴涓挬瀛愩€傛坊鍔犳帹閫佹寕閽╀互鍦ㄦ寕閽╃洰褰曚腑鍒涘缓鏂扮殑鎺ユ敹鍚庢枃浠躲€傝繖涓挬瀛愭枃浠朵細鍦ㄤ唬鐮佹帹閫佸埌瑁镐粨搴撳悗鎵ц銆傝繖鏄湰鏂囨渶閲嶈鐨勪竴鐐广€?cd/opt/react-test.git/hook$vimpost-receivepost-receive鍏蜂綋鍐呭濡備笅锛?!/bin/bashecho'server:receivedcodepush...'cd/home/react-testecho'server:checkoutlatestcodefromgit...'git--git-dir=/opt/react-test.git--work-tree=/home/react-testcheckout-freleaseecho'server:runningnpminstall...'npminstall\&&echo'server:buildingding...'\&&npmrunbuild\&&echo'server:done...'杩欎釜鑴氭湰鏈€閲嶈鐨勫懡浠ゆ槸锛歡it--git-dir=/opt/react-test.git--work-tree=/home/react-testcheckout-frelease鏄粈涔堟剰鎬濓紵棣栧厛璇翠竴涓嬫垜浠钩鏃舵槸鎬庝箞浣跨敤git鐨勩€備竴鑸垜浠娇鐢╣itinit鏉ュ垵濮嬪寲椤圭洰鐩綍涓嬬殑git浠撳簱銆傞粯璁ゆ儏鍐典笅锛屾墽琛宎dd銆乧ommit绛夋搷浣滀笌璇ヤ粨搴撲氦鎹㈡枃浠躲€傝繖閲屾湁涓や釜閲嶈鐨勬蹇碉細椤圭洰鐩綍鍜実it浠撳簱銆傞」鐩洰褰曞氨鏄痯ackage.json鏂囦欢鎵€鍦ㄧ殑鐩綍锛屾垜浠殑浠g爜灏辨斁鍦ㄨ繖閲屻€俫it浠撳簱灏辨槸椤圭洰鐩綍涓嬬殑.git鏂囦欢澶广€傚畠鏄竴涓殣钘忕洰褰曪紝鍦╣itinit鐨勬椂鍊欒嚜鍔ㄧ敓鎴愩€傞偅涔堬紝鏈夋病鏈夊姙娉曞湪褰撳墠椤圭洰鐩綍涓嬩娇鐢ㄥ叾浠栫洰褰曚笅鐨刧it浠撳簱鍛紵鏄殑锛?-git-dir鍙傛暟鍏佽鎮ㄦ寚瀹氫笉鍚岀殑git瀛樺偍搴撱€傛瘮濡傛垜鎯虫妸/home/react-test涓嬬殑淇敼鏂囦欢娣诲姞鍒版殏瀛樺尯锛?Addto/home/react-test/.git$bydefaultgitadd.#Addto/home/git-test/.git$git--git-dir/home/git-test/.git娣诲姞.鏃㈢劧椤圭洰鐩綍鍙互鎸囧畾鍏朵粬git浠撳簱锛岄偅涔坓it浠撳簱鍙互鎸囧畾鍏朵粬椤圭洰鐩綍鍚楋紵褰撶劧锛?-work-tree鍙傛暟鍏佽鎮ㄦ寚瀹氬叾浠栭」鐩洰褰曘€傛瘮濡傛垜鎯虫煡鐪?home/react-test涓嬬殑鍒嗘敮锛?榛樿浠?home/react-test/.gitcheckout$gitcheckoutdev-test#Checkoutfrom/home/git-test/.git$git--work-tree/home/git-test/.gitcheckoutdev-test鍘夊浜嗭紝鍝堝搱銆傝繖灏嗛」鐩笌瀛樺偍搴撳垎寮€銆傛槑鐧戒簡杩欎竴鐐癸紝鍐嶇湅涓婇潰鍛戒护鐨勬剰鎬濓細妫€鍑篻it浠撳簱/opt/react-test.git鐨剅elease鍒嗘敮鍒伴」鐩洰褰?home/react-test锛屼粠鑰屾洿鏂伴」鐩洰褰曚唬鐮併€傜鍑烘柊浠g爜鍚庯紝杩愯鎵撳寘鍛戒护鏇存柊閮ㄧ讲鏂囦欢澶癸紝杩欐牱閮ㄧ讲灏卞畬鎴愪簡銆俷ginx瑙f瀽鍓嶉潰鐨勶紝閮ㄧ讲瀹屾垚锛屾墦鍖卋uild鏂囦欢澶广€傝繖涓枃浠跺す灏辨槸瑕侀儴缃茬殑鏂囦欢澶广€傛渶鍚庝竴姝ユ槸閰嶇疆鍩熷悕骞惰В鏋愬埌璇ユ枃浠跺す鈥嬧€嬨€?cd/etc/nginx/conf.d$vimreact-test.conf鍦╮eact-test.conf鏂囦欢涓啓鍏ュ涓嬮厤缃細server{listen80;server_name浣犵殑涓绘満锛?姣斿www.baidu.comroot/home/react-test/build;#鎸囧悜鎵撳寘鐩綍location/{indexindex.html;}}淇濆瓨閫€鍑哄悗锛宯ginx-sreload锛屽氨鍙互瑙f瀽浜嗭紒鑷虫锛屾湇鍔″櫒绔殑鎵撳寘銆侀儴缃层€佽В鏋愯繃绋嬪叏閮ㄥ畬鎴愩€備笅闈㈡槸鎺ュ彈鏈湴浠g爜鐨勬帹閫侊紝鐒跺悗鑷姩瑙﹀彂杩欎釜杩囩▼銆傚鎴风宸茬粡鍦ㄥ墠闈㈢殑鏈嶅姟鍣ㄤ笂鎼缓浜唃it瑁镐粨react-test.git锛岃繑鍥炲鎴风鏃跺彧闇€瑕佸仛涓€浠朵簨锛氬皢浠g爜鎺ㄩ€佸埌杩欎釜瑁镐粨銆傛帹閫佷唬鐮佺殑绗竴姝ワ紝鎴戜滑鍏堟妸杩欎釜瑁镐粨搴撴坊鍔犱负鏈湴椤圭洰涓嬬殑杩滅▼浠撳簱銆?gitremoteaddprodssh://root@198.234.456.8/opt/react-test.git绗簩姝ユ垜浠洿鎺ush浠g爜鍒拌繖涓繙绋嬩粨搴擄細$gitcheckout-brelease$gitpushprodrelease鏄繀闇€鐨勮繖閲屽垏鎹㈠埌鍙戝竷鍒嗘敮骞舵帹閫併€傚洜涓哄湪杩滅▼浠撳簱hook涓紝鎴戜滑瀹氫箟浜唕elease鍒嗘敮鐨刢heckout锛屾墍浠ユ垜浠push鐨勬槸release鍒嗘敮銆傝繖閲屽彲鑳戒細瑕佹眰杈撳叆鏈嶅姟鍣ㄥ瘑鐮侊紝鍙互閰嶇疆ssh鍏嶅瘑鐮佺櫥褰曠洿鎺ユ帹閫侊紝杩欓噷涓嶅仛浠嬬粛銆傛帹閫佷箣鍚庯紝浣犱細鍦ㄦ帶鍒跺彴鐪嬪埌鎴戜滑鍦╬ost-receive涓啓鐨勮緭鍑恒€傛帹閫佸畬鎴愬悗锛屾煡鐪嬫湇鍔″櫒涓嬬殑/home/react-test鐩綍锛屼細鍦ㄨ繖閲岀湅鍒版簮鏂囦欢鍜屾墦鍖呯殑鏋勫缓鏂囦欢锛孋I/CD宸ヤ綔灏卞畬鎴愪簡銆傚悗缁殑鎸佺画閮ㄧ讲宸ヤ綔鍙渶瑕佹帹閫佷竴娆″嵆鍙€備互寰€鏈笓鏍忎細闀挎湡杈撳嚭鍓嶇宸ョ▼鍜屾灦鏋勬柟鍚戠殑鏂囩珷锛岀幇鍒婂彂濡備笅锛氬墠绔灦鏋勫笀鐨刧it鎶€鑳戒綘鏈夊濂斤紵鍓嶇鏋舵瀯甯堢殑绁炴妧锛岀粺涓€浠g爜椋庢牸鐨勪笁绉嶆柟寮忓鏋滃枩娆㈡垜鐨勬枃绔狅紝璇风偣璧炴敮鎸侊紒涔熸杩庡叧娉ㄦ垜鐨勪笓鏍忥紝璋㈣阿馃檹馃檹