0%

按照之前的教程,虽然 github page 上顺利发布了,但是 blog 的 source code 并没有一起同步过去,还在本地。Hexo 工具只是把你翻译之后的 web 信息同步过去了。search 了一下,想要同步 source 有大概三种路子:

  1. hexo 插件: hexo-git-backup
  2. 在原来的 blog repo 里面新建分支存储
  3. 官方方法,集成 Travis CI,每次 push 自动帮你部署

本文只描述怎么集成 Travis CI, 其他的方案有机会再补,网上教程很多,随便找找就有了。

采用 Travis CI 的方案之后,原来的 repo name 需要改变,不然 blog 访问不了, 针对这种情况,其实还有另一种解决方案,将 master 用来存放编译好的 blog, 源码用新的 branch 存放,和前面的那些原理都一样

Travis CI 集成

  1. 新建一个 repo, 这里我用 hexo 作为 repo name
  2. clone 到本地,将之前的 blog source copy 进去,添加 .gitignore 文件,把 public\ 添加进 list
  3. 注册 Travis 账号,用 github 授权就行,授权 repo, 添加 token. 官方文档都有链接,很方便
  4. update _config.yml 里的 url 和 root 值
  5. 添加 .travis.yml 做 CI 集成管理
  6. commit + push 这些改动,Travis 自动 build 就会被触发了
  7. build 完成后,repo 会有一个新的 branch 叫 gh-pages. 访问 https://jack-zheng.github.io/hexo 查看改动结果

国内,第一次访问会比较慢,cache 了文件之后后面访问会快一点

1
2
3
# _config.yml setting
url: https://jack-zheng.github.io/hexo
root: /hexo/
1
2
3
4
5
6
7
8
9
#.gitignore
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
.vscode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# .travis.yml
sudo: false
language: node_js
node_js:
- 10 # use nodejs v10 LTS
cache: npm
branches:
only:
- master # build master branch only
script:
- hexo generate # generate static files
deploy:
provider: pages
skip-cleanup: true
github-token: $GH_TOKEN
keep-history: true
on:
branch: master
local-dir: public

Issue Trace

在按照官方教程走完流程后,repo 的 setting page 会有如下 Warning, 删了 themes/landscape/README.md 这个文件再 build 一下就行了

1
Your site is having problems building: The tag fancybox on line 77 in themes/landscape/README.md is not a recognized Liquid tag. For more information, see https://help.github.com/en/github/working-with-github-pages/troubleshooting-jekyll-build-errors-for-github-pages-sites#unknown-tag-error.

Reference

Travis CI 集成 - 官方

Hexo setup 笔记。网上有好多 setup 的教程,这里就不赘述了。记录一下我 setup 时候用到的命令,作为备忘。

这里使用的 Next 版本 V7.5.0

Commands

  1. 安装 node/npm, brew install node, type node -v, npm -v to check if install successfully.
  2. run command: npm install -g hexo-cli, 安装 hexo 工具, 安装完成,type hexo to check
  3. Setup 博客基础架构 hexo init <folder>, cd <folder>, run command: hexo server 就可以得到一个本地可访问的 hello world 博客模版
  4. hexo new post_name, 在 source 文件夹下面会创建一个新的 post_name.md 文件作为新博客的载体
  5. 为你的博客新建一个git repo, repo name 必须是你的Git用户名.github.io, 如果已经创建了, rename 一下
  6. 编辑 <folder>_config.yml 关联 git repo
  7. npm install hexo-deployer-git --save 安装 git 集成工具
  8. hexo g 生成工程目录及相关文件
  9. hexo s 启动本地 server 验证
  10. hexo d 部署发布到 github, 等一两分钟访问 https://<你的Git用户名>.github.io 就可以看到你的作品了 (^з^)-☆
1
2
3
4
5
6
7
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://github.com/<username>/<username>.github.io.git
# SSH 格式的也OK, 简单理解就是去 github repo 页面, 把你的 repo 地址复制一下
branch: master

异地环境 setup

Win10

在其他机子上面重新 setup 环境只需要安装 git 和 nodejs, 把项目 clone 到本地之后 cd 到博客根目录下运行命令

1
npm install -g hexo-cli

就行了,在 Windows 下使用 VS Code 的默认命令行时还遇到另外一个问题,hexo 命令不能执行,抛出 Exception:

1
2
3
4
5
6
7
8
PS C:\Users\lanmo\gitStore\hexo> hexo
hexo : 无法加载文件 C:\Users\lanmo\AppData\Roaming\npm\hexo.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft
.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ hexo
+ ~~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

这是由于 powershell 的默认脚本执行策略把这个 command 阻塞了,可以执行

1
2
# 允许本地脚本执行
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

来开放权限,其他可用命令还有

1
2
3
4
5
# 查看可用策略
Get-ExecutionPolicy -List

# 查看当前策略
Get-ExecutionPolicy

更多可以参考官方文档 About Execution Policies

Win10 WSL

WSL 默认已经安装了 git, 所以只需要额外安装 nodejs 就行了。

1
2
3
4
5
6
sudo apt-get install nodejs

# 如果速度慢可以使用 taobao 源加速
npm --registry https://registry.npm.taobao.org install nodejs
# 配置永久源
npm config set registry https://registry.npm.taobao.org

安装完后运行 node -vnpm -v 查看是否安装成功。我本地安装完后,node 可以正常调用,但是 npm 不行,报错

1
2
3
4
5
6
7
8
jack@DESKTOP-9TGTFK1:~$ npm -v
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")

# 运行 which npm 查看路径
jack@DESKTOP-9TGTFK1:~$ which npm
/usr/bin/npm

是应为路径有问题,修改 WSL 下的 ~/.profile 文件,添加 npm 执行路径

1
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"

然后 source ~/.profile 在运行 npm -v, 成功。

该问题可以参考 VSCode Git Issue

Reference