注意! この記事はQiitaにて公開されていた内容をimportしたものです。
これらの内容は場合によっては陳腐化していて役に立たなくなっていたり、有害であったり、現在の著者の主張と異なることがあります。
皆様の判断の上でご利用いただけますと幸いです(度を超してヤバいものは著者に連絡して頂ければ対応します m(_ _)m)


注意

筆者の知識が足りてない故の勘違いがあるかと思います。 特にRuby周辺知識はかなり怪しいです m(_ _)m 編集リクエストは常に受けつけておりますので宜しくお願いします。

はじめに

自分の関わるプロジェクトにDangerを組み込んだ、あるいは既にDangerが組み込まれているプロジェクトにジョインした。 そういう経験はありがちだと思いますが、新しい機能を足すとなるとなかなか大変です。 また、人は失敗する生き物。なのでローカル環境で経験を積みたいところです。 しかしやり方がいまいちよく分からなかったので、試行錯誤の末なんとかなったメモを公開します。

環境

  • ローカル環境
    • macOS 10.12.6
  • Danger
    • 5.5.11
  • Ruby
    • 2.5.1p57

Ruby版Dangerを使います。 あと rbenv でglobalを置き換えて使ってますがそれほど問題にはならないはず。適宜読み替えてください。

0.bundlerのインストール

すでにあるならスキップ

$ gem install bundler

1.Dangerのインストール

# frozen_string_literal: true
source "https://rubygems.org"

gem 'danger'
gem 'danger-checkstyle_format'
gem 'danger-apkstats'
gem 'danger-android_lint'

このようなGemfileがあったとして、

$ bundle install

これでDanger環境が構築できました。 npmと違いグローバル環境に放り込む仕様です。気になる人は bundle install --path vendor/bundle を。 ただし、以降danger関連コマンドの実行は、bundle exec danger ...とします。 詳しくはこちら→ bundlerでgemをプロジェクトごとに管理する | Developers.IO

2. 環境変数構築

Dangerは要求する環境変数が設定されていないとピクリとも動きません(流石にエラーは返します)ので、環境変数を設定します。 direnvを使うと手軽に思います。

ひとまず direnv をインストールしておきます。 詳しくはこちら→ direnvを使おう - Qiita

GitHubのトークンなどを設定することになるので、事故防止のためにあらかじめ .gitignore を設定します。

$ echo ".envrc" >> .gitignore

.envrc の中身はこんな感じにします(GitHubを使う場合。GHEなどの場合、要求される環境変数が変わりますのでお調べください):

export DANGER_GITHUB_API_TOKEN=___token___
export ANDROID_HOME=/Path/To/Android/sdk

書き換えたら direnv reloadを忘れずに。

3. Let’s DEBUG time!

ここまできたら、Dangerfileを動かせる準備が完了しています。

$ danger pr <GITHUB_PULL_REQ_URL>

これで動かしてみましょう。なお、danger prでは勝手にコメントなどされませんので遠慮なく実行しましょう!

追記(2018/08/15):

$ gem install pry

をして、Dangerfileの最上部に require 'pry' をして、任意の場所に binding.pry を書いて実行をすると、そこで実行が一時停止してREPLモードになります! 詳しくはこちら→ 今更聞けないpryの使い方と便利プラグイン集 - Qiita

おわりに

非RubyエンジニアにとってDanger(というかRubyのエコシステム)には馴染みがないですが、 しばしばRubyで記述されたプロダクトに救われることがありますので、頑張って習得したいですね!