Skip to content

GitHub Action 一键部署

基本概念

  • workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。

  • job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。

  • step(步骤):每个 job 由多个 step 构成,一步步完成。

  • action (动作):每个 step 可以依次执行一个或多个命令(action)

workflow 文件

发布到腾讯云 Github Action 配置文件

yaml
# name字段是 workflow 的名称。如果省略该字段,默认为当前 workflow 的文件名。
name: Deploy
# on字段指定触发 workflow 的条件,通常是某些事件。
on:
  # 手动触发
  workflow_dispatch:
  push:
    branches:
      - master
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      # 切换分支
      - uses: actions/checkout@v2
      # 每个 action 就是一个独立脚本,
      # 因此可以做成代码仓库,使用userName/repoName的语法引用 action。
      # 比如,actions/setup-node就表示github.com/actions/setup-node这个仓库,
      # 它代表一个 action,作用是安装 Node.js。
      # 事实上,GitHub 官方的 actions 都放在 github.com/actions 里面。
      - uses: actions/setup-node@v3
        with:
          node-version: 16
          cache: yarn
      - run: yarn install --frozen-lockfile

      # name字段是任务的说明 可以省略
      - name: Build
        run: yarn build

        # 使用ssh-deploy action 确保服务端安装了rsync
      - name: Deploy to Server
        uses: easingthemes/ssh-deploy@v2.2.11
        env:
          # 本地.ssh文件下的私钥id_rsa,存在secrets的TOKEN中
          SSH_PRIVATE_KEY: ${{ secrets.TOKEN }}
          # 复制操作的参数。"-avzr --delete"意味部署时清空服务器目标目录下的文件
          ARGS: '-avzr --delete'
          # 源目录,相对于$GITHUB_WORKSPACE根目录的路径
          SOURCE: 'dist/'
          # 服务器域名
          REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
          REMOTE_PORT: 245
          # 腾讯云默认用户名为root
          REMOTE_USER: 'root'
          # 目标目录
          TARGET: '/root/www/gp.noters.cn'