Skip to content

Commit 2b53350

Browse files
authored
Merge pull request Expensify#78532 from callstack-internal/set-up-remote-ad-hoc-builds-2-revert
[NoQA] Revert "Merge pull request Expensify#76061
2 parents 6c1436c + 3eece9b commit 2b53350

13 files changed

Lines changed: 519 additions & 152 deletions

.github/workflows/remote-build-ios.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ jobs:
6666
env:
6767
GITHUB_TOKEN: ${{ github.token }}
6868
IS_HYBRID_APP: ${{ matrix.is_hybrid_build }}
69+
# Forces React Native to build from source to include our custom patches
70+
RCT_USE_RN_DEP: 0
71+
RCT_USE_PREBUILT_RNCORE: 0
6972
with:
7073
destination: simulator
7174
scheme: ${{ matrix.scheme }}

.github/workflows/testBuild.yml

Lines changed: 95 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ jobs:
298298
env:
299299
PULL_REQUEST_NUMBER: ${{ needs.prep.outputs.APP_PR_NUMBER }}
300300
outputs:
301-
ROCK_ANDROID_ADHOC_INDEX_URL: ${{ steps.set-artifact-url.outputs.ARTIFACT_URL }}
301+
S3_APK_PATH: ${{ steps.exportAndroidS3Path.outputs.S3_APK_PATH }}
302302
steps:
303303
- name: Checkout
304304
# v4
@@ -336,6 +336,23 @@ jobs:
336336
sed -i 's/ENVIRONMENT=staging/ENVIRONMENT=adhoc/' .env.adhoc
337337
echo "APP_PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> .env.adhoc
338338
339+
- name: Get Java version
340+
id: get-java-version
341+
uses: ./.github/actions/composite/getJavaVersion
342+
343+
- name: Setup Java
344+
# v4
345+
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12
346+
with:
347+
distribution: oracle
348+
java-version: ${{ steps.get-java-version.outputs.version }}
349+
350+
- name: Setup Ruby
351+
# v1.229.0
352+
uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252
353+
with:
354+
bundler-cache: true
355+
339356
- name: Setup 1Password CLI and certificates
340357
uses: Expensify/GitHub-Actions/setup-certificate-1p@main
341358
with:
@@ -364,6 +381,17 @@ jobs:
364381
ANDROID_UPLOAD_KEYSTORE_ALIAS: op://${{ vars.OP_VAULT }}/Repository-Secrets/ANDROID_UPLOAD_KEYSTORE_ALIAS
365382
ANDROID_UPLOAD_KEY_PASSWORD: op://${{ vars.OP_VAULT }}/Repository-Secrets/ANDROID_UPLOAD_KEY_PASSWORD
366383

384+
- name: Build Android app
385+
id: build
386+
env:
387+
ANDROID_UPLOAD_KEYSTORE_PASSWORD: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEYSTORE_PASSWORD }}
388+
ANDROID_UPLOAD_KEYSTORE_ALIAS: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEYSTORE_ALIAS }}
389+
ANDROID_UPLOAD_KEY_PASSWORD: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEY_PASSWORD }}
390+
GITHUB_ACTOR: ${{ github.actor }}
391+
GITHUB_TOKEN: ${{ github.token }}
392+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
393+
run: bundle exec fastlane android build_adhoc_hybrid
394+
367395
- name: Configure AWS Credentials
368396
# v4
369397
uses: aws-actions/configure-aws-credentials@ececac1a45f3b08a01d2dd070d28d111c5fe6722
@@ -372,31 +400,19 @@ jobs:
372400
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
373401
aws-region: us-east-1
374402

375-
- name: Rock Remote Build - Android
376-
id: rock-remote-build-android
377-
uses: callstackincubator/android@0bbc1b7c2e1a8be1ecb4d6c744c211869823fd65
403+
- name: Upload Android AdHoc build to S3
404+
run: bundle exec fastlane android upload_s3
378405
env:
379-
GITHUB_TOKEN: ${{ github.token }}
380-
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
381-
IS_HYBRID_APP: true
382-
with:
383-
variant: 'Adhoc'
384-
sign: true
385-
re-sign: true
386-
ad-hoc: true
387-
keystore-file: './upload-key.keystore'
388-
keystore-store-file: 'upload-key.keystore'
389-
keystore-store-password: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEYSTORE_PASSWORD }}
390-
keystore-key-alias: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEYSTORE_ALIAS }}
391-
keystore-key-password: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEY_PASSWORD }}
392-
# Specify the path (relative to the Android source directory) where the keystore should be placed.
393-
keystore-path: '../tools/buildtools/upload-key.keystore'
394-
comment-bot: false
395-
rock-build-extra-params: '--extra-params -PreactNativeArchitectures=arm64-v8a,x86_64'
396-
397-
- name: Set artifact URL output
398-
id: set-artifact-url
399-
run: echo "ARTIFACT_URL=$ARTIFACT_URL" >> "$GITHUB_OUTPUT"
406+
S3_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}
407+
S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
408+
S3_BUCKET: ad-hoc-expensify-cash
409+
S3_REGION: us-east-1
410+
411+
- name: Export S3 path
412+
id: exportAndroidS3Path
413+
run: |
414+
# $s3APKPath is set from within the Fastfile, android upload_s3 lane
415+
echo "S3_APK_PATH=$s3APKPath" >> "$GITHUB_OUTPUT"
400416
401417
iosHybrid:
402418
name: Build and deploy iOS for testing
@@ -407,7 +423,7 @@ jobs:
407423
PULL_REQUEST_NUMBER: ${{ needs.prep.outputs.APP_PR_NUMBER }}
408424
runs-on: macos-15-xlarge
409425
outputs:
410-
ROCK_IOS_ADHOC_INDEX_URL: ${{ steps.set-artifact-url.outputs.ARTIFACT_URL }}
426+
IOS_PATH: ${{ steps.export-ios-path.outputs.IOS_PATH }}
411427
steps:
412428
- name: Checkout
413429
# v4
@@ -440,6 +456,35 @@ jobs:
440456
sed -i '' 's/ENVIRONMENT=staging/ENVIRONMENT=adhoc/' .env.adhoc
441457
echo "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> .env.adhoc
442458
459+
- name: Setup Ruby
460+
# v1.229.0
461+
uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252
462+
with:
463+
bundler-cache: true
464+
465+
- name: Install New Expensify Gems
466+
run: bundle install
467+
468+
- name: Cache Pod dependencies
469+
# v4
470+
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57
471+
id: pods-cache
472+
with:
473+
path: Mobile-Expensify/iOS/Pods
474+
key: ${{ runner.os }}-pods-cache-${{ hashFiles('Mobile-Expensify/iOS/Podfile.lock', 'firebase.json') }}
475+
476+
- name: Compare Podfile.lock and Manifest.lock
477+
id: compare-podfile-and-manifest
478+
run: echo "IS_PODFILE_SAME_AS_MANIFEST=${{ hashFiles('Mobile-Expensify/iOS/Podfile.lock') == hashFiles('Mobile-Expensify/iOS/Manifest.lock') }}" >> "$GITHUB_OUTPUT"
479+
480+
- name: Install cocoapods
481+
uses: nick-fields/retry@3f757583fb1b1f940bc8ef4bf4734c8dc02a5847
482+
if: steps.pods-cache.outputs.cache-hit != 'true' || steps.compare-podfile-and-manifest.outputs.IS_PODFILE_SAME_AS_MANIFEST != 'true' || steps.setup-node.outputs.cache-hit != 'true'
483+
with:
484+
timeout_minutes: 10
485+
max_attempts: 5
486+
command: npm run pod-install
487+
443488
- name: Setup 1Password CLI and certificates
444489
uses: Expensify/GitHub-Actions/setup-certificate-1p@main
445490
with:
@@ -455,27 +500,10 @@ jobs:
455500
op read "op://${{ vars.OP_VAULT }}/OldApp_AdHoc_Notification_Service/OldApp_AdHoc_Notification_Service.mobileprovision" --force --out-file ./OldApp_AdHoc_Notification_Service.mobileprovision
456501
op read "op://${{ vars.OP_VAULT }}/New Expensify Distribution Certificate/Certificates.p12" --force --out-file ./Certificates.p12
457502
458-
- name: Create ExportOptions.plist
459-
run: |
460-
cat > Mobile-Expensify/iOS/ExportOptions.plist << 'EOF'
461-
<?xml version="1.0" encoding="UTF-8"?>
462-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
463-
<plist version="1.0">
464-
<dict>
465-
<key>method</key>
466-
<string>ad-hoc</string>
467-
<key>provisioningProfiles</key>
468-
<dict>
469-
<key>com.expensify.expensifylite.adhoc</key>
470-
<string>(OldApp) AdHoc</string>
471-
<key>com.expensify.expensifylite.adhoc.SmartScanExtension</key>
472-
<string>(OldApp) AdHoc: Share Extension</string>
473-
<key>com.expensify.expensifylite.adhoc.NotificationServiceExtension</key>
474-
<string>(OldApp) AdHoc: Notification Service</string>
475-
</dict>
476-
</dict>
477-
</plist>
478-
EOF
503+
- name: Build AdHoc app
504+
run: bundle exec fastlane ios build_adhoc_hybrid
505+
env:
506+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
479507

480508
- name: Configure AWS Credentials
481509
# v4
@@ -485,40 +513,23 @@ jobs:
485513
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
486514
aws-region: us-east-1
487515

488-
- name: Rock Remote Build - iOS
489-
id: rock-remote-build-ios
490-
uses: callstackincubator/ios@8dcef6cc275e0cf3299f5a97cde5ebd635c887d7
516+
- name: Upload AdHoc build to S3
517+
run: bundle exec fastlane ios upload_s3
491518
env:
492-
GITHUB_TOKEN: ${{ github.token }}
493-
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
494-
IS_HYBRID_APP: true
495-
with:
496-
destination: device
497-
re-sign: true
498-
ad-hoc: true
499-
scheme: 'Expensify AdHoc'
500-
configuration: 'AdHoc'
501-
certificate-file: './Certificates.p12'
502-
provisioning-profiles: |
503-
[
504-
{
505-
"name": "(OldApp) AdHoc",
506-
"file": "./OldApp_AdHoc.mobileprovision"
507-
},
508-
{
509-
"name": "(OldApp) AdHoc: Share Extension",
510-
"file": "./OldApp_AdHoc_Share_Extension.mobileprovision"
511-
},
512-
{
513-
"name": "(OldApp) AdHoc: Notification Service",
514-
"file": "./OldApp_AdHoc_Notification_Service.mobileprovision"
515-
}
516-
]
517-
comment-bot: false
518-
519-
- name: Set artifact URL output
520-
id: set-artifact-url
521-
run: echo "ARTIFACT_URL=$ARTIFACT_URL" >> "$GITHUB_OUTPUT"
519+
S3_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}
520+
S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
521+
S3_BUCKET: ad-hoc-expensify-cash
522+
S3_REGION: us-east-1
523+
524+
- name: Export iOS path
525+
id: export-ios-path
526+
run: |
527+
content_ios="$(cat ./ios_paths.json)"
528+
content_ios="${content_ios//'%'/'%25'}"
529+
content_ios="${content_ios//$'\n'/'%0A'}"
530+
content_ios="${content_ios//$'\r'/'%0D'}"
531+
ios_path=$(echo "$content_ios" | jq -r '.html_path')
532+
echo "IOS_PATH=$ios_path" >> "$GITHUB_OUTPUT"
522533
523534
postGithubComment:
524535
runs-on: ubuntu-latest
@@ -548,9 +559,9 @@ jobs:
548559
DESKTOP: ${{ needs.desktop.result }}
549560
IOS: ${{ needs.iosHybrid.result }}
550561
WEB: ${{ needs.web.result }}
551-
ANDROID_LINK: ${{ needs.androidHybrid.outputs.ROCK_ANDROID_ADHOC_INDEX_URL }}
562+
ANDROID_LINK: ${{ needs.androidHybrid.outputs.S3_APK_PATH }}
552563
DESKTOP_LINK: https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/${{ needs.prep.outputs.APP_PR_NUMBER }}/NewExpensify.dmg
553-
IOS_LINK: ${{ needs.iosHybrid.outputs.ROCK_IOS_ADHOC_INDEX_URL }}
564+
IOS_LINK: ${{ needs.iosHybrid.outputs.IOS_PATH }}
554565
WEB_LINK: https://${{ needs.prep.outputs.APP_PR_NUMBER }}.pr-testing.expensify.com
555566

556567
- name: Publish links to apps for download on Expensify/Mobile-Expensify PR
@@ -562,5 +573,5 @@ jobs:
562573
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
563574
ANDROID: ${{ needs.androidHybrid.result }}
564575
IOS: ${{ needs.iosHybrid.result }}
565-
ANDROID_LINK: ${{ needs.androidHybrid.outputs.ROCK_ANDROID_ADHOC_INDEX_URL }}
566-
IOS_LINK: ${{ needs.iosHybrid.outputs.ROCK_IOS_ADHOC_INDEX_URL }}
576+
ANDROID_LINK: ${{ needs.androidHybrid.outputs.S3_APK_PATH }}
577+
IOS_LINK: ${{ needs.iosHybrid.outputs.IOS_PATH }}

0 commit comments

Comments
 (0)