VCS and CI connected by Danger tool

"Danger” between VCS and CI : codeQuality++

Posted by Milind Mevada

20 Aug 20 3 min read

Have you ever wanted that, all the coding norms and standardization must be follow by your team so that we can never get bugs related to code carelessness.

So, Danger is here to must your coding norms.

Danger is a Ruby gem and it works during CI process. Using danger you can automate code review process as per your coding norms. So that, developers can focus on real problems.

So, How to implement Danger?

You need to integrate two file:

  1. Gemfile: Which has all required Gems including Danger and Other linters.
  2. Dangerfile: It is a basic rule set file, which is written in Ruby DSL.
Add this two files to your project root directory itself and ensure it is also added to VCS. So that CI can have access to this files.

Now, from Github you need to generate Personal Access Token and add this token to your CI ENV variables and depend on CI add some script to execute danger.
After execution of danger as per coding norms you have provided if there are some Errors/Warning, DangerBot will comment on PR discussion.

Danger is designed to execute on Pull Requests only and it can’t execute on Single/Merge commits. So make sure your CI has write access to PR branches.
Danger comments on Github PR discussion.

You can use numbers on plugins to define your coding norms. You can even create your own plugin by following this simple steps. To integrate them just add it to your GemFile and you can use it to your Dangerfile. Like here in snippet I have use TODOist to warn me for left ToDo/fixme entries.

Here is code snippet from my danger file.

[@portabletext/react] Unknown block type "code", specify a component for it in the `components.types` prop
Buddybuild has an integration for Danger already built-in. What you need to do is to add your Gemfile and Dangerfile in repo and you should be all set-up. BuddyBuild Bot will comment on your PR discussion on behalf of Danger.

All the best 👍
Danger will hike your code quality to next level 😉

[@portabletext/react] Unknown block type "separator", specify a component for it in the `components.types` prop

SoluteLabs is a high-performance team of 25 focused on mobile and web design and development; we have produced top #10 chart topping applications on Android and iOS app stores, graphics that have gone viral and applications with Millions of downloads.

Read More Blogs