Repository navigation
SDK check: treat an empty <codename> as stable; tag images with build-tools - #87
Conversation
…-tools Stable platforms since android-37.0 carry an empty <codename></codename> in Google's repository manifest, so is_preview() skipped every 37.x and the image stayed on platform 36.1. Only a non-empty codename marks a preview now. deploy also publishes <runner>-jdkNN-sdkX.Y-btX.Y.Z-ndkX.Y.Z so consumers can let Renovate derive compileSdk, buildToolsVersion and ndkVersion from the image pin; the existing -sdk-ndk tag is kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🔵 Needs a closer look
The preview-detection change drives an automated workflow that commits Dockerfile updates and auto-merges, and it relies on an external-manifest heuristic (empty codename = stable) that cannot be verified in this environment, so human review is warranted.
1 open finding
What changed in this PR
This PR fixes the SDK auto-update check so the image stops being pinned to platform 36.1. Stable Android platforms since android-37.0 ship an empty <codename></codename> in Google's repository2-3.xml, but is_preview() treated any codename element as a preview and skipped them. The check now only flags a package as a preview when the codename is non-empty. Separately, deploy.yml publishes a new fully-pinned tag that also encodes the build-tools version, letting consumers have Renovate derive Gradle compileSdk/buildToolsVersion/ndkVersion from one image pin, and the README documents the expanded tag scheme.
Changes:
- Treat an empty
<codename>as stable in the SDK preview-detection logic. - Extract
BUILD_TOOLSindeploy.ymland publish a new-sdk-bt-ndktag (keeping the existing-sdk-ndktag). - Document both longer tag formats in the README.
| File | Description |
|---|---|
.github/workflows/check-sdk-updates.yml |
Only non-empty <codename> marks a preview; comment updated to explain the empty-codename stable marker. |
.github/workflows/deploy.yml |
Reads ARG BUILD_TOOLS, validates it, exposes build_tools, and adds the new -bt- tag. |
README.md |
Adds table rows and prose for the -ndk and -bt-ndk tag formats. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Description
Why the image is stuck on platform 36.1: stable platforms since
android-37.0carry an empty<codename></codename>inrepository2-3.xml.is_preview()returned true for anycodenameelement, so every stable 37.x (37.0,37.1,37.2) was skipped. Only a non-empty codename (DEV,CinnamonBun, …) marks a preview now. Against today's manifest the check resolves platform37.2, build-tools37.0.0, NDK30.0.16248370.New tag:
deploy.ymlalso publishes<runner>-jdkNN-sdkX.Y-btX.Y.Z-ndkX.Y.Z. Consumers can then have Renovate derive GradlecompileSdk,buildToolsVersionandndkVersionfrom the image pin. When those match what the image ships, AGP stops downloading SDK components into the container on every job. The existing-sdk-ndktag is kept for consumers already parsing it. The README tag table documents both.Testing
is_preview/latest()logic against the live manifest: it picks37.2 / 37.0.0 / 30.0.16248370.deploy.ymlchange is only tag metadata. It is exercised on the next push tomain.Additional Notes
Consumer side: BumpApp/bump PR adding Renovate managers for the
-sdkand-bttag parts.🤖 Generated with Claude Code