【记】Github Actions自动部署腾讯云

4,823 阅读2分钟

双11剁手一台腾讯云服务器,加上近期Github提供了Github Actions,琢磨着要不搞搞看,从0到1发布vue项目到服务器上。花了一整天时间捣鼓,泪目。。。记录一下踩过的坑!!!

配置腾讯云相关

复制本机~/.ssh 目录下的公钥:

# 墙裂建议使用clip复制,手动复制可能会遗漏最后的回车
clip < ~/.ssh/id_rsa.pub

登录腾讯云服务器,安装nginx:

# 添加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文件中:

vim ~/.ssh/authorized_keys

右键粘贴后,退出编辑模式,保存即可。

添加blank.yml文件

在根目录新建.github文件夹,在.github文件夹下新建workflows文件夹,在workflows文件夹下新建blank.yml文件。(当然也可以使用官方提供的模板)

复制~/.ssh 目录下的私钥:

# 墙裂建议使用clip复制,手动复制可能会遗漏最后的回车
clip < ~/.ssh/id_rsa

粘贴私钥到Settings > Secrets中:

编辑blank.yml:

# 一个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地址

参考:
ssh-deploy文档
GitHub Actions 入门教程 -- 阮一峰
真香!GitHub Action一键部署