Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
e3f497e
Add Capacitor wrapper package scaffold
warp Apr 22, 2026
0597716
Allow fastlane Android uploads from AAB or APK
warp Apr 22, 2026
29b7c22
Build Android AAB in CI for production releases
warp Apr 22, 2026
57e0f6e
Add Capacitor iOS and Android native projects
warp Apr 22, 2026
ae21f03
Persist Ember dist for Capacitor builds in CI
warp Apr 22, 2026
046dabe
Add Capacitor package renaming/versioning script
warp Apr 22, 2026
76b8560
Configure Android release signing for Capacitor build
warp Apr 22, 2026
5f27f12
Make Google Play JSON key lookup CI-friendly
warp Apr 22, 2026
5bdcf1d
Switch CI Android build from Cordova to Capacitor
warp Apr 22, 2026
9556d70
Switch CI iOS build from Cordova to Capacitor
warp Apr 22, 2026
c6bb283
Update docs for Capacitor-based mobile builds
warp Apr 22, 2026
a45238d
Allow development builds to target a remote API
warp Apr 22, 2026
b707e74
Add Podfile lock to pin dependencies
warp Apr 22, 2026
b324447
Fix iOS safe-area padding and prevent horizontal overflow
warp Apr 22, 2026
fc317bb
Match iOS native background to app theme
warp Apr 22, 2026
928ad36
Hide smart banner in native shell
warp Apr 22, 2026
4688f0b
Ignore gzip web assets in Android packaging
warp Apr 22, 2026
879efd8
Add Android run helper targeting default emulator
warp Apr 22, 2026
b61e2fc
Respect Android system insets for WebView
warp Apr 22, 2026
807ac8c
Apply Android system bar insets to avoid WebView underlap
warp Apr 22, 2026
6671cb5
Apply Android insets to Capacitor content root
warp Apr 22, 2026
9d60e9b
Set Android system bar colors for readability
warp Apr 22, 2026
b0aed09
Apply status bar styling during Android splash and startup
warp Apr 22, 2026
1926cf6
Make Android inset padding area match app background
warp Apr 22, 2026
0ec9752
Regenerate launcher icons from logo-art with blue background
warp Apr 22, 2026
310ec48
Remove ember-cli-cordova integration and add Capacitor shim
warp Apr 22, 2026
a4bbdfc
Remove Cordova build job from CircleCI pipeline
warp Apr 22, 2026
f9577ba
Remove Cordova references from docs and gitignore
warp Apr 22, 2026
6425cef
Remove legacy Cordova project and build artifacts
warp Apr 22, 2026
1667538
Upgrade Capacitor to 8.3.1 and require Node 22
warp Apr 22, 2026
28e216d
Use Yarn for Capacitor wrapper dependencies
warp Apr 22, 2026
740f790
Raise iOS deployment target to 14 for Capacitor builds
warp Apr 22, 2026
656ab32
Anchor Android build ignore to preserve app/build/.npmkeep
warp Apr 22, 2026
bc6a0b8
Update Android applicationId from rename script
warp Apr 22, 2026
82234ef
Prevent iOS settings dialog from closing without implementation
warp Apr 22, 2026
a6b61bf
Check iOS push permission in cordova service shim
warp Apr 22, 2026
a6cb01b
Fail Android build if google-services plugin apply fails
warp Apr 22, 2026
0262012
Fix Android instrumented test to assert BuildConfig application id
warp Apr 22, 2026
93d7b57
Disable Android allowBackup
warp Apr 22, 2026
643d75d
Restrict Android FileProvider paths to cache locations
warp Apr 22, 2026
42f05cd
Use branded Android adaptive icon background
warp Apr 22, 2026
06c75a4
Update Android strings for staging app id
warp Apr 22, 2026
bd158ba
Use SplashScreen background attribute for launch theme
warp Apr 22, 2026
23e3ecc
Pin Android Gradle builds to JDK 17
warp Apr 22, 2026
a3009d1
Remove obsolete bundledWebRuntime from Capacitor config
warp Apr 22, 2026
c669f19
Fail fast when rename_package replacements no-op
warp Apr 22, 2026
e6b31ae
Avoid Groovy optional chaining in google-services guard
warp Apr 22, 2026
71441d7
Handle spawnSync failures in Android run helper
warp Apr 22, 2026
7c451b7
Harden Android artifact path resolution in Fastlane
warp Apr 22, 2026
893681d
Document ENVIRONMENT for production Ember web builds
warp Apr 22, 2026
9bc3b50
Expand development CSP connect-src for API/socket overrides
warp Apr 22, 2026
caff5d8
Raise iOS deployment target to 15 for Capacitor 8
warp Apr 22, 2026
532ea49
Do not route iOS web browsers into the native notification flow.
warp Apr 22, 2026
6a1f393
Align Capacitor Android with SDK 36 and newer toolchain.
warp Apr 22, 2026
36ad1e7
Validate ENVIRONMENT in rename_package.js before rewriting ids.
warp Apr 22, 2026
771ca24
Add Capacitor push notifications and tighten cordova service handling.
warp Apr 22, 2026
73a96e7
Scope Google Play JSON key setup to the Android production lane.
warp Apr 22, 2026
5a8b02c
Use CircleCI-supported Xcode 26.4.0 for iOS m4pro jobs.
warp Apr 22, 2026
609a8b6
CSP: drop Cordova gap://ready; allow http://localhost for Capacitor.
warp Apr 22, 2026
fb8b1cf
CI: use circleci/node orb for Node 22 and Yarn 1.22.
warp Apr 22, 2026
bf75d67
Call push.register after permission grant in cordova service.
warp Apr 22, 2026
7d86c33
Align Android variables with Capacitor 8 and pin Firebase Messaging.
warp Apr 22, 2026
c0a61ed
CI: download Google Play key only for production Android jobs.
warp Apr 22, 2026
0201c92
Fix iOS safe area for fixed sticky tab bars.
warp Apr 22, 2026
5aacd60
Fix Android double top inset for WebView safe area.
warp Apr 23, 2026
252eab6
Wire Capacitor push registration listeners and API device sync.
warp Apr 23, 2026
0f19b00
CI: fix CircleCI heredoc parsing for iOS build
warp Apr 23, 2026
a1ba09e
Fix JSHint warnings in cordova service
warp Apr 23, 2026
4773d7f
Build: replace node-sass with Dart Sass for Node 22
warp Apr 23, 2026
fe745ca
Fix tests: restore cordova appLoad hook
warp Apr 23, 2026
8d41e41
Fix JSHint ternary formatting and quiet Sass deprecation output.
warp Apr 23, 2026
3c8ce47
Fix JSHint misleading ternary line breaks.
warp Apr 23, 2026
95e7f71
Avoid ternaries that trigger JSHint linebreak warnings.
warp Apr 23, 2026
6b8d066
CI: disable Babel instrumenter for coverage.
warp Apr 23, 2026
bfee09e
Open iOS app settings from notification prompt via AppLauncher
warp Apr 23, 2026
c2666d5
Clean up push registration listener if registrationError listener fails
warp Apr 23, 2026
f785640
Android 13 notification permission and startup push permission prompt
warp Apr 23, 2026
eb27931
Handle missing adb in run-android-default-emulator script
warp Apr 23, 2026
d8912f7
Android 15+: draw goodcity_blue behind system bars in MainActivity
warp Apr 23, 2026
44130f0
Remove unused drawable-v24 ic_launcher_foreground vector
warp Apr 23, 2026
8254cb9
Drop stale Cordova config.xml from iOS Xcode project
warp Apr 23, 2026
0f5b6ce
Split iOS APNs entitlements for Debug vs Release
warp Apr 23, 2026
343c30b
Require arm64 in iOS UIRequiredDeviceCapabilities
warp Apr 23, 2026
b689ce7
Set TestFairy Android path only for APK artifacts
warp Apr 23, 2026
3f45b70
Align engines.node with Node 22 and README with AGP 8.13
warp Apr 23, 2026
1b7bfec
Fix JSHint issues in app, config, and server mocks
warp Apr 23, 2026
41ad9f3
Fix territories mock listing variable under strict mode
warp Apr 23, 2026
b5f4bb1
Handle promise rejections in message-box primary action
warp Apr 23, 2026
38e4f5e
Harden Cordova service for push, iOS detection, and settings
warp Apr 23, 2026
43fd912
Apply Android system bar chrome once after window focus
warp Apr 23, 2026
b8d0b30
Sync iOS MARKETING_VERSION from root package.json on cap sync
warp Apr 23, 2026
224dcec
Simplify Android artifact resolution in Fastlane before_all
warp Apr 23, 2026
110ed51
Add branch filter to test staging builds
warp Apr 23, 2026
124186a
Stop calling update_fastlane in the Fastfile.
warp Apr 23, 2026
eebeb60
CircleCI iOS job: use Ruby 3.4.8 with rbenv local.
warp Apr 23, 2026
75ff261
Android: use JDK 21 for Gradle and app compile options.
warp Apr 24, 2026
c7e43a8
fix(ci): iOS archive signing without global provisioning profile
warp Apr 24, 2026
5d18766
fix(android): keep namespace stable when renaming applicationId
warp Apr 24, 2026
3e17f27
fix(ci): iOS archive/export use ASC API key and provisioning updates
warp Apr 24, 2026
3fb2502
fix(ci): pass ASC API key to xcodebuild via -authenticationKey*
warp Apr 24, 2026
86c8634
ci(circleci): ExportOptions plist expansion, shared team id, version …
warp Apr 24, 2026
f24e7d1
fix(fastlane): Android production lane env paths ignore empty strings
warp Apr 24, 2026
a740ce5
fix(capacitor): sync-ios-marketing-version fails when pbx has no matches
warp Apr 24, 2026
3b7abf2
fix(android): warn when google-services.json missing; document CI ver…
warp Apr 24, 2026
f9e6d64
refactor(android): apply system bar decor once, insets on first focus
warp Apr 24, 2026
eaae817
fix(ember): await message-box btn2 before close
warp Apr 24, 2026
2c7760e
fix(ci): exportArchive use push-enabled provisioning profile for app id
warp Apr 24, 2026
55c47b3
fix(ci): let exportArchive use automatic signing to match dev cert
warp Apr 24, 2026
089bfbc
fix(push): register device token after login only
warp Apr 24, 2026
53a8cee
fix(push): instantiate service early and test post-login registration
warp Apr 25, 2026
d605df2
chore(android): ignore google-services.json
warp Apr 25, 2026
4364d67
fix(push): align Capacitor service with shared-goodcity behavior
warp Apr 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 105 additions & 66 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ aliases:

- defaults: &defaults
docker:
- image: cimg/node:12.22-browsers
- image: cimg/node:22.14.0-browsers
working_directory: ~/code
- &restore-repo-cache
key: app-goodcity-repo-{{ .Environment.CIRCLE_SHA1 }}
Expand Down Expand Up @@ -46,6 +46,7 @@ orbs:
azure-cli: circleci/azure-cli@1.2.2
browser-tools: circleci/browser-tools@2.2.0
ruby: circleci/ruby@2.5.4
node: circleci/node@7.2.1

jobs:
checkout_code:
Expand Down Expand Up @@ -121,12 +122,11 @@ jobs:
command: |
ENVIRONMENT=$(if [ "$CIRCLE_BRANCH" == "live" ]; then echo "production"; else echo "staging"; fi)
APP_SHA=$(echo $CIRCLE_SHA1 | cut -c1-7)
EMBER_CLI_CORDOVA=0 ENVIRONMENT=${ENVIRONMENT} APP_SHA=${APP_SHA} yarn run ember build --environment=production
- run: mv dist/ dist-www
ENVIRONMENT=${ENVIRONMENT} APP_SHA=${APP_SHA} yarn run ember build --environment=production
- persist_to_workspace:
root: .
paths:
- dist-www/
- dist/

www_deploy:
<<: *defaults
Expand All @@ -139,7 +139,6 @@ jobs:
- save_cache: *save-bundler-cache
- attach_workspace:
at: ~/code
- run: mv dist-www/ dist
- azure-cli/install
- azure-cli/login-with-service-principal
- run:
Expand All @@ -157,34 +156,15 @@ jobs:
ASSET_HOST_URL=$(if [ "$CIRCLE_BRANCH" == "live" ]; then echo "https://app.goodcity.hk/assets"; else echo "https://app-staging.goodcity.hk/assets"; fi)
curl https://api.rollbar.com/api/1/sourcemap/download -F access_token="${ROLLBAR_KEY}" -F version="${APP_VERSION}" -F minified_url=$ASSET_HOST_URL/$SOURCE_MAP

ember_cordova_build:
<<: *defaults
environment:
JOBS: 1 # stops ember running out of memory when building
steps:
- restore_cache: *restore-repo-cache
- restore_cache: *restore-yarn-cache
- restore_cache: *restore-bower-cache
- run:
name: Ember build
command: |
APP_SHA=$(echo $CIRCLE_SHA1 | cut -c1-7)
APP_SHARED_SHA=$(grep "resolved.*shared.goodcity" yarn.lock | cut -d '#' -f2 | sed 's,\",,g')
ENVIRONMENT=$(if [ "$CIRCLE_BRANCH" == "live" ]; then echo "production"; else echo "staging"; fi)
EMBER_CLI_CORDOVA=1 ENVIRONMENT=${ENVIRONMENT} yarn run ember build --environment=production
- run: mv dist/ cordova/www
- persist_to_workspace:
root: .
paths:
- cordova/www

android_build_and_deploy:
<<: *defaults
docker:
- image: cimg/android:2025.10-browsers
environment:
JVM_OPTS: -Xmx3200m
CIRCLE_ARTIFACTS: /home/circleci/code/cordova/platforms/android/build/outputs/apk
# cimg/android:2025.10 sets JAVA_HOME to JDK 21. Capacitor 8 native modules compile with Java 21;
# do not override to JDK 17 or :capacitor-android fails with "invalid source release: 21".
CIRCLE_ARTIFACTS: /home/circleci/code/capacitor/android/app/build/outputs
steps:
- ruby/install:
version: '3.4.3'
Expand All @@ -199,42 +179,64 @@ jobs:
name: Setup Environment variables
command: |
echo 'export ENVIRONMENT=$(if [ "$CIRCLE_BRANCH" == "live" ]; then echo production; else echo staging; fi)' >> $BASH_ENV
echo 'export PATH=$PATH:/home/circleci/code/cordova/node_modules/.bin' >> $BASH_ENV
echo 'if [ "$ENVIRONMENT" == "production" ]; then export AAB_FILE_PATH="/home/circleci/code/capacitor/android/app/build/outputs/bundle/release/*.aab"; else export APK_FILE_PATH="/home/circleci/code/capacitor/android/app/build/outputs/apk/debug/*.apk"; fi' >> $BASH_ENV
- run: curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
- azure-cli/install
- azure-cli/login-with-service-principal
- run: az storage blob download --account-name $GOODCITY_STORAGE -c ci-app-secrets -n app-$ENVIRONMENT-google-services.json -f ~/code/cordova/google-services.json
- run: az storage blob download --account-name $GOODCITY_STORAGE -c ci-app-secrets -n goodcity.keystore -f ~/code/cordova/goodcity.keystore
- run: az storage blob download --account-name $GOODCITY_STORAGE -c ci-app-secrets -n google-play-key.json -f ~/code/fastlane/google-play-key.json
- run: az storage blob download --account-name $GOODCITY_STORAGE -c ci-app-secrets -n app-$ENVIRONMENT-google-services.json -f ~/code/capacitor/android/app/google-services.json
- run: az storage blob download --account-name $GOODCITY_STORAGE -c ci-app-secrets -n goodcity.keystore -f ~/code/capacitor/android/app/goodcity.keystore
- run:
name: Download Google Play service account key (production only)
command: |
set -eo pipefail
need_play_key=0
if [ "${CIRCLE_BRANCH}" = "live" ]; then need_play_key=1; fi
if [ "${CI_ENV:-}" = "production" ]; then need_play_key=1; fi
case "$(printf '%s' "${FASTLANE_PLAY_STORE_SCOPE:-}" | tr '[:upper:]' '[:lower:]')" in
*production*) need_play_key=1 ;;
esac
if [ "$need_play_key" -ne 1 ]; then
echo "Skipping google-play-key.json (not a production Play Store context)."
exit 0
fi
az storage blob download --account-name "${GOODCITY_STORAGE}" -c ci-app-secrets -n google-play-key.json -f ~/code/fastlane/google-play-key.json
- node/install:
node-version: "22.14.0"
yarn-version: "1.22.22"
- run:
name: Build android app
command: |
npm install cordova@12
node rename_package.js
cordova platform add android
cd capacitor
yarn install --frozen-lockfile
ENVIRONMENT=$ENVIRONMENT CIRCLE_BUILD_NUM=$CIRCLE_BUILD_NUM yarn run rename:package
npx cap sync android
if [ "$ENVIRONMENT" == "production" ]; then
cordova build android --release -- \
--packageType=apk --keystore=goodcity.keystore --storePassword="${GOODCITY_KEYSTORE_PASSWORD}" \
--alias="${GOODCITY_KEYSTORE_ALIAS}" --password="${GOODCITY_KEYSTORE_PASSWORD}"
cd android && ./gradlew bundleRelease
else
cordova build android --debug --device
cd android && ./gradlew assembleDebug
fi
Comment thread
warp marked this conversation as resolved.
if [ -n "${CIRCLE_BUILD_NUM:-}" ]; then
vc="$(awk '/versionCode /{print $2; exit}' app/build.gradle | tr -d '\r')"
if ! [ "${vc:-0}" -ge 270000000 ] 2>/dev/null; then
echo "Android versionCode after rename:package must be >= 270000000 (see rename_package.js ANDROID_BUILD_VERSION_SEED); got: ${vc:-empty}"
exit 1
fi
fi
working_directory: cordova
- store_artifacts:
path: cordova/platforms/android/app/build/outputs/apk/
path: capacitor/android/app/build/outputs/
- run:
name: release android build
command: bundle exec fastlane android ${ENVIRONMENT}
working_directory: ~/code

ios_build_and_deploy:
macos:
xcode: "16.4.0"
resource_class: macos.m1.medium.gen1
xcode: "26.4.0"
resource_class: m4pro.medium
working_directory: ~/code
shell: /bin/bash --login -eo pipefail
environment:
CIRCLE_ARTIFACTS: /Users/distiller/code/cordova/platforms/ios/build/Release-iphoneos
CIRCLE_ARTIFACTS: /Users/distiller/code/capacitor/ios/build/export
HOMEBREW_NO_AUTO_UPDATE: 1
steps:
- checkout
Expand All @@ -247,7 +249,7 @@ jobs:
echo 'export ENVIRONMENT=$(if [ "$CIRCLE_BRANCH" == "live" ]; then echo production; else echo staging; fi)' >> $BASH_ENV
echo 'export PATH=$PATH:`npm bin`' >> $BASH_ENV
- restore_cache: *restore-ios-bundler-cache
- run: rbenv local 3.4.3
- run: rbenv local 3.4.8
- run: bundle config set --local deployment 'true' && (bundle check || bundle install --jobs=2 --retry=3)
- save_cache: *save-ios-bundler-cache
- run: az login --service-principal --tenant ${AZURE_SP_TENANT} -u ${AZURE_SP} -p ${AZURE_SP_PASSWORD}
Expand All @@ -256,27 +258,70 @@ jobs:
- run: az storage blob download --account-name $GOODCITY_STORAGE -c ci-app-secrets -n AuthKey_${APPSTORE_CONNECT_API_KEY_ID}.p8 -f ~/code/fastlane/AuthKey_${APPSTORE_CONNECT_API_KEY_ID}.p8
- run: az storage blob download --account-name $GOODCITY_STORAGE -c ci-app-secrets -n hk.goodcity.${ENVIRONMENT}.p12 -f ~/code/fastlane/hk.goodcity.${ENVIRONMENT}.p12
- run: bundle exec fastlane ios prepare_certificates cert:hk.goodcity.${ENVIRONMENT}.p12
- node/install:
node-version: "22.14.0"
yarn-version: "1.22.22"
- run:
name: Build iOS app
command: |
npm install cordova@12
node rename_package.js
bundle exec yarn run cordova platform add ios@7
UUID=`openssl smime -inform der -verify -noverify -in "/Users/distiller/Library/MobileDevice/Provisioning Profiles/app-${ENVIRONMENT}.mobileprovision" | grep -A 1 UUID | sed "s@.*<string>\(.*\)</string>.*@\1@" | tail -n 1`
PACKAGE_TYPE=$(if [ "$ENVIRONMENT" == "production" ]; then echo app-store; else echo development; fi)
# Xcode discovers profiles by UUID filename; do not pass PROVISIONING_PROFILE to xcodebuild — it
# applies to every target (Pods/Capacitor) and conflicts with CODE_SIGN_STYLE=Automatic on App.
cp "/Users/distiller/Library/MobileDevice/Provisioning Profiles/app-${ENVIRONMENT}.mobileprovision" "/Users/distiller/Library/MobileDevice/Provisioning Profiles/${UUID}.mobileprovision"
EXPORT_METHOD=$(if [ "$ENVIRONMENT" == "production" ]; then echo app-store; else echo debugging; fi)
CODE_SIGN_IDENTITY=$(if [ "$ENVIRONMENT" == "production" ]; then echo 'iPhone Distribution'; else echo 'iPhone Developer'; fi)
bundle exec yarn run cordova build ios --release --device --codeSignIdentity="${CODE_SIGN_IDENTITY}" --developmentTeam="6B8FS8W94M" \
--packageType="${PACKAGE_TYPE}" --automaticProvisioning=true --buildFlag="IPHONEOS_DEPLOYMENT_TARGET=13" \
--provisioningProfile="${UUID}"
working_directory: cordova
TEAM_ID="${IOS_DEVELOPMENT_TEAM:-6B8FS8W94M}"
cd capacitor
yarn install --frozen-lockfile
ENVIRONMENT=$ENVIRONMENT CIRCLE_BUILD_NUM=$CIRCLE_BUILD_NUM yarn run rename:package
npx cap sync ios
mkdir -p "$CIRCLE_ARTIFACTS"
# ASC API auth for headless CI: env vars alone still yield "No Accounts"; xcodebuild needs these flags.
AUTHKEY_P8="${HOME}/code/fastlane/AuthKey_${APPSTORE_CONNECT_API_KEY_ID}.p8"
xcodebuild \
-workspace ios/App/App.xcworkspace \
-scheme App \
-configuration Release \
-archivePath ios/build/App.xcarchive \
-destination "generic/platform=iOS" \
-allowProvisioningUpdates \
-authenticationKeyPath "${AUTHKEY_P8}" \
-authenticationKeyID "${APPSTORE_CONNECT_API_KEY_ID}" \
-authenticationKeyIssuerID "${APPSTORE_CONNECT_API_KEY_ISSUER_ID}" \
archive \
DEVELOPMENT_TEAM="${TEAM_ID}" \
CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" \
IPHONEOS_DEPLOYMENT_TARGET=15
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Avoid overriding IPHONEOS_DEPLOYMENT_TARGET from CI.

Hardcoding IPHONEOS_DEPLOYMENT_TARGET=15 on the xcodebuild archive line overrides what's configured in the Xcode project and Podfile. If those move to a different minimum (Capacitor 8's iOS 14 baseline, or pods that require iOS 16+), this override silently drifts from the source of truth and can cause Pod/app target mismatch warnings or link-time issues. Prefer letting the project/Podfile govern the deployment target.

Proposed change
             archive \
               DEVELOPMENT_TEAM="${TEAM_ID}" \
-              CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" \
-              IPHONEOS_DEPLOYMENT_TARGET=15
+              CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.circleci/config.yml at line 294, The CI config is forcibly setting
IPHONEOS_DEPLOYMENT_TARGET=15 on the xcodebuild archive invocation which
overrides the project/Podfile source of truth; remove the hardcoded environment
override from the xcodebuild archive command (the occurrence of
IPHONEOS_DEPLOYMENT_TARGET=15) so the build uses the deployment target declared
in the Xcode project/Podfile instead and avoid adding any replacement defaults
in the command itself; keep the xcodebuild archive invocation but let it inherit
the project settings.

printf '%s\n' \
'<?xml version="1.0" encoding="UTF-8"?>' \
'<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' \
'<plist version="1.0">' \
'<dict>' \
' <key>method</key>' \
" <string>${EXPORT_METHOD}</string>" \
' <key>signingStyle</key>' \
' <string>automatic</string>' \
' <key>teamID</key>' \
" <string>${TEAM_ID}</string>" \
'</dict>' \
'</plist>' \
> ios/build/ExportOptions.plist
xcodebuild \
-exportArchive \
-archivePath ios/build/App.xcarchive \
-exportOptionsPlist ios/build/ExportOptions.plist \
-exportPath "$CIRCLE_ARTIFACTS" \
-allowProvisioningUpdates \
-authenticationKeyPath "${AUTHKEY_P8}" \
-authenticationKeyID "${APPSTORE_CONNECT_API_KEY_ID}" \
-authenticationKeyIssuerID "${APPSTORE_CONNECT_API_KEY_ISSUER_ID}"
- store_artifacts:
path: cordova/platforms/ios/build/Release-iphoneos
path: capacitor/ios/build/export
- run:
name: Release ios build
command: bundle exec fastlane ios ${ENVIRONMENT}

workflows:
version: 2
build-test-and-deploy:
jobs:
- checkout_code
Expand All @@ -297,30 +342,24 @@ workflows:
- tests
filters:
branches:
only: /^(master|live)$/
only: /^(master|live|ionic-capacitor)$/
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove the ionic-capacitor branch from these filters before merging to master.

This filter is useful for validating the migration on the feature branch (the PR notes CI hasn't been exercised yet), but once merged, master|live already covers production flows. Leaving ionic-capacitor in the regex will keep triggering full mobile/web pipelines — including paid macOS minutes for ios_build_and_deploy — on any future push to that stale branch.

Cleanup to apply before merge
       - www_build:
           requires:
             - tests
           filters:
             branches:
-              only: /^(master|live|ionic-capacitor)$/
+              only: /^(master|live)$/
       - www_deploy:
           requires:
             - www_build
           filters:
             branches:
-              only: /^(master|live|ionic-capacitor)$/
+              only: /^(master|live)$/
       - android_build_and_deploy:
           requires:
             - tests
             - www_build
           filters:
             branches:
-              only: /^(master|live|ionic-capacitor)$/
+              only: /^(master|live)$/
       - ios_build_and_deploy:
           requires:
             - tests
             - www_build
           filters:
             branches:
-              only: /^(master|live|ionic-capacitor)$/
+              only: /^(master|live)$/

Also applies to: 351-351, 358-358, 365-365

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.circleci/config.yml at line 345, Update the CircleCI branch-filter regex
used in the "only" keys so it no longer includes the feature branch; replace
occurrences of only: /^(master|live|ionic-capacitor)$/ with only:
/^(master|live)$/ in .circleci/config.yml (there are three occurrences of that
exact regex) to stop triggering full mobile/web pipelines for the stale
ionic-capacitor branch.

- www_deploy:
requires:
- www_build
filters:
branches:
only: /^(master|live)$/
- ember_cordova_build:
requires:
- package_dependencies
filters:
branches:
only: /^(master|live)$/
only: /^(master|live|ionic-capacitor)$/
- android_build_and_deploy:
requires:
- tests
- ember_cordova_build
- www_build
filters:
branches:
only: /^(master|live)$/
only: /^(master|live|ionic-capacitor)$/
- ios_build_and_deploy:
requires:
- tests
- ember_cordova_build
- www_build
filters:
branches:
only: /^(master|live)$/
only: /^(master|live|ionic-capacitor)$/
7 changes: 0 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,8 @@ coverage/*
libpeerconnection.log
npm-debug.log
testem.log
cordova/www
cordova/platforms
.hgignore
.DS_Store
cordova/plugins/*
cordova/.secret_keys
cordova/google-services.json
cordova/ul_web_hooks
cordova/node_modules
*.mobileprovision
*.keystore
*.p8
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
12
22
29 changes: 0 additions & 29 deletions Dockerfile-cordova

This file was deleted.

Loading