背景
gitbook既是一个网站,专业提供写书的地方服务。也是一个基于node平台的应用,可以生产静blog。然而它作为网站,提供了在线访问的服务,这是我用gitbook生成的静态blog:http://www.css3.io
做一个这样的blog很容易,类似于github创建一个源,blog就自己生成了,自定义域名也支持。如果觉得gitbook不靠谱,还可以将源码托管到github,然后通过github的webhooks关联到gitbook,去gitbook设置项看一下就懂怎么操作了,都不用文档。最后直接提交代码到github就会触发webhooks,gitbook就会生成静态blog了,相当简单。
但是有个问题,gitbook托管的静态blog访问速度没有github的GitHub Pages快,有时候10s左右都没响应,确实蛋疼。于是乎不用gitbook提供的在线访问服务了,直接用它生成静态blog,然后用github pages来支持在线访问,但又想跟使用gitbook一样方便。这个时候travis派上用场了。
步骤
1.注册一个travis号,加入需要持续集成的github源。
2.去github生成tokens
以便travis脚本通过调用github api时不用密码上传代码到github仓库。github设置地址 https://github.com/settings/tokens
3.将生成的token增加到travis环境变量中
在travis对应的源setting里增加一个Environment Variables,key为"GH_TOKEN",值为token字符串
4.将以下文件增加到github源里
1.文件:deploy.sh
我这里是将源码托管到我的 https://github.com/8427003/book
将生成的静态文件托管到我的组织项目 https://github.com/lijun401338/lijun401338.github.io (因为我发现组织GitHub Pages比Project Pages方式静态blog访问速度更快),当然这里也可以以Project Pages方式托管到当前项目分支gh-pages(如果没有必须先手动创建)。deploy脚本需要根据自己的情况配置。
更多 User, Organization, and Project Pages区别
#!/bin/bash
set -o errexit -o nounset
if [ "$TRAVIS_BRANCH" != "master" ]
then
echo "This commit was made against the $TRAVIS_BRANCH and not the master! No deploy!"
exit 0
fi
rev=$(git rev-parse --short HEAD)
cd _book
git initgit config user.name "8427003"
git config user.email "8427003@qq.com"
git remote add upstream "https://$GH_TOKEN@github.com/lijun401338/lijun401338.github.io.git"
git fetch upstream
git reset upstream/master
echo "www.css3.io" > CNAME
git add -A
git commit -m "rebuild pages at ${rev}"
git push -q upstream HEAD:master
2.文件:.travis.yml
language: "node_js"
node_js:
- "node"
install:
- "npm install gitbook -g"
- "npm install -g gitbook-cli"
script:
- "gitbook build"
after_success:
- "sh deploy.sh"
参考:
https://github.com/steveklabnik/automatically_update_github_pages_with_travis_example