Danger (JS) を GitHub Actions で導入する

結論

作成するファイルは以下の 2つ です。

  • .github/workflows/danger_js.yml
    • ファイル名は何でも良いです
    • 単独のファイルとして切り出さず、既存の yml に内容を追加しても大丈夫です
  • dangerfile.js

ファイルの内容

2つのファイルの内容は次のとおりです。

.github/workflows/danger_js.yml

name: Danger JS
on: [pull_request]

jobs:
  build:
    name: Danger JS
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Danger
      uses: danger/danger-js@11.0.2
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        DANGER_DISABLE_TRANSPILATION: true

上記のうち、細かいところは書き換えて OK です。

それにしても GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} が便利すぎます。

dangerfile.js

dangerfile.js の書式については 公式ドキュメント などが参考になります。もととなっている Dangerfile*1 の内容をいい感じに移植してもよいです。

サンプルは以下です。CHANGELOG.md が変更されていないと怒られるやつです。

const hasChangelog = danger.git.modified_files.includes('CHANGELOG.md')
const isTrivial = (danger.github.pr.body + danger.github.pr.title).includes(
  '#trivial'
)

if (!hasChangelog && !isTrivial) {
  warn('Please add a changelog entry for your changes.')
}

gyazo.com

GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} のおかげで別途何も設定せずに Pull Request のコメントを残してくれて大変に便利です。

注意点

1. DANGER_DISABLE_TRANSPILATION: true を設定する

GitHub Actions において、環境変数 DANGER_DISABLE_TRANSPILATION: true を設定しないと落ちます*2

この件については Issue が Open されています。

github.com

2. dangerfile.js は .ts だといろいろ怒られるので js でいい

公式サイトには .ts のパターンも書いてありますが、.js で十分だと思います。.ts にすると ts(2307) で怒られたりします。

*1:Ruby製

*2:2022年4月11日(月)現在

Powered by はてなブログ