参考
Dangerで効率よくPR駆動開発 | Recruit Jobs TECHBLOG
https://techblog.recruitjobs.net/development/danger_driven_development
ashfurrow/danger-swiftlint: A Danger plugin for SwifLlint.
https://github.com/ashfurrow/danger-swiftlint
Danger - Reference
http://danger.systems/reference.html
Dangerで始めるPull Requestチェック自動化 - コネヒト開発者ブログ
http://tech.connehito.com/entry/danger
使うもの
Danger
Fastlane
TravisCI
Github
本題
TravisCI,Fastlane,Swiftlintについては使える前提でいきます。
Gemfile
Gemfileに以下を追記
gem 'danger'
gem 'danger-swiftlint'
bundle update
適宜してください。
.travis.yml
.travis.ymlに以下を追記
before_script:
- bundle exec danger
まぁ、タイミングはいつでもいいですが bundle exec danger
すればOKです。
Travis環境変数の設定
GithubのAPITokenをDANGER_GITHUB_API_TOKEN
という環境変数として登録します。
以下にアクセスしてTokenを発行してください。
https://github.com/settings/tokens
※Scopeは以下のようにrepoにチェックをいれればOKです。
そして、TravisのSettingsのEnvironment VariablesにTokenを追加します
https://travis-ci.com/
Dangerfile
最後にDangerfileを作成します。
プロジェクトルートにDangerfileを作成
# PRのタイトルに[WIP]が含まれていれば編集中コメントをする
warn("このPRは編集中のようだ...") if github.pr_title.include? "[WIP]"
# 修正内容が500行を超えていたらコメントをする
warn("このPR修正しすぎ :sob: :sob: :sob:") if git.lines_of_code > 500
# PRで修正した範囲だけswiftlintでチェックしてコメントする
github.dismiss_out_of_range_messages
swiftlint.config_file = '.swiftlint.yml'
swiftlint.lint_files inline_mode: true
# PRのブランチ名にチケットNoが含まれていればチケットのURLをコメントする
match = github.branch_for_head.match /redmine(\d+)/
message "Redmine Ticket: <a href='https://example.com/issues/#{match[1]}'>##{match[1]}</a>" if match
※上記は適宜修正してください。
あとはPRを出したらDangerが勝手にチェックしてくれます