{"meta":{"title":"GitHub Actions での Dependabot のトラブルシューティング","intro":"この記事では、DependabotでGitHub Actionsを使用するときに発生する可能性がある問題のトラブルシューティング情報を提供します。","product":"セキュリティとコードの品質","breadcrumbs":[{"href":"/ja/code-security","title":"セキュリティとコードの品質"},{"href":"/ja/code-security/reference","title":"リファレンス"},{"href":"/ja/code-security/reference/supply-chain-security","title":"サプライ チェーンのセキュリティ"},{"href":"/ja/code-security/reference/supply-chain-security/troubleshoot-dependabot","title":"Dependabot のトラブルシューティング"},{"href":"/ja/code-security/reference/supply-chain-security/troubleshoot-dependabot/dependabot-on-actions","title":"アクションに依存する"}],"documentType":"article"},"body":"# GitHub Actions での Dependabot のトラブルシューティング\n\nこの記事では、DependabotでGitHub Actionsを使用するときに発生する可能性がある問題のトラブルシューティング情報を提供します。\n\n## Dependabotが既存のワークフローをトリガーするときのエラーのトラブルシューティング\n\nDependabotのGitHub.com更新プログラムを設定すると、既存のワークフローがDependabot イベントによってトリガーされたときにエラーが発生する場合があります。\n\n既定では、GitHub Actions、Dependabot、`push`、または `pull_request` イベントからの `pull_request_review` によってトリガーされる `pull_request_review_comment` ワークフロー実行は、リポジトリのフォークから開かれた場合と同様に扱われます。 他のアクターによってトリガーされるワークフローとは異なり、これは読み取り専用の `GITHUB_TOKEN` を受け取り、通常使用できるシークレットにはアクセスできないことを意味します。 これにより、リポジトリに書き込もうとするワークフローは、 Dependabotによってトリガーされたときに失敗します。\n\nこの問題を解決するには、次の 3 つの方法があります。\n\n1. Dependabotのような式を使用して、ワークフローを`if: github.actor != 'dependabot[bot]'`によってトリガーされないように、ワークフローを更新できます。 詳しくは、「[ワークフロー内とアクション内で式を評価する](/ja/actions/reference/workflows-and-actions/expressions)」をご覧ください。\n2. ワークフローを変更して、このような制限がない `pull_request_target` を含む 2 段階のプロセスを使用できます。 詳しくは、「[GitHub Actions での Dependabot のトラブルシューティング](/ja/code-security/reference/supply-chain-security/troubleshoot-dependabot/dependabot-on-actions)」をご覧ください。\n3. シークレットへのアクセスを Dependabot してトリガーされるワークフローを提供し、 `permissions` 用語で `GITHUB_TOKEN`の既定のスコープを増やすことができます。\n\nこの記事では、いくつかのトラブルシューティングに関するアドバイスを提供します。 「[GitHub Actions　のワークフロー構文](/ja/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idpermissions)」も参照してください。\n\n### シークレットにアクセスする\n\nDependabot イベントがワークフローをトリガーする場合、ワークフローで使用できるシークレットはDependabotシークレットだけです。\nGitHub Actions シークレットは **使用できません**。 そのため、 Dependabot イベントによってトリガーされるワークフローによって使用されるシークレットを Dependabot シークレットとして格納する必要があります。 詳細については、「[Dependabot のプライベート レジストリへのアクセスの構成](/ja/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configure-access-to-private-registries#storing-credentials-for-dependabot-to-use)」を参照してください。\n\nDependabot シークレットは `secrets` コンテキストに追加され、 GitHub Actionsのシークレットとまったく同じ構文を使用して参照されます。 詳細については、「[GitHub Actions でのシークレットの使用](/ja/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#using-secrets-in-a-workflow)」を参照してください。\n\nDependabotや他のアクターによってトリガーされるワークフローがある場合、最も簡単な解決策は、アクションと同じ名前のDependabot シークレットに必要なアクセス許可を持つトークンを格納することです。 その後、ワークフローには、これらのシークレットへの 1 回の呼び出しを含めることができます。\nDependabotのシークレットの名前が異なる場合は、条件を使用して、使用するアクターごとに適切なシークレットを指定します。\n\n条件を使う例については、「[GitHub ActionsでのDependabotの自動化](/ja/code-security/tutorials/secure-your-dependencies/automate-dependabot-with-actions)」を参照してください。\n\nユーザー名とパスワードを使用して AWS 上のプライベート コンテナー レジストリにアクセスするには、ワークフローに `username` と `password` のシークレットを含める必要があります。\n\nこの例では、Dependabotがワークフローをトリガーするときに、Dependabotと`READONLY_AWS_ACCESS_KEY_ID`の名前を持つ`READONLY_AWS_ACCESS_KEY` シークレットが使用されます。 別のアクターでワークフローがトリガーされる場合は、それらの名前を持つアクション シークレットが使用されます。\n\n```yaml copy\n# このワークフローはGitHubによって認定されていないアクションを使用します。\n# それらはサードパーティによって提供され、\n# 別個の利用規約、プライバシーポリシー、\n# ドキュメントを参照してください。\nname: CI\non:\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n\n      - name: Login to private container registry for dependencies\n        uses: docker/login-action@3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c\n        with:\n          registry: https://1234567890.dkr.ecr.us-east-1.amazonaws.com\n          username: ${{ secrets.READONLY_AWS_ACCESS_KEY_ID }}\n          password: ${{ secrets.READONLY_AWS_ACCESS_KEY }}\n\n      - name: Build the Docker image\n        run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)\n```\n\n### `GITHUB_TOKEN` アクセス許可の変更\n\n既定では、GitHub ActionsによってトリガーされるDependabotワークフローは、読み取り専用アクセス許可を持つ`GITHUB_TOKEN`を取得します。 ワークフローで `permissions` キーを使用すると、トークンのアクセスを増やすことができます。\n\n```yaml copy\nname: CI\non: pull_request\n\n# Set the access for individual scopes, or use permissions: write-all\npermissions:\n  pull-requests: write\n  issues: write\n  ...\n\njobs:\n  ...\n```\n\n詳細については、「[ワークフローでの認証に GITHUB\\_TOKEN を使用する](/ja/actions/tutorials/authenticate-with-github_token#modifying-the-permissions-for-the-github_token)」を参照してください。\n\n## 手動でのワークフローの再実行\n\nDependabot ワークフローを手動で再実行すると、再実行を開始したユーザーの権限が異なる場合でも、以前と同じ特権で実行されます。 詳細については、「[ワークフローとジョブの再実行](/ja/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs)」を参照してください。"}