LoginSignup
15
9

More than 5 years have passed since last update.

CircleCI 2.0でRe:VIEWの原稿をビルドする

Last updated at Posted at 2017-07-23

CircleCI 2.0が登場し、Dockerイメージを使ってビルドできるようになりました。
C92や技術書典3に向けて執筆されている方でもRe:VIEWを使っている方がいると思います。
vvakameさんが作成したRe:VIEW用のイメージがあるので、CircleCI 2.0でRe:VIEWの原稿をビルドしてみました。

解説

やったこととしては以前書いたWerckerでRe:VIEWの原稿をビルドするという記事のCircleCI 2.0版です。

GitHubとCircleCI間の連携については、特別なことは何もしていないので本記事では割愛します。
公式のドキュメントなどを参照してください。

設定ファイル

設定ファイルは20行未満になりました。並列処理したりしたいわけではないのでWorkflowは使っていません。
Dropboxへのアップロードの部分はオプションなので、ビルドするだけならもっと短くなります。

circleci/config.yml
version: 2
jobs:
  build:
    docker:
      - image: vvakame/review
    steps:
      - checkout
      - run:
          name: Build PDF
          command: rake clean pdf
          working_directory: ./articles
      - store_artifacts:
          path: ./articles/book.pdf
          destination: book.pdf
      - run:
          name: Upload to Dropbox
          command: ./upload_dropbox.sh ./articles/book.pdf ${DROPBOX_TOKEN}

使用するコンテナ

image: vvakame/review

vvakameさんが作ったRe:VIEWのビルド用Dockerイメージです。
https://hub.docker.com/r/vvakame/review/

PDFをビルド

- run:
    name: Build PDF
    command: rake clean pdf
    working_directory: ./articles

Re:VIEWでPDFをビルドします。
今回はRe:VIEWの review-init コマンドで環境を初期化しました。Rakefileができるので、ここではそのままrakeコマンドでビルドしています。
もちろん、他のビルドツールでreview-pdfmakerや他のRe:VIEWのサブコマンドを使ってもよいです。
PDFだけでなくHTMLやEPUBなどをビルドすることも出来ます。

成果物の保存

CIでビルドしたPDFファイルなどの成果物を保存できます。
ビルドの結果画面のArtifactsタブからダウンロードできます。

- store_artifacts:
    path: ./articles/book.pdf
    destination: book.pdf

path 対象のファイルを指定しています。
destination は保存後のファイルパスを指定するオプションです。 pathだけだと、元ファイルのパスそのままに root/project/articles/book.pdf という深いパスで成果物画面に出てきてしまい使いづらいので、指定しています。

ちなみにpathとdestinationには環境変数は使えないようです。ファイル名をタイムスタンプにしたかったんですが、今回は諦めています。

Dropboxにアップロードする

CircleCIの画面上から保存したPDFをダウンロードしてもよいですが、Dropboxに自動でアップロードするようにしておくと便利です。
複数人で執筆している場合は、他の都合がいいファイル共有ツールを使ってもよいでしょう。

- run:
    name: Upload to Dropbox
    command: ./upload_dropbox.sh ./articles/book.pdf ${DROPBOX_TOKEN}

./upload_dropbox.shDropbox API v2にファイルをアップロードするスクリプトです。

${DROPBOX_TOKEN}は事前に発行しておいたDropboxのAPIトークンです。CircleCIのリポジトリ設定で、環境変数として登録してあります。
APIトークンはDropboxの開発者向けページで自分のアプリを作成して発行しておきます。

15
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
9