Skip to content

use tsx instead of ts-node (#3710) #592

use tsx instead of ts-node (#3710)

use tsx instead of ts-node (#3710) #592

Workflow file for this run

name: app IOS
on:
workflow_dispatch: { }
push:
branches:
- dev
jobs:
build-ios:
runs-on: macos-14
env:
PROJECT: ${{ 'App.xcworkspace' }}
SCHEME: ${{ 'App' }}
DATA_DIR: ${{ 'xcbuild' }}
ARCHIVE_NAME: ${{ 'Invasives.xcarchive' }}
EXPORT_DIR: ${{ 'export' }}
IPA_NAME: ${{ 'Invasives.ipa' }}
steps:
- uses: actions/checkout@v4
- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version: 20.x
architecture: arm64
- name: Which versions of XCode are available?
run: |
sudo ls -la /Applications | grep "Xcode"
- name: XCode select 15.3
run: |
sudo xcode-select -s /Applications/Xcode_15.3.app/Contents/Developer
- name: Install sharedAPI dependencies
working-directory: ./sharedAPI
run: |
npm ci
- name: Install app dependencies
working-directory: ./app
run: |
npm ci
- name: Apply Patches
working-directory: ./app
run: |
npx patch-package
- name: Install Asset Pack
run: |
curl --no-progress-meter https://nrs.objectstore.gov.bc.ca/rzivsz/asset_pack_sept17_2024.tar.gz -O && tar xzf asset_pack_sept17_2024.tar.gz && rm asset_pack_sept17_2024.tar.gz && find .
working-directory: ./app/public/assets
- name: Run build
working-directory: ./app
env:
NODE_OPTIONS: --max-old-space-size=6000
REACT_APP_API_HOST: ${{ secrets.APPV2_REACT_APP_API_HOST }}
PUBLIC_MAP_URL: ${{ secrets.APPV2_PUBLIC_MAP_URL }}
IAPP_GEOJSON_URL: ${{ secrets.APPV2_IAPP_GEOJSON_URL }}
run: |
npm run build:ios
- name: Capacitor update
run: npx cap update ios
working-directory: ./app
- name: Capacitor copy
run: npx cap copy ios
working-directory: ./app
- name: CocoaPod Install
working-directory: ./app/ios/App
run: pod install
- name: List App files (DEBUG)
working-directory: ./app/ios/App
run: find .
- name: Increment Build No.
working-directory: ./app/ios/App
env:
BUILD_NO: ${{ github.run_number }}
run: |
# Set Build Number. Not worrying about storing to repo.
agvtool new-version -all "2.${BUILD_NO}"
- name: Install the Apple certificate and provisioning profile
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.APPLE_APP_STORE_BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.APPLE_APP_STORE_BUILD_CERTIFICATE_PASSWD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.APPV2_PROVISIONING_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.APPV2_KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode --output $PP_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
- name: Build For Release
working-directory: ./app/ios/App
run: |
xcodebuild \
-workspace $PROJECT \
-scheme $SCHEME \
-configuration Release \
-sdk iphoneos \
-derivedDataPath $DATA_DIR \
-archivePath ${DATA_DIR}/${ARCHIVE_NAME} \
archive
- name: Export Archive
working-directory: ./app/ios/App
run: |
xcodebuild \
-exportArchive \
-archivePath ${DATA_DIR}/${ARCHIVE_NAME} \
-exportPath $EXPORT_DIR/${IPA_NAME} \
-exportOptionsPlist ExportOptions.plist \
-verbose
- uses: actions/upload-artifact@v4
with:
name: Exported
path: app/ios/App/export/Invasives.ipa
retention-days: 1
if-no-files-found: error
- name: Push to app store
if: github.event_name == 'workflow_dispatch'
env:
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY_IDENTIFIER: ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER_95 }}
APP_STORE_CONNECT_PRIVATE_KEY: ${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY_95 }}
working-directory: ./app/ios/App
run: |
mkdir $HOME/.private_keys/
echo -n "$APP_STORE_CONNECT_PRIVATE_KEY" > $HOME/.private_keys/AuthKey_${APP_STORE_CONNECT_KEY_IDENTIFIER}.p8
xcrun altool --validate-app -f ./export/Invasives.ipa/App.ipa -t ios --apiKey ${APP_STORE_CONNECT_KEY_IDENTIFIER} --apiIssuer ${APP_STORE_CONNECT_ISSUER_ID}
xcrun altool --upload-app -f ./export/Invasives.ipa/App.ipa -t ios --apiKey ${APP_STORE_CONNECT_KEY_IDENTIFIER} --apiIssuer ${APP_STORE_CONNECT_ISSUER_ID}