Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Danger CI
Search
vividmuimui
September 05, 2018
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Danger CI
original
https://vividmuimui.github.io/slides/danger-systems/slides/
vividmuimui
September 05, 2018
More Decks by vividmuimui
See All by vividmuimui
あるチームでの技術選定で考えてること(外部向けに修正版)
vividmuimui
0
14
開発組織まわりで最近考えているあれこれ
vividmuimui
0
27
bundle-update.pdf
vividmuimui
0
130
Dependabot vs BundleUpdate+LockDiff
vividmuimui
0
96
あなたの知らないRuboCopの設定
vividmuimui
0
250
最近(2019/02/03)の #Ruby , #Rails , #Bundler 事情
vividmuimui
0
170
Jasperはいいぞ!
vividmuimui
0
54
tigとかaliasなし生活を送ってみて改めてgitを覚えてる話
vividmuimui
0
130
lock_diff の紹介
vividmuimui
0
100
Other Decks in Programming
See All in Programming
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
8
3.3k
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
650
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
110
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
160
Claude Team Plan導入・ガイド
tk3fftk
0
230
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
150
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
250
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
320
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
210
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
180
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.7k
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Writing Fast Ruby
sferik
630
63k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Faster Mobile Websites
deanohume
310
32k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
Game over? The fight for quality and originality in the time of robots
wayneb77
1
230
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
350
So, you think you're a good person
axbom
PRO
2
2.1k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
420
Transcript
Danger Danger 2018/09/05 社内LT @vividmuimui 1
https://danger.systems/ruby/ 2
Danger とは Danger とは
https://github.com/vividmuimui/danger-sample/pull/7 3
Danger とは Danger とは レビューbot 用のツール js とruby で提供されている 4
サンプル サンプル # PR WIP warn("PR is classed as Work
in Progress") if github.pr_title.include? "[WIP]" # PR 変更行数 500以上 warn("Big PR") if git.lines_of_code > 500 # 普通 ruby 放題 fail("fdescribe left in tests") if `grep -r fdescribe specs/ `.length > 1 fail("fit left in tests") if `grep -r fit specs/ `.length > 1 # rubocop 使 plugin rubocop.lint inline_comment: true 5
メリット メリット 各種CI やgit のホスティングサービスをサポートしている rubocop などのよく使うどころはプラグインがある プラグインの中見てもだいぶシンプルなので、カスタマイズや自作 も簡単 チーム独自のルールや簡単にかける
ruby(js) を書けばいいだけなので簡単&やりたい放題 たとえば を編集したけど を編集して なければ警告など 6
使い方 使い方 注意: ruby, Github, CircleCI での話です。雰囲気で読み取ってください。 7
コメント コメント # PR message "foo bar" # markdown markdown
":alert:" # CI 落 fail "This build didn't pass tests" # :alert: warn "Big PR" # file changed warn("xxxxxx", file: "Dangerfile", line: 10) 8
Git, Github Git, Github git.added_files git.modified_files git.deleted_files git.lines_of_code # warn("")
if git.commits.any? { |c| c.message =~ /^Merge branch 'master'/ } # diff diff = git.diff_for_file("Gemfile.lock") message("") if diff && diff.patch =~ "nokogiri" github.pr_title github.pr_body github.pr_labels github.branch_for_base # review github.review.start github.review.fail(message) github.review.warn(message) github.review.submit 9
コードの共有 コードの共有 gem としてplugin を追加する以外にも色んな方法で追加できる # github 直指定 device_grid =
"https://raw.githubusercontent.com/fastlane/fastlane/master/danger-device_grid/ danger.import_plugin(device_grid) # local file danger.import_plugin("danger/plugins/watch_plugin.rb") danger.import_plugin("danger/plugins/*.rb") danger.import_dangerfile(path: "path/to/Dangerfile") # gem danger.import_dangerfile(gem: "ruby-grape-danger") # github, gitlab danger.import_dangerfile(gitlab: "ruby-grape/danger") danger.import_dangerfile( github: "ruby-grape/danger", branch: "custom", path: "path/to/Dangerfile" ) 10
導入の仕方 導入の仕方 を用意 danger gem をinstall を設定 とかでdanger を実行 だけ!
11
ローカルでも動かせる ローカルでも動かせる ただ、対象にするPR が、そのブランチで一番最近マージされたPR を対象に しているっぽい( たぶん) Github でオープンになっているPR を対象に実行したりはできなそう(
未確認) danger pr --verbose 12
参考 参考 公式 試して動かしたやつ 参考プラグイン Github 検索 https://danger.systems https://github.com/vividmuimui/danger-sample https://github.com/vividmuimui/danger-sample/pull/7
https://github.com/ashfurrow/danger- rubocop/blob/master/lib/danger_plugin.rb https://github.com/search?q=warn+ lename%3ADanger le 13