使用github actions构建部署博客
博客之前使用markdown写完后,本地写了个php脚步读取md文件,push到WordPress接口发布,不太优雅。主要是最近感觉小屏幕风格样式不太好看,换了个大屏自适应主题。
所以博客做了一些调整:
- 博客改成基于hugo,markdown文件管理方便,只需负责渲染生成静态页面部署即可
- 之前博客markdown文件文章参数补全适配hugo模板重新推送渲染
- 新增github actions构建部署,提交代码触发hook直接构建、部署极其方便,尝试了一下github actions自动构建、发布
使用github actions构建部署博客
github actions构建部署博客流程:
- 提交代码触发hook
- 开启action job:
- 启动构建环境实例
- 拉取代码
- 编译、推送、部署
配置github actions流程:
- 项目根目录touch
.github/workflows/main.yml
- 编写流程配置
name: blog-build-deploy
on:
push:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
with:
submodules: true
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2.2.2
with:
hugo-version: '0.59.1'
extended: true
# 执行hugo命令编译生成出静态页面资源
- name: Build
run: hugo --minify
- name: Deploy
env:
# github 项目-> settings -> Secrets -> 添加`ACTIONS_DEPLOY_KEY`参数的ssh私钥
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
# 服务器ip
HOST: xxx.xxx.xxx.xxx
USER: developer
run: |
# 构建实例中创建ssh相关文件
SSH_PATH="$HOME/.ssh"
mkdir -p $SSH_PATH
touch "$SSH_PATH/known_hosts"
echo "$ACTIONS_DEPLOY_KEY" > "$SSH_PATH/id_rsa"
chmod 700 "$SSH_PATH"
chmod 600 "$SSH_PATH/known_hosts"
chmod 600 "$SSH_PATH/id_rsa"
eval $(ssh-agent)
ssh-add "$SSH_PATH/id_rsa"
ssh-keyscan -t rsa $HOST >> "$SSH_PATH/known_hosts"
# ssh -o StrictHostKeyChecking=no -i $SSH_PATH/id_rsa -A -tt $USER@$HOST ls
# 打包scp到远端、并解压拷贝的目录路径下,这里相对简单可以自行再优化调整
tar -zcvf qipajun.com.tar public
scp -i $SSH_PATH/id_rsa -r qipajun.com.tar $USER@$HOST:/data/www/
ssh -o StrictHostKeyChecking=no -i $SSH_PATH/id_rsa $USER@$HOST "cd /data/www/ && tar -zxvf qipajun.com.tar && cp -r alex_blog alex_blog_bak && cp -r public/* alex_blog/ && rm -rf qipajun.com.tar && echo deploy success "
- 注意事项:
- 构建时会根据配置启动构建实例,这里是
runs-on: ubuntu-latest
- 需在github项目设置中添加Secrets配置,添加ssh私钥信息,部署时和自己的服务器通信使用
- 构建时会根据配置启动构建实例,这里是
测试部署
- 项目提交后就会自动触发构建
至此就配置完成了自动构建、部署。直接git push即可实现自动编译、部署了。
是否使用github actions需按个人情况有待慎重考虑
- 鉴于能够直接访问自己服务器,安全风险需考虑
- 另外github actions随机启动实例国内网络不稳定,测试到此为止