mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 18:19:43 +00:00
docs(release): require upload confirmation
This commit is contained in:
1 parent
22871d037c
commit
440f224095
2 files changed
+69
-8
No files matched your search
@@ -19,8 +19,40 @@ so routine release builds must package those checked-in sources. Do not run
|
|||||||
|
|
||||||
Use the package scripts in `apps/mobile/package.json`; they create artifacts only.
|
Use the package scripts in `apps/mobile/package.json`; they create artifacts only.
|
||||||
Never infer upload or submission authority from build authorization. Store upload
|
Never infer upload or submission authority from build authorization. Store upload
|
||||||
uses a separately authorized command. Preserve platform signing and local EAS
|
uses a separately authorized command.
|
||||||
versioning. After a build, verify that tracked changes are limited to the expected
|
|
||||||
version metadata, then independently read the artifact version and signature.
|
## Upload authorization gate
|
||||||
Report the artifact, version/build number, upload result when authorized, and
|
|
||||||
read-back state.
|
After an artifact passes verification, stop immediately before the external
|
||||||
|
upload and ask the user for confirmation. The request must identify:
|
||||||
|
|
||||||
|
- the platform, exact artifact path, bundle/package identifier, public version,
|
||||||
|
build number, signature identity, and SHA-256 digest;
|
||||||
|
- the exact destination and resulting state: Google Play internal-track draft or
|
||||||
|
App Store Connect/TestFlight processing;
|
||||||
|
- that the upload does not authorize a public rollout or App Review submission.
|
||||||
|
|
||||||
|
For iOS, inspect the current App Store Connect automatic-distribution behavior
|
||||||
|
before asking. If the build would be distributed automatically, name the exact
|
||||||
|
TestFlight groups or testers in the request and include that effect in the fresh
|
||||||
|
authorization. If the effect cannot be established, stop; changing an automatic-
|
||||||
|
distribution setting also requires separate authorization.
|
||||||
|
|
||||||
|
Even when the original request includes building, releasing, uploading, or
|
||||||
|
submitting, require this fresh confirmation once the exact verified artifact and
|
||||||
|
destination are known. End the request with: `Upload this verified artifact to
|
||||||
|
<destination> now?` A clear affirmative response authorizes one upload of that
|
||||||
|
artifact to that destination, plus only any automatic TestFlight distribution
|
||||||
|
explicitly disclosed in the request. Run `eas submit` with the explicit
|
||||||
|
`--platform`, `--profile production`, `--path`, and `--wait` arguments; never
|
||||||
|
select `--latest`. If the result is ambiguous, inspect EAS and the store before
|
||||||
|
doing anything else, do not retry, and ask again before another upload.
|
||||||
|
|
||||||
|
Apply this gate to every upload method, including EAS, Fastlane, Xcode Organizer,
|
||||||
|
and the store consoles. A later public rollout, App Review submission, or
|
||||||
|
additional TestFlight distribution requires another fresh authorization.
|
||||||
|
|
||||||
|
Preserve platform signing and local EAS versioning. After a build, verify that
|
||||||
|
tracked changes are limited to the expected version metadata, then independently
|
||||||
|
read the artifact version and signature. Report the artifact, version/build
|
||||||
|
number, upload result when authorized, and store read-back state.
|
||||||
+32
-3
@@ -51,11 +51,27 @@ eas submit --platform android --profile production --path /absolute/path/to/sauc
|
|||||||
eas submit --platform ios --profile production --path /absolute/path/to/sauci.ipa --wait
|
eas submit --platform ios --profile production --path /absolute/path/to/sauci.ipa --wait
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Agents must not upload immediately after building, whether they use EAS,
|
||||||
|
Fastlane, Xcode Organizer, or a store console. Once the artifact is verified, the
|
||||||
|
agent must show the user the platform, exact path, bundle/package identifier,
|
||||||
|
version, build number, signing identity, SHA-256 digest, and destination, then ask
|
||||||
|
for a fresh confirmation to upload it. This confirmation authorizes one upload
|
||||||
|
of that exact artifact to that exact destination, even if the earlier request
|
||||||
|
already said to build, release, upload, or submit.
|
||||||
|
|
||||||
|
Before an iOS confirmation, inspect App Store Connect for automatic TestFlight
|
||||||
|
distribution. If upload will add the build to existing groups or testers, name
|
||||||
|
them in the confirmation and include that effect in the authorization. If the
|
||||||
|
effect cannot be established, stop. Changing automatic-distribution settings is
|
||||||
|
a separate action and requires its own authorization.
|
||||||
|
|
||||||
Do not use `--latest` for a local release. Before upload, verify the artifact's
|
Do not use `--latest` for a local release. Before upload, verify the artifact's
|
||||||
package or bundle identifier, public version, build number, signature, and
|
package or bundle identifier, public version, build number, signature, and
|
||||||
SHA-256 digest. After upload, read back the same identity and version from Google
|
SHA-256 digest. After upload, read back the same identity and version from Google
|
||||||
Play Console or App Store Connect. Public rollout, App Review submission, and
|
Play Console or App Store Connect. Public rollout, App Review submission, and
|
||||||
TestFlight group distribution remain separate, explicitly authorized actions.
|
additional TestFlight group distribution remain separate, explicitly authorized
|
||||||
|
actions. If an upload command returns an ambiguous result, inspect EAS and the
|
||||||
|
store first; do not retry unless the user gives fresh authorization.
|
||||||
|
|
||||||
### Source integrity
|
### Source integrity
|
||||||
|
|
||||||
@@ -220,12 +236,19 @@ android/app/build/outputs/bundle/release/app-release.aab
|
|||||||
|
|
||||||
### Step 5: Upload to Play Store
|
### Step 5: Upload to Play Store
|
||||||
|
|
||||||
|
Apply the upload authorization gate above before opening or changing the release.
|
||||||
|
Uploading the AAB and starting any rollout are separate actions; ask again before
|
||||||
|
the rollout.
|
||||||
|
|
||||||
1. Go to [Google Play Console](https://play.google.com/console)
|
1. Go to [Google Play Console](https://play.google.com/console)
|
||||||
2. Select **Sauci** app
|
2. Select **Sauci** app
|
||||||
3. Go to **Production** (or testing track)
|
3. Go to **Internal testing**, unless the user authorized a different exact track
|
||||||
4. **Create new release**
|
4. **Create new release**
|
||||||
5. Upload the `.aab` file
|
5. Upload the `.aab` file
|
||||||
6. Add release notes and submit
|
6. Add release notes, save the release as a draft, and read it back
|
||||||
|
|
||||||
|
Do not send the draft for review or start a rollout without the separate fresh
|
||||||
|
authorization described above.
|
||||||
|
|
||||||
### Verifying Keystore Fingerprint
|
### Verifying Keystore Fingerprint
|
||||||
|
|
||||||
@@ -263,6 +286,9 @@ cd ..
|
|||||||
|
|
||||||
### Step 4: Upload to App Store
|
### Step 4: Upload to App Store
|
||||||
|
|
||||||
|
Apply the upload authorization gate above before using Xcode Organizer. Include
|
||||||
|
any verified automatic TestFlight distribution in the confirmation.
|
||||||
|
|
||||||
1. In Xcode Organizer (Window → Organizer), select the archive
|
1. In Xcode Organizer (Window → Organizer), select the archive
|
||||||
2. Click **Distribute App**
|
2. Click **Distribute App**
|
||||||
3. Select **App Store Connect** → **Upload**
|
3. Select **App Store Connect** → **Upload**
|
||||||
@@ -270,6 +296,9 @@ cd ..
|
|||||||
|
|
||||||
### Step 5: Submit in App Store Connect
|
### Step 5: Submit in App Store Connect
|
||||||
|
|
||||||
|
Submitting for App Review is not authorized by the upload confirmation. Ask the
|
||||||
|
user for fresh authorization immediately before this step.
|
||||||
|
|
||||||
1. Go to [App Store Connect](https://appstoreconnect.apple.com)
|
1. Go to [App Store Connect](https://appstoreconnect.apple.com)
|
||||||
2. Select **Sauci**
|
2. Select **Sauci**
|
||||||
3. Create a new version or select the uploaded build
|
3. Create a new version or select the uploaded build
|
||||||
|
|||||||
Reference in new issue
Block a user