hexo是一款博客工具,可以将markdown文件自动转换成html静态页面,并且有丰富的主题可选,是一款很优秀的博客工具(关于hexo如何搭建,自行百度,很简单)。但是hexo有一个很大的不足,就是本地编辑的文件需要手动hexo g
编译然后hexo deploy
上传。
因为本身我有一台自己的腾讯云服务器,可以将其发布到上面。但是又不想那么麻烦,每次本地写完文章后,还要经过好多步骤才能发到网上。
于是就有了一个想法:能不能本地写完文章后自动发布到网上,实现完全自动化。
下面就是操作流程 ↓ ↓ ↓
自动化架构
首先要实现这个自动化流程需要几个工具GoodSync
、jenkins
、nginx
下面是架构图
实现步骤
1、服务器搭建hexo
在服务器上搭建一套hexo,如果不好调试可以先在本地调试美化好后再到服务器替换掉该替换的文件
2、编写文档
在/source/_posts目录下新建一个md文档
hexo文档都有一个固定的头(Front-matter),这样才能检测转换,如
---
title: 2021-10-31 努力,别停下来
date: 2021-10-31
cover: https://gitee.com/BestErwin/img/raw/master/202111091527046.png
---
当然不同主题的Front-matter是不尽相同的,详细要看各自的主题文档
3、配置goodSync同步
写好文件之后需要上传到服务器,当然不能手动,这个时候就需要用到goodsync了。goodsync会监听指定文件夹的文件变动,自动同步到服务器,只需要简单配置一下就可以实现
4、搭建nginx
服务需要被访问到,当然要搭建服务http服务,这里使用docker nginx搭建http服务,当然也可以用普通的nginx搭
服务器安装docker,运行
docker run --name hexo-nginx -p 9900:80 -v /home/hexo/public:/usr/share/nginx/html:ro -d nginx
- 9900 是你最后浏览器要访问的端口,可以自行更换
- /home/hexo/public:是hexo编译后的public文件夹
5、jenkins服务自动化构建
ps:jenkins如何搭建自行百度了哈,实在是懒得写
jenkins创建一个普通项目
生成API token
下载远程构建插件: Build Authorization Token Root
编写构建脚本
6、文件变动监控脚本
服务器编写文件变动监控脚本,当监控到hexo文件夹变动的时候,自动调jenkins构建链接进行构建
服务器下载:inotify-tools
安装
tar zxvf inotify-tools-XXX.tar.gz
cd inotify-tools-XXX
./configure
make
make install
编写脚本
#!/bin/bash
export CNROMS_SRC=/home/hexo/_gsdata_/_saved_ # 需要监控的路径
inotifywait --exclude '\.(part|swp)' -r -mq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f %e' -e modify,move_self,create,delete,move,close_write $CNROMS_SRC |
while read event;
do
curl 'http://10.168.2.238:8888/buildByToken/build?job=hexo&token=11c1443bfaa6XXXXXX26ad426a5a9d6' && echo '执行成功' || echo '失败' #jenkins远程构建链接
done
启动脚本
sh inotifywait.sh >/dev/null &
到这里所有设置都完成了,在本地_posts
文件夹新建一个md文件,编写完成后保存,几秒钟后goodsync自动上传到服务器相应位置,然后监控脚本检测到文件变动,调用jenkins构建链接,自动构建hexo文件并发布到nginx服务。实现本地编写自动发布。
虽然有些繁琐,但是却是目前想到的最好的方法。