逆引きKotlinというサイトをやってまして、build手順が面倒だったんです。
mdファイルからhtmlファイルをbuildしてcommit、pushして…と言った感じで。
mdファイルのpushを検知してmdファイルからhtmlへのparse->git commit、git push してくれるような何かが欲しい
— やんく (@yy_yank) 2016年6月17日
@yy_yank 僕の管理してるプロジェクトでそれやってますね。 sphinx だけど、 circle ci でビルドして push してる
— あやぴー (@_ayato_p) 2016年6月18日
ということで、出来そうだということが分かったのでやってみることにしました。
circle.ymlを書く
こんな感じ。
general:
artifacts:
- build/reports
machine:
timezone:
Asia/Tokyo
python:
version: 2.7.10
dependencies:
pre:
- pip install mkdocs
deployment:
deploy:
branch: master
commands:
- mkdocs build --clean
- git config --global user.email yy.yank.dev.blog@gmail.com
- git config --global user.name yyYank
- git add --all :/
- git commit ./site/* -m "build [ci skip]"
- git pull git@github.com:yyYank/kotlin-rev-solution.git master
- git push git@github.com:yyYank/kotlin-rev-solution.git master
test:
pre:
- echo "-----start test-----"
override:
- echo "-----no test-----"
post:
- echo "-----end test-----"
やってることというと、pythonを設定して、
pip installでmkdocsという静的サイトジェネレータのツールをインストールしてます。
※逆引きKotlinはmkdocsで動いています。
そしてmkdocs build --cleanでmdファイルをhtmlに変換。
吐き出されたhtmlファイルをgit addしてgit commitしてgit push。
簡単ですね。
testに関してはtest書いてないと「no test」ってwarning出ちゃうので
空振りな処理を入れてます。
本来はこういうドキュメントサイトであってもテストはあったほうが良いんですけどねぇ。
現状はデプロイしてから確認するというw
CircleCIにリポジトリを登録する
こんな感じです。これしないともちろんCircleCIは回らない。
CircleCIとGitHub連携してSSHキーで認証する
こんな感じです。これしないとgit pushで認証が通らない。
コミットコメントには[skip ci]を入れる
僕がgit pushしたらCircleCIが走る->CircleCIがgit pushする->CircleCIが走る->CircleCIがgit pushする->CircleCIが走る->CircleCIがgit pushする
— やんく (@yy_yank) 2016年6月20日
今ココ
@yy_yank [ci skip] https://t.co/MMcIIGC5dt
— うらがみ (@backpaper0) 2016年6月20日
ということで、ですねこれがないと無限ループします。
割と大事なポイントですw
まとめ
ということで、めちゃざっくりこんな感じになりました。
(なんとなくお絵かきしたくなった)
全部自動で動いてくれるのはなかなか気持ち良いですね。
楽しかった!




3 件のコメント:
ghp-import 使うともう少し deploy のところ綺麗に書けますよ
>あやぴーさん
これですか!
https://github.com/davisp/ghp-import
GitHub Pages用?ぽい感じですけど使えるんですかね?
時間あったら試してみます!
あー、ごめんなさい。はやとちりしました。静的なものだから Heroku を使っているとは思いませんでした。
(てっきり、 Circle CI でビルドして gh-pages ブランチにコミットしているのかと)
一応 ghp-import について書くと、「生成物だけを別のブランチにコミットする」のに便利なものという認識をしてもらえればいいです。
僕が管理しているドキュメント、例えば clojure-beginner とかは master にソース( reST 記法で書かれたもの)だけがあって、生成物(この場合 html ファイル)は gh-pages ブランチのみにコミットされます。
GitHub pages の仕組みにのせる場合にはこのやり方が一番綺麗なのですが、 Heroku となるとまた事情が違うと思うのでなんとも言えないですね…。
コメントを投稿