使用Daocloud持续构建Hexo

本文是针对《利用Coding和Daocloud打造全自动发布的hexo博客》的一些解释及补充,感谢原作者。

此方法的优点就是本地只需要git,无需nodejs环境。将源文件部署于Coding,通过Daocloud持续构建,然后发布到Github。

在Coding仓库根目录创建daocloud.yml,文件内容如下:

image: library/node:4.4.0-onbuild
before_script:
    - npm config set user 0
    - npm config set unsafe-perm true
    # 避免出现权限问题
    - npm install hexo-cli -g
    # --registry=http://registry.npm.taobao.org 使用淘宝的npm源安装 更快捷
    - npm install
    # - git clone https://github.com/luodaoyi/hexo-theme-next.git themes/next
    # 克隆主题到主题目录 这里的主题Git地址和目录替换成你自己的主题地址和目录
    - mkdir ~/.ssh
    # 新建私钥文件夹
    - mv .daocloud/id_rsa ~/.ssh/id_rsa
    # 移动私钥到私钥文件夹
    - mv .daocloud/ssh_config ~/.ssh/config
    # 移动ssh配置文件
    - chmod 600 ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/config
    # 赋予可读权限
    - eval $(ssh-agent)
    # 启用ssh-agent进程
    - ssh-add ~/.ssh/id_rsa
    # 添加密钥
    - rm -rf .daocloud
    # 删除项目里面的私钥存放目录
    - git config --global user.name "heartnn"
    - git config --global user.email bevista@gmail.com
    # 配置git
script:
    - hexo g
    # 生成html
    - hexo d
    # 发布html代码,根据你hexo的设置可以发布到多个平台
    - rm -rf ~/.ssh/
    # 删除私钥文件夹

创建一组新的密钥,公钥上传到Github的一个仓库中,并在Hexo中设置Deploy到这个git仓库。私钥放在.daocloud目录中,并重命名为id_rsa

.daocloud中还应该有ssh的配置文件,命名为ssh_config,其中至少应该有以下两行:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

这样部署到Github的时候可以禁用SSH远程主机的公钥检查,不会出现错误。

这样都完成后git push到Coding。

在Daocloud中新建一个代码构建,绑定自己的Coding,并选择Hexo源代码的仓库。

可能会提示Dockerfile不存在,但是没有关系,执行环境Github的话就选国外,如果是Coding什么的就选北京(并将daocloud.yml中npm使用淘宝源)。

此后每次git push到Coding后,会自动触发构建,然后Deploy到Github。原作者还提供了构建Docker,避免Github的缓存问题。