Commit graph

9 commits

Author SHA1 Message Date
26b6a3ea82 CI: pre-install NDK+CMake with retry (SDK mirror served a corrupt CMake zip)
All checks were successful
build-apk / build (push) Successful in 10m37s
v0.1.7 build failed on ':react-native-screens:configureCMake' —
ZipException "Archive is not a ZIP archive" from a truncated cmake;3.22.1
download. Install ndk+cmake up front and retry up to 3x, clearing the partial
dir between attempts so a bad download self-heals.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 18:42:56 -07:00
7212badd2d v0.1.5: detect free windows in the estimate fallback + add API tests
All checks were successful
build-apk / build (push) Successful in 49m41s
App:
- When the single-estimate fallback sees MaxTime 0 (or an all-$0.00 ladder),
  show "Parking is currently free" instead of a bogus $0.00 purchase ladder.
  Free-detection extracted to tested client helpers (isFreeEstimate/ladderAllFree).

Client + tests (node:test, zero deps):
- src/estimates.ts: pure isFreeEstimate/ladderAllFree helpers (exported).
- test/estimates + test/http (mocked fetch): headers, query serialization,
  error->ParkSmarterApiError, rolling Auth_Token refresh, 401 clears token.
- test/integration: live checks against the Sandpoint (DSB) zones; targets the
  `test` instance by default and SKIPS when it's unreachable (non-prod is
  IP-restricted -> 403). Verified 3/3 green against prodv2 read-only.
- CI runs `npm test` as a build gate.

Note: dev/stage/test instances return 403 "Web App - Unavailable" from the
public internet (IP-restricted). API schema is otherwise unchanged vs Jul 6.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 20:42:58 -07:00
30f32bc494 CI: force IPv4 on ALL build JVMs via JAVA_TOOL_OPTIONS
All checks were successful
build-apk / build (push) Successful in 16m15s
The refactor dropped the command-line -Djava.net.preferIPv4Stack from gradlew, so
artifact-transform/worker JVMs reverted to IPv6 and couldn't reach dl.google.com
("Network is unreachable"). JAVA_TOOL_OPTIONS is inherited by every spawned JVM.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 12:47:36 -07:00
ba3ae8b3e6 CI: dedicated cached runner for this repo (deploy script + volume caches)
- scripts/deploy-runner.sh: compose-managed BigBrainParking Forgejo runner
  (adapted from the Camp Scan one), with valid_volumes for bigbrainparking-gradle
  and bigbrainparking-npm. No android-sdk volume — the RN build image ships it.
- Workflow mounts those caches (GRADLE_USER_HOME + npm cache) and enables the
  Gradle build cache (org.gradle.caching + --build-cache), so repeat builds skip
  the dep re-download and recompile that dominate a cold ~35 min build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 11:05:35 -07:00
208cddee33 CI: cap Kotlin daemon heap (the real memory hog) + container swap off
Some checks are pending
build-apk / build (push) Waiting to run
Server report (20GB/4-core box) showed 3 Kotlin daemons at -Xmx5376m each + clang
swarm ~9GB thrashing swap. Cap kotlin.daemon.jvmargs and org.gradle.jvmargs to
1536m in gradle.properties, workers.max=2, no parallel. Container: --cpus=2
--memory=8g with swap disabled (--memory-swap==--memory) so it OOM-fails instead
of thrashing disk. Build now uses ~5GB.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 10:40:39 -07:00
0b8713790b CI: cap build resources so it can't starve the host
Container hard limits: --cpus=2 --memory=6g (Docker-enforced regardless of Gradle).
Gradle: -Xmx3g heap, --max-workers=2, no parallel project builds. Adjust the
--cpus/--memory to the server's size.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 10:37:20 -07:00
5d269bf2a3 Fix release signing in CI: anchor plugin regex to buildTypes release block
All checks were successful
build-apk / build (push) Successful in 35m3s
The signing plugin added a release{} inside signingConfigs{}, so the debug-line
replacement matched that block instead of the release BUILD TYPE — CI produced
debug-signed APKs (would break Obtainium updates vs the release-signed v0.1.0).
Anchor on `buildTypes { ... release {`. Verified locally: release buildType now
uses the release key when BBP_UPLOAD_* is set. Also unify keystore path via
github.workspace in both steps.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 19:49:37 -07:00
7970678b90 CI: force IPv4 for Gradle (runner container lacks IPv6 -> dl.google.com unreachable)
Some checks failed
build-apk / build (push) Failing after 53m53s
react-native-edge-to-edge's buildscript needs com.android.tools.build:gradle:8.1.1
from Google Maven; the runner's container has no IPv6 route so the AAAA lookup was
"Network is unreachable". Pass -Djava.net.preferIPv4Stack=true to Gradle.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 15:34:47 -07:00
3d1505d2e7 CI: move workflow to .forgejo/workflows; self-contained Forgejo release; bump 0.1.1
Some checks failed
build-apk / build (push) Failing after 10m45s
- .forgejo/workflows/build-apk.yml (Forgejo's location): on v* tag, build signed
  APK using the Actions secrets and publish via the Forgejo API (curl + auto token),
  no external action. Best-effort NDK install for the RN version.
- Remove the old .gitea workflow to avoid double runs.
- Bump app version to 0.1.1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 14:18:06 -07:00