Githubにpushすると,自動でDoxygenドキュメントを生成して,Herokuへ静的ページとしてdeploy.


このポスト: 自動生成ドキュメントを無料で Web 上で最新に保つ(Wercker + Doxygen + Heroku)の通りにやろうとしたら,2016年頃からWercherの仕様が変わったようで,そのままでは実現できなかったので対応してみた.

実現すること

Githubにpushされると自動でDoxygenドキュメントが生成.生成されたドキュメントをHerokuへ静的ページとしてdeployして参照できるようにする.

使用するサービス

  • Github
  • Wercker
  • DockerHub
  • Heroku

方法

Dockerイメージの作成

Werckerの仕様変更により,boxとしてwercker-box.ymlが使用できなくなり,代わりにDocker imageを使用する必要がある.

DockerでWerckerの処理を実行するための環境を構築し,DockerHubに置く.既に作成されたimageを使用する場合はこのステップは飛ばす.

Dockerで元ポストで使われているwercker-boxと同じ環境を構築して,DockerHubにpushする.

docker commitする際のイメージ名は,[自分のDockerHubユーザID]/[任意]とする.しないとdocker push時にエラーが出る.

私が作成したイメージ: fiftystorm/box2

Doxyfileの作成

私の場合,デフォルトの状態からの変更点は以下のとおり.

PROJECT_NAME           = [プロジェクト名]
OUTPUT_LANGUAGE        = Japanese
FILE_PATTERNS          = [ソースファイルの拡張子]
SOURCE_BROWSER         = YES
ALPHABETICAL_INDEX     = YES
EXTRACT_ALL            = YES
GENERATE_LATEX         = NO
HAVE_DOT               = YES
DOT_IMAGE_FORMAT       = jpg
DOT_PATH               = /usr/bin
CALL_GRAPH             = YES
CALLER_GRAPH           = YES

あとは,ソースファイルに日本語が含まれる場合,文字化けしないように,HOGE_ENCODING = UTF-8 or CP932(Shift-JIS)に気をつける.

作成したDoxyfileは,ドキュメント化するソースファイルの入ったリポジトリに放り込む.

Werckerアプリケーションの作成

ドキュメント化したいGithubのリポジトリに紐付ける.

wercker.ymlの作成

wercker.yml
box: fiftystorm/box2:1.3
build:
  steps:
    - script:
        name: document
        code: |
          doxygen

deploy:
  steps:
    - script:
        name: preparation
        code: |
          cp -r html/* /heroku-static-provider-master/public/
    - heroku-deploy:
        install-toolbelt: true
        key: $HEROKU_KEY
        key-name: HEROKU_KEY_PAIR
        user: $HEROKU_USER
        app-name: $APP_NAME
        source_dir: /heroku-static-provider-master/

wercker.yml内で,元ポストではパッケージのインストールなどが手順に含まれていたが,大半はDocker imageを作成する際に含めてしまった.

編集したwercker.ymlはDoxyfile同様,リポジトリに入れてpushしておく.

Werckerでの設定

pipelineの追加

Workflowsタブのページを見ると,この時点ではWorkflowにbuildしか存在しないはずである.

同ページ下部のAdd new pipelineから,deployのpipelineを追加する.

  • name: deploy
  • YML Pipeline name: deploy
  • Hook type: Defaultを選択

Environment variablesとして以下を作成.

  • HEROKU_KEY: Heroku API key の文字列(HerokuのAccount settingsから取得可能)
  • HEROKU_USER: Herokuユーザー名
  • APP_NAME: Herokuで作成したアプリケーション名(あらかじめHerokuで作成しておく)

作成したpipelineをWorkflowに追加する

上で追加したdeployのpipelineを,buildの後ろの+ボタンから追加する.

ドキュメントページの作成

ドキュメント化したいソースファイルの入ったリポジトリにpushすると,http://[Herokuアプリケーション名].heroku.comにページが現れる.

発生したエラーはWerckerのRunsタブのページで詳しく確認できるので,エラーが発生した場合はそちらを参照して問題点を1つずつ潰していく.

Werckerについて

  • 良いところ:
    • CIサービスとしては珍しく,Githubのプライベートリポジトリに対しても無料で使える.
  • 悪いところ:
    • 最近仕様が変わったようなので参考にできるものが少ない.
    • 今後も同じ仕様で使い続けられるとは限らない.
    • 今後も無料で使い続けられるとは限らない.

参考

公式

非公式

今後

  • ユーザ認証を設けてログインなどしないと参照できないようにする.
  • pushをきっかけに,自動テストも実行されるようにする.