GitLab(三) Runner CI/CD 部署一個(gè)前端項(xiàng)目

上一節(jié)脚猾,我們知道了 GitLab Runner CI/CD的使用方法,并且配置了一個(gè)Demo抡草; 本小結(jié)開始實(shí)戰(zhàn)饰及,使用CI/CD 配置一個(gè)前端項(xiàng)目;這里簡(jiǎn)化為兩步康震,第一步先編譯燎含,第二步將編譯好的文件推到nginx代理的文件夾中,這樣每當(dāng)有小伙伴提交代碼就會(huì)自動(dòng)發(fā)布腿短。


1. Linux 環(huán)境準(zhǔn)備

1.1 安裝最新 Runner

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt-get install gitlab-runner

1.2 安裝node

# 安裝 fnm (快速 Node 管理器)
curl -fsSL https://fnm.vercel.app/install | bash
# 激活 fnm
source ~/.bashrc
# 下載并安裝 Node.js
fnm use --install-if-missing 20
# 驗(yàn)證環(huán)境中是否存在正確的 Node.js 版本
node -v # 應(yīng)該打印 `v20.18.0`
# 驗(yàn)證環(huán)境中是否存在正確的 npm 版本
npm -v # 應(yīng)該打印 `10.8.2`

1.3 配置前端編譯環(huán)境

# 設(shè)置npm鏡像屏箍,防止在國(guó)內(nèi)無(wú)法訪問國(guó)外鏡像
npm config set registry https://registry.npmmirror.com
npm i nrm -g
npm i pnpm -g
  • nrm 可以動(dòng)態(tài)切換各個(gè)廠商的鏡像
  • pnpm 測(cè)試項(xiàng)目使用了 pnpm 來(lái)管理項(xiàng)目

3. 編譯階段處理

3.1 參考上一小節(jié)新建一個(gè) runner

  • Enter an executor, 選擇 shell
  • 標(biāo)簽填 build

3.2 修改前端 .gitlab-ci.yml 文件

build-job:
  stage: build
  tags:
    - build
  script:
    - pnpm install
    - npm run build
  • 使用標(biāo)簽為buildrunner 執(zhí)行 pnpm installnpm run build 命令

提交代碼

企業(yè)微信截圖_17291536469234.png

企業(yè)微信截圖_1729153729487.png

  • 在gitlab上可以看到任務(wù)執(zhí)行完成
  • 在服務(wù)器中可以看到編譯到的dist目錄

4. 部署階段處理

4.1 生成 SSH 密鑰對(duì)(如果沒有現(xiàn)成的密鑰)

ssh-keygen -t rsa -b 4096 -C "gitlab-runner"
  • 生成的文件在 /root/.ssh/id_rsa.pub

4.2 將公鑰復(fù)制到目標(biāo)服務(wù)器

ssh-copy-id user@target-server
  • 完成后使用ssh user@target-server 按照提示連接到服務(wù)器,會(huì)讓你輸入密碼橘忱。然后exit退出
  • 可以使用 scp -r ./dist user@target-server:/usr/share/nginx/test 測(cè)試是否可以服務(wù)當(dāng)前目錄到服務(wù)器中

4.3 參考上一小節(jié)新建一個(gè) runner

  • Enter an executor, 選擇 shell
  • 標(biāo)簽填 deploy

4.4 修改 .gitlab-ci.yml

build-job:
  stage: build
  tags:
    - build
  script:
    - pnpm install
    - npm run build
  cache:
    paths:
      - node_modules/
  artifacts:
    paths:
      - dist/


deploy-job:
  stage: deploy
  tags:
    - deploy
  script:
    - ssh $TEST_USERNAME@$TEST_HOST "rm -rf /usr/share/nginx/test"
    # 使用 SSH 將打包好的目錄復(fù)制到指定的服務(wù)器目錄
    - scp -r ./dist $TEST_USERNAME@$TEST_HOST:/usr/share/nginx/test

  • cache 緩存 node_modules
  • artifacts 指定文件留到下一個(gè)階段
  • deploy-job 新增部署階段赴魁;scp 會(huì)登錄 ssh, 并且復(fù)制文件夾到指定服務(wù)器目錄
  • $TEST_USERNAME$TEST_HOST是配置在gitlab中的變量,防止放在客戶端泄密

4.5 新增 $TEST_USERNAME$TEST_HOST變量

企業(yè)微信截圖_17291602021102.png

5. 提交前端代碼

企業(yè)微信截圖_17291603327381.png

image.png
  • 完美收官
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钝诚,一起剝皮案震驚了整個(gè)濱河市颖御,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敲长,老刑警劉巖郎嫁,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異祈噪,居然都是意外死亡泽铛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門辑鲤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盔腔,“玉大人,你說(shuō)我怎么就攤上這事月褥〕谒妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵宁赤,是天一觀的道長(zhǎng)舀透。 經(jīng)常有香客問我,道長(zhǎng)决左,這世上最難降的妖魔是什么愕够? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任走贪,我火速辦了婚禮,結(jié)果婚禮上惑芭,老公的妹妹穿的比我還像新娘坠狡。我一直安慰自己,他們只是感情好遂跟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布逃沿。 她就那樣靜靜地躺著,像睡著了一般幻锁。 火紅的嫁衣襯著肌膚如雪凯亮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天哄尔,我揣著相機(jī)與錄音触幼,去河邊找鬼。 笑死究飞,一個(gè)胖子當(dāng)著我的面吹牛置谦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亿傅,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼媒峡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了葵擎?” 一聲冷哼從身側(cè)響起谅阿,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酬滤,沒想到半個(gè)月后签餐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盯串,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年氯檐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片体捏。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冠摄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出几缭,到底是詐尸還是另有隱情河泳,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布年栓,位于F島的核電站拆挥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏某抓。R本人自食惡果不足惜纸兔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一黄锤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧食拜,春花似錦、人聲如沸副编。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)痹届。三九已至呻待,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間队腐,已是汗流浹背蚕捉。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柴淘,地道東北人迫淹。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像为严,于是被迫代替她去往敵國(guó)和親敛熬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

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