Dependabot を使う場合、Error: 403 "Resource not accessible by integration"
が表示されることがあります。
Dependabotは、ワークフローの実行をトリガーする際に信頼できないと見なされ、ワークフローは読み取りのみのスコープで実行されます。 ブランチに対するcode scanningの結果をアップロードするには、通常 security_events: write
スコープが必要になります。 ただし、pull_request
イベントによってアクションの実行がトリガーされると、code scanningで常に結果のアップロードが許可されます。 そのため、Dependabot ブランチでは push
イベントの代わりに pull_request
イベントを使用することをお勧めします。
シンプルなアプローチは、このブランチ群に対してオープンされたPull Requestとともに、デフォルトブランチやその他の重要な長時間実行されるブランチに対するプッシュで実行することです。
on:
push:
branches:
- main
pull_request:
branches:
- main
別のアプローチは、Dependabotブランチを除くすべてのプッシュに対して実行することです。
on:
push:
branches-ignore:
- 'dependabot/**'
pull_request:
既定のブランチでも分析が失敗する
CodeQL 分析ワークフローが、既定のブランチに作成されたコミットでそれでも失敗する場合は、次を確認する必要があります。
- Dependabotがそのコミットを作成したか
- コミットを含む pull 要求が
@dependabot squash and merge
を使用してマージされたかどうか
この種のマージコミットはDependabotによって作成されるので、このコミットで実行されるワークフローは読み取りのみの権限を持つことになります。 code scanningと Dependabot のセキュリティ更新またはバージョン更新をリポジトリで有効化した場合は、Dependabot の @dependabot squash and merge
コマンドは使用しないことをお勧めします。 代わりに、リポジトリで自動マージを有効にすることができます。 つまり、必要なすべてのレビューが満足され、状態チェックに合格すると、pull request は自動的にマージされます。 自動マージの有効化方法について詳しくは、「プルリクエストを自動的にマージする」をご覧ください。