From d7bc4fdbda1623b918ee324ced5f3a3480f2ad59 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Thu, 20 May 2021 02:12:18 -0700 Subject: [PATCH] Add Danger CI check for changelog entries This commit adds Danger via GitHub Actions. Dangerfiles are ruby files that have a DSL for interacting with GitHub. They can do arbitrary things. See: https://danger.systems/reference.html The point of this commit is to automate the process of asking people to update the changelog. This is a really really annoying thing that we have to do too often. Editing a pull request will automatically re-run the check. Truly trivial commits can be marked as trivial easily by using the hashtag trivial in the PR body. This is really just useful for actually trivial things. Most commits actually do need to have associated changelog entries. --- .github/workflows/danger.yml | 21 +++++++++++++++++++++ Dangerfile | 12 ++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 .github/workflows/danger.yml create mode 100644 Dangerfile diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml new file mode 100644 index 00000000..d833c364 --- /dev/null +++ b/.github/workflows/danger.yml @@ -0,0 +1,21 @@ +name: Danger +on: + workflow_dispatch: + pull_request: + types: [synchronize, edited, opened, reopened] +jobs: + run: + name: Run danger checks + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 100 + submodules: 'recursive' + - name: Install danger + run: | + sudo gem install danger + - name: Run danger + env: + DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: danger diff --git a/Dangerfile b/Dangerfile new file mode 100644 index 00000000..5e637670 --- /dev/null +++ b/Dangerfile @@ -0,0 +1,12 @@ +def changelog_was_not_updated? + !git.modified_files.include? "CHANGELOG.md" +end + +def complicated? + !github.pr_body.include? "#trivial" +end + +if changelog_was_not_updated? && complicated? + fail "You need to update the changelog. Your pull request will not be merged until this is done." + markdown "ProTip: Even if you think something is super simple, it should be in the changelog. Literally the only exception to this rule is if your commit isn't touching code." +end