原文地址
仓库: 就是项目文件存放的位置,如果只完成第一步,不需要私有仓库,因为现在私有仓库免费了,所以考虑用私有仓库作为你的博客内容文件,用来存一些你觉着可能会用到但是又不希望别人看到的文件.仓库的名字可以随便取,但有一个名字是有特殊含义的,就是 UserName.github.io
, 这个往往用来作为博客域名,并且你可以为其申请免费 https
CNAME: 当你不喜欢上面那个域名,就可以通过在根目录下添加该文件来作 CNAME
转发
自动化部署: 就是你觉着每次都不用改变的重复劳动, 写成脚本即可,比如博客部署流程
博客部署流程: 本地 source
目录决定内容, _config.yml
决定网站基本配置(如名称, 部署方式, 默认配置等), 每次 hexo g
将会根据 source
和 _config.yml
generate 对应的网页文件, 然后 hexo d
将会根据 config_yml
的 deploy 选项进行 push
add, commit, push: git基本操作,不作解释
ACCESS_TOKEN: 上述流程明显需要脚本有操作你仓库的权限,这个权限就通过 token 的形式来授予.
Travis CI: 尽量使用该网站, 而不是 travis-ci.org, 后者不知道我用的时候为啥部署不了,该网站就是提供免费帮你跑部署脚本用的
首先具备一个 node
环境和 git
环境,考虑到速度建议 npm
改成 cnpm
,而 git
可以通过改 .gitconfig
来走代理。
远程需要
source
仓库用来存放你的博客内容文件,重点注意必须有 .travis.yml
, _config.yml
, package.json
配置文件和 source
文件夹, 如果考虑精简该仓库可以通过添加 .gitignore
的方式, 以下仅供参考.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
.vscode/
UserName.github.io
来作为你的站点文件, 以及配置一个ACCESS_TOKEN提供给 Travis CI 使用. 没啥重点文件, 内容完全交给 deploy
来决定, 不要忘了在仓库的 setting
里开启 https
, 而ACCESS_TOKEN 是在全局 setting
里的搭博客分两步,第一步是为了方便,本地初始化一次『可以考虑算是本地备个份』,第二部是搭建后云端同步和常用操作。
本地初始化安装hexo脚手架,意思就是说安装个工具用来初始化你的博客(比如文件夹创建,配置啥的)
cnpm install hexo-cli -g
# 利用 cli 创建hexo项目
hexo init blogName
cd blogName
# 安装 deploy 插件
cnpm install hexo-deployer-git --save
初始化之后重点说下关注点:
jch
,这个目录就是用来存放转化后的目录。前面根目录下的config.yml就是用来配置部署博客到哪个服务器的。打开后将deploy项进行更改就好。
deploy:
type: git
repo: >
branch: [branch]
博客这样就搭建好了,以后你就可以
hexo g
生成 jch
,hexo d
部署(就是将生成好的网页传到服务器端提供访问)上面的步骤已经可以了,但是有两个贼烦的点:
我每次写完博客都要 hexo g & d
一下,麻烦
自己的电脑gg了就凉了,不能随时写作
所以有了第二步操作: TravisCI 自动化部署,首先去用户Setting-DeveloperSetting当中申请一个有repo权限的Token,
该Token 将作为环境变量 ACCESS_TOKEN
# 指定语言环境
language: node_js
# 指定需要sudo权限
sudo: required
# 指定node_js版本
node_js:
- stable
# 指定缓存模块,可选。缓存可加快编译速度。
cache:
directories:
- node_modules
# 指定博客源码分支,因人而异。hexo博客源码托管在独立repo则不用设置此项
branches:
only:
- source
before_install:
- npm install -g cnpm --registry=https://registry.npm.taobao.org
- cnpm install -g hexo-cli
# Start: Build Lifecycle
install:
- cnpm install
- cnpm install hexo-deployer-git --save
# 执行清缓存,生成网页操作
script:
- hexo clean
- hexo generate
# 设置git提交名,邮箱;替换真实token到_config.yml文件,最后depoy部署
after_script:
- git config user.name "ReZeroS"
- git config user.email "[email protected]"
# 替换同目录下的_config.yml文件中gh_token字符串为travis后台刚才配置的变量,注意此处sed命令用了双引号。单引号无效!
- sed -i "s/gh_token/${ACCESS_TOKEN}/g" ./_config.yml
- hexo deploy
# End: Build LifeCycle
上面的文件只有一个地方需要注意: sed -i "s/gh_token/${ACCESS_TOKEN}/g"
, 这句话的含义很明显就是正则替换,也就是为更改 _config.yml
的 deploy
选项做准备.
因为推出了github actions, 这里加一份github actions 的版本
on:
- push
jobs:
build:
runs-on: ubuntu-18.04
steps:
- name: Checkout master branch
uses: actions/checkout@master
with:
fetch-depth: 1
- name: Setup nodejs
uses: dcodeIO/setup-node-nvm@master
with:
node-version: node
node-mirror: https://nodejs.org/download/v8-canary/
- name: Dependency install
run: |
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g hexo-cli
cnpm install
cnpm install
- name: Clean And Regenerate
run: |
./node_modules/.bin/hexo clean
./node_modules/.bin/hexo generate
- name: Deploy
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
run: |
git config --global user.name "ReZeroS"
git config --global user.email "[email protected]"
sed -i "s/gh_token/${ACCESS_TOKEN}/g" ./_config.yml
./node_modules/.bin/hexo deploy
改完后 push
到你的私有仓库就可以了,这样每次你都可以直接 浏览器端
打开你的私有仓库,然后直接新建md文件, 然后你的 commit
记录就会被 TravisCI 监测到, 会自动触发 hook
, 因而就 push
到你的博客了.