Dangerを使ってみる
What is Danger?
CI上で、バージョン管理ホスティングサービス の Pull Request / Merge Request の内容を解析して、コメントすることができるツール。
設定ファイルは Ruby DSL
で記述するので、様々なチェックができる。
サポート状況
サポート状況などは公式を確認してください。
使い方
プロジェクト
Gemfileに danger
を追加
gem 'danger'
Dangerfileを作成
message('PRいただきました')
CI環境で実行
bundle install bundle exec danger
Dangerによるコメント
Dangerによるコメントは、デフォルトでは最初に行われたコメントを更新する。
実行時に --new-comment
オプションを指定することで新しいコメントとして表示される。
bundle exec danger --new-comment
Dangerで取得できる情報
github
(GitHubの場合)で各種情報が取得できる。
http://danger.systems/reference.html
github.api
で Octokit::Client
が取得できるので、追加でトークンなど指定せずにGitHubのAPIを介して情報を取得することができる。
必要な環境変数
環境変数 DANGER_GITHUB_API_TOKEN
が必要。
DANGER_GITHUB_API_TOKEN="xxxxxx"
Dangerfile
DSL
コメント用の拡張構文として、 message
、warn
、fail
などが用意されているがHTMLのテーブルでコメントしてくれる。
フォーマットが気に入らない場合は markdown
が用意されている。
アウトプット(テーブルとして表示)
- message
- warn
- fail(ビルドが失敗する)
アウトプット(テーブルの下に表示)
diffにコメント
warn("Please add your name", file: "CHANGELOG.md", line: 4)
プラグイン
共通の処理などをプラグインとして提供しておくと、使い回しも効きそう。
プラグインの作成方法は 公式
運用
OSSプロジェクトなどではビルド毎に danger を実行してチェックしている
dangerは Pull Request 以外のビルドは自動的にスキップする
ローカルで確認する方法
Dangerfileを変更して確認したい場合、 commit -> push -> hook だと効率が悪いし、PRなどを汚してしまう。
ローカルでPRを指定して確認する方法も用意されている。
http://danger.systems/guides/troubleshooting.html#i-want-to-work-locally-on-my-dangerfile
bundle exec danger pr https://github.com/danger/danger/pull/662