data: 数据清理 #26
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 前端、后端 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' # 排除文件,否则会被删除 | |