From 648372eb1a367ee707d0c48e8d8b793c7e15e79a Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Mon, 24 Mar 2025 13:53:23 -0600 Subject: [PATCH 01/19] Update when we run deploy --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5244ee5cd011d..ca70b51927e61 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -2,7 +2,7 @@ name: Deploy code to staging or production on: push: - branches: [staging, production] + branches: [staging, production, andrew-web-desktop] env: SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} @@ -643,7 +643,7 @@ jobs: aws s3 cp --acl public-read --content-type 'application/json' --metadata-directive REPLACE ${{ env.S3_URL }}/.well-known/apple-app-site-association ${{ env.S3_URL }}/.well-known/apple-app-site-association aws s3 cp --acl public-read --content-type 'application/json' --metadata-directive REPLACE ${{ env.S3_URL }}/.well-known/apple-app-site-association ${{env.S3_URL }}/apple-app-site-association env: - S3_URL: s3://${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging-' || '' }}expensify-cash + S3_URL: s3://${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging-' || '' }}${{ vars.WEB_S3_BUCKET }} - name: Purge Cloudflare cache run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging.' || '' }}new.expensify.com"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache From 83708b88a1723c504aa4dd233240992e8c181d94 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Mon, 24 Mar 2025 14:31:56 -0600 Subject: [PATCH 02/19] Add parameters for deskotp builds --- .github/workflows/deploy.yml | 25 ++++++++++++++++++------- config/electronBuilder.config.js | 4 ++-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ca70b51927e61..15d4a4c98ebf3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -304,13 +304,23 @@ jobs: DESKTOP_CERTIFICATE_BASE64: "op://${{ vars.OP_VAULT }}/Desktop Certificates.p12/CSC_LINK" DESKTOP_CERTIFICATE_PASSWORD: "op://${{ vars.OP_VAULT }}/Desktop Certificates.p12/CSC_KEY_PASSWORD" - - name: Build desktop app - run: | - if [[ ${{ env.SHOULD_DEPLOY_PRODUCTION }} == 'true' ]]; then - npm run desktop-build - else - npm run desktop-build-staging - fi + - name: Build staging desktop app + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: npm run desktop-build-staging + env: + CSC_LINK: ${{ steps.load-credentials.outputs.DESKTOP_CERTIFICATE_BASE64 }} + CSC_KEY_PASSWORD: ${{ steps.load-credentials.outputs.DESKTOP_CERTIFICATE_PASSWORD }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + GCP_GEOLOCATION_API_KEY: ${{ secrets.GCP_GEOLOCATION_API_KEY_PRODUCTION }} + S3_BUCKET: ${{ vars.DESKTOP_STAGING_S3_BUCKET }} + + - name: Build production desktop app + if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: npm run desktop-build env: CSC_LINK: ${{ steps.load-credentials.outputs.DESKTOP_CERTIFICATE_BASE64 }} CSC_KEY_PASSWORD: ${{ steps.load-credentials.outputs.DESKTOP_CERTIFICATE_PASSWORD }} @@ -320,6 +330,7 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} GCP_GEOLOCATION_API_KEY: ${{ secrets.GCP_GEOLOCATION_API_KEY_PRODUCTION }} + S3_BUCKET: ${{ vars.DESKTOP_S3_BUCKET }} - name: Upload desktop sourcemaps artifact uses: actions/upload-artifact@v4 diff --git a/config/electronBuilder.config.js b/config/electronBuilder.config.js index 5bfa9b75c463e..6a5f97bd8bb22 100644 --- a/config/electronBuilder.config.js +++ b/config/electronBuilder.config.js @@ -3,8 +3,8 @@ const {version} = require('../package.json'); const pullRequestNumber = process.env.PULL_REQUEST_NUMBER; const s3Bucket = { - production: 'expensify-cash', - staging: 'staging-expensify-cash', + production: process.env.DESKTOP_S3_BUCKET || 'expensify-cash' , + staging: process.env.DESKTOP_STAGING_S3_BUCKET || 'staging-expensify-cash', adhoc: 'ad-hoc-expensify-cash', }; From 62d93690463c3579454b113de263c8410f7cb6a8 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Mon, 24 Mar 2025 15:48:51 -0600 Subject: [PATCH 03/19] Update env name --- config/electronBuilder.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/electronBuilder.config.js b/config/electronBuilder.config.js index 6a5f97bd8bb22..bab1aaabf475c 100644 --- a/config/electronBuilder.config.js +++ b/config/electronBuilder.config.js @@ -3,8 +3,8 @@ const {version} = require('../package.json'); const pullRequestNumber = process.env.PULL_REQUEST_NUMBER; const s3Bucket = { - production: process.env.DESKTOP_S3_BUCKET || 'expensify-cash' , - staging: process.env.DESKTOP_STAGING_S3_BUCKET || 'staging-expensify-cash', + production: process.env.S3_BUCKET || 'expensify-cash' , + staging: process.env.S3_BUCKET || 'staging-expensify-cash', adhoc: 'ad-hoc-expensify-cash', }; From 8d94e3dc9e3bfc5e67087ae49598d186b2fe1c27 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Thu, 27 Mar 2025 15:14:49 -0600 Subject: [PATCH 04/19] Fix prettier and adhoc --- config/electronBuilder.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/electronBuilder.config.js b/config/electronBuilder.config.js index bab1aaabf475c..130db8c647896 100644 --- a/config/electronBuilder.config.js +++ b/config/electronBuilder.config.js @@ -3,9 +3,9 @@ const {version} = require('../package.json'); const pullRequestNumber = process.env.PULL_REQUEST_NUMBER; const s3Bucket = { - production: process.env.S3_BUCKET || 'expensify-cash' , + production: process.env.S3_BUCKET || 'expensify-cash', staging: process.env.S3_BUCKET || 'staging-expensify-cash', - adhoc: 'ad-hoc-expensify-cash', + adhoc: process.env.S3_BUCKET || 'ad-hoc-expensify-cash', }; const s3Path = { From 0ffccf67672cdeab465c76f951ade163fdb23d4a Mon Sep 17 00:00:00 2001 From: OSBotify Date: Fri, 28 Mar 2025 19:47:34 +0000 Subject: [PATCH 05/19] Update version to 9.1.20-3 --- android/app/build.gradle | 4 +- ios/NewExpensify/Info.plist | 2 +- ios/NotificationServiceExtension/Info.plist | 2 +- ios/ShareViewController/Info.plist | 53 ++++++++++----------- package-lock.json | 4 +- package.json | 2 +- 6 files changed, 33 insertions(+), 34 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 9f7191758c917..b438b323ebe2f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -114,8 +114,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1009012002 - versionName "9.1.20-2" + versionCode 1009012003 + versionName "9.1.20-3" // Supported language variants must be declared here to avoid from being removed during the compilation. // This also helps us to not include unnecessary language variants in the APK. resConfigs "en", "es" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 762533fb0cf02..973f744a109fa 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -44,7 +44,7 @@ CFBundleVersion - 9.1.20.2 + 9.1.20.3 FullStory OrgId diff --git a/ios/NotificationServiceExtension/Info.plist b/ios/NotificationServiceExtension/Info.plist index 0bd5d02cbc7de..750d5d7c3749b 100644 --- a/ios/NotificationServiceExtension/Info.plist +++ b/ios/NotificationServiceExtension/Info.plist @@ -13,7 +13,7 @@ CFBundleShortVersionString 9.1.20 CFBundleVersion - 9.1.20.2 + 9.1.20.3 NSExtension NSExtensionPointIdentifier diff --git a/ios/ShareViewController/Info.plist b/ios/ShareViewController/Info.plist index 524cecd4010f4..a30265a75ec92 100644 --- a/ios/ShareViewController/Info.plist +++ b/ios/ShareViewController/Info.plist @@ -1,7 +1,6 @@ - CFBundleDisplayName $(PRODUCT_NAME) @@ -12,33 +11,33 @@ CFBundleName $(PRODUCT_NAME) CFBundleShortVersionString - 9.1.18 + 9.1.20 CFBundleVersion - 9.1.18.2 - NSExtension - - NSExtensionAttributes - - NSExtensionActivationRule + 9.1.20.3 + NSExtension + + NSExtensionAttributes + + NSExtensionActivationRule - NSExtensionActivationSupportsAttachmentsWithMaxCount - 1 - NSExtensionActivationSupportsMovieWithMaxCount - 1 - NSExtensionActivationSupportsImageWithMaxCount - 1 - NSExtensionActivationSupportsFileWithMaxCount - 1 - NSExtensionActivationSupportsText - - NSExtensionActivationSupportsWebURLWithMaxCount - 1 - - - NSExtensionMainStoryboard - MainInterface - NSExtensionPointIdentifier - com.apple.share-services - + NSExtensionActivationSupportsAttachmentsWithMaxCount + 1 + NSExtensionActivationSupportsFileWithMaxCount + 1 + NSExtensionActivationSupportsImageWithMaxCount + 1 + NSExtensionActivationSupportsMovieWithMaxCount + 1 + NSExtensionActivationSupportsText + + NSExtensionActivationSupportsWebURLWithMaxCount + 1 + + + NSExtensionMainStoryboard + MainInterface + NSExtensionPointIdentifier + com.apple.share-services + diff --git a/package-lock.json b/package-lock.json index 56884a12ef8d0..db35353335a84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "9.1.20-2", + "version": "9.1.20-3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "9.1.20-2", + "version": "9.1.20-3", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 3c3ba250f604e..5ba8d9c730436 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "9.1.20-2", + "version": "9.1.20-3", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", From 2e89e1c07c22eeab081a89711bd5ed52cba92235 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Fri, 28 Mar 2025 19:47:34 +0000 Subject: [PATCH 06/19] Update Mobile-Expensify submodule version to 9.1.20-3 --- Mobile-Expensify | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mobile-Expensify b/Mobile-Expensify index de272ce1b0bda..c54aede1b7cd4 160000 --- a/Mobile-Expensify +++ b/Mobile-Expensify @@ -1 +1 @@ -Subproject commit de272ce1b0bda33cfc87e36c15afe7afaad5ad30 +Subproject commit c54aede1b7cd4fbe56c8fffdc71172683f4f82d2 From ce9cab4063cfd7c0387584386707590602671eb0 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Fri, 28 Mar 2025 14:03:19 -0600 Subject: [PATCH 07/19] Update readme! --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 21df98a76a603..67d73f4ef4b02 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ -#### Table of Contents +#### Table of Contents! * [Local Development](#local-development) * [Testing on browsers in simulators and emulators](#testing-on-browsers-in-simulators-and-emulators) * [Running The Tests](#running-the-tests) From a40ef0414c8e95bde5b187833768671c5786eeab Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 09:54:01 -0600 Subject: [PATCH 08/19] Add more web params --- .github/scripts/verifyDeploy.sh | 11 ++--------- .github/workflows/deploy.yml | 15 +++++++++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/scripts/verifyDeploy.sh b/.github/scripts/verifyDeploy.sh index 0a8fd3c97bcf9..59f188d14d367 100755 --- a/.github/scripts/verifyDeploy.sh +++ b/.github/scripts/verifyDeploy.sh @@ -1,15 +1,8 @@ #!/bin/bash -ENV="$1" +URL="$1" EXPECTED_VERSION="$2" -BASE_URL="" -if [[ "$ENV" == 'staging' ]]; then - BASE_URL='https://staging.new.expensify.com' -else - BASE_URL='https://new.expensify.com' -fi - sleep 5 ATTEMPT=0 MAX_ATTEMPTS=10 @@ -17,7 +10,7 @@ while [[ $ATTEMPT -lt $MAX_ATTEMPTS ]]; do ((ATTEMPT++)) echo "Attempt $ATTEMPT: Checking deployed version..." - DOWNLOADED_VERSION="$(wget -q -O /dev/stdout "$BASE_URL"/version.json | jq -r '.version')" + DOWNLOADED_VERSION="$(wget -q -O /dev/stdout "$URL"/version.json | jq -r '.version')" if [[ "$EXPECTED_VERSION" == "$DOWNLOADED_VERSION" ]]; then echo "Success: Deployed version matches local version: $DOWNLOADED_VERSION" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 29fe55ae94d29..0ed3998c8029f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -494,18 +494,25 @@ jobs: env: S3_URL: s3://${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging-' || '' }}${{ vars.WEB_S3_BUCKET }} - - name: Purge Cloudflare cache - run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging.' || '' }}new.expensify.com"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache + - name: Purge staging Cloudflare cache + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: /home/runner/.local/bin/cli4 --verbose --delete hosts=[${{ vars.WEB_STAGING_HOST }}] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache + env: + CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} + + - name: Purge production Cloudflare cache + if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: /home/runner/.local/bin/cli4 --verbose --delete hosts=[${{ vars.WEB_PRODUCTION_HOST }}] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache env: CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} - name: Verify staging deploy if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: ./.github/scripts/verifyDeploy.sh staging ${{ needs.prep.outputs.APP_VERSION }} + run: ./.github/scripts/verifyDeploy.sh ${{ vars.WEB_STAGING_HOST }} ${{ needs.prep.outputs.APP_VERSION }} - name: Verify production deploy if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: ./.github/scripts/verifyDeploy.sh production ${{ needs.prep.outputs.APP_VERSION }} + run: ./.github/scripts/verifyDeploy.sh ${{ vars.WEB_PRODUCTION_HOST }} ${{ needs.prep.outputs.APP_VERSION }} - name: Upload web sourcemaps artifact uses: actions/upload-artifact@v4 From 1523131d2c655fbf58bbe1d9f076a3155350c574 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 10:34:52 -0600 Subject: [PATCH 09/19] Run a production deploy --- .github/workflows/deploy.yml | 2 +- Mobile-Expensify | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0ed3998c8029f..a411953de81be 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,7 +5,7 @@ on: branches: [staging, production, andrew-web-desktop] env: - SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} + SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/andrew-web-desktop' }} IS_APP_REPO: ${{ github.repository == 'Expensify/App' }} concurrency: diff --git a/Mobile-Expensify b/Mobile-Expensify index c54aede1b7cd4..e8bc8c24f6c9a 160000 --- a/Mobile-Expensify +++ b/Mobile-Expensify @@ -1 +1 @@ -Subproject commit c54aede1b7cd4fbe56c8fffdc71172683f4f82d2 +Subproject commit e8bc8c24f6c9a8cf3dcfe3d0391282e50b4f1c5c From b1241393b4b1451e90aad2ffeff042e02f42cee9 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 11:29:55 -0600 Subject: [PATCH 10/19] Try to fix lint --- .github/workflows/deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a411953de81be..d51463d6cff52 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,7 +5,7 @@ on: branches: [staging, production, andrew-web-desktop] env: - SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/andrew-web-desktop' }} + SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} IS_APP_REPO: ${{ github.repository == 'Expensify/App' }} concurrency: @@ -496,13 +496,13 @@ jobs: - name: Purge staging Cloudflare cache if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: /home/runner/.local/bin/cli4 --verbose --delete hosts=[${{ vars.WEB_STAGING_HOST }}] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache + run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["${{ vars.WEB_STAGING_HOST }}"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache env: CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} - name: Purge production Cloudflare cache if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: /home/runner/.local/bin/cli4 --verbose --delete hosts=[${{ vars.WEB_PRODUCTION_HOST }}] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache + run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["${{ vars.WEB_PRODUCTION_HOST }}"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache env: CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} From fc84c8b4373739d16486a36a8192bd6083ff33f9 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 11:41:40 -0600 Subject: [PATCH 11/19] Remove debug --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d51463d6cff52..fddb86d12b5e8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -2,7 +2,7 @@ name: Deploy code to staging or production on: push: - branches: [staging, production, andrew-web-desktop] + branches: [staging, production] env: SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} From 9669723f040f278863d7da1454695491509d4efa Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 11:46:45 -0600 Subject: [PATCH 12/19] Revert submodule change --- Mobile-Expensify | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mobile-Expensify b/Mobile-Expensify index e8bc8c24f6c9a..c54aede1b7cd4 160000 --- a/Mobile-Expensify +++ b/Mobile-Expensify @@ -1 +1 @@ -Subproject commit e8bc8c24f6c9a8cf3dcfe3d0391282e50b4f1c5c +Subproject commit c54aede1b7cd4fbe56c8fffdc71172683f4f82d2 From b3353272b77db7e387ba70b1d0c78cc4f6501c98 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 12:14:54 -0600 Subject: [PATCH 13/19] Update S3 variable names --- .github/workflows/deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5e3c2b9ddf93e..1a93e859b8619 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -279,7 +279,7 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} GCP_GEOLOCATION_API_KEY: ${{ secrets.GCP_GEOLOCATION_API_KEY_PRODUCTION }} - S3_BUCKET: ${{ vars.DESKTOP_STAGING_S3_BUCKET }} + S3_BUCKET: ${{ vars.STAGING_S3_BUCKET }} - name: Build production desktop app if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} @@ -293,7 +293,7 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} GCP_GEOLOCATION_API_KEY: ${{ secrets.GCP_GEOLOCATION_API_KEY_PRODUCTION }} - S3_BUCKET: ${{ vars.DESKTOP_S3_BUCKET }} + S3_BUCKET: ${{ vars.PRODUCTION_S3_BUCKET }} - name: Upload desktop sourcemaps artifact # v4 @@ -515,7 +515,7 @@ jobs: aws s3 cp --acl public-read --content-type 'application/json' --metadata-directive REPLACE ${{ env.S3_URL }}/.well-known/apple-app-site-association ${{ env.S3_URL }}/.well-known/apple-app-site-association aws s3 cp --acl public-read --content-type 'application/json' --metadata-directive REPLACE ${{ env.S3_URL }}/.well-known/apple-app-site-association ${{env.S3_URL }}/apple-app-site-association env: - S3_URL: s3://${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging-' || '' }}${{ vars.WEB_S3_BUCKET }} + S3_URL: s3://${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging-' || '' }}${{ vars.PRODUCTION_S3_BUCKET }} - name: Purge staging Cloudflare cache if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} From cd4950126f919778b103aaedfbf9c7c61bcbeff1 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 12:15:32 -0600 Subject: [PATCH 14/19] Run a test staging deploy --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1a93e859b8619..c48fbdf77691b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -2,7 +2,7 @@ name: Deploy code to staging or production on: push: - branches: [staging, production] + branches: [staging, production, andrew-web-desktop] env: SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} From ac610ca4aa3ef386b241c05db86747adf848abcc Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 12:35:03 -0600 Subject: [PATCH 15/19] Remove debug --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c48fbdf77691b..1a93e859b8619 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -2,7 +2,7 @@ name: Deploy code to staging or production on: push: - branches: [staging, production, andrew-web-desktop] + branches: [staging, production] env: SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} From 1072ac37461703eed7d606c94957021aa01100a4 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 13:37:45 -0600 Subject: [PATCH 16/19] DRY up code --- .github/workflows/deploy.yml | 48 +++++++++++------------------------- 1 file changed, 14 insertions(+), 34 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1a93e859b8619..1aca8bc0ddf78 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -2,7 +2,7 @@ name: Deploy code to staging or production on: push: - branches: [staging, production] + branches: [staging, production, andrew-web-desktop] env: SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} @@ -267,9 +267,8 @@ jobs: DESKTOP_CERTIFICATE_BASE64: "op://${{ vars.OP_VAULT }}/Desktop Certificates.p12/CSC_LINK" DESKTOP_CERTIFICATE_PASSWORD: "op://${{ vars.OP_VAULT }}/Desktop Certificates.p12/CSC_KEY_PASSWORD" - - name: Build staging desktop app - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: npm run desktop-build-staging + - name: Build desktop app + run: ${{ env.SHOULD_DEPLOY_PRODUCTION == 'true' && 'npm run desktop-build' || 'npm run desktop-build-staging' }} env: CSC_LINK: ${{ steps.load-credentials.outputs.DESKTOP_CERTIFICATE_BASE64 }} CSC_KEY_PASSWORD: ${{ steps.load-credentials.outputs.DESKTOP_CERTIFICATE_PASSWORD }} @@ -279,21 +278,7 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} GCP_GEOLOCATION_API_KEY: ${{ secrets.GCP_GEOLOCATION_API_KEY_PRODUCTION }} - S3_BUCKET: ${{ vars.STAGING_S3_BUCKET }} - - - name: Build production desktop app - if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: npm run desktop-build - env: - CSC_LINK: ${{ steps.load-credentials.outputs.DESKTOP_CERTIFICATE_BASE64 }} - CSC_KEY_PASSWORD: ${{ steps.load-credentials.outputs.DESKTOP_CERTIFICATE_PASSWORD }} - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - GCP_GEOLOCATION_API_KEY: ${{ secrets.GCP_GEOLOCATION_API_KEY_PRODUCTION }} - S3_BUCKET: ${{ vars.PRODUCTION_S3_BUCKET }} + S3_BUCKET: ${{ env.SHOULD_DEPLOY_PRODUCTION == 'true' && vars.PRODUCTION_S3_BUCKET || vars.STAGING_S3_BUCKET }} - name: Upload desktop sourcemaps artifact # v4 @@ -517,25 +502,20 @@ jobs: env: S3_URL: s3://${{ env.SHOULD_DEPLOY_PRODUCTION != 'true' && 'staging-' || '' }}${{ vars.PRODUCTION_S3_BUCKET }} - - name: Purge staging Cloudflare cache - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["${{ vars.WEB_STAGING_HOST }}"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache + - name: Purge Cloudflare cache + run: | + HOST=${{ env.SHOULD_DEPLOY_PRODUCTION == 'true' && vars.WEB_PRODUCTION_HOST || vars.WEB_STAGING_HOST }} + /home/runner/.local/bin/cli4 --verbose --delete hosts=["$HOST"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache env: CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} + SHOULD_DEPLOY_PRODUCTION: ${{ env.SHOULD_DEPLOY_PRODUCTION }} - - name: Purge production Cloudflare cache - if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: /home/runner/.local/bin/cli4 --verbose --delete hosts=["${{ vars.WEB_PRODUCTION_HOST }}"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache + - name: Verify deploy + run: | + HOST=${{ env.SHOULD_DEPLOY_PRODUCTION == 'true' && vars.WEB_PRODUCTION_HOST || vars.WEB_STAGING_HOST }} + ./.github/scripts/verifyDeploy.sh "$HOST" "${{ needs.prep.outputs.APP_VERSION }}" env: - CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} - - - name: Verify staging deploy - if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: ./.github/scripts/verifyDeploy.sh ${{ vars.WEB_STAGING_HOST }} ${{ needs.prep.outputs.APP_VERSION }} - - - name: Verify production deploy - if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} - run: ./.github/scripts/verifyDeploy.sh ${{ vars.WEB_PRODUCTION_HOST }} ${{ needs.prep.outputs.APP_VERSION }} + SHOULD_DEPLOY_PRODUCTION: ${{ env.SHOULD_DEPLOY_PRODUCTION }} - name: Upload web sourcemaps artifact # v4 From 14d943222d7dedbde332c4693a033c40a89cecad Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 1 Apr 2025 13:51:45 -0600 Subject: [PATCH 17/19] Remove debug --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1aca8bc0ddf78..4088bf9275f61 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -2,7 +2,7 @@ name: Deploy code to staging or production on: push: - branches: [staging, production, andrew-web-desktop] + branches: [staging, production] env: SHOULD_DEPLOY_PRODUCTION: ${{ github.ref == 'refs/heads/production' }} From 00966e7f3f79ebdff5be88afbf12cbe36963a3a2 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Wed, 2 Apr 2025 13:38:11 -0600 Subject: [PATCH 18/19] Resolve review comments --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4088bf9275f61..eae6703a2601e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -504,18 +504,18 @@ jobs: - name: Purge Cloudflare cache run: | - HOST=${{ env.SHOULD_DEPLOY_PRODUCTION == 'true' && vars.WEB_PRODUCTION_HOST || vars.WEB_STAGING_HOST }} /home/runner/.local/bin/cli4 --verbose --delete hosts=["$HOST"] /zones/:9ee042e6cfc7fd45e74aa7d2f78d617b/purge_cache env: CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }} SHOULD_DEPLOY_PRODUCTION: ${{ env.SHOULD_DEPLOY_PRODUCTION }} + HOST: ${{ env.SHOULD_DEPLOY_PRODUCTION == 'true' && vars.WEB_PRODUCTION_HOST || vars.WEB_STAGING_HOST }} - name: Verify deploy run: | - HOST=${{ env.SHOULD_DEPLOY_PRODUCTION == 'true' && vars.WEB_PRODUCTION_HOST || vars.WEB_STAGING_HOST }} ./.github/scripts/verifyDeploy.sh "$HOST" "${{ needs.prep.outputs.APP_VERSION }}" env: SHOULD_DEPLOY_PRODUCTION: ${{ env.SHOULD_DEPLOY_PRODUCTION }} + HOST: ${{ env.SHOULD_DEPLOY_PRODUCTION == 'true' && vars.WEB_PRODUCTION_HOST || vars.WEB_STAGING_HOST }} - name: Upload web sourcemaps artifact # v4 From 65c0b6adabac14a0acac1933a97e673e1ee70218 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Wed, 2 Apr 2025 13:39:37 -0600 Subject: [PATCH 19/19] Fix `!` too --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67d73f4ef4b02..21df98a76a603 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ -#### Table of Contents! +#### Table of Contents * [Local Development](#local-development) * [Testing on browsers in simulators and emulators](#testing-on-browsers-in-simulators-and-emulators) * [Running The Tests](#running-the-tests)