DEV Community

Stefanni Brasil
Stefanni Brasil

Posted on

3 1

DangerJS with Github Actions

Have you ever had to comment on a PR 'Hey, you forgot to...' before? If so, DangerJS might be a good tool to add to your PR checks. I decided to give it a try at work after doing that myself a couple of times.

Note: Danger has plugins for Ruby, Python and Swift that you can use. But if you don't trust on using external images for your projects, you can follow this approach.

I really struggled with this part and the documentation wasn't so great. That's why I decided to share my experience. Hope you enjoy it!

Setup

First, you will need to create a Github action build file. Github Actions need to be placed in a workflow folder. Click here for more info about that.

name: Danger checks 🚧

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: "12.x"
      - name: Install yarn dependencies
        run: |
          yarn add danger --dev
          yarn danger init
          yarn danger ci --dangerfile ..your-repository/dangerfile.js
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Enter fullscreen mode Exit fullscreen mode
  • I am using a node Docker image to install yarn. Then I use yarn to run Danger.
  • Keep in mind that you need to add the GITHUB_TOKEN here, otherwise Danger won't comment your PR's.
  • It also won't comment if you just use push action to trigger this build. Danger is designed to only comment on a pull_request.

Now you just need to create your dangerfile.js in your directory. This is where you will add your checks. To test it, you can just comment a nice message:

import { danger, message, warn, fail } from "danger";

const your_file = danger.git.fileMatch("your_file_path")

if (your_file.edited) {
  message("Please write a data migration to run the changes")
}
Enter fullscreen mode Exit fullscreen mode

And that's it! You should have a new check on your Github Pull requests and a nice message on your PR.

Click here for more examples on how Dangerfile works.

Nice-to-do

  • Use just pull request action. Ideally this build would just need pull_request to detect new changes automatically?
  • Danger wasn't getting my dangerfile automatically so I had to pass my file path in the yarn danger run command. Maybe I was having another error and this is now working, but that's for later!

After putting some puzzles together, I have Danger setup now and hopefully you too. Let me know if you have any tips or feedback!

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more