在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 形象

Untitled (1).png

主要的代码使用

提取目标文件

如何在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。

bannerAds