@mparticle/web-sdk 3.29.1 → 3.30.0
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 +76 -9
- package/dist/mparticle.common.js +1 -1
- package/dist/mparticle.esm.js +1 -1
- package/dist/mparticle.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -220,14 +220,75 @@ copy its release tag; optionally preview and run Step 2 for each needed
|
|
|
220
220
|
release-order branch; finally run Step 3 with `dryRun=true`, then
|
|
221
221
|
`dryRun=false`.
|
|
222
222
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
(shadow)** after the release
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
223
|
+
V3 candidate packaging, upload, and staging: a real **V3 Release - Step 1**
|
|
224
|
+
(`v3-release-step-1.yml`, `dryRun=false`) runs **Package V3 candidate
|
|
225
|
+
(shadow)** after the release to package the release tag's committed bundles
|
|
226
|
+
into a `v3-candidate-<run id>-<run attempt>` artifact (kept for 7 days). Once
|
|
227
|
+
**Publish V3 kits** and **Audit V3 kits on npm** have also succeeded, it runs
|
|
228
|
+
**Upload and stage V3 candidate**, which dispatches **V3 shadow
|
|
229
|
+
release: upload candidate** (`v3-shadow-candidate.yml`) on `main` with
|
|
230
|
+
`release_gate=true` and waits up to 120 minutes (the child jobs' 110-minute
|
|
231
|
+
ceiling plus 10 minutes of queue time, inside a 130-minute job timeout) for it
|
|
232
|
+
to succeed. A failed read of the child run's status (a 5xx or rate-limit reply)
|
|
233
|
+
is retried until that deadline. If the job fails, times out or is cancelled
|
|
234
|
+
before the child run completes, it cancels the child run. A refused cancel (a
|
|
235
|
+
5xx or rate-limit reply) is retried with a doubling backoff (6 tries, 5 seconds
|
|
236
|
+
apart at first) until GitHub accepts it or the child run reads completed, first
|
|
237
|
+
by the wait step and then by the cleanup step. Release-gate dispatches for one
|
|
238
|
+
Step 1 run share one concurrency group (`v3-shadow-candidate-gate-STEP1_RUN_ID`),
|
|
239
|
+
so a re-run's child queues behind a leftover child instead of staging the same
|
|
240
|
+
build in parallel with it. A newer gate dispatch for the same Step 1 run takes
|
|
241
|
+
the group's single pending slot from an older pending one, which then fails its
|
|
242
|
+
own Step 1 wait. A manual dispatch with `release_gate=false` or a transition
|
|
243
|
+
`workflow_run` runs in another group, so it cannot displace a pending gate run.
|
|
244
|
+
|
|
245
|
+
If the dispatch request succeeds but its reply is lost or carries no
|
|
246
|
+
`workflow_run_id`, the job fails with no child run ID, so nothing cancels that
|
|
247
|
+
child. Before re-running Step 1, open the **V3 shadow release: upload
|
|
248
|
+
candidate** runs, find any run dispatched after the failed Step 1 run started,
|
|
249
|
+
and cancel it if it is still running. If it is missed, the shared concurrency
|
|
250
|
+
group still makes the re-run's child wait for it to finish.
|
|
251
|
+
|
|
252
|
+
Release-gate mode accepts both an in-progress `v3-release-step-1.yml`
|
|
253
|
+
parent run and one that has already
|
|
254
|
+
completed without being cancelled (so a maintainer can also dispatch
|
|
255
|
+
`v3-shadow-candidate.yml` manually with `release_gate=true` for repair after
|
|
256
|
+
Step 1 finishes), provided **Perform Release** and **Package V3 candidate
|
|
257
|
+
(shadow)** succeeded and one unexpired candidate artifact exists. Release-gate
|
|
258
|
+
mode also requires npm parity to pass: every package must be on npm with the
|
|
259
|
+
candidate's integrity. **Audit V3 kits on npm** only warns about a kit npm does
|
|
260
|
+
not show yet, and npm can take minutes to show a version it has accepted. So
|
|
261
|
+
while npm parity reads pending (a version npm does not show yet) or unavailable
|
|
262
|
+
(an `npm view` error or an unexpected reply), the candidate workflow reads npm
|
|
263
|
+
again with a doubling backoff (15 seconds at first, at most 2 minutes apart)
|
|
264
|
+
for up to 10 minutes, with a last read when the 10 minutes run out. A fail
|
|
265
|
+
reading (a published package with another integrity) fails the gate at once,
|
|
266
|
+
and a read stops at the first package that differs. A package still pending
|
|
267
|
+
or unavailable after the last read fails the gate instead of uploading. Each
|
|
268
|
+
`npm view` gets at most 30 seconds, and each read of every package at most 2
|
|
269
|
+
minutes. A package the read has no time left for reads unavailable. If `sleep`
|
|
270
|
+
fails between reads, the check fails instead of reading npm again at once. A
|
|
271
|
+
transition `workflow_run`, or a manual dispatch with `release_gate=false`,
|
|
272
|
+
reads npm once. The **Check the candidate against the release** job's
|
|
273
|
+
25-minute timeout covers the 10 minutes, a last read of at most 2 minutes and
|
|
274
|
+
its other checks.
|
|
275
|
+
A failure in packaging, candidate verification, S3
|
|
276
|
+
upload, or `v3-staging` pointer staging fails the Step 1 release. In
|
|
277
|
+
release-gate mode, `V3_SHADOW_PODS` must include all five production pods
|
|
278
|
+
(`us1`, `us2`, `st1`, `eu1`, `au1`); `qa` is optional (if `qa` is listed in
|
|
279
|
+
`V3_SHADOW_PODS`, it runs in the same matrix and blocks the release on failure;
|
|
280
|
+
if `qa` is omitted from `V3_SHADOW_PODS`, only the five
|
|
281
|
+
production pods block the release and `qa` can run separately). Stage moves each
|
|
282
|
+
pod's `v3-staging` pointer independently in parallel, so if one pod fails, the
|
|
283
|
+
other pods have already moved to the new candidate; re-running failed jobs on
|
|
284
|
+
Step 1 (within the 7-day artifact window) re-runs **Upload and stage V3
|
|
285
|
+
candidate**, dispatches the candidate workflow again, and repairs the remaining
|
|
286
|
+
pods so every pod converges (`resumeKitReleaseTag` skips packaging and upload
|
|
287
|
+
as before). During the transition before a V3 release's Step 3 brings these
|
|
288
|
+
workflow updates to `main`, the shared **Staging Release - Step 1**
|
|
289
|
+
(`staging-step-1.yml`, `track=v3`) still uses the `V3_PACKAGE_CANDIDATE`
|
|
290
|
+
repository variable and the `workflow_run` trigger on `main`, so
|
|
291
|
+
`V3_PACKAGE_CANDIDATE` stays `true` until that transition release finishes.
|
|
231
292
|
|
|
232
293
|
### Recover an incomplete v3 kit publication
|
|
233
294
|
|
|
@@ -245,7 +306,13 @@ A real v3 Step 1 run can publish core and create the GitHub Release before all
|
|
|
245
306
|
and the same two inputs instead.
|
|
246
307
|
5. Wait for recovery to verify core and all 33 kits at that version on `next`.
|
|
247
308
|
Existing byte-identical packages are skipped and only missing kits publish.
|
|
248
|
-
6.
|
|
309
|
+
6. If the failed run was **V3 Release - Step 1**, it did not upload or stage
|
|
310
|
+
its candidate, because that job waits for the kits. Dispatch **V3 shadow
|
|
311
|
+
release: upload candidate** (`v3-shadow-candidate.yml`) on `main` with
|
|
312
|
+
`step1_run_id` set to the failed run's ID and `release_gate=true`, within
|
|
313
|
+
the candidate's 7 days.
|
|
314
|
+
7. Continue to Step 2 or Step 3 only after the recovery run and the candidate
|
|
315
|
+
upload are green.
|
|
249
316
|
|
|
250
317
|
If recovery reports that the tagged core version is missing from npm, stop the
|
|
251
318
|
kit recovery. Semantic-release may have pushed the generated staging commit and
|