基於github+travis自動部署vue項目到遠端服務器

前期準備

  • github帳號一個
  • 一個vue的項目
  • 一臺linux服務器

travis中添加項目

travis是基於github的,全部只有github的帳號能夠登陸travis,開發者必須有一個github的帳號,登陸後,點擊加號,開始添加項目html

clipboard.png

點擊Manage repositories on GitHub,前往github中選擇項目
clipboard.pngvue

這裏github提供的兩種模式,第一種添加全部項目,第二種添加指定項目,通常咱們選擇第二種添加須要添加的項目
clipboard.pngnode

Github生成訪問令牌

github的我的中心,https://github.com/settings/tokens/路徑下,生成一個訪問令牌,添加到travis中,給travis操做倉庫的權限
clipboard.pnglinux

複製令牌內容,進入travis中的中,找到SSH key的菜單,將令牌內容貼入,點擊Add
clipboard.pnggit

travis配置文件

在項目根目錄下,新建.travis.yml文件。travis要執行的自動化步驟,都須要在該文件中配置,這裏是一個最簡單的配置文件,當travis檢測到master分支代碼發生變化時,自動執行npm install和npm run buildgithub

language: node_js
node_js:
- 10.16.0
cache:
  directories:
  - node_modules
install:
- npm install
before_script: 

script:
- npm run build

after_script: 

branches:
  only:
  - master

關於travis的更多配置,參考阮老師的教程:npm

http://www.ruanyifeng.com/blo...

travis免密登陸遠端服務器

部署dist目錄到服務器

開發者在本地執行npm run build,編譯後生成dist目錄,服務器須要的也是dist目錄。travis要作的就是把dist目錄自動發送到服務器服務器

先說思路,當travis執行build生成目標文件後,travis把dist目錄提交到倉庫的指定分支,好比叫deploy分支,經過ssh自動登陸服務器,執行git pull,把deploy分支拉下來ssh

after_script: 
  - cd ./dist
  - git init
  - git config user.name "your name"
  - git config user.email "your email"
  - git add .
  - git commit -m "Travis CI Auto Builder"
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:deploy
  - ssh your-name@xx.xx.xx.xx 'cd /your-path && git fetch --all && git reset --hard origin/deploy && git pull'

部署成功

配置文件上的操做執行成功後,你的項目就多了這個高大上的標誌fetch

clipboard.png

一些報錯

Travis-CI解密證書時報錯

報錯提示通常是這樣的:

openssl aes-256-cbc -K $encrypted_d3c25c1810a6_key -iv $encrypted_d3c25c1810a6_iv -in id_rsa.enc -out ~\/.ssh/id_rsa -d
~/.ssh/id_rsa: No such file or directory
The command "openssl aes-256-cbc -K $encrypted_d3c25c1810a6_key -iv $encrypted_d3c25c1810a6_iv -in id_rsa.enc -out ~\/.ssh/id_rsa -d" failed and exited with 1 during .

這個報錯狀況的出現,有多是由於在使用travis encrypt-file ~/.ssh/id_rsa --add命令生成加密密鑰時,自動增長了轉義字符串,須要手動刪除轉義字符

生成的密鑰是這樣的:

- openssl aes-256-cbc -K $encrypted_d3c25c1810a6_key -iv $encrypted_d3c25c1810a6_iv -in id_rsa.enc -out ~\/.ssh/id_rsa -d

刪除轉義字符後是這樣的:

- openssl aes-256-cbc -K $encrypted_d3c25c1810a6_key -iv $encrypted_d3c25c1810a6_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d
相關文章
相關標籤/搜索