Help us understand the problem. What is going on with this article?

GitHubで記事管理、レビューしてCircleCI使ってはてなブログへ自動投稿する

More than 3 years have passed since last update.

はてなブログを複数人で運用しているとレビューどうしようってなる。
GithubだとPR作成して1行1行でコードがいじれるからめっちゃ便利!
とはいえPR通った後は手動ではてなブログへ移す?

CircleCIとは?

https://circleci.com/
知らない方は下記が参考になりそうです
http://www.slideshare.net/mogproject/circleci-51253223

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

自由!

sshでログインすることもできるからデバックも楽ちん
ここは結構重要でローカルではできてるけどCIでこけてて原因がどうしてもわからないときとかに
サーバーにログインして確認できる

そして作ったはてなブログへCicleCIから自動投稿プログラム

イメージ

Untitled (1).png

使用した主なコード

対象ファイルの抽出

一番キモなのはどうやってCircleCI上で記事ファイルを認識させるか。
これはgit logからとってくる

shell
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 "^[AM]\s+\"?articles\/.*\.md"で各行を精査して対象記述を取り出す
[M] articles/hoge.mdといった具体で1行取得できるのでawk '{print $2}'これで空白区切りの2番目のファイルパスをとってくる

記事の投稿

対象ファイルが判明すればCircleCIはrubyやpythonが動くのでお好きな言語ではてなapiをたたけば良い。
rubyにはhatenablogというはてなブログのapiをラッパーしたものがあるので、これを使う。
画像に関してはgemとかはなかったので、こちら を参考にしながら実装

トークンなどの大切な情報はgit上で管理はさせずにCircleCIのenvironment variablesで!

circle.yml

運用イメージとしては、masterからブランチ切り出して
PRつくってレビューしていって最終的にマージしたら記事を投稿したいので、
設定に関してもmasterのみでコマンドが実行されるようにしてある。

circle.yml
machine:
  timezone:
    Asia/Tokyo
  ruby:
    version: 2.2.3

deployment:
  production:
    branch: master
    commands:
      - 記事アップロードするスクリプトを記載

感想

意外と難しくない。
誰でも使えるようにリポジトリつくったのでforkするなどすると使える
https://github.com/hatappi/circleci_to_hatenablog

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした