Skip to content

data: 数据清理

data: 数据清理 #26

Workflow file for this run

# 前端、后端 CI/CD
name: Frontend & Backend CI/CD
# 触发workflow的条件
on:
# 可以手动触发
workflow_dispatch:
push:
# 只有master分支发生push事件时,才会触发workflow
branches: [ master ]
pull_request:
branches: [ master ]
# 变量
env:
SERVER_PRIVATE_KEY: ${{ secrets.SERVER_PRIVATE_KEY }} # 服务器私钥
SERVER_HOST: ${{ secrets.SERVER_HOST }} # 服务器IP地址
USER_NAME: ${{ secrets.USER_NAME }} # 服务器用户名
# jobs表示执行的一项或多项任务
jobs:
# 任务的job_id,具体名称自定义
# build frontend 代表打包前端
build-frontend:
# runs-on字段指定运行所需要的虚拟机环境
runs-on: ubuntu-latest
strategy:
matrix:
# 配置所需node版本
node-version: [16.x]
# 设置工作目录(因为本项目包含多个子项目)
defaults:
run:
working-directory: ./frontend
# 步骤
steps:
# 检出仓库副本
- uses: actions/checkout@v3
# 规定node版本
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
# 缓存依赖
- name: Cache nodemodules
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
# 安装依赖
- name: Install
run: npm install
# 打包
- name: Build
run: npm run build:prod
# 推送资源
- name: Deploy
uses: easingthemes/[email protected]
env:
SSH_PRIVATE_KEY: ${{ env.SERVER_PRIVATE_KEY }}
ARGS: '-avz --delete'
SOURCE: 'frontend/dist/' # 要推送的目录,路径相对于代码仓库的根目录
REMOTE_HOST: ${{ env.SERVER_HOST }}
REMOTE_USER: ${{ env.USER_NAME }}
TARGET: /var/www/html/www.smartmiao.com/smartmiao-demo/frontend # 服务器目标路径
# build-backend 代表打包后端
build-backend:
# runs-on字段指定运行所需要的虚拟机环境
runs-on: ubuntu-latest
# 步骤
steps:
# 检出仓库副本
- uses: actions/checkout@v3
# 推送资源
- name: Deploy
uses: easingthemes/[email protected]
env:
SSH_PRIVATE_KEY: ${{ env.SERVER_PRIVATE_KEY }}
ARGS: '-avz --delete'
SOURCE: 'backend/'
REMOTE_HOST: ${{ env.SERVER_HOST }}
REMOTE_USER: ${{ env.USER_NAME }}
TARGET: /var/www/html/www.smartmiao.com/smartmiao-demo/backend
EXCLUDE: '/node_modules, config/config_env_local.js, /config/config_env_prod.js, /app/public/, /logs' # 排除文件,否则会被删除
# 重启服务
- name: Restart service
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.USER_NAME }}
key: ${{ secrets.SERVER_PRIVATE_KEY }}
# 执行脚本
script: |
cd /var/www/html/www.smartmiao.com/smartmiao-demo/backend
npm install --production
npm run stop
npm run start
# build-web 代表打包网站
build-web:
# runs-on字段指定运行所需要的虚拟机环境
runs-on: ubuntu-latest
strategy:
matrix:
# 配置所需node版本
node-version: [16.x]
# 设置工作目录(因为本项目包含多个子项目)
defaults:
run:
working-directory: ./web
# 步骤
steps:
# 检出仓库副本
- uses: actions/checkout@v3
# 规定node版本
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
# 缓存依赖
- name: Cache nodemodules
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
# 安装依赖
- name: Install
run: npm install
# 打包
- name: Build
run: npm run deploy
# 推送资源
- name: Deploy
uses: easingthemes/[email protected]
env:
SSH_PRIVATE_KEY: ${{ env.SERVER_PRIVATE_KEY }}
ARGS: '-avz --delete'
SOURCE: 'web/' # 要推送的目录,路径相对于代码仓库的根目录
REMOTE_HOST: ${{ env.SERVER_HOST }}
REMOTE_USER: ${{ env.USER_NAME }}
TARGET: /var/www/html/www.smartmiao.com/smartmiao-demo/web # 服务器目标路径
EXCLUDE: '/node_modules, .gitignore, package.json, package-lock.json, README.md' # 排除文件,否则会被删除