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'