记录本博客目前的编写, 数据同步, 部署方案.

Markdown文章编写使用Obsidian来完成, 多端数据同步使用remotely-sync来同步到Onedrive上. 使用这套方案可以有很好的编辑体验以及可以做到多个终端数据同步.

由于我有一台Nas, 在Nas上启动了Cloud-Sync服务,将Onedrive中的数据同步到Nas中存储(目前没有内网穿透, 如果可以直接访问Nas,可以使用WebDav直接同步到Nas上).

在Nas中会每天定时调用脚本, 脚本的会检查文章状态, 文件夹是一个Git仓库, 如果检测到文件变动, 会自动提交到Github.

在Github中, 使用Action来检测变动, 来自动完成文章部署.

以下是如何配置Github Action.

前提

  1. 电脑生成私钥公钥,公钥已经设置到Github上。
  2. GitHub上有user-name.github.io仓库
  3. 设置私钥到user-name.github.io仓库下,打开该仓库,找到setting/secrets/New repository secret将本地~/.ssh/id_ras文件复制进来,名称可以随便取,不过在下面使用的时候需要对应起来,比如我用了ACTION_DEPLOY_KEY这个名称。需要勾选 Allow write access

开始操作

  1. 下载user-name.github.io
  2. 新建Hexo分支
  3. Hexo分支下的内容删除,将Hexo的内容复制到该目录下。
  4. 编写Hexo分支下.github/workflows/main.yaml文件,需要自己新建。内容为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
name: Deploy Blog
# 监听hexo分支,当有push动作时触发这个Action
on:
push:
branches:
- hexo
jobs:
build:
runs-on: ubuntu-latest # 选择基础镜像

steps: # 需要多步完成
- name: Checkout source # 下载代码
uses: actions/checkout@v1
with:
ref: hexo
- name: Use Node.js ${{ matrix.node_version }} # Node js环境
uses: actions/setup-node@v1
with:
version: ${{ matrix.node_version }}
- name: Setup hexo # 安装设置Hexo
env:
ACTION_DEPLOY_KEY: ${{ secrets.ACTION_DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.email "liunaijie1996@163.com"
git config --global user.name "Jarvis"
npm install hexo-cli -g
npm install
- name: Hexo deploy # 部署
run: |
hexo clean
hexo g -d

最终效果

user-name.github.io这个仓库中,master分支为Hexo生成的Html页面内容,hexo分支为原始文件,包括md文件,hexo的配置信息等。当我们编写完文章中,只要推送到了远端仓库,就可以帮我们自动完成发布,如果遇到异常还会给你发送邮件提醒。

注意事项:

在hexo的配置文件中,部署的GitHub地址需要使用git不能使用http