前端使用gitlab-ci持續(xù)集成(+scp實(shí)現(xiàn)自動化部署)mac-linux

最近在項(xiàng)目中想用一下gitlab-ci(gitlab continuous integration持續(xù)集成)來對項(xiàng)目進(jìn)行自動化部署揖铜,這篇文章會提到自己所踩過一些坑(其實(shí)也不算坑刁赦,只是自己之前對這塊對了解為零而已)初橘。算是自己做對筆記潮梯,也希望能幫組到剛開始玩這個(gè)到小伙伴~~~

????其實(shí)能啃動官方的因?yàn)槲臋n也是挺簡單的gitlab-ci官方文檔
原理步驟:
??原理:簡單說就是我們在push完代碼之后靡羡,想讓我們的代碼自動進(jìn)行構(gòu)建(包括編譯贱鄙,發(fā)布翁都,自動化測試)),那由誰來執(zhí)行這個(gè)過程呢寒砖?
答:用gitlab-runner來執(zhí)行

實(shí)踐

??步驟:只需做兩件事情
????1道批、添加 .gitlab-ci.yml在項(xiàng)目的根目錄(會自動觸發(fā)Pipelines)
????2、配置一個(gè)Runner
????????在這之前你首先需要知道它有兩個(gè)東西來支撐:
1入撒、gitlab-ci server :負(fù)責(zé)調(diào)度、觸發(fā)Runner,以及獲取返回結(jié)果
2椭岩、gitlab-ci-runner:負(fù)責(zé)來跑自動化CI的一個(gè)宿主機(jī)子

開始

??1.直接在你的項(xiàng)目根目錄添加一個(gè).gitlab-ci.yml文件茅逮,至于里面具體怎么配置可以看官方解釋更好,gitlab-ci
??2.配置runner(mac版本)
????2.1 使用Homebrew 安裝gitlab-runner(Homebrew是mac的一個(gè)安裝工具)

brew install gitlab-runner

看過一些文章會告訴你接著執(zhí)行gitlab-runner install,但是先不要執(zhí)行這個(gè)判哥,這個(gè)不是安裝gitlab-runner献雅,而是service的指令

????2.2 注冊runner

打開你的項(xiàng)目(需要maintainer權(quán)限):settings->CI/CD,選擇Runners settings,如圖

圖一

圖二

記住圖二所標(biāo)注的1.url ?? 2.token
如果你要注冊一個(gè)shared Runner共享runner,哪你就需要擁有管理員權(quán)限塌计,如圖挺身,找到庫的urltoken
image.png

然后執(zhí)行:

gitlab-runner register
image.png

到這里 你看你的gitlab的runner設(shè)置里面就有一個(gè)runner了 ,如圖:

image.png
  • url:私有g(shù)it的路徑
  • token:項(xiàng)目的token锌仅,用于關(guān)聯(lián)runner和項(xiàng)目
  • name:runner的名字章钾,用于區(qū)分runner
  • tags:用于匹配任務(wù)(jobs)和執(zhí)行任務(wù)的設(shè)備(runners)
  • executor:執(zhí)行環(huán)境
    image.png

    注意:如果你設(shè)置了Can run untagged jobsNo,那你需要在你gitlab-ci.yml文件中指定你要使用runner的tag,才能運(yùn)行對應(yīng)的runner,否則你任務(wù)可能一直在pending狀態(tài)热芹,找不到runner執(zhí)行贱傀。
    未指定runner時(shí),如圖1伊脓,圖2:
    圖1

    圖2

??注意:使用webpack打包打時(shí)候府寒,別使用webpack-bundle-analyzer依賴關(guān)系可視化這個(gè)插件,這會導(dǎo)致runner接收不到結(jié)束狀態(tài),不會進(jìn)行下一步
指定runner如圖:

image.png

????2.3 install & start service
前面我已經(jīng)提到過,先不用執(zhí)行g(shù)itlab-runner install≈晟Γ現(xiàn)在該它上場了
runner作為等待被派發(fā)任務(wù)的設(shè)備剖淀,如果只能通過run sudo gitlab-runner run來前臺執(zhí)行就太蠢了。gitlab-runner也提供了service纤房,用來后臺響應(yīng)git服務(wù)器的任務(wù)分發(fā)纵隔。

gitlab-runner install
gitlab-runner start

注意:查看當(dāng)前runner的狀態(tài)可用 gitlab-runner status查看,如圖:

image.png

如果你用gitlab-runner servcie,那它會隨著機(jī)器自己啟動,不用自己去再啟動帆卓。建議巨朦,將runner部署在一臺24小時(shí)不關(guān)機(jī)的服務(wù)器上。

接下來剑令,使用ssh免登錄的方式使用scp將本地文件上傳到遠(yuǎn)程的linux服務(wù)器

ssh登錄Linux通常有兩種方法:用戶名密碼登錄糊啡、用戶名公鑰登錄;使用用戶名密碼登錄每次都要輸入密碼吁津,相當(dāng)麻煩棚蓄,而使用用戶名公鑰登錄則可以避免這個(gè)問題。

1碍脏、本地生成公鑰和私鑰

ssh-keygen -t rsa -C  'your email@domain.com'

#-t 指定密鑰類型梭依,默認(rèn)即 rsa ,可以省略
#-C 設(shè)置注釋文字典尾,比如你的郵箱役拴,可以省略

生成過程中會提示輸入密碼兩次,如果不想在使用公鑰的時(shí)候輸入密碼钾埂,可以回車跳過河闰;
密鑰默認(rèn)保存位置在 ~/.ssh 目錄下,打開后會看到私鑰文件 id_rsa 和公鑰文件 id_rsa.pub褥紫;

cd ~/.ssh #切換到ssh下
ls #查看ssh目錄下的文件  id_rsa.pub公鑰  id_rsa私鑰

2.復(fù)制公鑰至服務(wù)器

使用 scp 命令將本地的公鑰文件 id_rsa.pub 復(fù)制到需要連接的Linux服務(wù)器:

scp ~/.ssh/id_rsa.pub <用戶名>@<Linux的ip地址>:/home/id_rsa.pub
/* 如:scp ~/.ssh/id_rsa.pub root@172.29.213.23:/home/id_rsa.pub */

如果修改了ssh默認(rèn)連接端口的話姜性,需要加上端口信息:

scp -P <端口號> ~/.ssh/id_rsa.pub <用戶名>@<Linux的ip地址>:/home/id_rsa.pub

登錄Linux服務(wù)器,把公鑰追加到服務(wù)器ssh認(rèn)證文件中:

cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
截圖

這時(shí)候在本地終端中使用用戶名和ip登錄就不需要密碼了:

ssh <用戶名>@<Linux服務(wù)器ip>
// 如: ssh root@172.29.213.21
image.png

如果修改了ssh默認(rèn)連接端口的話髓考,需要加上端口信息:

ssh -p <端口號> <用戶名>@<ip地址>
image.png

3.使用scp 上傳文件到linux服務(wù)器指定目錄

scp -r ./dist "root@172.19.213.22:/opt/war/zhzg-mobile"

將dist目錄上傳到服務(wù)器到/opt/war/zhzg-mobile目錄下
然后將上面到指令放到gitlab-ci.yml來執(zhí)行部念,預(yù)防后期操作較多,所以我沒有直接將上面指令寫到script氨菇,而是使用了一個(gè).sh文件來執(zhí)行上面到指令,如圖:

image.png

image.png

好了儡炼,至此,你可以push你到代碼了。它會幫助你自動部署到服務(wù)器

image.png

參考文檔:https://juejin.im/post/5b1a4438e51d4506d1680ee9

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末门驾,一起剝皮案震驚了整個(gè)濱河市射赛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奶是,老刑警劉巖楣责,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竣灌,死亡現(xiàn)場離奇詭異,居然都是意外死亡秆麸,警方通過查閱死者的電腦和手機(jī)初嘹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沮趣,“玉大人屯烦,你說我怎么就攤上這事》棵” “怎么了驻龟?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缸匪。 經(jīng)常有香客問我翁狐,道長,這世上最難降的妖魔是什么凌蔬? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任露懒,我火速辦了婚禮,結(jié)果婚禮上砂心,老公的妹妹穿的比我還像新娘懈词。我一直安慰自己,他們只是感情好辩诞,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布坎弯。 她就那樣靜靜地躺著,像睡著了一般译暂。 火紅的嫁衣襯著肌膚如雪荞怒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天秧秉,我揣著相機(jī)與錄音,去河邊找鬼衰抑。 笑死象迎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼纫塌,長吁一口氣:“原來是場噩夢啊……” “哼荧降!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起包竹,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后劫乱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體织中,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年衷戈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狭吼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡殖妇,死狀恐怖刁笙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谦趣,我是刑警寧澤疲吸,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站前鹅,受9級特大地震影響摘悴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嫡纠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一烦租、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧除盏,春花似錦叉橱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至踱侣,卻和暖如春粪小,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抡句。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工探膊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人待榔。 一個(gè)月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓逞壁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锐锣。 傳聞我的和親對象是個(gè)殘疾皇子腌闯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容