Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となりました: 2024-09-25. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

GitHub ActionsでのDependabotの自動化

GitHub Actionsを使って一般的なDependabot関連のタスクを自動化する例。

この機能を使用できるユーザーについて

書き込み アクセスを持つユーザー

GitHub Actions を使うと、依存関係を更新する pull request が Dependabot によって作成されたときに自動タスクを実行することができます。 これは次のような場合に便利です。

  • Dependabot pull request (バージョン更新プログラムとセキュリティ更新プログラム) が、ラベル、名前、レビュー担当者など、作業プロセスに適したデータを使って作成されていることを確認する。

  • Dependabot pull request (バージョン更新プログラムとセキュリティ更新プログラム) をレビュー プロセスに送信するか、自動的にマージするワークフローをトリガーする。

Note

この機能を使用するには、サイト管理者が お使いの GitHub Enterprise Server インスタンスの Dependabot updatesを設定する必要があります。 詳しくは、「エンタープライズ向けの Dependabot の有効化」をご覧ください。

Enterprise 所有者が Enterprise レベルでポリシーを設定している場合、Dependabot updates を有効または無効にできない場合があります。 詳しくは、「エンタープライズのコード セキュリティと分析のためのポリシーの適用」をご覧ください。

Dependabot及びGitHub Actionsについて

依存関係を最新の状態に保つために、Dependabot によって pull request が作成されます。 GitHub Actions を使うと、これらの pull request の作成時に自動タスクを実行できます。 たとえば、追加の成果物をフェッチする、ラベルを追加する、テストを実行する、pull request を変更するなどです。

Dependabot は、pull request とコメントで GitHub Actions ワークフローをトリガーできます。ただし、特定のイベントは異なる方法で処理されます。詳細については、「GitHub Actions での Dependabot のトラブルシューティング」を参照してください。

ここでは、GitHub Actions を使って自動化できる pull request の一般的なシナリオをいくつか示します。

Pull request に関するメタデータをフェッチする

ほとんどの自動化では、pull request の内容に関する情報 (依存関係の名前、運用依存関係かどうか、更新プログラムがメジャー、マイナー、パッチのいずれであるか) を把握する必要があります。 アクションを使うと、Dependabot で生成された pull request によって更新された依存関係に関する情報を取得できます。

例:

YAML
name: Dependabot fetch metadata
on: pull_request

permissions:
  pull-requests: write
  issues: write
  repository-projects: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      # The following properties are now available:
      #  - steps.metadata.outputs.dependency-names
      #  - steps.metadata.outputs.dependency-type
      #  - steps.metadata.outputs.update-type

詳細については、dependabot/fetch-metadata リポジトリを参照してください。

Pull request にラベルを付ける

GitHub ラベルに基づく他の自動化またはトリアージ ワークフローがある場合は、提供されたメタデータに基づいてラベルを割り当てるアクションを構成できます。

すべての運用依存関係の更新にラベルを付ける例:

YAML
name: Dependabot auto-label
on: pull_request

permissions:
  pull-requests: write
  issues: write
  repository-projects: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Add a label for all production dependencies
        if: steps.metadata.outputs.dependency-type == 'direct:production'
        run: gh pr edit "$PR_URL" --add-label "production"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}

Pull request を自動的に承認する

ワークフローで GitHub CLI を使うと、Dependabot pull request を自動的に承認できます。

例:

YAML
name: Dependabot auto-approve
on: pull_request

permissions:
  pull-requests: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Approve a PR
        run: gh pr review --approve "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}

Pull request 上で自動マージを有効にする

メンテナが特定の pull request に自動マージのマークできるようにする場合は、GitHub の自動マージ機能を使用できます。 これにより、ブランチ保護ルールで必要なすべての必須テストと承認が正常に満たされた場合に、pull request がマージされます。

詳細については、「プルリクエストを自動的にマージする」および「ブランチ保護ルールを管理する」を参照してください。

代わりに、GitHub Actions と GitHub CLI を使用できます。 すべてのパッチ更新プログラムを my-dependency に自動マージする例を次に示します。

YAML
name: Dependabot auto-merge
on: pull_request

permissions:
  contents: write
  pull-requests: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Enable auto-merge for Dependabot PRs
        if: contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'
        run: gh pr merge --auto --merge "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}

Note

pull request のテストにステータス チェックを使用する場合、Dependabot pull request のターゲット ブランチで [Require status checks to pass before merging] を有効にする必要があります。 このブランチ保護ルールにより、必須のステータス チェックにすべて合格しない場合、pull request はマージされません。 詳しくは、「ブランチ保護ルールを管理する」をご覧ください。

失敗したワークフロー実行を調査する

ワークフローの実行が失敗した場合は、以下をチェックしてください。

  • 適切なアクターがトリガーした場合にのみワークフローを実行しているか。
  • pull_request に対する正しい ref をチェックアウトしています。
  • シークレットは、GitHub Actions シークレットとしてではなく、Dependabot シークレットで使用できます。
  • 適切なアクセス許可を持つ GITHUB_TOKEN があります。

GitHub Actions の作成とデバッグに関する情報については、「ワークフローの書き込み」を参照してください。

ワークフローに関する issue を解決するためのその他のヒントについては、「GitHub Actions での Dependabot のトラブルシューティング」を参照してください。