最简单的做法就是为每个镜像站额外维护一个配置文件
但这样做的缺点很明显, 一旦有更改, 就必须手动同步, 像git, svn这些版本控制系统都难以自动完成"对于部分项保留当前分支, 对于其它项合并其它分支"的工作我知道有git cherry-pick
, 但我不会
好吧还是给一个思路, 从主站分支创建镜像站分支, 将需要保留且长期的项修改并提交到当前分支
每次主站commit, 自动记录commit编号, cherry-pick到分支站中
差不多就这样
接下来讲正解
首先要清楚镜像站之间的配置不同在哪里
大部分时候都是这样
1 2 3 4 5 6 7 8 9 10 11
|
url:
deploy: type: git repo: branch:
|
那么我们很明显需要一个东西来自动修改这些项
nodejs的解决方案是js-yaml
当然你也可以拿C/C++, shell或者其它的东西写, 本文就只讲nodejs解决方案
1 2 3 4 5 6 7 8 9 10 11 12 13
| const fs = require('fs'); const yaml = require('js-yaml');
try { let hexo_config = yaml.load(fs.readFileSync('./_config.yml', 'utf8')); fs.writeFileSync('./hexo-config.yml', yaml.dump(hexo_config), 'utf8'); } catch (e) { console.log(e); }
|
接下来讲一下GitHub Actions的配置要点
1 2 3 4 5 6
| on: watch: types: [started]
|
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 36 37 38 39 40 41
| - name: Checkout Repository master branch uses: actions/checkout@master with: ref:
- name: Setup Node.js 16.x uses: actions/setup-node@master with: node-version: "16.x"
- name: Setup Hexo Dependencies run: | npm install hexo-cli -g npm install
- name: Setup Deploy Key run: | mkdir ~/.ssh/ cp ./.ssh/id_rsa ~/.ssh/id_rsa # 复制ssh密钥, 可以选择存储在环境变量中 cp ./.ssh/id_rsa.pub ~/.ssh/id_rsa.pub cp ./.ssh/known_hosts ~/.ssh/known_hosts sudo chmod 0600 ~/.ssh/id_rsa # 权限不这样设会报错 sudo chmod 0600 ~/.ssh/id_rsa.pub sudo chmod 0600 ~/.ssh/known_hosts
- name: Setup Git Information run: | git config --global user.name '' # 登录用户名 git config --global user.email '' # 登录邮箱
- name: Generate For FT run: | node ft-pages.js cp "./hexo-config.yml" ./_config.yml # 如果修改了主题配置文件也要一起复制
- name: Deploy Hexo For FT run: | hexo clean hexo generate hexo deploy
|
晚安