mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-01 19:48:28 +01:00
feat(eas): force bun on EAS via custom build configs + 5-build release workflow (#1632)
This commit is contained in:
committed by
GitHub
parent
21fb056586
commit
8507699cdd
25
.eas/build/android-production-apk.yml
Normal file
25
.eas/build/android-production-apk.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
# Custom EAS Build config for Android phone APK (downloadable artifact).
|
||||
# Same bun-forcing flow as android-production.yml, but builds an APK
|
||||
# (assembleRelease) instead of an AAB — for sideloading / GitHub artifact.
|
||||
# Referenced from eas.json: build.production-apk.android.config
|
||||
build:
|
||||
name: Android phone APK (bun)
|
||||
steps:
|
||||
- eas/checkout
|
||||
|
||||
- run:
|
||||
name: Install dependencies (bun, frozen)
|
||||
command: bun install --frozen-lockfile
|
||||
|
||||
- run:
|
||||
name: Prebuild (Android, bun)
|
||||
command: bunx expo prebuild --platform android --no-install
|
||||
|
||||
- eas/configure_android_version
|
||||
- eas/inject_android_credentials
|
||||
|
||||
- eas/run_gradle:
|
||||
inputs:
|
||||
command: :app:assembleRelease
|
||||
|
||||
- eas/find_and_upload_build_artifacts
|
||||
27
.eas/build/android-production-tv.yml
Normal file
27
.eas/build/android-production-tv.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
# Custom EAS Build config for Android TV APK (downloadable artifact).
|
||||
# Same bun-forcing flow, with EXPO_TV=1 (set via the profile env in
|
||||
# eas.json) so prebuild generates the TV variant. Builds an APK for
|
||||
# sideloading onto Android TV devices.
|
||||
# Referenced from eas.json: build.production-apk-tv.android.config
|
||||
build:
|
||||
name: Android TV APK (bun)
|
||||
steps:
|
||||
- eas/checkout
|
||||
|
||||
- run:
|
||||
name: Install dependencies (bun, frozen)
|
||||
command: bun install --frozen-lockfile
|
||||
|
||||
# EXPO_TV=1 comes from the profile env, so prebuild targets Android TV.
|
||||
- run:
|
||||
name: Prebuild (Android TV, bun)
|
||||
command: bunx expo prebuild --platform android --no-install
|
||||
|
||||
- eas/configure_android_version
|
||||
- eas/inject_android_credentials
|
||||
|
||||
- eas/run_gradle:
|
||||
inputs:
|
||||
command: :app:assembleRelease
|
||||
|
||||
- eas/find_and_upload_build_artifacts
|
||||
38
.eas/build/android-production.yml
Normal file
38
.eas/build/android-production.yml
Normal file
@@ -0,0 +1,38 @@
|
||||
# Custom EAS Build config for Android (production AAB).
|
||||
#
|
||||
# Why this exists: EAS's managed build can't detect Bun's text lockfile
|
||||
# (bun.lock) and falls back to yarn, which breaks our install. The managed
|
||||
# steps `eas/install_node_modules` and `eas/prebuild` both use "the package
|
||||
# manager detected based on your project", so we replace them with explicit
|
||||
# `bun` commands. Everything else uses EAS's built-in functions so we still
|
||||
# get remote versioning, credentials, and artifact upload.
|
||||
#
|
||||
# Referenced from eas.json: build.production.android.config = android-production.yml
|
||||
build:
|
||||
name: Android production (bun)
|
||||
steps:
|
||||
- eas/checkout
|
||||
|
||||
- run:
|
||||
name: Install dependencies (bun, frozen)
|
||||
command: bun install --frozen-lockfile
|
||||
|
||||
# android/ is gitignored, so generate native code fresh. --no-install
|
||||
# because deps are already installed above; bunx keeps it on bun.
|
||||
- run:
|
||||
name: Prebuild (Android, bun)
|
||||
command: bunx expo prebuild --platform android --no-install
|
||||
|
||||
# Applies the EAS-resolved remote versionCode/versionName (autoIncrement
|
||||
# in eas.json) into the freshly prebuilt android/ project.
|
||||
- eas/configure_android_version
|
||||
|
||||
# Injects the remote Android keystore / signing config.
|
||||
- eas/inject_android_credentials
|
||||
|
||||
# Build the Play Store app bundle (.aab).
|
||||
- eas/run_gradle:
|
||||
inputs:
|
||||
command: :app:bundleRelease
|
||||
|
||||
- eas/find_and_upload_build_artifacts
|
||||
44
.eas/build/ios-production.yml
Normal file
44
.eas/build/ios-production.yml
Normal file
@@ -0,0 +1,44 @@
|
||||
# Custom EAS Build config for iOS + tvOS (App Store), forcing bun.
|
||||
#
|
||||
# Shared by both the iPhone profile (production) and the tvOS profile
|
||||
# (production_tv). The profile decides the rest:
|
||||
# - production_tv sets EXPO_TV=1 (env) so prebuild targets tvOS, and
|
||||
# credentialsSource: local (EAS can't manage tvOS creds remotely).
|
||||
# - production uses remote-managed iOS credentials.
|
||||
#
|
||||
# Like the Android configs, this replaces eas/install_node_modules and
|
||||
# eas/prebuild (both auto-detect the wrong package manager) with explicit
|
||||
# bun commands, and keeps EAS built-ins for credentials/version/fastlane.
|
||||
build:
|
||||
name: iOS/tvOS App Store (bun)
|
||||
steps:
|
||||
- eas/checkout
|
||||
|
||||
- run:
|
||||
name: Install dependencies (bun, frozen)
|
||||
command: bun install --frozen-lockfile
|
||||
|
||||
- eas/resolve_apple_team_id_from_credentials:
|
||||
id: resolve_team
|
||||
|
||||
# android/ + ios/ are gitignored, so generate native code fresh.
|
||||
# EXPO_TV (from the profile env) selects iPhone vs tvOS. --no-install
|
||||
# skips JS + pod install; we install pods explicitly below with bun deps.
|
||||
- run:
|
||||
name: Prebuild (iOS/tvOS, bun)
|
||||
command: bunx expo prebuild --platform ios --no-install
|
||||
|
||||
- run:
|
||||
name: Install CocoaPods
|
||||
working_directory: ./ios
|
||||
command: pod install
|
||||
|
||||
- eas/configure_ios_credentials
|
||||
- eas/configure_ios_version
|
||||
|
||||
- eas/generate_gymfile_from_template:
|
||||
inputs:
|
||||
credentials: ${ eas.job.secrets.buildCredentials }
|
||||
|
||||
- eas/run_fastlane
|
||||
- eas/find_and_upload_build_artifacts
|
||||
Reference in New Issue
Block a user