Skip to content

ci: build and upload example app - #5131

Merged
satya164 merged 2 commits into
callstack:mainfrom
alcpereira:ci/build-upload-apps
Sep 29, 2026
Merged

satya164 merged 2 commits into
callstack:mainfrom
alcpereira:ci/build-upload-apps

Conversation

@alcpereira

@alcpereira alcpereira commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

Currently, to verify any change, we have to run locally the example app.
This introduces a PR preview generated example app that is uploaded in GitHub artifacts. This allows in the future for manual or agentic QA to reuse those generated apps.

Related issue

No related issue.

Screenshots / Videos

N/A

Test plan

Tested on my fork, both apps are working correctly.

@github-actions

Copy link
Copy Markdown

Found potential problems with the pull request:

  • Screenshot or video evidence is missing. Make sure to include one if it affects the UI.

@alcpereira
alcpereira force-pushed the ci/build-upload-apps branch 3 times, most recently from debafe1 to c942c64 Compare September 23, 2026 15:17
@alcpereira
alcpereira marked this pull request as ready for review September 24, 2026 11:12
--source-app "$RUNNER_TEMP/cached.app" \
--output ../react-native-paper-example.app

# `ditto` keeps the symlinks and executable bits a plain upload drops.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'm not sure i understand the sentence

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed. For context: the iOS build is a .app directory, and upload-artifact doesn't keep file permissions (and resolves symlinks), which breaks the bundle. So we zip it with ditto, which keeps both.

Comment on lines +24 to +25
android:
name: Android

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
android:
name: Android
build-android:
name: Build Android

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated

path: react-native-paper-example.apk
key: android-${{ steps.fingerprint.outputs.fingerprint }}

# Repacking shells out to `apktool`, so this cannot be gated on the cache.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Repacking shells out to `apktool`, so this cannot be gated on the cache.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the comment

distribution: temurin
java-version: 17

# KSP in `expo-updates` runs out of the 512m metaspace that `expo prebuild` sets.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure what KSP and "metaspace" mean

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

KSP (Kotlin Symbol Processing) is a code generation step expo-updates runs during the Android build. Metaspace is the part of JVM memory that holds class metadata. The gradle.properties generated by expo prebuild caps it at 512m, and the build ran out of it, so we raise it to 1g with -XX:MaxMetaspaceSize=1g. I removed the comment.

uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: react-native-paper-example.apk
key: android-${{ steps.fingerprint.outputs.fingerprint }}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also add the workflow file to cache so we trigger rebuild if the workflow changes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, thanks for pointing it out.

Comment on lines +7 to +13
paths-ignore:
- docs/**
- '**/*.md'
pull_request:
paths-ignore:
- docs/**
- '**/*.md'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets add tests, and other workflow files to ignore as well

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Comment on lines +82 to +83
ios:
name: iOS

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ios:
name: iOS
build-ios:
name: Build iOS

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@satya164 satya164 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks

@satya164
satya164 merged commit 4ffc20a into callstack:main Sep 29, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants