Updates are agent steps: --yes ships an update of a live app (Play production, App Store submit / release) without an owner gate; the first release stays the owner's (exit 3 OWNER_STEP, --first-release); apple release is a ship step
This commit is contained in:
parent
c247b7e54a
commit
ae9d26d3f6
28 changed files with 562 additions and 44 deletions
|
|
@ -14,6 +14,7 @@ commands below keep their normal behaviour in a terminal; the contract switches
|
|||
| `storebound apple upload` | `upload` | `apple` |
|
||||
| `storebound apple submit` | `submit` | `apple` |
|
||||
| `storebound apple resubmit` | `resubmit` | `apple` |
|
||||
| `storebound apple release` (`--manual-release`) | `release` | `apple` |
|
||||
|
||||
A write still needs `--yes` in a pipeline: without it the confirmation is declined and the run ends with exit 3
|
||||
(`CONFIRMATION_REQUIRED`). `apple submit` without `--yes` is a dry run (exit 0, `state: "planned"`).
|
||||
|
|
@ -25,7 +26,7 @@ A write still needs `--yes` in a pipeline: without it the confirmation is declin
|
|||
| 0 | ok | - |
|
||||
| 1 | failure (build failed, network, timeout, blockers) | `FAILED`, `TIMEOUT`, `BLOCKERS` |
|
||||
| 2 | usage (unknown flag, bad value, bad `--version-from` / `--env-file`) | `USAGE`, `ENV_FILE` |
|
||||
| 3 | needs the owner | `AGREEMENT_PENDING`, `SIGN_IN_REQUIRED`, `COMPLIANCE_ANSWER_MISSING`, `CONSOLE_STEP`, `CONFIRMATION_REQUIRED` |
|
||||
| 3 | needs the owner | `AGREEMENT_PENDING`, `SIGN_IN_REQUIRED`, `COMPLIANCE_ANSWER_MISSING`, `CONSOLE_STEP`, `CONFIRMATION_REQUIRED`, `OWNER_STEP` |
|
||||
| 4 | the store refused it (4xx answer, ITMS error, invalid build, rejected upload) | `STORE_REFUSED`, `BUILD_INVALID` |
|
||||
| 7 | nothing to do: the build / release is on the store already (the result names what is there) | - |
|
||||
|
||||
|
|
@ -37,6 +38,31 @@ Console API access, Data safety, Content ratings, Publishing overview). The link
|
|||
Note: `apple upload` and `apple testflight wait` keep their old exit 7 for a processing timeout when the contract is
|
||||
off; under the contract a timeout is exit 1 `TIMEOUT` and an invalid build exit 4 `BUILD_INVALID`.
|
||||
|
||||
## Updates and first releases
|
||||
|
||||
The production and review steps (`play upload --track production`, `play release --production completed|inProgress`,
|
||||
`apple submit`, `apple resubmit`, `apple release --manual-release`) read from the store whether this is an **update** of
|
||||
an app that is already live or its **first release** (Play: the production track holds a completed / inProgress / halted
|
||||
release; App Store: a version of the platform is or was on sale; `cli/lib/release-kind.ts`). The result carries
|
||||
`releaseKind`.
|
||||
|
||||
- Update: `--yes` is all it takes. No owner gate, no bypass mode needed ([docs/bypass.md](bypass.md)).
|
||||
- First release with `--yes`: exit 3, `error.code` `OWNER_STEP`, message "first release of this app ... the owner
|
||||
approves it once", `error.consoleUrl` the page where the owner acts, nothing written. After the owner's yes: re-run
|
||||
with `--first-release` (or bypass mode on).
|
||||
- Already on the store (the versionCode on production with that status, the version submitted or released): exit 7,
|
||||
nothing sent.
|
||||
|
||||
```sh
|
||||
# Android production update
|
||||
storebound play release build/android/app.aab --production completed --yes --json --result-file out/release.json --env-file /run/secrets/ship.env
|
||||
# (or a staged rollout: --production inProgress --fraction 0.05 --yes)
|
||||
# iOS update: attach the uploaded build, submit, and later release the approved version
|
||||
storebound apple submit --build 42 --yes --json --result-file out/submit.json --env-file /run/secrets/ship.env
|
||||
storebound apple release --manual-release --yes --json --result-file out/release.json --env-file /run/secrets/ship.env
|
||||
case $? in 0|7) ;; 3) echo "owner: $(jq -r .error.consoleUrl out/release.json)"; exit 1 ;; *) exit 1 ;; esac
|
||||
```
|
||||
|
||||
## `--json`: one final line
|
||||
|
||||
stdout carries exactly one line, at the end, also on failure:
|
||||
|
|
@ -104,6 +130,7 @@ Reads the version and build for the step. Accepted shapes:
|
|||
- `play release`: every track already holds the same release: exit 7, nothing committed.
|
||||
- `apple submit`: the version is already submitted (or further) with this build, or the submission is in review:
|
||||
exit 7.
|
||||
- `apple release --manual-release`: the version is released (`READY_FOR_SALE` ...) and none waits for release: exit 7.
|
||||
|
||||
## `storebound status`
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue