前言

之前我写完博客后会通过webstorm把生成的静态文件上传到服务器,感觉比较麻烦,而且浪费时间. webstorm上传到服务器

工作流

在项目下创建.github文件,在文件下创建workflow文件夹,在文件夹下创建main.yml

secrets.USERNAME:用户名
secrets.FTP_SERVER:服务器IP
secrets.SSH_PRIVATE_KEY:SSH密钥

name: Deploy to Server

on:
push:
branches:
- main

jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest

steps:
- name: Checkout Code
uses: actions/checkout@v2

- name: Installation Node
uses: actions/setup-node@v1
with:
node-version: "16.x"

- name: Installation Hexo
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g

- name: Download Dependencies
run: |
npm install gulp-cli -g
npm install --save

- name: Generate File
run: |
hexo clean
hexo generate
hexo algolia
gulp

- name: Remove Old Files
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd 服务器存放路径
rm -rf *

- name: Push Search Engine
run: |
hexo deploy

- name: Upload Files
uses: easingthemes/ssh-deploy@v2
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-rltgoDzvO --delete"
EXCLUDE: ".well-known"
SOURCE: "./public/*"
REMOTE_HOST: ${{ secrets.FTP_SERVER }}
REMOTE_USER: ${{ secrets.USERNAME }}
TARGET: 服务器存放的路径