dependabotの作成したPRを自動でGithubのプロジェクトボードに追加する


概要

dependabot が自動でプルリクエストを作成してくれる機能は素晴らしいですね。

ただ、開発で Github のプロジェクトボードを利用している場合には、
下記のようなことを思います。

  • dependabot が作ったプルリクエストを手動でプロジェクトボードに追加しているけど、作業が面倒・・・
  • プルリクエストを作ったら、自動的にプロジェクトボードに追加しておいてほしい

これを解決する Github Actions があったので、設定方法を紹介します。
記事の最後に参考リンクをいくつか貼りましたので、そちらも参照ください。

設定方法

今回は、Create or Update Project Card というアクションを利用します。
念のため、dependabot の自動プルリクエスト作成の設定方法も記載します。

Create or Update Project Card を導入

今回は、下記の Action を利用します。
色々なリポジトリやユーザー、組織などに所属するプロジェクトボードを指定してカードが追加できるので、この Action にしました。

アクセストークンの設定

プロジェクトボードにプルリクエストのカードを追加するために、
リポジトリからプロジェクトボードにアクセスできるアクセストークンを作成する必要があります。
※複数名で開発している場合、アクセストークンを追加しても問題ないかをメンバーに確認するようにしましょう。

  1. 下記にアクセスして、アクセストークンを作成してください。
    • プロジェクトボードにアクセスする権限のあるユーザーでログインしている必要があります。
    • https://github.com/settings/tokens/new
    • repoadmin:orgの権限が必要(下記の画像のようになります。)
  2. 先ほど作成したアクセストークンを、リポジトリのシークレットに追加します。

YAML ファイル追加

.github/workflows に、下記の YAML ファイルを追加します。
下記のようなプロジェクトボードやリポジトリという設定で、サンプルの YAML ファイルを作成しました。

  • プロジェクトボードのある場所の名前: TestUser
    • リポジトリやユーザー、組織名等を指定
    • デフォルトはこの YAML ファイルがあるリポジトリのプロジェクトボードが指定される
  • プロジェクトボードの名前: サンプルプロジェクト
  • プルリクエストを追加したいカードの名前: To do
.github/workflows/dependabot-pulls-todo.yml
name: Move dependabot pull requests into To do

on:
  pull_request_target:
    types: [opened]

jobs:
  automate-project-columns:
    runs-on: ubuntu-latest
    steps:
      - uses: peter-evans/create-or-update-project-card@v1
        with:
          project-location: TestUser
          project-name: サンプルプロジェクト
          column-name: To do
          issue-number: ${{ github.event.number }}
          token: ${{ secrets.GHPROJECT_TOKEN }}

試しにプルリクエストを作成してみてください。
ワークフローの実行が成功すれば、
作成したプルリクエストはプロジェクトボードに追加されます。

「dependabot が作成したプルリクエストのときだけ」ジョブを動かしたい

今のままだと、誰がプルリクエストを作成してもアクションが動いてプルリクエストがプロジェクトボードに追加されてしまいます。
「dependabot が作成したときだけ」 という制限をつけます。

.github/workflows/dependabot-pulls-todo.yml
 jobs:
   automate-project-columns:
     runs-on: ubuntu-latest
+    if: ${{ github.actor == 'dependabot[bot]' }}
     steps:
       - uses: peter-evans/create-or-update-project-card@v1
         with:

dependabot の自動プルリクエスト作成導入

dependabot の自動プルリクエスト作成導入は、
今回ワークフローを追加したリポジトリに .github/dependabot.yml を追加するだけです。
今回は一般的なRailsアプリケーションを想定して、
「週に 1 回、gem のバージョンアップをチェックする」という設定を追加します。

.github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "bundler"
    directory: "/"
    schedule:
      interval: "weekly"

これで、更新の必要な gem がある場合はプルリクエストが自動的に作成されます。

先ほど追加したワークフローがあるので、
dependabot が作成したプルリクエストは、自動的にプロジェクトボードに追加されます。

おわりに

際限なくなんでも面倒だと思ってしまうのはどうにかした方がいいような気もするのですが、
便利にできるところはやっぱり便利にしたいですね

参考サイト・記事