双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一键部署