2016/06/21 このエントリーをはてなブックマークに追加 はてなブックマーク - CircleCIでbuildとgitへのpushを実施する

CircleCIでbuildとgitへのpushを実施する




逆引きKotlinというサイトをやってまして、build手順が面倒だったんです。
mdファイルからhtmlファイルをbuildしてcommit、pushして…と言った感じで。







ということで、出来そうだということが分かったのでやってみることにしました。






こんな感じ。



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は回らない。












こんな感じです。これしないとgit pushで認証が通らない。















ということで、ですねこれがないと無限ループします。
割と大事なポイントですw





ということで、めちゃざっくりこんな感じになりました。
(なんとなくお絵かきしたくなった)


























全部自動で動いてくれるのはなかなか気持ち良いですね。
楽しかった!







3 件のコメント:

  1. ghp-import 使うともう少し deploy のところ綺麗に書けますよ

    返信削除
  2. >あやぴーさん

    これですか!
    https://github.com/davisp/ghp-import
    GitHub Pages用?ぽい感じですけど使えるんですかね?
    時間あったら試してみます!

    返信削除
    返信
    1. あー、ごめんなさい。はやとちりしました。静的なものだから Heroku を使っているとは思いませんでした。
      (てっきり、 Circle CI でビルドして gh-pages ブランチにコミットしているのかと)

      一応 ghp-import について書くと、「生成物だけを別のブランチにコミットする」のに便利なものという認識をしてもらえればいいです。
      僕が管理しているドキュメント、例えば clojure-beginner とかは master にソース( reST 記法で書かれたもの)だけがあって、生成物(この場合 html ファイル)は gh-pages ブランチのみにコミットされます。

      GitHub pages の仕組みにのせる場合にはこのやり方が一番綺麗なのですが、 Heroku となるとまた事情が違うと思うのでなんとも言えないですね…。

      削除