Github Actions (v2) でDanger + ktlintを実行させる

# はじめに

自分の環境でもようやくGithub ActionsのBetaが来たのでさっそく触ってみました。
Dangerを利用してプルリクエスト時に自動コードチェック出来るようにしていきます。

- 2019/9/24追記  
今までは利用申込みから使えるようになるまで数日のタイムラグがあったのですが9/19からすぐ使えるようになったようです。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">GitHub Actionsのベータ版がすぐに使えるようになりました！　今まではベータ版申込みから実際に使えるまでウェイトリストがありましたが、今週より申込みからすぐに使えるようになりました。お申込みはこちらから <a href="https://t.co/dZpwjKDnCc">https://t.co/dZpwjKDnCc</a></p>&mdash; GitHub Japan (@GitHubJapan) <a href="https://twitter.com/GitHubJapan/status/1174506573726531584?ref_src=twsrc%5Etfw">September 19, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# Github Actionsの設定ファイル
いきなり本題ですがGithub Actionsのymlファイルです。
[Danger自体の設定](https://qiita.com/tarumzu/items/2fc5b6fd4abbf4081f25#danger%E3%81%AE%E8%A8%AD%E5%AE%9A)と[ktlint自体の設定](https://qiita.com/tarumzu/items/2fc5b6fd4abbf4081f25#ktlint%E3%81%AE%E8%A8%AD%E5%AE%9A)は今回省略するので、知りたい方はそれぞれ左記のリンクを参照してください。

```yml:.github/workflows/ktlint.yml

name: CI
on:
  pull_request:
    branches:
    - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Setup ruby
        uses: actions/setup-ruby@v1
        with:
          ruby-version: '2.6'
          architecture: 'x64'
      - name: install danger
        run: |
          gem install bundler
          bundle install
      - name: run ktlintCheck
        run: ./gradlew ktlintCheck
      - name: run danger
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: danger
```

それでは設定ファイルの内容を順番に説明していきます。
まず、`on`に`pull_request`を指定することでターゲットブランチが`master`のプルリクエストを作成することでCIが走るようになっています。

```yml
on:
  pull_request: # ここをpushにするとpush時にCIが走る
    branches:
    - master
```

続いて`runs-on`で仮想環境のイメージを選択できます。現時点では下記の表の`Virtual environment`にあるようにWindows、Ubuntu、macOSと選択できます。

```yml
jobs:
  build:
    runs-on: ubuntu-latest
```
<img width="90%" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106116/7de2d786-fa59-6d28-221f-55c46e809b36.jpeg">

最後に`steps`です。処理の塊をActionと呼び、Actionは`uses`に設定することが出来ます。既に用意されているActionの一覧は[こちら](https://github.com/marketplace?type=actions)を参照してください。


```yml
    steps:
      - uses: actions/checkout@v1 # git checkoutしてくれるAction。
      - name: Setup ruby
        uses: actions/setup-ruby@v1 # ruby設定用のAction
        with:
          ruby-version: '2.6'
          architecture: 'x64'
      - name: install danger # dangerはrunでスクリプトを記述する
        run: |
          gem install bundler
          bundle install
      - name: run ktlintCheck # ktlintCheckを実行させる
        run: ./gradlew ktlintCheck
      - name: run danger
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        # GITHUB_TOKENがデフォで発行されるのでそれをdangerで利用する。
        # 環境変数についての詳しい話は↓参照
        # https://help.github.com/en/articles/virtual-environments-for-github-actions
        run: danger # dangerはgithub actionsに対応しているため実行するだけでOK！
```

なんと、、たったこれだけでプルリクで自動コードチェックが走りました。
自前でのGithubトークンの発行やbotアカウントの用意も不要です！

<img width="500px" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106116/82ed74dd-0ee5-890a-15fd-ee934b1f7338.jpeg">

非常に便利！
コードは[こちら](https://github.com/tarumzu/OCRSampleAndroid/blob/master/.github/workflows/ktlint.yml)に置いてあるので参考にどうぞ。