Set up Expo OTA updates and CI workflows
CodexBar Mobile Build / build-android (push) Has been cancelled
CodexBar Mobile Build / release (push) Has been cancelled

This commit is contained in:
Space-Banane
2026-07-04 19:34:22 +02:00
parent dc7e497388
commit 896f9149f1
6 changed files with 177 additions and 1 deletions
+22
View File
@@ -0,0 +1,22 @@
name: Build Android APK
on:
workflow_dispatch:
inputs:
profile:
type: choice
description: EAS build profile to use.
default: production
options:
- preview
- production
jobs:
build_android:
name: Build Android APK
type: build
environment: ${{ inputs.profile }}
params:
platform: android
profile: ${{ inputs.profile }}
message: Android ${{ inputs.profile }} APK from ${{ github.ref_name }}
+57
View File
@@ -0,0 +1,57 @@
name: Publish OTA updates
on:
push:
branches: ['main']
paths:
- 'app/**'
- 'components/**'
- 'hooks/**'
- 'lib/**'
- 'types/**'
- 'assets/**'
- 'App.tsx'
- 'index.ts'
- 'global.css'
- 'tailwind.config.js'
- 'babel.config.js'
- 'metro.config.js'
workflow_dispatch:
inputs:
channel:
type: choice
description: Update channel to publish.
default: production
options:
- preview
- production
environment:
type: choice
description: EAS environment to use for the update job.
default: production
options:
- preview
- production
message:
description: Optional update message override.
required: false
jobs:
publish_main:
if: ${{ github.event_name == 'push' }}
name: Publish production update
type: update
environment: production
params:
channel: production
platform: all
publish_manual:
if: ${{ github.event_name == 'workflow_dispatch' }}
name: Publish selected update
type: update
environment: ${{ inputs.environment }}
params:
channel: ${{ inputs.channel }}
message: ${{ inputs.message }}
platform: all
+6
View File
@@ -5,6 +5,12 @@
"description": "Monitor Codex CLI and Claude.ai usage limits, resets, and credits at a glance.", "description": "Monitor Codex CLI and Claude.ai usage limits, resets, and credits at a glance.",
"scheme": "codexbar", "scheme": "codexbar",
"version": "1.0.0", "version": "1.0.0",
"runtimeVersion": {
"policy": "appVersion"
},
"updates": {
"url": "https://u.expo.dev/9196c5ee-4c6e-4229-9a99-54b50afe38e8"
},
"orientation": "portrait", "orientation": "portrait",
"icon": "./assets/icon.png", "icon": "./assets/icon.png",
"backgroundColor": "#090D11", "backgroundColor": "#090D11",
+3
View File
@@ -5,12 +5,15 @@
}, },
"build": { "build": {
"preview": { "preview": {
"channel": "preview",
"distribution": "internal", "distribution": "internal",
"android": { "android": {
"buildType": "apk" "buildType": "apk"
} }
}, },
"production": { "production": {
"channel": "production",
"distribution": "internal",
"android": { "android": {
"buildType": "apk" "buildType": "apk"
} }
+83
View File
@@ -23,6 +23,7 @@
"expo-splash-screen": "~56.0.10", "expo-splash-screen": "~56.0.10",
"expo-status-bar": "~56.0.4", "expo-status-bar": "~56.0.4",
"expo-system-ui": "~56.0.5", "expo-system-ui": "~56.0.5",
"expo-updates": "~56.0.21",
"nativewind": "^4.2.6", "nativewind": "^4.2.6",
"react": "19.2.3", "react": "19.2.3",
"react-dom": "^19.2.3", "react-dom": "^19.2.3",
@@ -3958,6 +3959,12 @@
"expo": "*" "expo": "*"
} }
}, },
"node_modules/expo-eas-client": {
"version": "56.0.1",
"resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-56.0.1.tgz",
"integrity": "sha512-r8h0ZIExacCrSRgY+ARfhMvFqosLHLJt1L7jyhvabfr1DN/ZDKDsYbovss2tzkpEUZGxZ3BPcB5epCwUsBBdOA==",
"license": "MIT"
},
"node_modules/expo-file-system": { "node_modules/expo-file-system": {
"version": "56.0.8", "version": "56.0.8",
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-56.0.8.tgz", "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-56.0.8.tgz",
@@ -3994,6 +4001,12 @@
"react-native": "*" "react-native": "*"
} }
}, },
"node_modules/expo-json-utils": {
"version": "56.0.0",
"resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-56.0.0.tgz",
"integrity": "sha512-lUqyv9aIGDbYTQ5Nux2FnH2/Dz0w5uJ8Pr080eS0StXi2jr5OmuMNErpzUnpfnYOU55xKotd4AHv68PfV/ludg==",
"license": "MIT"
},
"node_modules/expo-keep-awake": { "node_modules/expo-keep-awake": {
"version": "56.0.3", "version": "56.0.3",
"resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-56.0.3.tgz", "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-56.0.3.tgz",
@@ -4019,6 +4032,18 @@
"react-native": "*" "react-native": "*"
} }
}, },
"node_modules/expo-manifests": {
"version": "56.0.4",
"resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-56.0.4.tgz",
"integrity": "sha512-Fokawl2UkiExIF0bqGoblRFA8lYpROVD+EpvDwSW4LgqQyPwNua1gLSgHZjdl5GsVugfRMMWE3LHaibDyX93hw==",
"license": "MIT",
"dependencies": {
"expo-json-utils": "~56.0.0"
},
"peerDependencies": {
"expo": "*"
}
},
"node_modules/expo-modules-autolinking": { "node_modules/expo-modules-autolinking": {
"version": "56.0.18", "version": "56.0.18",
"resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-56.0.18.tgz", "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-56.0.18.tgz",
@@ -4206,6 +4231,12 @@
"react-native": "*" "react-native": "*"
} }
}, },
"node_modules/expo-structured-headers": {
"version": "56.0.0",
"resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-56.0.0.tgz",
"integrity": "sha512-Yv4x+SQxNnMQm4nu8NFfzx197YaDhdYH2N0u7tGErwWTmH9Tm1SAhqo7bLbBWLC9kf7W+kdzTshLU9rTiCXWGw==",
"license": "MIT"
},
"node_modules/expo-symbols": { "node_modules/expo-symbols": {
"version": "56.0.6", "version": "56.0.6",
"resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-56.0.6.tgz", "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-56.0.6.tgz",
@@ -4242,6 +4273,58 @@
} }
} }
}, },
"node_modules/expo-updates": {
"version": "56.0.21",
"resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-56.0.21.tgz",
"integrity": "sha512-7kYS2/ra9Lg4xBG6Fadcq/YR8DngdCeBVc0lQeHvqH/dZHL2N0bJRu0y4utJd9tpIzQtNCmceGu1SmGZVT57/Q==",
"license": "MIT",
"dependencies": {
"@expo/code-signing-certificates": "^0.0.6",
"@expo/plist": "^0.7.0",
"@expo/spawn-async": "^1.8.0",
"arg": "^4.1.0",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"expo-eas-client": "~56.0.0",
"expo-manifests": "~56.0.4",
"expo-structured-headers": "~56.0.0",
"expo-updates-interface": "~56.0.1",
"getenv": "^2.0.0",
"glob": "^13.0.0",
"ignore": "^5.3.1",
"nullthrows": "^1.1.1",
"resolve-from": "^5.0.0"
},
"bin": {
"expo-updates": "bin/cli.js"
},
"peerDependencies": {
"expo": "*",
"expo-dev-client": "*",
"react": "*",
"react-native": "*"
},
"peerDependenciesMeta": {
"expo-dev-client": {
"optional": true
}
}
},
"node_modules/expo-updates-interface": {
"version": "56.0.2",
"resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-56.0.2.tgz",
"integrity": "sha512-eWTwSZ9y8vrULG2oBn2TQSSIwBGSq/TxGJ3jY6tuVS2FWH/ASRIiKs3zkUZTRoC3ZuV2alz0mUClYV7nNrFx8g==",
"license": "MIT",
"peerDependencies": {
"expo": "*"
}
},
"node_modules/expo-updates/node_modules/arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
"license": "MIT"
},
"node_modules/expo/node_modules/@expo/cli": { "node_modules/expo/node_modules/@expo/cli": {
"version": "56.1.18", "version": "56.1.18",
"resolved": "https://registry.npmjs.org/@expo/cli/-/cli-56.1.18.tgz", "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-56.1.18.tgz",
+6 -1
View File
@@ -18,6 +18,7 @@
"expo-splash-screen": "~56.0.10", "expo-splash-screen": "~56.0.10",
"expo-status-bar": "~56.0.4", "expo-status-bar": "~56.0.4",
"expo-system-ui": "~56.0.5", "expo-system-ui": "~56.0.5",
"expo-updates": "~56.0.21",
"nativewind": "^4.2.6", "nativewind": "^4.2.6",
"react": "19.2.3", "react": "19.2.3",
"react-dom": "^19.2.3", "react-dom": "^19.2.3",
@@ -37,7 +38,11 @@
"start": "expo start", "start": "expo start",
"android": "expo start --android", "android": "expo start --android",
"ios": "expo start --ios", "ios": "expo start --ios",
"web": "expo start --web" "web": "expo start --web",
"update:preview": "eas update --channel preview --environment preview",
"update:production": "eas update --channel production --environment production",
"build:android:preview": "eas build --platform android --profile preview --non-interactive",
"build:android:production": "eas build --platform android --profile production --non-interactive"
}, },
"private": true "private": true
} }