利用Daocloud持续部署Hexo

Hexo安装

npm install -g hexo //安装完成后,进入到Hexo文件夹目录, 即会自动在目标文件夹建立网站所需要的所有文件。
hexo init //初始化
npm install //安装依赖包
hexo g //生成静态的网页
hexo s //开启本地服务,可以在本地预览
Hexo d //上传生产的文件到配置的服务仓库(见_config.yml)

官方文档:https://hexo.io/docs/

同时部署到Coding和Github平台

Coding Pages

Coding Pages 是一个免费的静态网页托管和演示服务。

在Coding创建一个和你用户相同项目用来部署你的Hexo 。
同时在代码选项开启的你的 pages服务。分支填写master(这里的分支要和部署时的对应)。
用户 Pages 可以通过{user_name}.coding.me 形式的 URL 直接访问。

官方文档 https://coding.net/help/doc/pages/index.html

Github pages

同样Gtihub也提供了一个 Pages免费服务。 同样你在Github创建一个名为username.github.io的仓库 。用来部署你的Hexo代码。

官方文档 https://pages.github.com/

_config.yml配置

同时部署到2个平台,就要修改博客根目录下面的_config.yml文件中的deploy如下

deploy:
  type: git
  repo:
    github: <repository url>,[branch]
    coding: <repository url>,[branch]

Daocloud 自动构建

项目主页:http://daocloud.io

注册账户,选择代码构建,创建应用。选择同步代码来源,我用的是coding平台。

在Blog项目的跟目录添加

Dockerfile
    FROM node:slim
    MAINTAINER Janrone <[email protected]>
    # instal basic tool 
    RUN apt-get update && apt-get install -y git ssh-client ca-certificates --no-install-recommends && rm -r /var/lib/apt/lists/*
    # set time zone
    RUN echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
    RUN npm install
    # install hexo
    RUN npm install hexo-cli -g
    # install hexo server
    RUN npm install hexo-server
    # set base dir
    #RUN mkdir /hexo
    # set home dir
    #WORKDIR /hexo

    EXPOSE 4000
    #CMD ["/bin/bash"]
daocloud.yml 注意yml文件的格。
image: daocloud.io/janrone/blog:latest #daocloud/ci-node:0.12  
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 "janrone"
    - git config --global user.email [email protected]
    # 配置git
script:  
    - hexo clean
    - hexo g
    - hexo g
    # 生成html
    - hexo d
    # 发布html代码,根据你hexo的设置可以发布到多个平台
    - rm -rf ~/.ssh/
    # 删除私钥文件夹

大概说一下Dockefile文件和daocloud.yml文件。

Dockerfile是构建docker的配置文件,我选的node环境的基础镜像,并且在构建docker镜像的时候配置好Hexo环境。 所以在之后的持续集成的配置用可以省去hexo环境配置,缩短自动构建的时间。

daocloud.yml是代码持续集成的配置文件,直接使用之前我构建的docker镜像,daocloud.io/janrone/blog:latest ,这样每次集成的时候速度会快很多。 之后是配置ssh,我把私钥放到了项目的.daocloud文件下,并添加了ssh _config,

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

还有我创建Git SSH Key的时候没有没输入密码,这样解决了自动构建的时候提示要输入密码的问题。公钥记得加到coding 和 github 的deploye key里。

根据SSH私钥(private key)计算SSH公钥(public key)

ssh-keygen -y -f ./id_rsa

不然肯定是发布不成功的。

接下来就是正常的 hexo g ,(生成静态文件) ,hexo d (发布静态文件)。我用hexo clean ,是清空了之前生成文件,防止再次生产部分文件是以前的问题。

域名绑定

国内的走coding,海外的走github,只要配置2个CNAME就行。域名解析如下: 注意后边的的小点

ps:不要忘了在项目的跟目录创建一个名字为CNAME的文件,里边就写一行你的域名即可。

不过要放在你的source目录,不然hexo g 重新生成静态文件的时候CNAME会消失。

绑定生效之后可以从这查询下域名解析的结果
http://ping.chinaz.com/

Hexo系列文章,写的很不错,大家可以按着一步一步来。

http://tengj.top/categories/hexo/

参考:hexo干货系列:(四)将hexo博客同时托管到github和coding[](http://tengj.top/2016/03/06/hexo%E5%B9%B2%E8%B4%A7%E7%B3%BB%E5%88%97%EF%BC%9A%EF%BC%88%E5%9B%9B%EF%BC%89%E5%B0%86hexo%E5%8D%9A%E5%AE%A2%E5%90%8C%E6%97%B6%E6%89%98%E7%AE%A1%E5%88%B0github%E5%92%8Ccoding/)

利用coding.和daocloud打造全自动发布的hexo博客[](http://luody.info/post/2016/06/21/coding-daocloud-hexo)