flame

路漫漫其修远兮 吾将上下而求索

0%

hexo博客搭建

hexo + next 博客搭建,github actions 持续集成。

依赖版本

  • hexo 6.2.0
  • hexo-theme-next 7.8.0
  • node 14.x
  • git 2.36.1
  • hexo-deployer-git 2.0.0

hexo

参照官网 hexo

theme-next

hexo根目录下

1
git clone https://github.com/theme-next themes/next

删除themes主题下的 .git

1
rm -rf theme-next/.git

部署到github

安装 hexo-deployer-git

1
$ npm install hexo-deployer-git -s 

配置项目根目录_config.yml

1
2
3
4
deploy:
type: 'git'
repo: 'XXXX.git' # 静态仓库
branch: 'main' # 源码仓库的main分支用于部署

本地部署 或 github actions自动部署

本地部署
1
$ hexo generate && hexo deploy
github actions 部署 (本地push到blog-source时,github pages自动更新)
  • 新建两个仓库,一个为 blog-source (源码仓库 public); 一个为blog(静态仓库 private);
  • 生成公钥和私钥,在path路径下,公钥私钥分别在文件 id_rsa.pub 和 id_rsa
    1
    $ ssh-keygen -t rsa -f "path/id_rsa"
  • 进入 github 个人账户
    • settings → SSH and GPG keys → New SSH key
    • Title设置为 ACTION_DEPLOY_KEY,key为公钥
  • 进入blog 仓库
    • Settings → pages → 开启GitHub Pages
  • 进入blog-source 仓库
    • Settings → Secrets → Actions → New secret
    • Name为 ACTION_DEPLOY_KEY,value为私钥
    • Actions → new workflow → set up a workflow yourself

workflow mian.yml 文件配置如下

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
42
43
44
name: Deploy Blog

on: #main分支有新的push时执行
push:
branches:
- 'main'

jobs:
build: # 一项叫做build的任务

runs-on: ubuntu-latest # 在最新版的Ubuntu系统下运行

steps:
- uses: actions/checkout@v3 # 将仓库内main分支的内容下载到工作目录 配置脚本来自 https://github.com/actions/checkout
with:
ref: main

- name: Use Node.js 14.x # 配置Node环境
uses: actions/setup-node@v1 # 配置脚本来自 https://github.com/actions/setup-node
with:
node-version: "14.x"

- name: Setup Hexo env
env:
ACTION_DEPLOY_KEY: ${{ secrets.ACTION_DEPLOY_KEY }} # ACTION_DEPLOY_KEY 私有仓库私钥的key
run: |
# set up private key for deploy
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" | tr -d '\r' > ~/.ssh/id_rsa # 配置秘钥
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
# ssh-keyscan your-server-ip.com >> ~/.ssh/known_hosts # 如果需要 sftp,则还需要注释掉一行
# set git infomation
git config --global init.defaultBranch main
git config --global user.name '' # 自己的名字
git config --global user.email '' # 自己的邮箱
# install dependencies
npm i -g hexo-cli # 安装hexo
npm i

- name: Deploy
run: |
# publish
hexo generate && hexo deploy # 执行部署程序