Use EAS managed build number, run build/submit on GH Actions (#2841)
* use eas version code * test * try sync * try sync * use eas to manage the version code * apply build numbers to dist * test script * set this to production or now * revert to schedule * testing on 1.69 * autosubmit * autosubmit, remove cheat * finished!!!!! try again try again try again try again add same for android maybe now omg wow i messed that up? once again once again again error? add caching add caching try again again again again try again again again try again again try again try this a different way another test testing this again * hack * write environment variables * ready to go * final test * Revert "final test" This reverts commit 6580c5c0974db25a3704b683673c41471a6ad0cf.zio/stable
parent
ba71e4b459
commit
874489b402
|
@ -0,0 +1,61 @@
|
||||||
|
---
|
||||||
|
name: Build and Submit Android
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
profile:
|
||||||
|
type: choice
|
||||||
|
description: Build profile to use
|
||||||
|
options:
|
||||||
|
- production
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build and Submit Android
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check for EXPO_TOKEN
|
||||||
|
run: >
|
||||||
|
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
|
||||||
|
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: ⬇️ Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: 🔧 Setup Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18.x
|
||||||
|
cache: yarn
|
||||||
|
|
||||||
|
- name: 🔨 Setup EAS
|
||||||
|
uses: expo/expo-github-action@v8
|
||||||
|
with:
|
||||||
|
expo-version: latest
|
||||||
|
eas-version: latest
|
||||||
|
token: ${{ secrets.EXPO_TOKEN }}
|
||||||
|
|
||||||
|
- name: ⛏️ Setup EAS local builds
|
||||||
|
run: yarn global add eas-cli-local-build-plugin
|
||||||
|
|
||||||
|
- uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
|
||||||
|
- name: ⚙️ Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: ✏️ Write environment variables
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.ENV_TOKEN }}" > .env
|
||||||
|
echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json
|
||||||
|
|
||||||
|
- name: 🏗️ EAS Build
|
||||||
|
run: yarn use-build-number eas build -p android --profile production --local --output build.aab --non-interactive
|
||||||
|
|
||||||
|
- name: 🚀 Deploy
|
||||||
|
run: eas submit -p android --non-interactive --path build.aab
|
|
@ -0,0 +1,72 @@
|
||||||
|
---
|
||||||
|
name: Build and Submit iOS
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
profile:
|
||||||
|
type: choice
|
||||||
|
description: Build profile to use
|
||||||
|
options:
|
||||||
|
- production
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build and Submit iOS
|
||||||
|
runs-on: macos-14
|
||||||
|
steps:
|
||||||
|
- name: Check for EXPO_TOKEN
|
||||||
|
run: >
|
||||||
|
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
|
||||||
|
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: ⬇️ Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: 🔧 Setup Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18.x
|
||||||
|
cache: yarn
|
||||||
|
|
||||||
|
- name: 🔨 Setup EAS
|
||||||
|
uses: expo/expo-github-action@v8
|
||||||
|
with:
|
||||||
|
expo-version: latest
|
||||||
|
eas-version: latest
|
||||||
|
token: ${{ secrets.EXPO_TOKEN }}
|
||||||
|
|
||||||
|
- name: ⛏️ Setup EAS local builds
|
||||||
|
run: yarn global add eas-cli-local-build-plugin
|
||||||
|
|
||||||
|
- name: ⚙️ Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: ☕️ Setup Cocoapods
|
||||||
|
uses: maxim-lobanov/setup-cocoapods@v1
|
||||||
|
with:
|
||||||
|
version: 1.14.3
|
||||||
|
|
||||||
|
- name: 💾 Cache Pods
|
||||||
|
uses: actions/cache@v3
|
||||||
|
id: pods-cache
|
||||||
|
with:
|
||||||
|
path: ./ios/Pods
|
||||||
|
# We'll use the yarn.lock for our hash since we don't yet have a Podfile.lock. Pod versions will not
|
||||||
|
# change unless the yarn version changes as well.
|
||||||
|
key: ${{ runner.os }}-pods-${{ hashFiles('yarn.lock') }}
|
||||||
|
|
||||||
|
- name: ✏️ Write environment variables
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.ENV_TOKEN }}" > .env
|
||||||
|
echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json
|
||||||
|
|
||||||
|
- name: 🏗️ EAS Build
|
||||||
|
run: yarn use-build-number eas build -p ios --profile production --local --output build.ipa --non-interactive
|
||||||
|
|
||||||
|
- name: 🚀 Deploy
|
||||||
|
run: eas submit -p ios --non-interactive --path build.ipa
|
|
@ -1,52 +0,0 @@
|
||||||
name: Deploy Nightly Testflight Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 5 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Deploy Nightly Testflight Release
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Check for EXPO_TOKEN
|
|
||||||
run: |
|
|
||||||
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
|
|
||||||
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 18.x
|
|
||||||
cache: yarn
|
|
||||||
|
|
||||||
- name: Setup EAS
|
|
||||||
uses: expo/expo-github-action@v8
|
|
||||||
with:
|
|
||||||
eas-version: latest
|
|
||||||
token: ${{ secrets.EXPO_TOKEN }}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install
|
|
||||||
|
|
||||||
- name: Bump build number
|
|
||||||
run: yarn bump:ios
|
|
||||||
|
|
||||||
- name: EAS build and submit
|
|
||||||
run: eas build -p ios --profile production --auto-submit --non-interactive
|
|
||||||
|
|
||||||
- name: Commit
|
|
||||||
uses: stefanzweifel/git-auto-commit-action@v5
|
|
||||||
with:
|
|
||||||
commit_message: Nightly iOS Build Bump
|
|
||||||
branch: main
|
|
||||||
commit_user_name: github-actions[bot]
|
|
||||||
commit_user_email: github-actions[bot]@users.noreply.github.com
|
|
|
@ -11,24 +11,12 @@ const DARK_SPLASH_CONFIG = {
|
||||||
resizeMode: 'cover',
|
resizeMode: 'cover',
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = function () {
|
module.exports = function (config) {
|
||||||
/**
|
/**
|
||||||
* App version number. Should be incremented as part of a release cycle.
|
* App version number. Should be incremented as part of a release cycle.
|
||||||
*/
|
*/
|
||||||
const VERSION = pkg.version
|
const VERSION = pkg.version
|
||||||
|
|
||||||
/**
|
|
||||||
* iOS build number. Must be incremented for each TestFlight version.
|
|
||||||
* WARNING: Always leave this variable on line 24! If it is moved, you need to update ./scripts/bumpIosBuildNumber.sh
|
|
||||||
*/
|
|
||||||
const IOS_BUILD_NUMBER = '7'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Android build number. Must be incremented for each release.
|
|
||||||
* WARNING: Always leave this variable on line 30! If it is moved, you need to update ./scripts/bumpAndroidBuildNumber.sh
|
|
||||||
*/
|
|
||||||
const ANDROID_VERSION_CODE = 62
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uses built-in Expo env vars
|
* Uses built-in Expo env vars
|
||||||
*
|
*
|
||||||
|
@ -36,11 +24,10 @@ module.exports = function () {
|
||||||
*/
|
*/
|
||||||
const PLATFORM = process.env.EAS_BUILD_PLATFORM
|
const PLATFORM = process.env.EAS_BUILD_PLATFORM
|
||||||
|
|
||||||
/**
|
|
||||||
* Additional granularity for the `dist` field
|
|
||||||
*/
|
|
||||||
const DIST_BUILD_NUMBER =
|
const DIST_BUILD_NUMBER =
|
||||||
PLATFORM === 'android' ? ANDROID_VERSION_CODE : IOS_BUILD_NUMBER
|
PLATFORM === 'android'
|
||||||
|
? process.env.BSKY_ANDROID_VERSION_CODE
|
||||||
|
: process.env.BSKY_IOS_BUILD_NUMBER
|
||||||
|
|
||||||
return {
|
return {
|
||||||
expo: {
|
expo: {
|
||||||
|
@ -57,7 +44,6 @@ module.exports = function () {
|
||||||
userInterfaceStyle: 'automatic',
|
userInterfaceStyle: 'automatic',
|
||||||
splash: SPLASH_CONFIG,
|
splash: SPLASH_CONFIG,
|
||||||
ios: {
|
ios: {
|
||||||
buildNumber: IOS_BUILD_NUMBER,
|
|
||||||
supportsTablet: false,
|
supportsTablet: false,
|
||||||
bundleIdentifier: 'xyz.blueskyweb.app',
|
bundleIdentifier: 'xyz.blueskyweb.app',
|
||||||
config: {
|
config: {
|
||||||
|
@ -85,7 +71,6 @@ module.exports = function () {
|
||||||
backgroundColor: '#ffffff',
|
backgroundColor: '#ffffff',
|
||||||
},
|
},
|
||||||
android: {
|
android: {
|
||||||
versionCode: ANDROID_VERSION_CODE,
|
|
||||||
icon: './assets/icon.png',
|
icon: './assets/icon.png',
|
||||||
adaptiveIcon: {
|
adaptiveIcon: {
|
||||||
foregroundImage: './assets/icon-android-foreground.png',
|
foregroundImage: './assets/icon-android-foreground.png',
|
||||||
|
|
19
eas.json
19
eas.json
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"cli": {
|
"cli": {
|
||||||
"version": ">= 3.8.1",
|
"version": ">= 3.8.1",
|
||||||
"promptToConfigurePushNotifications": false
|
"promptToConfigurePushNotifications": false,
|
||||||
|
"appVersionSource": "remote"
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"base": {
|
"base": {
|
||||||
|
@ -28,7 +29,21 @@
|
||||||
"production": {
|
"production": {
|
||||||
"extends": "base",
|
"extends": "base",
|
||||||
"ios": {
|
"ios": {
|
||||||
"resourceClass": "large"
|
"resourceClass": "large",
|
||||||
|
"autoIncrement": true
|
||||||
|
},
|
||||||
|
"android": {
|
||||||
|
"autoIncrement": true
|
||||||
|
},
|
||||||
|
"channel": "production"
|
||||||
|
},
|
||||||
|
"github": {
|
||||||
|
"extends": "base",
|
||||||
|
"ios": {
|
||||||
|
"autoIncrement": true
|
||||||
|
},
|
||||||
|
"android": {
|
||||||
|
"autoIncrement": true
|
||||||
},
|
},
|
||||||
"channel": "production"
|
"channel": "production"
|
||||||
}
|
}
|
||||||
|
|
13
package.json
13
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "bsky.app",
|
"name": "bsky.app",
|
||||||
"version": "1.68.0",
|
"version": "1.69.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
|
@ -12,8 +12,12 @@
|
||||||
"android": "expo run:android",
|
"android": "expo run:android",
|
||||||
"ios": "expo run:ios",
|
"ios": "expo run:ios",
|
||||||
"web": "expo start --web",
|
"web": "expo start --web",
|
||||||
|
"use-build-number": "./scripts/useBuildNumberEnv.sh",
|
||||||
"build-web": "expo export:web && node ./scripts/post-web-build.js && cp -v ./web-build/static/js/*.* ./bskyweb/static/js/",
|
"build-web": "expo export:web && node ./scripts/post-web-build.js && cp -v ./web-build/static/js/*.* ./bskyweb/static/js/",
|
||||||
"build-all": "yarn intl:build && eas build --platform all",
|
"build-all": "yarn intl:build && yarn use-build-number eas build --platform all",
|
||||||
|
"build-ios": "yarn use-build-number eas build -p ios",
|
||||||
|
"build-android": "yarn use-build-number eas build -p android",
|
||||||
|
"build": "yarn use-build-number eas build",
|
||||||
"start": "expo start --dev-client",
|
"start": "expo start --dev-client",
|
||||||
"start:prod": "expo start --dev-client --no-dev --minify",
|
"start:prod": "expo start --dev-client --no-dev --minify",
|
||||||
"clean-cache": "rm -rf node_modules/.cache/babel-loader/*",
|
"clean-cache": "rm -rf node_modules/.cache/babel-loader/*",
|
||||||
|
@ -36,10 +40,7 @@
|
||||||
"intl:check": "yarn intl:extract && git diff-index -G'(^[^\\*# /])|(^#\\w)|(^\\s+[^\\*#/])' HEAD || (echo '\n⚠️ i18n detected un-extracted translations\n' && exit 1)",
|
"intl:check": "yarn intl:extract && git diff-index -G'(^[^\\*# /])|(^#\\w)|(^\\s+[^\\*#/])' HEAD || (echo '\n⚠️ i18n detected un-extracted translations\n' && exit 1)",
|
||||||
"intl:extract": "lingui extract",
|
"intl:extract": "lingui extract",
|
||||||
"intl:compile": "lingui compile",
|
"intl:compile": "lingui compile",
|
||||||
"nuke": "rm -rf ./node_modules && rm -rf ./ios && rm -rf ./android",
|
"nuke": "rm -rf ./node_modules && rm -rf ./ios && rm -rf ./android"
|
||||||
"bump": "./scripts/bumpIosBuildNumber.sh && ./scripts/bumpAndroidBuildNumber.sh",
|
|
||||||
"bump:ios": "./scripts/bumpIosBuildNumber.sh",
|
|
||||||
"bump:android": "./scripts/bumpAndroidBuildNumber.sh"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@atproto/api": "^0.9.5",
|
"@atproto/api": "^0.9.5",
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# The number here should always be the line number the iOS build variable is on
|
|
||||||
line=$(sed "30q;d" ./app.config.js)
|
|
||||||
currentBuildNumber=$(echo "$line" | grep -oE '[0-9]+([.][0-9]+)?')
|
|
||||||
newBuildNumber=$((currentBuildNumber+1))
|
|
||||||
newBuildVariable="const ANDROID_VERSION_CODE = '$newBuildNumber'"
|
|
||||||
sed -i.bak "30s/.*/ $newBuildVariable/" ./app.config.js
|
|
||||||
rm -rf ./app.config.js.bak
|
|
||||||
|
|
||||||
echo "Android build number bumped to $newBuildNumber"
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# The number here should always be the line number the iOS build variable is on
|
|
||||||
line=$(sed "24q;d" ./app.config.js)
|
|
||||||
currentBuildNumber=$(echo "$line" | grep -oE '[0-9]+([.][0-9]+)?')
|
|
||||||
newBuildNumber=$((currentBuildNumber+1))
|
|
||||||
newBuildVariable="const IOS_BUILD_NUMBER = '$newBuildNumber'"
|
|
||||||
sed -i.bak "24s/.*/ $newBuildVariable/" ./app.config.js
|
|
||||||
rm -rf ./app.config.js.bak
|
|
||||||
|
|
||||||
echo "iOS build number bumped to $newBuildNumber"
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
outputIos=$(eas build:version:get -p ios)
|
||||||
|
outputAndroid=$(eas build:version:get -p android)
|
||||||
|
currentIosVersion=${outputIos#*buildNumber - }
|
||||||
|
currentAndroidVersion=${outputAndroid#*versionCode - }
|
||||||
|
|
||||||
|
BSKY_IOS_BUILD_NUMBER=$((currentIosVersion+1))
|
||||||
|
BSKY_ANDROID_VERSION_CODE=$((currentAndroidVersion+1))
|
||||||
|
|
||||||
|
bash -c "BSKY_IOS_BUILD_NUMBER=$BSKY_IOS_BUILD_NUMBER BSKY_ANDROID_VERSION_CODE=$BSKY_ANDROID_VERSION_CODE $*"
|
||||||
|
|
Loading…
Reference in New Issue