feat: add expo 56 support beta testing#363
Conversation
| - name: Apply Expo beta to ExpoApp56 | ||
| run: node --experimental-strip-types --no-warnings ./scripts/check-expo-beta.ts --expo-version "~55.0.23" --apply --github-step-summary "$GITHUB_STEP_SUMMARY" | ||
|
|
||
| - name: Install Expo beta dependencies | ||
| run: | | ||
| cd apps/ExpoApp56 | ||
| npx expo install --fix | ||
|
|
||
| - name: Run ExpoApp56 -> AndroidApp road test | ||
| uses: ./.github/actions/androidapp-road-test | ||
| with: | ||
| flavor: expo56 | ||
| rn-project-path: apps/ExpoApp56 | ||
| rn-project-maven-path: com/callstack/rnbrownfield/demo/expoapp56/brownfieldlib |
There was a problem hiding this comment.
Can we make this ExpoAppBeta?
artus9033
left a comment
There was a problem hiding this comment.
I left a few comments on the approach so we reduce the committed code for maintainability & a cleaner way to do this. This is mostly cosmetic, other than that, it's great work & we're on the right track!
| - name: Apply Expo beta to ExpoApp56 | ||
| run: node --experimental-strip-types --no-warnings ./scripts/check-expo-beta.ts --expo-version "~55.0.23" --apply --github-step-summary "$GITHUB_STEP_SUMMARY" | ||
|
|
||
| - name: Install Expo beta dependencies | ||
| run: | | ||
| cd apps/ExpoApp56 | ||
| npx expo install --fix | ||
|
|
||
| - name: Run ExpoApp56 -> AppleApp road test | ||
| uses: ./.github/actions/appleapp-road-test | ||
| with: | ||
| variant: expo56 | ||
| rn-project-path: apps/ExpoApp56 |
| create("expo56") { | ||
| dimension = "app" | ||
| } |
| [libraries] | ||
| androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } | ||
| brownfieldlib-expo55 = { module = "com.callstack.rnbrownfield.demo.expoapp55:brownfieldlib", version.ref = "brownfieldlib" } | ||
| brownfieldlib-expo56 = { module = "com.callstack.rnbrownfield.demo.expoapp56:brownfieldlib", version.ref = "brownfieldlib" } |
| BuildableName = "Brownfield Apple App (ExpoApp56).app" | ||
| BlueprintName = "Brownfield Apple App (ExpoApp56)" | ||
| ReferencedContainer = "container:Brownfield Apple App.xcodeproj"> |
| if (shouldTest && options.apply) { | ||
| const packageJson = readExpoApp56PackageJson(); | ||
| applied = updateExpoVersion(packageJson, latestVersion); | ||
| if (applied) { | ||
| writeExpoApp56PackageJson(packageJson); | ||
| } | ||
| } |
There was a problem hiding this comment.
Can we not commit the expo beta app to the git repo, instead make this script generate it on-the-fly with create-expo-app with the right expo version flag; then let's inject brownfield plugin into it from this script. WDYT @hurali97 @valentin-callstack ?
| "build:example:ios-consumer:expo": "yarn build:example:ios-consumer:expo55", | ||
| "build:example:ios-consumer:expo54": "node prepareXCFrameworks.js --appName ExpoApp54 && yarn internal::build::common -scheme \"Brownfield Apple App Expo 54\" -configuration Release", | ||
| "build:example:ios-consumer:expo55": "node prepareXCFrameworks.js --appName ExpoApp55 && yarn internal::build::common -scheme \"Brownfield Apple App Expo 55\" -configuration Release", | ||
| "build:example:ios-consumer:expo56": "node prepareXCFrameworks.js --appName ExpoApp56 && yarn internal::build::common -scheme \"Brownfield Apple App Expo 56\" -configuration Release", |
There was a problem hiding this comment.
let's do 2 things:
ExpoAppBeta- let's make this script actually re-generate that dir - please see more here: https://github.com/callstack/react-native-brownfield/pull/363/changes#r3388048979
| const EXPO_APP_56_PACKAGE_JSON_PATH = path.join( | ||
| REPO_ROOT, | ||
| 'apps', | ||
| 'ExpoApp56', |
There was a problem hiding this comment.
same here - let's do ExpoAppBeta
| - `ExpoApp56` - a canary Expo application used to test incoming Expo beta releases before support lands in the stable CI matrix | ||
| - `AndroidApp` - the native Android application that integrates the RNApp AAR package (a "consumer" of the RNApp library); it comes in two flavors: | ||
| - `expo` - which uses the artifact produced from `ExpoApp` | ||
| - `vanilla` - which uses the artifact produced from `RNApp` | ||
| - `AppleApp` - the native iOS application that integrates packaged XCFrameworks (a "consumer" of the RN apps); the Xcode project defines one target per consumed RN app: | ||
| - `Brownfield Apple App (RNApp)` — vanilla; uses the artifact from `RNApp` (scheme **Brownfield Apple App Vanilla**, configuration `Release Vanilla`) | ||
| - `Brownfield Apple App (ExpoApp54)` — uses the artifact from `ExpoApp54` (scheme **Brownfield Apple App Expo 54**, configuration `Release`) | ||
| - `Brownfield Apple App (ExpoApp55)` — uses the artifact from `ExpoApp55` (scheme **Brownfield Apple App Expo 55**, configuration `Release`) | ||
| - `Brownfield Apple App (ExpoApp56)` — uses the artifact from `ExpoApp56` (scheme **Brownfield Apple App Expo 56**, configuration `Release`) |
There was a problem hiding this comment.
Let's do ExpoAppBeta + note it'll be generated on-the-fly, not committed, as in https://github.com/callstack/react-native-brownfield/pull/363/changes#r3388048979
Summary
Test plan