LoginSignup
11
14

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-09-09

このポスト: 自動生成ドキュメントを無料で 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をきっかけに,自動テストも実行されるようにする.
11
14
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
11
14