@radhya/mach 2.0.33 → 2.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -14
- package/dist/index.js +174 -176
- package/docs/frameworks/react-native.md +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -36,7 +36,6 @@ mach build --platform android
|
|
|
36
36
|
| `mach build` | Start a cloud build (iOS / Android) |
|
|
37
37
|
| `mach maestro` | Queue managed Maestro tests for a build or artifact |
|
|
38
38
|
| `mach ota` | Setup, publish, list, rollback, and promote OTA updates |
|
|
39
|
-
| `mach update` | Deprecated alias for `mach ota publish` |
|
|
40
39
|
| `mach submit` | Submit to App Store or Google Play |
|
|
41
40
|
| `mach credentials` | Manage iOS certificates, provisioning profiles & Android keystores |
|
|
42
41
|
| `mach credentials:service` | Upload App Store Connect or Google Play service credentials |
|
|
@@ -149,6 +148,8 @@ For Expo apps, `mach ota setup` writes `ota` config and wires `@radhya/mach/expo
|
|
|
149
148
|
|
|
150
149
|
Command flags always win over config values. For example, `mach ota publish --channel staging --runtime-version 1.2.0` overrides `ota.channel` and `ota.runtimeVersion`.
|
|
151
150
|
|
|
151
|
+
Runtime version is the OTA compatibility boundary. Mach resolves Expo-style `appVersion`, `sdkVersion`, and `nativeVersion` policies, stores the resolved runtime on each build, and serves OTA updates only to matching platform/channel/runtime combinations.
|
|
152
|
+
|
|
152
153
|
Vanilla React Native uses the same command surface. The native OTA client and automatic native patching are intentionally guarded until the Mach RN client package is ready.
|
|
153
154
|
|
|
154
155
|
## Deep Links
|
|
@@ -218,7 +219,7 @@ mach agent uninstall
|
|
|
218
219
|
| `--local` | Run build on local machine |
|
|
219
220
|
| `--dry-run` | Generate build script without running it |
|
|
220
221
|
| `--simulator` | iOS Simulator build (no signing needed) |
|
|
221
|
-
| `--auto-version` | Force Android versionCode or iOS buildNumber
|
|
222
|
+
| `--auto-version` | Force Mach-managed Android versionCode or iOS buildNumber assignment |
|
|
222
223
|
| `--auto-submit` | Submit the successful build to App Store Connect or Google Play |
|
|
223
224
|
| `--verbose` | Enable detailed build logging |
|
|
224
225
|
| `--json-output` | Write build metadata (`buildId`, Dashboard URL, status) to a JSON file for CI/CD |
|
|
@@ -340,9 +341,9 @@ mach credentials:service --platform ios
|
|
|
340
341
|
|
|
341
342
|
The Dashboard also supports this under **Credentials → Android → package id → Service credentials**. Uploading a Google Play service key under `*` is legacy behavior; store submission now expects the service credential to match the Android package being submitted.
|
|
342
343
|
|
|
343
|
-
App Store Connect keys are used for iOS TestFlight submission
|
|
344
|
+
App Store Connect keys are used for iOS TestFlight submission. Mach stores the key id, issuer id, Apple Developer Team ID, and App Store Connect provider/team metadata so submit commands can run without Apple ID prompts.
|
|
344
345
|
|
|
345
|
-
Google Play service keys are only needed for store
|
|
346
|
+
Google Play service keys are only needed for Android store submission. They are not signing credentials. A dev package such as `com.example.app.dev` needs its own Google Play service key only if that exact package exists in Google Play and you submit that package.
|
|
346
347
|
|
|
347
348
|
## Configuration
|
|
348
349
|
|
|
@@ -403,12 +404,12 @@ Create a `mach.config.json` in your project root:
|
|
|
403
404
|
|
|
404
405
|
| Property | Description |
|
|
405
406
|
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
|
406
|
-
| `ios.bundleIdentifier` | iOS bundle ID used for signing,
|
|
407
|
+
| `ios.bundleIdentifier` | iOS bundle ID used for signing, version counter scoping, and submit |
|
|
407
408
|
| `ios.appleTeamId` | Optional global Apple Developer Team ID used for iOS signing. Profile-specific `submit.<profile>.ios.appleTeamId` overrides it |
|
|
408
|
-
| `ios.ascAppId` | App Store Connect app id
|
|
409
|
-
| `ios.buildNumber` | Set to `"auto"` to let Mach
|
|
410
|
-
| `android.package` | Android package name used for signing,
|
|
411
|
-
| `android.versionCode` | Set to `"auto"` to let
|
|
409
|
+
| `ios.ascAppId` | App Store Connect app id used for iOS submission |
|
|
410
|
+
| `ios.buildNumber` | Set to `"auto"` to let Mach assign the next iOS CFBundleVersion from its Dashboard counter |
|
|
411
|
+
| `android.package` | Android package name used for signing, version counter scoping, and submit |
|
|
412
|
+
| `android.versionCode` | Set to `"auto"` to let Mach assign the next Android versionCode from its Dashboard counter |
|
|
412
413
|
|
|
413
414
|
### Profile Properties
|
|
414
415
|
|
|
@@ -474,11 +475,11 @@ The keystore file and its passwords are stored encrypted in the Dashboard when m
|
|
|
474
475
|
|
|
475
476
|
## Automated Versioning
|
|
476
477
|
|
|
477
|
-
Mach can automatically
|
|
478
|
+
Mach can automatically assign the next Android `versionCode` and iOS `buildNumber` from Dashboard counters, then increment atomically so concurrent builds do not receive the same native version.
|
|
478
479
|
|
|
479
|
-
|
|
480
|
+
Counters are scoped by Android package name or iOS bundle identifier, so development, staging, and production apps can advance independently.
|
|
480
481
|
|
|
481
|
-
|
|
482
|
+
For existing apps already uploaded to App Store Connect or Google Play, seed the selected Dashboard environment once with the latest uploaded value (`BUILD_NUMBER` for iOS or `ANDROID_VERSION_CODE` for Android). Mach will assign the next value and continue from its own counter after that.
|
|
482
483
|
|
|
483
484
|
**Usage:**
|
|
484
485
|
|
|
@@ -494,9 +495,9 @@ Or in config:
|
|
|
494
495
|
"ios": { "buildNumber": "auto" }
|
|
495
496
|
```
|
|
496
497
|
|
|
497
|
-
When `android.versionCode` is set to `"auto"`, Mach
|
|
498
|
+
When `android.versionCode` is set to `"auto"`, Mach assigns an Android versionCode automatically for store builds. For internal builds, pass `--auto-version` when you also want Mach to assign a versionCode.
|
|
498
499
|
|
|
499
|
-
When `ios.buildNumber` is set to `"auto"`, Mach
|
|
500
|
+
When `ios.buildNumber` is set to `"auto"`, Mach assigns the next iOS CFBundleVersion from the scoped Dashboard counter. Concurrent builds are safe because the Dashboard API increments the counter atomically.
|
|
500
501
|
|
|
501
502
|
This only changes iOS `CFBundleVersion` / build number. It does not bump the public App Store version (`CFBundleShortVersionString`, usually `expo.version` in `app.json`). After a version like `1.17.0` is approved/released, Apple closes that train for new uploads; bump the app version, for example to `1.17.1`, rebuild, then submit.
|
|
502
503
|
|