内容简介:写个 Webhook 去构建文档
最近写了一个 破开源项目 ,在写它的文档的时候,突然想用 rst 和 Sphinx,主要是感觉这个比较好用,写起来比 Markdown 要强大太多。于是,就遇到了文档部署的问题。
首先是文档放在哪里,第一时间想到的自然是 Github Pages,但是我这个破文档用的是 Sphinx,自然就没法直接用 Jeklly 和 Markdown 让 Github 去自动构建,必须得用静态资源形式。也就意味着,我每次提交,都得手动将生成的文档文件,要么是 Push 到我 master
分支下的 docs
目录,要么是 gh-pages
分支。
像我这种懒人,写文档都很懒了,自然是不愿意做这种重复工作。换言之,我能写文档都很不容易了。这东西不自动化怎么行。于是,Github Pages 方案第一时间 Pass。
接下来,我找到了大名鼎鼎的文档部署站 RTD ,它能关联我的项目,基于 Github Webhook 自动触发构建,还能生成漂亮的文档,一切都很满意。但是,因为是免费服务,所以生成的文档都自带广告。而且,绑定域名的时候,我郁闷地发现,它没法绑定 HTTPS 域名。我的域名加入了 HSTS Preload List,所以所有的浏览器访问我的域名都会默认走 HTTPS。
得,要不我自己部署一个 rtd?于是我找到了它的 开源仓库地址 ,看了看它的部署文档,我选择放弃,需要的东西太多,而且将这个一套文档库暴露在网站,难免不被人滥用,还无法保证安全性。
选来选去,我决定干脆自己写一个吧。
需求如下:
- 暴露一个地址,能 HTTP 方式访问。
- 访问该地址之后,能自动触发文档构建。
- 能将构建好的文档部署到我的服务器上。
一开始我想基于 Openresty 来写,直接 access_by_lua
然后里面 os.execute
指定 shell 即可。然后我悲剧地发现,我升级到了最新的 Openresty,春哥已经废弃了 Lua API,改用纯 LuaJIT。 亚麻
退而求其次,改用 Nodejs。搜了搜发现,Nodejs 的 require('child_process').spawn
可以去执行 shell 文件,于是一个大胆的方案出来啦。
const spawn = require('child_process').spawn; const http = require('http'); const srv = http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'application/json'}); res.end('{success: true}'); build_doc(); }); srv.listen(2800); function build_doc() { const build = spawn('./build.sh'); build.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); build.stderr.on('data', (data) => { console.log(`stderr: ${data}`); }); build.on('close', (code) => { console.log(`child process exited with code ${code}`); }); }
然后使用 forever start trigger.js
保证这货在后台监听 2800
端口。在同级目录写个 Shell 文件来指定文档的构建。
#!/usr/bin/env bash BASE_DIR=$(dirname $0) cd ${BASE_DIR} BASE_DIR=`pwd` echo ${BASE_DIR} git clone https://github.com/syhily/gossip.git cd ${BASE_DIR}/gossip/docs make html \cp -rf ${BASE_DIR}/gossip/docs/_build/html/* ${BASE_DIR} cd ${BASE_DIR} rm -rf gossip
剩下的就是配置 Virtual Host 啦
location /build { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:2800; }
在 Github 上配置好对应的 Webhook 地址,剩下的事情就是愉快地写文档 Push 啦,自动化真好。
以上所述就是小编给大家介绍的《写个 Webhook 去构建文档》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 写个 Webhook 去构建文档
- 写个 Webhook 去构建文档
- Spring Boot 集成 Swagger 构建接口文档
- LCG Kit:恶意office文档构建器分析
- [ Laravel 5.7 文档 ] 数据库操作 —— 查询构建器
- Fine:3 秒内构建你的开源文档和博客
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。