在GitHub上管理文章并进行审查,使用CircleCI将其自动发布到Hatena博客
当在多人管理的情况下运营着Hatena博客时,会开始考虑如何审核。
Github上,通过创建PR,可以逐行修改代码,非常方便!
不过审核通过后,要手动转移到Hatena博客上吗?
CircleCI是什么?
以下的网址可能会对不熟悉的人有所帮助:
https://circleci.com/
CircleCI提供了一个功能齐全的可在服务器上运行的环境。
-
- Ruby, node.js, Python, PHP, Java, Scala, Clojure, Haskellと色んな言語をサポートしている
-
- 他にはsolr, elasticsearch, cassandra, neo4j
-
- databaseはmysqlとかmongodb、redisとかmemcachedだってサポートしてる
- 足りなければ自分でインストールだってできる
dependencies:
pre:
- sudo apt-get update; sudo apt-get install git
自由!- Freedom!
因为可以通过SSH登录,所以调试也变得轻松。
这里非常重要,在本地可以运行,但在持续集成(CI)中出错时,无法弄清楚原因的时候,
可以登录服务器进行确认。
并且,从CircleCI自动发布程序到创建的Hatena博客。
形成图像 or 形象

主要的代码使用
提取目标文件
如何在CircleCI上识别文章文件是最棘手的问题。这可以从git log中获取。
git log --name-status -p -1 | egrep "^[AM]\s+\"?articles\/.*\.md" | awk '{print $2}' | head -1 | sed -e 's/^\"//g' | sed -e 's/\"$//g'
使用egrep命令对每行进行筛选,以提取目标描述:
[M] 可以获得具体的一行如articles/hoge.md,然后通过awk ‘{print $2}’来获取空格分隔的第二个文件路径
发布文章
一旦确定目标文件后,CircleCI可以运行ruby或python,您可以使用喜欢的语言调用Hatena API。
由于ruby中有一个名为hatenablog的包装了Hatena博客API的工具,你可以使用它。
至于图片相关的部分,我参考了这个链接并实施了相应的功能。
在CircleCI的环境变量中管理,而不是在git上管理关键信息如令牌等!
circle.yml文件
在图像上的运用是,从主分支上切出一个分支,创建一个PR(拉请求),进行审查,最后合并后再发布文章,因此在设置上也只允许在主分支上执行命令。
machine:
timezone:
Asia/Tokyo
ruby:
version: 2.2.3
deployment:
production:
branch: master
commands:
- 記事アップロードするスクリプトを記載
【Chinese Paraphrase】
个人见解
这并不意外地并不那么困难。
我创造了一个可以供任何人使用的存储库,你可以fork它或者进行其他操作来使用。
https://github.com/hatappi/circleci_to_hatenablog。