blog icon indicating copy to clipboard operation
blog copied to clipboard

使用 travis + gitbook + github pages 优雅地发布自己的书

Open riskers opened this issue 6 years ago • 12 comments

作者: 一波不是一波

转载请注明出处并保留原文链接( https://github.com/riskers/blog/issues/48 )和作者信息。

这篇文章教你怎么用 gitbook + travis 在 github pages 上优雅地发布书籍。

模板: https://github.com/riskers/gitbook-template/tree/master

效果: https://riskers.github.io/gitbook-template/

项目结构

git clone https://github.com/riskers/gitbook-template

cd gitbbok-template && rm -rf .git # 去掉模板中的历史记录

修改模板:

  • .travis.yml:
    • recipients: 修改成你的邮件
    • REF: 修改你项目的 github 地址
  • book.json: 修改 gitbook 相应配置,不是这里的重点,不多介绍。配置结果见 https://riskers.github.io/gitbook-template/ ,可根据喜好自己修改
  • chap01chap02 对应 SUMMARY.md 中的地址,就是这本书的内容了。

然后就是在 github 上新建一个项目,并且 push 上去,然后你能看见这样的项目结构:

github pages

如果没有注册过 github pages 服务,还要先注册(注册过程略)。

新建 gh-pages 分支:

git checkout -b gh-pages
git push origin gh-pages

在项目『Settings』-> 『GitHub Pages』开启 github pages 服务:

Travis

给这个项目开启 Travis 服务: https://github.com/marketplace/travis-ci

最后你应该能看到这个界面:

个人设置里申请 token 好让 Travis 有权限改这个项目:

然后选择 repo,点击生成按钮:

复制生成的 token,填写在 Travis 的设置-全局变量中,并且取名为 TOKEN:

试试效果

添加一行字:

然后 push 上去,可以看到 Travis CI 在跑了:

稍作等待,跑完之后,可以在 gh-pages 下看到 Travis CI 给我们推过来了 gitbook build 之后的内容:

可以在 github pages https://riskers.github.io/gitbook-template/chap01/1-1.html 上看到效果:

完成!

后续

这一阵在用 gitbook 写一本电子书,发现多于两本就要收费了,而老版本是不收费的,所以我最近一直在用老版本。但可能是维护少的原因,老版本的同步总是不及时,于是我放弃了 gitbook 服务。

本来想在本地 gitbook build,然后 push 到 pages 服务,但是这样太不优雅了,就琢磨了一下怎么用 CI 来做这件事,刚好之前在公司折腾过一阵 gitlab ci,很快就解决了。

至此,我做到了在 master 上写 md,然后 push 到 master, Travis 自动执行 gitbook build,并且把生成好的文档 push 到 gh-pages,好让 pages 服务生效。全自动的,是不是很优雅?哈哈。

顺便做个广告,这两本书都是按照这种方式写的:

  • rxjs-note: https://riskers.github.io/rxjs-note/
  • flutter-notebook: https://riskers.github.io/flutter-notebook/

向我捐助 | 关于我 | 工作机会


riskers avatar Jan 23 '19 17:01 riskers

很好奇 vscode 里面这个主题叫啥?

AngusFu avatar Jan 25 '19 08:01 AngusFu

@AngusFu Eva

riskers avatar Jan 25 '19 08:01 riskers

所以最终是实现了超过两本还是没实现?

Lotus-Blue avatar Mar 03 '20 10:03 Lotus-Blue

所以最终是实现了超过两本还是没实现?

实现了

riskers avatar Mar 03 '20 10:03 riskers

所以最终是实现了超过两本还是没实现?

实现了

感谢你的教程,还有为什么我没看到评论区的?我看到你给的图片中有呢

Lotus-Blue avatar Mar 06 '20 11:03 Lotus-Blue

image 开源项目,只有100次构建试用,还是得付费呀

tuihou123321 avatar Jun 02 '21 09:06 tuihou123321

感谢你的教程,还有为什么我没看到评论区的?我看到你给的图片中有呢

评论是 disqus 插件实现的,需要梯子。

riskers avatar Jun 09 '21 09:06 riskers

感谢你的教程,还有为什么我没看到评论区的?我看到你给的图片中有呢

评论是 disqus 插件实现的,需要梯子。

原来这样👌

Lotus-Blue avatar Jun 09 '21 09:06 Lotus-Blue

image 开源项目,只有100次构建试用,还是得付费呀

去年 travis 好像不再支持免费了,其实可以尝试下使用 Github Action,自从他出来后,travis 变得没什么意义了。

riskers avatar Jun 09 '21 09:06 riskers

Travis CI 执行报错Error:

info: install plugin "todo" (*) from NPM with version 0.1.3 
/home/travis/.gitbook/versions/3.2.3/node_modules/npm/node_modules/aproba/index.js:25
    if (args[ii] == null) throw missingRequiredArg(ii)
                          ^
Error: Missing required argument #1
    at andLogAndFinish (/home/travis/.gitbook/versions/3.2.3/node_modules/npm/lib/fetch-package-metadata.js:31:3)
    at fetchPackageMetadata (/home/travis/.gitbook/versions/3.2.3/node_modules/npm/lib/fetch-package-metadata.js:51:22)
    at resolveWithNewModule (/home/travis/.gitbook/versions/3.2.3/node_modules/npm/lib/install/deps.js:490:12)
    at /home/travis/.gitbook/versions/3.2.3/node_modules/npm/lib/install/deps.js:491:7
    at /home/travis/.gitbook/versions/3.2.3/node_modules/npm/node_modules/iferr/index.js:13:50
    at /home/travis/.gitbook/versions/3.2.3/node_modules/npm/lib/fetch-package-metadata.js:37:12
    at addRequestedAndFinish (/home/travis/.gitbook/versions/3.2.3/node_modules/npm/lib/fetch-package-metadata.js:67:5)
    at returnAndAddMetadata (/home/travis/.gitbook/versions/3.2.3/node_modules/npm/lib/fetch-package-metadata.js:121:7)
    at pickVersionFromRegistryDocument (/home/travis/.gitbook/versions/3.2.3/node_modules/npm/lib/fetch-package-metadata.js:138:20)
    at /home/travis/.gitbook/versions/3.2.3/node_modules/npm/node_modules/iferr/index.js:13:50
The command "gitbook install" failed and exited with 1 during .

好像是安装todo插件的问题。。。

HenryBeWell avatar Jul 30 '21 13:07 HenryBeWell

@HenryBeWell 可以去掉试试

riskers avatar Jul 30 '21 17:07 riskers

gitbook上支持批注评论,cli版好像也有个插件,有没有试过? https://github.com/GitbookIO/plugin-comment

MarvinXu avatar Nov 06 '21 07:11 MarvinXu