雙11剁手一臺騰訊雲服務器,加上近期Github提供了Github Actions,琢磨着要不搞搞看,從0到1發佈vue項目到服務器上。花了一成天時間搗鼓,淚目。。。記錄一下踩過的坑!!!html
複製本機~/.ssh 目錄下的公鑰:vue
# 牆裂建議使用clip複製,手動複製可能會遺漏最後的回車
clip < ~/.ssh/id_rsa.pub
複製代碼
登陸騰訊雲服務器,安裝nginx:node
# 添加CentOS 7 EPEL 倉庫
sudo yum install epel-release
# 安裝Nginx
sudo yum install nginx
# 啓動nginx
sudo systemctl start nginx
# 啓動防火牆
sudo systemctl start firewalld.service
# 啓動HTTP和HTTPS傳輸
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
複製代碼
粘貼公鑰到服務器~/.ssh/authorized_keys文件中:nginx
vim ~/.ssh/authorized_keys
複製代碼
右鍵粘貼後,退出編輯模式,保存便可。git
在根目錄新建.github文件夾,在.github文件夾下新建workflows文件夾,在workflows文件夾下新建blank.yml文件。(固然也能夠使用官方提供的模板) github
複製~/.ssh 目錄下的私鑰:npm
# 牆裂建議使用clip複製,手動複製可能會遺漏最後的回車
clip < ~/.ssh/id_rsa
複製代碼
粘貼私鑰到Settings > Secrets中:ubuntu
編輯blank.yml:vim
# 一個workflow,名爲deploy to tengxunyun
name: deploy to tengxunyun
on: # 此CI/CD觸發時的事件
push: # 在代碼提交時自動觸發
branches:
- master
# 一個 CI/CD 的工做流有許多 jobs 組成,好比最典型的 job 是 lint,test,build。
jobs:
build: # 構建job
runs-on: ubuntu-latest # 跑workflow的服務器系統
steps: # job的一系列動做
# 切換分支獲取源碼
- name: Checkout # step的名稱,將會在 github action 的控制檯中顯示
# 選擇一個action,能夠理解爲若干 steps.run,有利於代碼複用
uses: actions/checkout@master
# 安裝使用 node:10
- name: use Node.js 10
uses: actions/setup-node@v1
with:
node-version: 10
# 運行命令,npm install && npm run build
- name: npm install and build
run: |
npm install
npm run build
env:
CI: true
# 部署到騰訊雲服務器
- name: Deploy to Server
uses: easingthemes/ssh-deploy@v2.0.7
env:
# 本地.ssh文件下的私鑰id_rsa,存在secrets的TOKEN中
SSH_PRIVATE_KEY: ${{ secrets.TOKEN }}
# 複製操做的參數。"-avzr --delete"意味部署時清空服務器目標目錄下的文件
ARGS: "-avzr --delete"
# 源目錄,相對於$GITHUB_WORKSPACE根目錄的路徑
SOURCE: "dist/"
# 服務器域名
REMOTE_HOST: "49.233.195.71"
# 騰訊雲默認用戶名爲root
REMOTE_USER: "root"
# 目標目錄
TARGET: "/usr/share/nginx/html"
複製代碼
待Github的Actions面板顯示構建完成後,訪問http://49.233.195.71
試試,完美,大功告成。附上demo地址。bash
參考:
ssh-deploy文檔
GitHub Actions 入門教程 -- 阮一峯
真香!GitHub Action一鍵部署