Dockerコンテナを使いやすいWerckerというCIサービスがあるそうなので、Re:VIEWで書いた原稿をビルドするようにしてみました。
サンプルのリポジトリ: https://github.com/mstssk/ReVIEW_Wercker_Sample
CircleCI 2.0の場合はこちら
http://qiita.com/mstssk/items/1820dd2e5e03d735ba19
解説
リポジトリの構成はreview-init
コマンドで初期化したほぼそのままの構成の前提です。
Werckerも、CircleCIなどの他のサービスと同様に、GitHubリポジトリを監視してくれます。
連携の設定についてもだいたい同じだったので割愛します。
Wercker独自の設定ファイルについては下記です。
wercker.ymlの設定
Werckerでは設定をwercker.yml
に記述します。今回の場合、たったの10行程度で済みました。
box: vvakame/review
build:
steps:
- script:
name: Build PDF
code: |
cd articles
rake clean pdf
cp book.pdf ${WERCKER_REPORT_ARTIFACTS_DIR}/
../upload_dropbox.sh book.pdf ${DROPBOX_TOKEN}
使用するコンテナの指定
box: vvakame/review
vvakameさんが作ったRe:VIEWのビルド用コンテナです。
https://hub.docker.com/r/vvakame/review/
実行するscript
rake clean pdf
Re:VIEWでPDFをビルドします。
review-init
はRakefileを作ってくれるので、ここではそのままrakeコマンドでビルドしています。
もちろん、他のビルドツールでreview-pdfmaker
や他のRe:VIEWのサブコマンドを使ってもいいです。
cp book.pdf ${WERCKER_REPORT_ARTIFACTS_DIR}/
ビルドしたPDFをWerckerの成果物ディレクトリにコピーしています。
コピーしておいたPDFはWerckerからダウンロードできます。
../upload_dropbox.sh book.pdf ${DROPBOX_TOKEN}
Werckerからのダウンロードは使い勝手が良くないので、Dropboxにアップロードしておくと楽です。
アップロードするための簡単なShellScriptを呼び出しています。
${DROPBOX_TOKEN}
は事前に発行しておいたDropboxのAPIトークンです。
Werker側のリポジトリ設定で、環境変数として登録してあります。
APIトークンはDropboxの開発者向けページで自分のアプリを作成して発行しておきます。