Gitlab CI 自動(dòng)部署vue前端項(xiàng)目

最近用到了gitlab自動(dòng)部署項(xiàng)目,折騰了很久,踩了不少坑,這里記錄一下。

gitlab是現(xiàn)成的,部署程序的服務(wù)器上安裝gitlab-runner,這個(gè)可以參考官網(wǎng)的安裝文檔

gitlab-runner安裝完成后,需要注冊(cè)gitlab倉(cāng)庫(kù)的runners,運(yùn)行以下命令

gitlab-runner register

需要的url和token可以從git倉(cāng)庫(kù)的 Settings - CI/DI 中的runners找到,描述可以不用寫,tags先寫“vue-dev-pub”,executor選擇shell,注冊(cè)生成后刷新git倉(cāng)庫(kù)的Settings頁(yè)面,可以在Runners下面看到已經(jīng)注冊(cè)的runner


Screen Shot 2019-03-06 at 15.11.20.png

然后在項(xiàng)目中加入.gitlab-ci.yml文件

stages:
  - build

cache:
  key: ${CI_BUILD_REF_NAME}
  paths:
    - node_modules/

build:
  stage: build
  only:
    - master
  script:
    - npm install
    - npm run build
    - cp -r dist/* /mnt/www/
  tags: 
    - vue-dev-pub

提交后在git倉(cāng)庫(kù)頁(yè)面的 CI/CD 下的 Pipelines 看到已經(jīng)開(kāi)始運(yùn)行了,但是運(yùn)行失敗,看錯(cuò)誤是沒(méi)有找到npm命令。

下面是填坑時(shí)間

因?yàn)榉?wù)器上安裝node是用root用戶直接用nvm安裝的,而gitlab-runner是gitlab-runner用戶運(yùn)行的,根本訪問(wèn)不到root安裝的node,所以需要用gitlab-runner用戶重新安裝一次。
切換到gitlab-runner用戶

sudo su - gitlab-runner

然后用gitlab-runner用戶安裝node,再次提交后npm運(yùn)行正常,但是最后一步

cp -r dist/* /mnt/www/

執(zhí)行失敗,提示沒(méi)有權(quán)限。mnt是掛載的數(shù)據(jù)盤,gitlab-runner用戶沒(méi)有訪問(wèn)權(quán)限,首先用root用戶添加權(quán)限

chmod -R o+wr /mnt/

然后切換到gitlab-runner用戶在mnt下創(chuàng)建www文件夾,再次提交代碼測(cè)試,自動(dòng)部署正常,編譯出來(lái)的dist文件夾下所有內(nèi)容都復(fù)制到了www文件夾下。

web服務(wù)器使用的是docker運(yùn)行的nginx,服務(wù)器上已經(jīng)安裝好了docker,直接運(yùn)行

docker run --name nginx -p 8080:80 -d -v /mnt/www:/usr/share/nginx/html nginx

運(yùn)行成功后直接訪問(wèn)http://服務(wù)器ip:8080/就行了,以后每次提交代碼后都會(huì)自動(dòng)部署了。

總結(jié)

gitlab-runner程序運(yùn)行的時(shí)候是gitlab-runner用戶的權(quán)限,可以用gitelab-runner用戶把.gitlab-ci.yml里的編譯部署腳本手動(dòng)運(yùn)行一次,能成功的話肯定就沒(méi)問(wèn)題了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容