使用HEXO和Github搭建博客有感

总算用HEXO和Github成功的构建了博客,并用Travis CI实现了自动部署。

参考文章:

重新整理下流程:

生成HEXO项目

1
2
3
4
5
npm install hexo-cli -g 
hexo init [project_name]
cd [project_name]
npm install
hexo server

配置主题

参考NexT.Mist

部署到GitHub

建立Github项目

项目名称应为[user_name.github.io]

安装hexo-deployer-git

1
npm install hexo-deployer-git --save

配置_config.yml

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://github.com/[user_name]/[user_name].github.io.git
branch: master

利用Travis CI实现自动化部署

开启Travis CI,并将对应的项目状态开启

生成公钥

1
ssh-keygen -t rsa -C "youremail@example.com" # 生成id_rsa.pub和id_rsa

id_rsa.pub添加到GitHub项目的Deploy key中,并将Allow write access打开

加密私钥

1
2
3
4
mkdir .travis
gem install travis # 安装 cli
travis login --auto # 登录
travis encrypt-file id_rsa --add # id_rsa为刚生成的密钥文件,这会在当前目录生成加密后的私钥文件id_rsa.enc,同时会输入encrypted_key 和 encrypted_iv

添加ssh_config

1
2
3
4
5
Host github.com
User git
StrictHostKeyChecking no
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes

放在.travis目录中

配置_travis.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
# 声明语言和版本
language: node_js
node_js:
- "7"
# 指定分支
branches:
only:
- pages-origin
# 添加缓存
cache:
directories:
- node_modules

before_install:
# 解密私钥文件,并放到~/.ssh目录中
- openssl aes-256-cbc -K $encrypted_xxxxxx_key -iv $encrypted_xxxx2548ca7ff03a_iv
-in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
# 改变文件权限
- chmod 600 ~/.ssh/id_rsa
# 配置ssh
- eval $(ssh-agent)
- ssh-add ~/.ssh/id_rsa
- cp .travis/ssh_config ~/.ssh/config
# 配置git账号
- git config --global user.name xxx
- git config --global user.email xxxx

install:
- npm install

# 生成博客
script:
- ./node_modules/hexo/bin/hexo clean
- ./node_modules/hexo/bin/hexo g
# 部署
after_success:
- ./node_modules/hexo/bin/hexo d