aether release
aether release <appName> <updateContentsPath> <targetBinaryVersion> [options]Uploads a file or a folder as a new release. Use this when you already have a built bundle; for React Native projects where the CLI should do the bundling, use aether release-react.
aether release MyApp ./build/CodePush 1.0.3 -d Productionaether release MyApp ./build/CodePush 1.0.3 -d Production -r 20targetBinaryVersion is a semver version or range (1.0.3, ~1.2.0, "*") that selects which app binaries receive the update.
| Flag | Alias | Default | Purpose |
|---|---|---|---|
--deploymentName |
-d |
Staging |
Deployment to release to. |
--description |
--des |
none | Change description, shown in history and to the SDK’s update dialog. |
--disabled |
-x |
false |
Upload without serving the release to any device. |
--mandatory |
-m |
false |
Mark the release mandatory. |
--noDuplicateReleaseError |
false |
Warn instead of failing when the package is identical to the latest release. | |
--privateKeyPath |
-k |
none | Sign the update contents before upload. See below. |
--rollout |
-r |
100% |
Percentage of devices eligible, 1 to 100. See staged rollout. |
--json |
off | Print the released package as JSON on the last stdout line. |
Code signing
Section titled “Code signing”With --privateKeyPath, the CLI writes a .codepushrelease signature into the folder before uploading, and the SDK rejects any update whose signature does not verify. Two rules come from how devices verify:
- The update contents must be a folder, not a single file.
- The folder must be named
CodePush. Devices look for the signature atCodePush/.codepushreleaseand hash file paths under aCodePush/prefix, so any other name fails verification after download. The CLI refuses to sign a folder with a different name.