步骤一:配置服务器登录密钥
目的:让Github Action可以使用配置的密钥登录服务器,执行构建和部署等操作。
建立SSH密钥对
授信
ssh-copy-id -i $SSH_PUBLIC/xxx.pub user@address
步骤二:创建secret
目的:将服务器连接信息和部署参数加密放入secret
中,保证配置信息的的安全
步骤
- 第一步:
- 第二步:
需要创建的secret
SSH_DEPLOY_KEY
:服务器链接密钥SSH_PORT
:ssh服务端口SSH_HOST
:服务器IP或者域名SSH_USERNAME
:登录服务器的用户名SERVER_DESTINATION
:同步的目录
步骤三: 配置Github Action
的Workflow
Workflow
配置的主要步骤
- 拉取代码
- 安装Hugo
- 使用Hugo命令行编译Hugo静态文件
- 将静态文件同步到服务器
- 部署tech服务
具体Workflow
配置
name: Deploy tech site files
on:
push:
branches:
- main
paths: #只对特定目录下的文件或者特定文件的变更触发workflow
- 'content/**' # content/** 监听content目录下的文件的变更
- 'archetypes/**'
- 'static/**'
- 'config.toml'
jobs:
deploy:
runs-on: ubuntu-latest # 使用ubuntu系统镜像运行自动化脚本
steps: # 自动化步骤
- name: Checkout # 第一步,下载代码仓库
uses: actions/checkout@v2
with:
ssh-key: ${{ secrets.GIT_SSH_KEY }}
submodules: recursive # Fetch Hugo themes (true OR recursive)
#fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
- name: Setup Hugo #安装Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.83.1'
extended: true
- name: Build static file
run: hugo -D # 编译hugo静态文件
- name: Sync static file to Server # 第二步,rsync同步文件到服务器
uses: AEnterprise/rsync-deploy@v1.0 # 同步文件
env:
DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} # 引用配置,服务器登录密钥
ARGS: "-e -c -r --delete"
SERVER_PORT: "${{ secrets.SSH_PORT }}" # 引用配置,SSH端口
FOLDER: public # 推送的目录
SERVER_IP: ${{ secrets.SSH_HOST }} # 引用配置,服务器的host名(IP或者域名domain.com)
USERNAME: ${{ secrets.SSH_USERNAME }} # 引用配置,服务器登录名
SERVER_DESTINATION: ${{ secrets.SERVER_DESTINATION }} # 部署到目标文件夹
- name: Deploy server # 第三步,重启服务
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }} # # 引用配置,服务器的host名(IP或者域名domain.com)
username: ${{ secrets.SSH_USERNAME }} # 引用配置,服务器登录名
key: ${{ secrets.SSH_DEPLOY_KEY }} # 引用配置,服务器登录密钥
# 部署脚本
script: |
cd ${{ secrets.SERVER_DESTINATION }}
docker stop tech
docker rm tech
docker run \
--name tech \
-p 80:80 \
-p 443:443 \
-d \
-v ${PWD}/Caddyfile:/etc/caddy/Caddyfile \
-v ${PWD}/public:/var/www \
-v ${PWD}/config:/config \
-v ${PWD}/data:/data \
-e TZ=Asia/Shanghai \
caddy:2.4.1-alpine