雰囲気でWerckerを使う #技書博 #技術書典 #reviewstarter
TL;DR
自分のMacBook Proは年代物で非力です、DockerからRe:View形式のファイルをPDFファイルにするのも一苦労です。
どっかのサーバーで勝手にやってくれると助かりますよね。
はい、あります!雰囲気でやってみました!CIツールとしてWerckerを使うことにしました。
準備
Dropboxに生成されたPDFをコピーしたいので、Dropboxのトークンを取得します。
DropboxにログインしてからDropboxのDevelopersに行き、Create appsを選択します。
この画面が出ます。
Choose an APIは「Dropbox API」で、Choose the type of access you needは「Full Dropbox」を選択します、あとはアプリ名を入れてCreate appsを押下します。
Werckerに行きGitHubアカウントで認証して、リポジトリを選んでからEnvタブを選んで、DROPBOX_TOKENという変数名を入れて、先ほどコピーしたトークンを入力します、念の為Protectedをチェックしてから、Addを押下します。
Gitに追加するもの
- Werckerを動かす為の設定ファイル「wercker.yml」
- 表紙のPDFファイルと原稿ファイルを合体させるスクリプト「CombinePDF.rb」
- 表紙のPDFファイル「cover.pdf」
- Werckerで作成されたPDFファイルをDropboxにコピーするShellスクリプト「deploy.sh」
wercker.yml
box: kauplan/review2.5 build: steps: - script: name: Build PDF code: | rake clean pdf ruby CombinePDF.rb cp Clean-mailSettings2.pdf ${WERCKER_REPORT_ARTIFACTS_DIR}/ bash deploy.sh
WerckerはboxというセクションでDocker Hubにあるイメージを取得して実行できるので、そこにDockerイメージを指定します。
今回はRe:View Starterを使ったのでkauplan/review2.5を使いました。
buildセクションに実行したいスクリプトを用意します。
code に雰囲気でコードを書きました、それが実行されます。
CombinePDF.rb
require "combine_pdf" pdf = CombinePDF.new pdf << CombinePDF.load("cover.pdf") pdf << CombinePDF.load("Clean-mailSettings.pdf") pdf.save "Clean-mailSettings2.pdf"
表紙はPDFファイルで別で用意しようと思ったのと、Re:View StarterのDockerイメージにはcombine_pdfが入っていたので、これを雑に使ってPDFファイルの結合して、それを最終PDFファイルとしました。
deploy.sh
set -eux export TZ="Asia/Tokyo" TIMESTAMP=$(date "+%Y%m%d-%H%M%S") TARGET="Clean-mailSettings2.pdf" FILENAME=$(basename $TARGET) curl -X POST -H "Authorization: Bearer ${DROPBOX_TOKEN}" \ -D - -H "Dropbox-API-Arg: {\"path\": \"/Clean-mailSettings/${FILENAME#.pdf}-${TIMESTAMP}.pdf\",\"mode\": \"overwrite\",\"mute\": false}" \ -H "Content-Type: application/octet-stream" --data-binary @${TARGET} https://content.dropboxapi.com/2/files/upload
このShellスクリプトで、PDFファイルをDropboxにコピーしてます。
処理結果
GitHubにpushするとWerckerが動きます。
buildセクションのスクリプトが実行され、buildが成功するとWerckerはこんな感じになります。
Dropboxにコピーされるので、そのまま見るでもダウンロードして見るのも簡単です。
謝辞
Re:View Starterは初期設定を簡単にやってくれるのでとても楽です、感謝しております。
kauplan.org