Skip to content

Commit 88ee8c6

Browse files
author
iexitdev
committed
ci(release): run native checks on next pushes
1 parent 8c27ca1 commit 88ee8c6

7 files changed

Lines changed: 29 additions & 9 deletions

File tree

.github/workflows/native-release.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@ name: Native Release Checks
22

33
on:
44
workflow_dispatch:
5+
push:
6+
branches:
7+
- next
8+
paths:
9+
- .github/workflows/native-release.yml
10+
- apps/expo-showcase/**
11+
- package-lock.json
12+
- package.json
13+
- packages/**
14+
- scripts/run-expo-native-release-check.mjs
515
pull_request:
616
paths:
717
- .github/workflows/native-release.yml

docs/internal/completion-audit.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Concrete success criteria:
4848

4949
| Requirement | Missing evidence | Why it matters |
5050
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
51-
| Native release workflow | Local iOS and Android release builds passed, and the recorder/checker require a run URL, commit, and iOS/Android artifact links before marking workflow evidence complete; no green native workflow artifact is recorded yet. A May 6, 2026 manual dispatch attempt failed because `native-release.yml` is only on `next`, while GitHub Actions exposes workflow dispatches from the default `master` branch. | Required before production beta/RC confidence |
51+
| Native release workflow | Local iOS and Android release builds passed, and the recorder/checker require a run URL, commit, and iOS/Android artifact links before marking workflow evidence complete; no green native workflow artifact is recorded yet. `native-release.yml` now runs on relevant `next` pushes and can be manually dispatched once the workflow exists on the default branch. | Required before production beta/RC confidence |
5252
| Native e2e/runtime QA | iOS simulator and Android emulator launch smoke exist, and `docs/release/evidence/native-runtime-qa.json` records partial status. `docs/release/native-qa-checklists.md` provides row-by-row execution guidance. `docs/release/evidence/native-runtime-matrix.json` has 2 partial line-chart smoke rows and 14 pending page/platform rows | Gestures, scroll conflicts, text rendering, and release behavior can differ on device |
5353
| RN CLI native projects | No generated RN CLI `ios/` or `android/` projects are checked in | Source-level RN CLI example exists, but release-build evidence still requires native projects |
5454
| Pro paid implementation | H4 approved the Pro/free boundary, but `@chart-kit/pro` remains a preview registry/composition package without license enforcement, paid implementations, or runtime activation | Required before selling or labeling Pro as a finished paid package |
@@ -68,7 +68,7 @@ Concrete success criteria:
6868

6969
## Recommended Next Decisions
7070

71-
1. Merge or otherwise expose `.github/workflows/native-release.yml` on the default `master` branch, then run the native release workflow on the release candidate commit to turn local iOS/Android build evidence into CI artifact evidence.
71+
1. Run the native release workflow on the release candidate commit through a relevant `next` push or by exposing `.github/workflows/native-release.yml` on the default `master` branch for manual dispatch; use the resulting iOS/Android artifacts to turn local build evidence into CI artifact evidence.
7272
2. Add or repair the GitHub Actions `NPM_TOKEN` secret, make sure it can create and publish public packages under the npm `@chart-kit` scope, then rerun the publish workflow with npm dist-tag `next`; it should skip the already-published root package and publish the remaining scoped free packages.
7373
3. Run the native runtime, accessibility, performance, and Skia evidence matrices.
7474
4. If production beta is the target, prioritize native device QA and accessibility QA before adding more chart features.

docs/release/evidence/native-release-workflow.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"status": "partial",
44
"requiredFor": ["H5", "H6"],
55
"lastUpdated": "2026-05-06",
6-
"summary": "iOS and Android release builds passed locally, but the native release workflow still needs a green run on the release candidate commit. Manual dispatch is currently blocked because native-release.yml is only on next and GitHub Actions can dispatch workflows only after the workflow exists on the default branch.",
6+
"summary": "iOS and Android release builds passed locally, and native-release.yml can run on next pushes or manual dispatch once the workflow exists on the default branch. The native release workflow still needs a green run on the release candidate commit.",
77
"completedEntries": [
88
{
99
"date": "2026-05-05",
@@ -21,8 +21,7 @@
2121
}
2222
],
2323
"missingEvidence": [
24-
"native-release.yml must exist on the default branch or be merged before manual workflow_dispatch is available",
25-
"green native release workflow run on the release candidate commit",
24+
"green native release workflow run on the release candidate commit through next push or manual workflow_dispatch",
2625
"archived iOS workflow artifact or log",
2726
"archived Android workflow artifact or log"
2827
]

docs/release/known-issues.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ These are allowed only as explicit Developer Preview caveats. Anything in this f
66

77
Android and iOS release-build checks are configured in `.github/workflows/native-release.yml` and can be run locally with `npm run native:release:android` and `npm run native:release:ios`. The Expo showcase also verifies web screenshots and can run on device through Expo Go or Expo dev targets.
88

9-
The iOS and Android release builds passed locally on May 5, 2026. Android used OpenJDK 17 plus the Homebrew Android command-line tools SDK (`/opt/homebrew/share/android-commandlinetools`) and completed `assembleRelease`. The release script now fails before prebuild when either Java or the Android SDK is missing. The remaining gap is CI evidence: production beta/RC should not count native release-build coverage as complete until the native workflow has a green run on the release candidate commit. A manual dispatch attempt on May 6, 2026 failed because `.github/workflows/native-release.yml` exists on `next` but not on the default `master` branch, so GitHub does not expose it as a dispatchable workflow yet. The structured status lives in [native-release-workflow.json](evidence/native-release-workflow.json), and the exact unblock path is documented in [native-workflow-runbook.md](native-workflow-runbook.md).
9+
The iOS and Android release builds passed locally on May 5, 2026. Android used OpenJDK 17 plus the Homebrew Android command-line tools SDK (`/opt/homebrew/share/android-commandlinetools`) and completed `assembleRelease`. The release script now fails before prebuild when either Java or the Android SDK is missing. The remaining gap is CI evidence: production beta/RC should not count native release-build coverage as complete until the native workflow has a green run on the release candidate commit. A manual dispatch attempt on May 6, 2026 failed because `.github/workflows/native-release.yml` exists on `next` but not on the default `master` branch, so GitHub does not expose it as a dispatchable workflow yet; the workflow can also run from relevant `next` pushes. The structured status lives in [native-release-workflow.json](evidence/native-release-workflow.json), and the exact unblock path is documented in [native-workflow-runbook.md](native-workflow-runbook.md).
1010

1111
Impact: Developer Preview can be used for preview and API feedback, but production users should wait for green native workflow verification before treating v2 as stable.
1212

docs/release/native-release-checks.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ The release-check script restores `apps/expo-showcase/app.json` and `apps/expo-s
3636

3737
## CI
3838

39-
The `Native Release Checks` workflow runs Android and iOS release-build jobs separately. It is available through `workflow_dispatch` and also runs on pull requests that touch package source, the showcase app, package manifests, or the native-release script.
39+
The `Native Release Checks` workflow runs Android and iOS release-build jobs separately. It runs on relevant `next` pushes, is available through `workflow_dispatch` once the workflow file exists on the default branch, and also runs on pull requests that touch package source, the showcase app, package manifests, or the native-release script.
4040

4141
Each workflow job writes native build output into `docs/release/artifacts/native-workflow/*-release.log` and uploads those logs as GitHub Actions artifacts. The Android job also uploads the generated release APK when present. These artifacts are the expected evidence source for clearing the native workflow blocker in the release gate.
4242

docs/release/native-workflow-runbook.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Status on May 6, 2026: native iOS and Android release builds passed locally, but
66

77
GitHub Actions only exposes manually dispatched workflows after the workflow file exists on the repository default branch. The workflow file currently exists on `next`, while the repository default branch is `master`, so `workflow_dispatch` is not available yet for `.github/workflows/native-release.yml`.
88

9+
The workflow is also configured to run on relevant `next` pushes. Use that path when the workflow is not dispatchable from the UI yet.
10+
911
Do not mark the native workflow evidence complete until a green workflow run exists on the release-candidate commit and both platform artifacts are archived.
1012

1113
## Required Evidence
@@ -20,9 +22,18 @@ The release gate requires:
2022

2123
Local release-build passes are useful smoke evidence, but they do not replace this workflow evidence for RC/stable.
2224

25+
## Run From A `next` Push
26+
27+
Push a release-candidate commit to `next` that touches the workflow, showcase, packages, lockfile, package metadata, or native release script paths covered by the workflow `push` trigger. Then watch the resulting workflow run:
28+
29+
```sh
30+
gh run list --workflow native-release.yml --branch next --limit 5
31+
gh run watch <run-id> --exit-status
32+
```
33+
2334
## Make The Workflow Dispatchable
2435

25-
Choose one of these owner-approved paths:
36+
For manual runs, choose one of these owner-approved paths:
2637

2738
- Merge the workflow file into the default branch as part of the release branch process.
2839
- Temporarily add the workflow file to the default branch, then dispatch it against `next` or the release-candidate branch.

scripts/record-native-workflow-evidence.test.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ describe("native workflow evidence recorder", () => {
4444
status: "partial"
4545
});
4646
expect(evidence.missingEvidence).toContain(
47-
"green native release workflow run on the release candidate commit"
47+
"green native release workflow run on the release candidate commit through next push or manual workflow_dispatch"
4848
);
4949
});
5050

0 commit comments

Comments
 (0)