Repository navigation
Conversation
…riant - matrix.json: JDK 17/21/25/27 (LTS + latest), Node 22/24 - build.yml: gha cache per platform, 45 min timeouts, wider shellcheck, docker compose config, image smoke test on the default amd64 leg - deploy.yml: gha cache per platform, timeouts, publish runner-ndk for the default pair - check-sdk-updates.yml: App token so PR CI runs, auto-merge, LTS-aware JDK retention, fix stable platforms (empty <codename>) being treated as previews Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
|
folded into the combined refactor PR |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Workstream W2 (CI). Cuts the matrix, adds layer caching and an image smoke test, publishes the NDK variant, and makes the SDK-update PR actually run CI and merge itself.
Leg counts (before → after)
runner-ndk= 18Verified by running the workflows' own
jqexpressions againstmatrix.json.Changes
17, 21, 25, 27(LTS + latest), default 27; Node22, 24, default 24.type=ghacache per platform (PR build matrix has no Docker layer cache — every JDK×Node leg rebuilds shared base layers from scratch #15);timeout-minutes(45 build, 10 scripts, 5 others);shellcheck -x *.sh hosts/*.sh tests/*.shwith nullglob so an emptyhosts/*.shis fine;docker compose config -qusing.env.example; smoke step on the default amd64 leg (load: true, thentests/image-smoke.sh). The generictests/*.shloop skipsimage-smoke.sh(it needs an image).--entrypoint bashand checksjava -version(+ expected major),JAVA_HOMEJDK,node -v(+ major),sdkmanager --list_installedshowsplatforms;andbuild-tools;, andxxd,flock,jq,git.timeout-minutes; default builds usetarget: runner;runner-ndkpublished for the default JDK/Node pair on both arches with tagsndkand<runner_version>-jdk<j>-sdk<s>-node<n>-ndk. Digest artifacts are now named per variant so the std and ndk merges can't pick up each other's digests.provenance: falseand the digest/merge flow are kept.actions/create-github-app-token@v3(owner/repo from the context), uses it for checkout/push andgh pr create, thengh pr merge --auto --squash. Stale comment removed; workflowpermissionsreduced tocontents: read(Image matrix & contents: 28 images per deploy, non-LTS JDKs, NDK nobody uses, compileSdk 37 not baked, SDK-update PRs never trigger CI #17.3).v >= 17 && (v-17) % 4 == 0. Checked:+28→17,21,25,28;+29→17,21,25,29.repository2-3.xml, stable platforms (37.0, 37.1, 37.2, 36.1…) carry an empty<codename></codename>; previews carry text (DEV,CinnamonBun).is_previewrejected any<codename>element. It now only counts a non-empty one. Run against the live manifest, detection returns platform 37.2, build-tools 37.0.0, NDK 30.0.16248370 (Dockerfile hasCOMPILE_SDK=36.1, so the next weekly run will propose 37.2).chore(deps): …."$GITHUB_OUTPUT"/ grouped redirects so actionlint is clean.Required before merge / for the update workflow
APP_IDandAPP_PRIVATE_KEY(org GitHub App). The App needs Contents: write and Pull requests: write on this repo; the token is requested with exactly those.app-idis deprecated in favour ofclient-idin create-github-app-token v3 (still works; warning only).All builds passedcheck onmain, otherwisegh pr merge --autoerrors or merges unchecked.Merge order
W1 (Dockerfile) before W2.
deploy.ymlbuildstarget: runner-ndk, which only exists after W1; without it the deploy's NDK legs fail (the std legs are unaffected). The PR smoke step usestarget: runner(the default last stage), which exists today.Verification
actionlint .github/workflows/*.yml: cleanshellcheck -x *.sh hosts/*.sh tests/*.sh(nullglob): cleandocker compose config -qwith.env.example: okjqmatrix expressions: counts aboveimage-smoke.shnegative path exercised (fails and exits 1 on an unrelated image). Not run against a real built runner image (no local build); the first PR CI run on the amd64 default leg is the real test. It assumesANDROID_SDK_ROOTis set in the final image (it is today).Notes
mode=maxcache manifest, so hit rate depends on W1 making the SDK layers JDK-independent. The GHA cache has a 10 GB repo limit.🤖 Generated with Claude Code