- flash_system.sh: rename ota_tar -> system_tar (path is staged
release-artifacts/<sku>/system.tar, not output/image/update_ota.tar)
and only re-check device reachability after a --build, not on every
invocation.
- common.sh: add require_arg and prompt for SKU via normalize_system_sku
so aliases live in one place; align FLASH_SKU/SYSTEM_SKU precedence
between build_system.sh and flash_system.sh.
- check_device.sh (new): one wrapper around check_ping/check_ssh used
by both make check_device and direct CLI, removing the Makefile's
hardcoded ping -c 1 / root@ duplication.
- release_r2.sh, release_github.sh, run_e2e_tests.sh, build_system.sh,
flash_system.sh: route all value-taking options through require_arg
for consistent missing-arg errors.
* feat(release): ship update_sd.img.zip as SDMMC recovery artifact
The SDMMC update.img is a packed Rockchip update image, not a raw disk
image, so it can't be written to a microSD card. Publishing it next to
the real recovery zip just confuses users. Move SDMMC over to
update_sd.img.zip everywhere it's staged, uploaded, or attached:
- common.sh: add recovery_artifact_for_sku() and recovery_source_for_sku()
so all release scripts agree on which file is the per-SKU recovery
image and where it lives in the build output. Mirrors the
RECOVERY_ARTIFACT_BY_SKU map in cloud-api. Unknown SKUs fail loudly.
- build_system.sh: stage only the SKU's recovery artifact -- eMMC keeps
update.img, SDMMC ships update_sd.img.zip. update.img is still built
for SDMMC as a side effect; we just stop copying it into staging.
- release_r2.sh: validate/print/upload the SKU's recovery artifact, so
R2 receives system.tar + update_sd.img.zip (+ .sha256s) for SDMMC and
system.tar + update.img for eMMC.
- release_github.sh: drop update-sdmmc.img from the GitHub release
asset list (update_ota-sdmmc.tar and update_sd.img.zip stay).
Pairs with a cloud-api change that points
/releases/system_recovery/latest?sku=jetkvm-v2-sdmmc at the new zip.
* fix(release): propagate unknown-SKU failure from recovery_source_for_sku
recovery_source_for_sku embedded recovery_artifact_for_sku inside echo's
argument via $(...). On an unknown SKU the inner exit 1 only killed the
command-substitution subshell; echo still ran with a partial path and
returned 0, swallowing the intended hard failure and producing a bogus
path. Capture the artifact separately and propagate the non-zero status
so callers actually abort with the original error message.
update_app.sh now requires a SKU and downloads from
api.jetkvm.com/releases/app/latest?sku=<sku>, so SDMMC and EMMC builds
get the matching app binary instead of sharing one.
Build script downloads the binary inside each variant build, and CI
passes the SKU from the matrix.
* feat(release): add SKU system release flow
Build and stage both storage variants so releases can publish SKU-specific system OTA and recovery artifacts without changing existing EMMC asset names.
* fix(release): clean root-owned output between SKU builds
Mirror the top-level clean path before switching from SDMMC to EMMC so root-owned SDK output does not break the intermediate cleanup.
* fix(release): quiet noisy build steps
Move build cleanup into the build wrapper and capture verbose SDK output in release-artifacts logs while keeping wrapper progress and failure diagnostics visible.
* fix(release): address release script review findings
Preserve quiet build command failures and stage uniquely named GitHub assets before creating releases.
* feat(release): sign production OTA uploads
Require an approved signing key for production releases and publish a detached OTA signature to R2 while keeping dev uploads unsigned.
* ci: use ubuntu-latest runner
Switch the build workflow off the custom runner label so GitHub Actions uses the default hosted Ubuntu image.
* fix(release): check signing key before running release
Make the signing key verification a release prerequisite so production builds fail early and the release target stays consistent with its declared dependencies.
* fix(release): make OTA signing explicit
Keep production releases failing fast on missing GPG keys while making R2 upload signing an explicit script option.
Require JETKVM_REMOTE_HOST for E2E tests and pass it through to the kvm
repo's make test_e2e. Add check_device/check_remote Makefile targets that
verify ping+SSH before starting the build. Remove redundant `make frontend`
call (already done inside test_e2e). Show target device IP in flash output.
* build: bump version to 0.2.8
* Remove non-used script
* Add tests, dev and prod release scripts
* Refactor release process and update Makefile
- Updated Makefile to ensure `dev_release` and `release` targets check for existing GitHub releases and tags with the new naming convention `release/v<version>`.
- Modified `dev_release` to depend on `git_check_dev` and `test` targets.
- Removed obsolete `release_github.sh` and `release.sh` scripts, consolidating functionality into `release_r2.sh`.
- Adjusted build scripts to improve error handling and output consistency.
- Updated GitHub Actions workflow to trigger on pull requests instead of specific branches and tags.
* Release to r2 before making GH release
* Set BUILD_VERSION for the update and system images
* Better log msg
* Refactor build scripts to use variables for args