Repository navigation
ci: submit Android release runtime dependencies to the dependency graph - #63
mattinannt wants to merge 1 commit into
Conversation
GitHub's dependency graph sees Pub packages from pubspec.lock but not the Maven artifacts behind the Flutter plugins' Android code, so Dependabot alerts never covered the native libraries apps built with the SDK pull in. - Dependency Submission workflow: resolve the playground app's releaseRuntimeClasspath with the Gradle dependency-submission action, fail instead of submitting an empty, partial or mis-attributed snapshot, keep the snapshot as a per-commit artifact, and submit it on the default branch. Runs on main pushes, weekly and on demand (dry run off the default branch). - Dependabot gradle entry and a Dependency Review check for Pub changes. - docs/DEPENDENCY_SECURITY.md: inventory, scope, how findings are handled. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TQhEETSsYBHyfowFNUmga6
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThe pull request adds weekly Gradle dependency updates and dependency review on pull requests. It also adds a workflow that generates, validates, archives, and conditionally submits an Android dependency snapshot. Documentation describes dependency coverage and finding triage, and Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to This change adds dependency scanning workflows and documentation without altering SDK runtime behavior. No merge-blocking issue was found; the new workflow and Dependabot behavior should be confirmed after the first runs on main. Pre-merge checks |
|



Summary
Addresses ENG-3869. GitHub's dependency graph reads Pub packages from
pubspec.lock, but not the Maven artifacts behind the Flutter plugins' Android code. Those are the native libraries an app built with the SDK pulls in (for exampleandroidx.webkitviawebview_flutter_android), and Dependabot alerts never covered them.dependency-submission.ymlresolves the playground app'sreleaseRuntimeClasspathwith the Gradle dependency-submission action and submits it to the dependency graph.mainpushes, weekly (keeps the graph fresh), and on demand. Dispatching from another branch is a dry run.androidx.webkit.dependency-snapshot-<sha>(90 days), so coverage is tied to the commit.gradleentry for plugin versions insettings.gradle.kts.dependency-review.yml: fails a PR that introduces a High/Critical vulnerability in Pub packages.docs/DEPENDENCY_SECURITY.md: inventory (SDK runtime, native, build/publish, playground), scope, how findings are handled, and limitations.Scope
Only the release runtime classpath is submitted. Gradle build tooling (Android Gradle Plugin internals, plugin classpaths) and debug/test scaffolding are deliberately excluded, so they raise no alerts. Measured locally at
7345fa5:androidx.webkit@1.15.0:app:dependencies --configuration releaseRuntimeClasspathThe published
formbrickspackage is Dart-only (noandroid/orios/), the release workflow does not run Gradle, and the playground ispublish_to: none. iOS uses Swift Package Manager and its plugins have no third-party native dependencies, so there is nothing to submit there. See the doc for how to widen the scope if build-environment exposure matters.Validation
actionlintis clean on the new workflows;dart formatand the Prettier check pass.androidx.webkit, and no snapshot.Dependency Submissionworkflow on GitHub Actions (it does not run on pull requests; a manual dispatch from this branch is a dry run), and whether Dependabot can evaluate the Gradle project withoutlocal.properties.Limitations (documented)
Dependency Reviewcovers Pub changes on PRs, not Gradle.pana,prettierand its npm tree, CI runner images.🤖 Generated with Claude Code
https://claude.ai/code/session_01TQhEETSsYBHyfowFNUmga6
Generated by Claude Code