github pages + travis-cigithub pages 服务本身支持的博客引擎比较少,比如希望一些定制化的插件等,github pages 默认服务就不够了 。
但本质上讲,github pages 服务就是提供了一个自定义域名解析到静态 html 的 repo 。markdown 转 html 的这个过程, github 支持得不够,可以通过其他的方式 。
比如本地写 markdown,然后本地安装 hexo 等博客引擎,渲染成 html 后直接 push 到 github page 的远程仓库即可 。
我曾经也使用过多个博客引擎,如下图:
这里推荐一个工具 —— travis,它是一款免费的 CI 工具,能帮你做的事情是啥?就是上面你本地的流程可以交给它来做 。现在我写 blog 的流程是:
- 本地写 blog,md 格式的 。工具可以直接用之前推荐的 程序员利器 中的 markdown 写作工具 Macdown 或者Typora 。
- git commit && git push 即可 。
- travis 开始工作,安装 blog 程序,然后 build 静态 html,最后 push 到指定的 github pages 仓库 。
branches:only:- masterlanguage: node_js# v14/stable(2020-05) produces empty html https://github.com/hexojs/hexo/issues/4257node_js:- \'v13.8.0\'cache: npmbefore_install:- git config --global user.name \"tangleithu\"- git config --global user.email travis@tanglei.nameinstall:- npm install hexo-cli -g- npm installscript:- hexo clean- hexo g- git log | head -n 6- export COMMIT=`git log | head -n 1`- mv public .deploy && cd .deploy && du -sh- git init && git add -A . && git commit -m \"commit from travis, origin $COMMIT\" - git push --force \"https://tl3shi:$GITHUB_TOKEN@github.com/tl3shi/hexo.tanglei.name.git\" master:gh-pages 通过上面的配置可以看出,其实做的事情就是安装博客程序 hexo,然后生成静态 html,最后将本地生成的静态 html 整体打包作为一个仓库 push 到github pages 对应的仓库 。
下图是 travis-ci 的配置页面,可以配置比如只要有新的 commit push 即可触发 CI 流程,进而更新博客内容 。
Travis 配置
别看整个过程看起来比较复杂,其实安装等过程是可以 cache 的,一般而言,走完整个流程所耗费的时间也就 1-2 分钟(如后图所示),因为我的博客内容“历史包袱重”,可能耗费时间会更久,这时间大部分取决于博客程序的处理流程以及最后 git 上传过程 。
下图是构建历史,构建成功与否会邮件方式通知到你,很方便 。
文章插图
Travis 构建历史
借助 travis 可玩的东西就多了,上面的 scripts 有足够的灵活性,可以自己随意定制 。
比如,是不是可以同一文章多个平台发 。举例,现在大家普遍玩法是各大博客平台同步发表 。是否可以直接在 CI 流程里面加 juejin、博客园等 post 流程呢?
感兴趣的朋友试试?(石头好久都有这个想法了,但却一直没有付出行动)
解决 github 慢的问题用 github 确实很方便,各种免费的服务,但缺点也比较明显,就是国内访问比好慢 。gitee 也提供类似的服务,但前面看了一眼,自定义域名好像要收费?
一个比较简单的方法是用 CDN 来解决这个问题 。blog 本身全是静态资源,html、图片等,很适合用 CDN 来加速 。
在这篇 云服务器,域名备案及 CDN 服务体验(
https://www.tanglei.name/blog/try-qcloud-vm-cdn.html) 文章中,我记录了之前具体的流程 。
CDN 的工作流程就是你添加一个域名的 CNAME,指向 CDN 厂商的域名,所以用户发起请求的时候实际是解析到云厂商的 CDN 服务器的,CDN 后台配置一个源站点,例如 www.tanglei.name,用户请求到 CDN 服务器时,如果没有命中,则就去源站点请求并将内容缓存至 CDN 服务器 。
- 零基础快速自学蛙泳教程 如何快速学会蛙泳
- 怎样制作短视频教程 怎样制作短视频
- 淘宝水经验的好评段子,淘宝非标品直通车操作教程?
- 卡西欧手表怎么调时间教程,卡西欧babyg怎么调星期日期?
- 简单手工房子制作教程 简单手工房子制作幼儿园
- ickbSo8新版数字直播手机声卡使用视频教程 ickbso8声卡当转换器
- 小学生初学硬笔书法技巧图解 硬笔书法基础入门教程
- 属虎人未来10年大运 属虎人今年运势
- 电脑恢复出厂设置教程 电脑怎么进入恢复出厂设置模式?
- 抖音引流脚本,抖音引流脚本教程分享?