mirror of
https://github.com/openMF/mobile-wallet.git
synced 2026-02-06 09:37:24 +00:00
misc: optimize slow cmp_shared build step in CI (#1904)
This commit is contained in:
parent
c8e1d1ad67
commit
e8b7c94565
17
.github/ci-gradle.properties
vendored
Normal file
17
.github/ci-gradle.properties
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Disable daemon for CI to avoid leftover processes
|
||||||
|
org.gradle.daemon=false
|
||||||
|
|
||||||
|
# Run tasks in parallel where possible
|
||||||
|
org.gradle.parallel=true
|
||||||
|
|
||||||
|
# Increase heap and metaspace for larger builds (macOS-latest has ~7 GB available)
|
||||||
|
org.gradle.jvmargs=-Xmx7g
|
||||||
|
|
||||||
|
# Limit max workers to avoid memory pressure in CI
|
||||||
|
org.gradle.workers.max=3
|
||||||
|
|
||||||
|
# Disable Kotlin incremental compilation in CI for clean, consistent builds
|
||||||
|
kotlin.incremental=false
|
||||||
|
|
||||||
|
# Use in-process Kotlin compiler to avoid extra forked processes
|
||||||
|
kotlin.compiler.execution.strategy=in-process
|
||||||
@ -74,15 +74,20 @@ on:
|
|||||||
default: 'development'
|
default: 'development'
|
||||||
description: 'Target branch for release'
|
description: 'Target branch for release'
|
||||||
|
|
||||||
build_ios:
|
distribute_ios_firebase:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
description: Build iOS App
|
description: Distribute iOS App via Firebase App Distribution
|
||||||
|
|
||||||
publish_ios:
|
distribute_ios_testflight:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
description: Publish iOS App On App Store
|
description: Distribute iOS App via TestFlight (App Store Connect)
|
||||||
|
|
||||||
|
distribute_ios_appstore:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
description: Distribute iOS App to Appstore
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@ -96,17 +101,27 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
multi_platform_build_and_publish:
|
multi_platform_build_and_publish:
|
||||||
name: Multi-Platform Build and Publish
|
name: Multi-Platform Build and Publish
|
||||||
uses: openMF/mifos-x-actionhub/.github/workflows/multi-platform-build-and-publish.yaml@v1.0.0
|
uses: openMF/mifos-x-actionhub/.github/workflows/multi-platform-build-and-publish.yaml@main
|
||||||
with:
|
with:
|
||||||
release_type: ${{ inputs.release_type }}
|
release_type: ${{ inputs.release_type }}
|
||||||
target_branch: ${{ inputs.target_branch }}
|
target_branch: ${{ inputs.target_branch }}
|
||||||
android_package_name: 'mifospay-android' # <-- Change this to your android package name
|
android_package_name: 'cmp-android'
|
||||||
ios_package_name: 'mifospay-ios' # <-- Change this to your ios package name
|
ios_package_name: 'cmp-ios'
|
||||||
desktop_package_name: 'mifospay-desktop' # <-- Change this to your desktop package name
|
desktop_package_name: 'cmp-desktop'
|
||||||
web_package_name: 'mifospay-web' # <-- Change this to your web package name
|
web_package_name: 'cmp-web'
|
||||||
tester_groups: 'mifos-mobile-apps' # <-- Change this to your Firebase tester group
|
tester_groups: 'mifos-mobile-apps'
|
||||||
build_ios: ${{ inputs.build_ios }}
|
app_identifier: 'org.mifospay'
|
||||||
publish_ios: ${{ inputs.publish_ios }}
|
git_url: 'git@github.com:openMF/ios-provisioning-profile.git'
|
||||||
|
git_branch: 'mifospay'
|
||||||
|
match_type: 'adhoc'
|
||||||
|
provisioning_profile_name: 'match AdHoc org.mifospay'
|
||||||
|
firebase_app_id: '1:728434912738:ios:86a7badfaed88b841a1dbb'
|
||||||
|
metadata_path: './fastlane/metadata'
|
||||||
|
use_cocoapods: true # <-- Set to true if using CocoaPods integration for KMP
|
||||||
|
shared_module: ':cmp-shared' # <-- Gradle path to your shared KMP module (e.g., :shared)
|
||||||
|
distribute_ios_firebase: ${{ inputs.distribute_ios_firebase }}
|
||||||
|
distribute_ios_testflight: ${{ inputs.distribute_ios_testflight }}
|
||||||
|
distribute_ios_appstore: ${{ inputs.distribute_ios_appstore }}
|
||||||
secrets:
|
secrets:
|
||||||
original_keystore_file: ${{ secrets.ORIGINAL_KEYSTORE_FILE }}
|
original_keystore_file: ${{ secrets.ORIGINAL_KEYSTORE_FILE }}
|
||||||
original_keystore_file_password: ${{ secrets.ORIGINAL_KEYSTORE_FILE_PASSWORD }}
|
original_keystore_file_password: ${{ secrets.ORIGINAL_KEYSTORE_FILE_PASSWORD }}
|
||||||
@ -121,6 +136,11 @@ jobs:
|
|||||||
notarization_apple_id: ${{ secrets.NOTARIZATION_APPLE_ID }}
|
notarization_apple_id: ${{ secrets.NOTARIZATION_APPLE_ID }}
|
||||||
notarization_password: ${{ secrets.NOTARIZATION_PASSWORD }}
|
notarization_password: ${{ secrets.NOTARIZATION_PASSWORD }}
|
||||||
notarization_team_id: ${{ secrets.NOTARIZATION_TEAM_ID }}
|
notarization_team_id: ${{ secrets.NOTARIZATION_TEAM_ID }}
|
||||||
|
appstore_key_id: ${{ secrets.APPSTORE_KEY_ID }}
|
||||||
|
appstore_issuer_id: ${{ secrets.APPSTORE_ISSUER_ID }}
|
||||||
|
appstore_auth_key: ${{ secrets.APPSTORE_AUTH_KEY }}
|
||||||
|
match_password: ${{ secrets.MATCH_PASSWORD }}
|
||||||
|
match_ssh_private_key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||||
|
|
||||||
windows_signing_key: ${{ secrets.WINDOWS_SIGNING_KEY }}
|
windows_signing_key: ${{ secrets.WINDOWS_SIGNING_KEY }}
|
||||||
windows_signing_password: ${{ secrets.WINDOWS_SIGNING_PASSWORD }}
|
windows_signing_password: ${{ secrets.WINDOWS_SIGNING_PASSWORD }}
|
||||||
|
|||||||
2
.github/workflows/pr-check.yml
vendored
2
.github/workflows/pr-check.yml
vendored
@ -81,7 +81,7 @@ permissions:
|
|||||||
jobs:
|
jobs:
|
||||||
pr_checks:
|
pr_checks:
|
||||||
name: PR Checks
|
name: PR Checks
|
||||||
uses: openMF/mifos-x-actionhub/.github/workflows/pr-check.yaml@v1.0.3
|
uses: openMF/mifos-x-actionhub/.github/workflows/pr-check.yaml@main
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
android_package_name: 'cmp-android' # <-- Change Your Android Package Name
|
android_package_name: 'cmp-android' # <-- Change Your Android Package Name
|
||||||
|
|||||||
1
Gemfile
1
Gemfile
@ -7,6 +7,7 @@ rescue Errno::ENOENT
|
|||||||
end
|
end
|
||||||
|
|
||||||
gem "fastlane"
|
gem "fastlane"
|
||||||
|
gem "cocoapods"
|
||||||
|
|
||||||
plugins_path = File.join(File.dirname(__FILE__), "fastlane", "Pluginfile")
|
plugins_path = File.join(File.dirname(__FILE__), "fastlane", "Pluginfile")
|
||||||
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
||||||
80
Gemfile.lock
80
Gemfile.lock
@ -5,8 +5,23 @@ GEM
|
|||||||
base64
|
base64
|
||||||
nkf
|
nkf
|
||||||
rexml
|
rexml
|
||||||
|
activesupport (7.2.2.1)
|
||||||
|
base64
|
||||||
|
benchmark (>= 0.3)
|
||||||
|
bigdecimal
|
||||||
|
concurrent-ruby (~> 1.0, >= 1.3.1)
|
||||||
|
connection_pool (>= 2.2.5)
|
||||||
|
drb
|
||||||
|
i18n (>= 1.6, < 2)
|
||||||
|
logger (>= 1.4.2)
|
||||||
|
minitest (>= 5.1)
|
||||||
|
securerandom (>= 0.3)
|
||||||
|
tzinfo (~> 2.0, >= 2.0.5)
|
||||||
addressable (2.8.7)
|
addressable (2.8.7)
|
||||||
public_suffix (>= 2.0.2, < 7.0)
|
public_suffix (>= 2.0.2, < 7.0)
|
||||||
|
algoliasearch (1.27.5)
|
||||||
|
httpclient (~> 2.8, >= 2.8.3)
|
||||||
|
json (>= 1.5.1)
|
||||||
artifactory (3.0.17)
|
artifactory (3.0.17)
|
||||||
atomos (0.1.3)
|
atomos (0.1.3)
|
||||||
aws-eventstream (1.4.0)
|
aws-eventstream (1.4.0)
|
||||||
@ -30,18 +45,63 @@ GEM
|
|||||||
aws-eventstream (~> 1, >= 1.0.2)
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
babosa (1.0.4)
|
babosa (1.0.4)
|
||||||
base64 (0.3.0)
|
base64 (0.3.0)
|
||||||
|
benchmark (0.3.0)
|
||||||
bigdecimal (3.2.2)
|
bigdecimal (3.2.2)
|
||||||
claide (1.1.0)
|
claide (1.1.0)
|
||||||
|
cocoapods (1.16.2)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
claide (>= 1.0.2, < 2.0)
|
||||||
|
cocoapods-core (= 1.16.2)
|
||||||
|
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
||||||
|
cocoapods-downloader (>= 2.1, < 3.0)
|
||||||
|
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||||
|
cocoapods-search (>= 1.0.0, < 2.0)
|
||||||
|
cocoapods-trunk (>= 1.6.0, < 2.0)
|
||||||
|
cocoapods-try (>= 1.1.0, < 2.0)
|
||||||
|
colored2 (~> 3.1)
|
||||||
|
escape (~> 0.0.4)
|
||||||
|
fourflusher (>= 2.3.0, < 3.0)
|
||||||
|
gh_inspector (~> 1.0)
|
||||||
|
molinillo (~> 0.8.0)
|
||||||
|
nap (~> 1.0)
|
||||||
|
ruby-macho (>= 2.3.0, < 3.0)
|
||||||
|
xcodeproj (>= 1.27.0, < 2.0)
|
||||||
|
cocoapods-core (1.16.2)
|
||||||
|
activesupport (>= 5.0, < 8)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
algoliasearch (~> 1.0)
|
||||||
|
concurrent-ruby (~> 1.1)
|
||||||
|
fuzzy_match (~> 2.0.4)
|
||||||
|
nap (~> 1.0)
|
||||||
|
netrc (~> 0.11)
|
||||||
|
public_suffix (~> 4.0)
|
||||||
|
typhoeus (~> 1.0)
|
||||||
|
cocoapods-deintegrate (1.0.5)
|
||||||
|
cocoapods-downloader (2.1)
|
||||||
|
cocoapods-plugins (1.0.0)
|
||||||
|
nap
|
||||||
|
cocoapods-search (1.0.1)
|
||||||
|
cocoapods-trunk (1.6.0)
|
||||||
|
nap (>= 0.8, < 2.0)
|
||||||
|
netrc (~> 0.11)
|
||||||
|
cocoapods-try (1.2.0)
|
||||||
colored (1.2)
|
colored (1.2)
|
||||||
colored2 (3.1.2)
|
colored2 (3.1.2)
|
||||||
commander (4.6.0)
|
commander (4.6.0)
|
||||||
highline (~> 2.0.0)
|
highline (~> 2.0.0)
|
||||||
|
concurrent-ruby (1.3.5)
|
||||||
|
connection_pool (2.5.0)
|
||||||
declarative (0.0.20)
|
declarative (0.0.20)
|
||||||
digest-crc (0.7.0)
|
digest-crc (0.7.0)
|
||||||
rake (>= 12.0.0, < 14.0.0)
|
rake (>= 12.0.0, < 14.0.0)
|
||||||
domain_name (0.6.20240107)
|
domain_name (0.6.20240107)
|
||||||
dotenv (2.8.1)
|
dotenv (2.8.1)
|
||||||
|
drb (2.2.0)
|
||||||
|
ruby2_keywords
|
||||||
emoji_regex (3.2.3)
|
emoji_regex (3.2.3)
|
||||||
|
escape (0.0.4)
|
||||||
|
ethon (0.16.0)
|
||||||
|
ffi (>= 1.15.0)
|
||||||
excon (0.112.0)
|
excon (0.112.0)
|
||||||
faraday (1.10.4)
|
faraday (1.10.4)
|
||||||
faraday-em_http (~> 1.0)
|
faraday-em_http (~> 1.0)
|
||||||
@ -120,6 +180,9 @@ GEM
|
|||||||
fastlane-plugin-increment_build_number (0.0.4)
|
fastlane-plugin-increment_build_number (0.0.4)
|
||||||
fastlane-sirp (1.0.0)
|
fastlane-sirp (1.0.0)
|
||||||
sysrandom (~> 1.0)
|
sysrandom (~> 1.0)
|
||||||
|
ffi (1.17.1-arm64-darwin)
|
||||||
|
fourflusher (2.3.1)
|
||||||
|
fuzzy_match (2.0.4)
|
||||||
gh_inspector (1.1.3)
|
gh_inspector (1.1.3)
|
||||||
google-apis-androidpublisher_v3 (0.54.0)
|
google-apis-androidpublisher_v3 (0.54.0)
|
||||||
google-apis-core (>= 0.11.0, < 2.a)
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
@ -166,6 +229,8 @@ GEM
|
|||||||
domain_name (~> 0.5)
|
domain_name (~> 0.5)
|
||||||
httpclient (2.9.0)
|
httpclient (2.9.0)
|
||||||
mutex_m
|
mutex_m
|
||||||
|
i18n (1.14.7)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
jmespath (1.6.2)
|
jmespath (1.6.2)
|
||||||
json (2.13.2)
|
json (2.13.2)
|
||||||
jwt (2.10.2)
|
jwt (2.10.2)
|
||||||
@ -173,16 +238,20 @@ GEM
|
|||||||
logger (1.7.0)
|
logger (1.7.0)
|
||||||
mini_magick (4.13.2)
|
mini_magick (4.13.2)
|
||||||
mini_mime (1.1.5)
|
mini_mime (1.1.5)
|
||||||
|
minitest (5.20.0)
|
||||||
|
molinillo (0.8.0)
|
||||||
multi_json (1.17.0)
|
multi_json (1.17.0)
|
||||||
multipart-post (2.4.1)
|
multipart-post (2.4.1)
|
||||||
mutex_m (0.3.0)
|
mutex_m (0.3.0)
|
||||||
nanaimo (0.4.0)
|
nanaimo (0.4.0)
|
||||||
|
nap (1.1.0)
|
||||||
naturally (2.3.0)
|
naturally (2.3.0)
|
||||||
|
netrc (0.11.0)
|
||||||
nkf (0.2.0)
|
nkf (0.2.0)
|
||||||
optparse (0.6.0)
|
optparse (0.6.0)
|
||||||
os (1.1.4)
|
os (1.1.4)
|
||||||
plist (3.7.2)
|
plist (3.7.2)
|
||||||
public_suffix (6.0.2)
|
public_suffix (4.0.7)
|
||||||
rake (13.3.0)
|
rake (13.3.0)
|
||||||
representable (3.2.0)
|
representable (3.2.0)
|
||||||
declarative (< 0.1.0)
|
declarative (< 0.1.0)
|
||||||
@ -191,8 +260,10 @@ GEM
|
|||||||
retriable (3.1.2)
|
retriable (3.1.2)
|
||||||
rexml (3.4.1)
|
rexml (3.4.1)
|
||||||
rouge (3.28.0)
|
rouge (3.28.0)
|
||||||
|
ruby-macho (2.5.1)
|
||||||
ruby2_keywords (0.0.5)
|
ruby2_keywords (0.0.5)
|
||||||
rubyzip (2.4.1)
|
rubyzip (2.4.1)
|
||||||
|
securerandom (0.3.1)
|
||||||
security (0.1.5)
|
security (0.1.5)
|
||||||
signet (0.20.0)
|
signet (0.20.0)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
@ -211,6 +282,10 @@ GEM
|
|||||||
tty-screen (0.8.2)
|
tty-screen (0.8.2)
|
||||||
tty-spinner (0.9.3)
|
tty-spinner (0.9.3)
|
||||||
tty-cursor (~> 0.7)
|
tty-cursor (~> 0.7)
|
||||||
|
typhoeus (1.4.1)
|
||||||
|
ethon (>= 0.9.0)
|
||||||
|
tzinfo (2.0.6)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
uber (0.1.0)
|
uber (0.1.0)
|
||||||
unicode-display_width (2.6.0)
|
unicode-display_width (2.6.0)
|
||||||
word_wrap (1.0.0)
|
word_wrap (1.0.0)
|
||||||
@ -227,10 +302,11 @@ GEM
|
|||||||
xcpretty (~> 0.2, >= 0.0.7)
|
xcpretty (~> 0.2, >= 0.0.7)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
|
arm64-darwin-24
|
||||||
ruby
|
ruby
|
||||||
x64-mingw-ucrt
|
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
|
cocoapods
|
||||||
fastlane
|
fastlane
|
||||||
fastlane-plugin-firebase_app_distribution
|
fastlane-plugin-firebase_app_distribution
|
||||||
fastlane-plugin-increment_build_number
|
fastlane-plugin-increment_build_number
|
||||||
|
|||||||
@ -13,9 +13,9 @@ internal fun Project.configureKotlinMultiplatform() {
|
|||||||
|
|
||||||
jvm("desktop")
|
jvm("desktop")
|
||||||
androidTarget()
|
androidTarget()
|
||||||
|
iosArm64()
|
||||||
iosSimulatorArm64()
|
iosSimulatorArm64()
|
||||||
iosX64()
|
iosX64()
|
||||||
iosArm64()
|
|
||||||
js(IR) {
|
js(IR) {
|
||||||
this.nodejs()
|
this.nodejs()
|
||||||
binaries.executable()
|
binaries.executable()
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package: name='org.mifospay' versionCode='1' versionName='2025.8.2-beta.0.2' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
|
package: name='org.mifospay' versionCode='1' versionName='2025.8.2-beta.0.3' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
|
||||||
minSdkVersion:'26'
|
minSdkVersion:'26'
|
||||||
targetSdkVersion:'34'
|
targetSdkVersion:'34'
|
||||||
uses-permission: name='android.permission.INTERNET'
|
uses-permission: name='android.permission.INTERNET'
|
||||||
|
|||||||
@ -1,12 +1,21 @@
|
|||||||
platform :ios, '16.0'
|
deployment_target = '16.0'
|
||||||
use_frameworks!
|
|
||||||
|
|
||||||
target 'iosApp' do
|
target 'iosApp' do
|
||||||
project 'iosApp.xcodeproj'
|
use_frameworks!
|
||||||
|
platform :ios, deployment_target
|
||||||
|
# Pods for iosApp
|
||||||
pod 'cmp_shared', :path => '../cmp-shared'
|
pod 'cmp_shared', :path => '../cmp-shared'
|
||||||
|
end
|
||||||
|
|
||||||
# Native Firebase iOS Pods required by firebase-kotlin-sdk
|
post_install do |installer|
|
||||||
pod 'FirebaseCore'
|
installer.generated_projects.each do |project|
|
||||||
pod 'FirebaseAnalytics'
|
project.targets.each do |target|
|
||||||
pod 'FirebaseCrashlytics'
|
target.build_configurations.each do |config|
|
||||||
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
|
||||||
|
end
|
||||||
|
end
|
||||||
|
project.build_configurations.each do |config|
|
||||||
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
16
cmp-ios/Podfile.lock
Normal file
16
cmp-ios/Podfile.lock
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
PODS:
|
||||||
|
- cmp_shared (1.0)
|
||||||
|
|
||||||
|
DEPENDENCIES:
|
||||||
|
- cmp_shared (from `../cmp-shared`)
|
||||||
|
|
||||||
|
EXTERNAL SOURCES:
|
||||||
|
cmp_shared:
|
||||||
|
:path: "../cmp-shared"
|
||||||
|
|
||||||
|
SPEC CHECKSUMS:
|
||||||
|
cmp_shared: 572f72160ae05ea5b3f48ce339a45689782322e3
|
||||||
|
|
||||||
|
PODFILE CHECKSUM: fba668dc0eba2e4694ef273d90789cf739b8504c
|
||||||
|
|
||||||
|
COCOAPODS: 1.16.2
|
||||||
@ -114,7 +114,6 @@
|
|||||||
7555FF77242A565900829871 /* Sources */,
|
7555FF77242A565900829871 /* Sources */,
|
||||||
B92378962B6B1156000C7307 /* Frameworks */,
|
B92378962B6B1156000C7307 /* Frameworks */,
|
||||||
7555FF79242A565900829871 /* Resources */,
|
7555FF79242A565900829871 /* Resources */,
|
||||||
F4AFB1CDEBBAABC6D5F3DC8F /* [CP] Embed Pods Frameworks */,
|
|
||||||
752A860311D78307D18B373B /* [CP] Copy Pods Resources */,
|
752A860311D78307D18B373B /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
@ -212,23 +211,6 @@
|
|||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
F4AFB1CDEBBAABC6D5F3DC8F /* [CP] Embed Pods Frameworks */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
|
||||||
);
|
|
||||||
name = "[CP] Embed Pods Frameworks";
|
|
||||||
outputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
@ -371,10 +353,10 @@
|
|||||||
baseConfigurationReference = E5D357E5C5AAADD27F979C77 /* Pods-iosApp.debug.xcconfig */;
|
baseConfigurationReference = E5D357E5C5AAADD27F979C77 /* Pods-iosApp.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Distribution";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Manual;
|
||||||
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
||||||
DEVELOPMENT_TEAM = "${TEAM_ID}";
|
DEVELOPMENT_TEAM = L432S2FZP5;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@ -389,9 +371,9 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_ID}${TEAM_ID}";
|
PRODUCT_BUNDLE_IDENTIFIER = org.mifospay;
|
||||||
PRODUCT_NAME = "${APP_NAME}";
|
PRODUCT_NAME = "${APP_NAME}";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "match AdHoc org.mifospay";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
};
|
};
|
||||||
@ -402,10 +384,10 @@
|
|||||||
baseConfigurationReference = 471D4B8AF5995E32718DCCCD /* Pods-iosApp.release.xcconfig */;
|
baseConfigurationReference = 471D4B8AF5995E32718DCCCD /* Pods-iosApp.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Distribution";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Manual;
|
||||||
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
||||||
DEVELOPMENT_TEAM = "${TEAM_ID}";
|
DEVELOPMENT_TEAM = L432S2FZP5;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@ -420,9 +402,9 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_ID}${TEAM_ID}";
|
PRODUCT_BUNDLE_IDENTIFIER = org.mifospay;
|
||||||
PRODUCT_NAME = "${APP_NAME}";
|
PRODUCT_NAME = "${APP_NAME}";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "match AdHoc org.mifospay";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
};
|
};
|
||||||
|
|||||||
@ -0,0 +1,14 @@
|
|||||||
|
<?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>SchemeUserState</key>
|
||||||
|
<dict>
|
||||||
|
<key>cmp-ios.xcscheme_^#shared#^_</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
10
cmp-ios/iosApp.xcworkspace/contents.xcworkspacedata
generated
Normal file
10
cmp-ios/iosApp.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "group:iosApp.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
<FileRef
|
||||||
|
location = "group:Pods/Pods.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
<?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 />
|
||||||
|
</plist>
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 51 KiB |
@ -19,7 +19,7 @@
|
|||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0</string>
|
<string>1.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>6</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||||
|
|||||||
@ -9,27 +9,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.kmp.library.convention)
|
|
||||||
alias(libs.plugins.cmp.feature.convention)
|
alias(libs.plugins.cmp.feature.convention)
|
||||||
alias(libs.plugins.android.library)
|
|
||||||
alias(libs.plugins.compose.compiler)
|
|
||||||
alias(libs.plugins.jetbrainsCompose)
|
|
||||||
alias(libs.plugins.kotlin.parcelize)
|
alias(libs.plugins.kotlin.parcelize)
|
||||||
alias(libs.plugins.kotlinCocoapods)
|
alias(libs.plugins.kotlinCocoapods)
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
listOf(
|
iosArm64()
|
||||||
iosX64(),
|
iosSimulatorArm64()
|
||||||
iosArm64(),
|
iosX64()
|
||||||
iosSimulatorArm64()
|
|
||||||
).forEach { iosTarget ->
|
|
||||||
iosTarget.binaries.framework {
|
|
||||||
baseName = "ComposeApp"
|
|
||||||
isStatic = true
|
|
||||||
optimized = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
commonMain.dependencies {
|
commonMain.dependencies {
|
||||||
@ -43,9 +31,6 @@ kotlin {
|
|||||||
implementation(compose.components.uiToolingPreview)
|
implementation(compose.components.uiToolingPreview)
|
||||||
implementation(compose.components.resources)
|
implementation(compose.components.resources)
|
||||||
implementation(libs.window.size)
|
implementation(libs.window.size)
|
||||||
implementation(libs.koin.core)
|
|
||||||
implementation(libs.koin.compose)
|
|
||||||
implementation(libs.koin.compose.viewmodel)
|
|
||||||
|
|
||||||
implementation(projects.feature.auth)
|
implementation(projects.feature.auth)
|
||||||
implementation(projects.libs.mifosPasscode)
|
implementation(projects.libs.mifosPasscode)
|
||||||
|
|||||||
@ -9,11 +9,17 @@ module FastlaneConfig
|
|||||||
BUILD_CONFIG = {
|
BUILD_CONFIG = {
|
||||||
project_path: "cmp-ios/iosApp.xcodeproj",
|
project_path: "cmp-ios/iosApp.xcodeproj",
|
||||||
workspace_path: "cmp-ios/iosApp.xcworkspace",
|
workspace_path: "cmp-ios/iosApp.xcworkspace",
|
||||||
|
configuration: "Release",
|
||||||
|
podfile_path: "cmp-ios/Podfile",
|
||||||
plist_path: "cmp-ios/iosApp/Info.plist",
|
plist_path: "cmp-ios/iosApp/Info.plist",
|
||||||
scheme: "iosApp",
|
scheme: "cmp-ios",
|
||||||
output_name: "iosApp.ipa",
|
output_name: "iosApp.ipa",
|
||||||
output_directory: "cmp-ios/build",
|
output_directory: "cmp-ios/build",
|
||||||
match_git_private_key: "./secrets/match_ci_key",
|
match_git_private_key: "./secrets/match_ci_key",
|
||||||
|
target: "iosApp",
|
||||||
|
team_id: "L432S2FZP5",
|
||||||
|
code_sign_identity: "Apple Distribution",
|
||||||
|
configuration: "Release",
|
||||||
match_type: "adhoc",
|
match_type: "adhoc",
|
||||||
app_identifier: "org.mifospay",
|
app_identifier: "org.mifospay",
|
||||||
provisioning_profile_name: "match AdHoc org.mifospay",
|
provisioning_profile_name: "match AdHoc org.mifospay",
|
||||||
@ -22,7 +28,7 @@ module FastlaneConfig
|
|||||||
key_id: "7V3ABCDEFG",
|
key_id: "7V3ABCDEFG",
|
||||||
issuer_id: "7ab9e231-9603-4c3e-a147-be3b0f123456",
|
issuer_id: "7ab9e231-9603-4c3e-a147-be3b0f123456",
|
||||||
key_filepath: "./secrets/Auth_key.p8",
|
key_filepath: "./secrets/Auth_key.p8",
|
||||||
version_number: "1.0.0",
|
version_number: "1.0",
|
||||||
metadata_path: "./fastlane/metadata",
|
metadata_path: "./fastlane/metadata",
|
||||||
app_rating_config_path: "./fastlane/age_rating.json"
|
app_rating_config_path: "./fastlane/age_rating.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -328,9 +328,7 @@ platform :ios do
|
|||||||
unless ENV['CI']
|
unless ENV['CI']
|
||||||
UI.message("🖥️ Running locally, skipping CI-specific setup.")
|
UI.message("🖥️ Running locally, skipping CI-specific setup.")
|
||||||
else
|
else
|
||||||
setup_ci(
|
setup_ci
|
||||||
provider: "circleci"
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -350,7 +348,7 @@ platform :ios do
|
|||||||
match(
|
match(
|
||||||
type: options[:match_type] || ios_config[:match_type],
|
type: options[:match_type] || ios_config[:match_type],
|
||||||
app_identifier: options[:app_identifier] || ios_config[:app_identifier],
|
app_identifier: options[:app_identifier] || ios_config[:app_identifier],
|
||||||
readonly: false,
|
readonly: true,
|
||||||
git_url: options[:git_url] || ios_config[:git_url],
|
git_url: options[:git_url] || ios_config[:git_url],
|
||||||
git_branch: options[:git_branch] || ios_config[:git_branch],
|
git_branch: options[:git_branch] || ios_config[:git_branch],
|
||||||
git_private_key: options[:git_private_key] || ios_config[:match_git_private_key],
|
git_private_key: options[:git_private_key] || ios_config[:match_git_private_key],
|
||||||
@ -364,16 +362,29 @@ platform :ios do
|
|||||||
app_identifier = options[:app_identifier] || ios_config[:app_identifier]
|
app_identifier = options[:app_identifier] || ios_config[:app_identifier]
|
||||||
provisioning_profile_name = options[:provisioning_profile_name] || ios_config[:provisioning_profile_name]
|
provisioning_profile_name = options[:provisioning_profile_name] || ios_config[:provisioning_profile_name]
|
||||||
|
|
||||||
|
cocoapods(
|
||||||
|
podfile: ios_config[:podfile_path],
|
||||||
|
clean_install: true,
|
||||||
|
repo_update: true
|
||||||
|
)
|
||||||
|
|
||||||
|
# Manual signing for your main app target
|
||||||
|
update_code_signing_settings(
|
||||||
|
use_automatic_signing: false,
|
||||||
|
path: ios_config[:project_path],
|
||||||
|
targets: [ios_config[:target]],
|
||||||
|
team_id: ios_config[:team_id],
|
||||||
|
code_sign_identity: ios_config[:code_sign_identity],
|
||||||
|
profile_name: provisioning_profile_name,
|
||||||
|
bundle_identifier: app_identifier
|
||||||
|
)
|
||||||
|
|
||||||
build_ios_app(
|
build_ios_app(
|
||||||
scheme: ios_config[:scheme],
|
scheme: ios_config[:scheme],
|
||||||
workspace: ios_config[:workspace_path],
|
workspace: ios_config[:workspace_path],
|
||||||
output_name: ios_config[:output_name],
|
output_name: ios_config[:output_name],
|
||||||
output_directory: ios_config[:output_directory],
|
output_directory: ios_config[:output_directory],
|
||||||
export_options: {
|
configuration: ios_config[:configuration]
|
||||||
provisioningProfiles: {
|
|
||||||
app_identifier => provisioning_profile_name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -384,6 +395,13 @@ platform :ios do
|
|||||||
desc "Build Ios application"
|
desc "Build Ios application"
|
||||||
lane :build_ios do |options|
|
lane :build_ios do |options|
|
||||||
ios_config = FastlaneConfig::IosConfig::BUILD_CONFIG
|
ios_config = FastlaneConfig::IosConfig::BUILD_CONFIG
|
||||||
|
|
||||||
|
cocoapods(
|
||||||
|
podfile: ios_config[:podfile_path],
|
||||||
|
clean_install: true,
|
||||||
|
repo_update: true
|
||||||
|
)
|
||||||
|
|
||||||
build_ios_app(
|
build_ios_app(
|
||||||
scheme: ios_config[:scheme],
|
scheme: ios_config[:scheme],
|
||||||
workspace: ios_config[:workspace_path],
|
workspace: ios_config[:workspace_path],
|
||||||
@ -472,7 +490,8 @@ platform :ios do
|
|||||||
|
|
||||||
latest_build_number = latest_testflight_build_number(
|
latest_build_number = latest_testflight_build_number(
|
||||||
app_identifier: options[:app_identifier] || ios_config[:app_identifier],
|
app_identifier: options[:app_identifier] || ios_config[:app_identifier],
|
||||||
api_key: Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
|
api_key: Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY],
|
||||||
|
version: ios_config[:version_number]
|
||||||
)
|
)
|
||||||
|
|
||||||
increment_build_number(
|
increment_build_number(
|
||||||
@ -508,9 +527,10 @@ platform :ios do
|
|||||||
version_number: ios_config[:version_number]
|
version_number: ios_config[:version_number]
|
||||||
)
|
)
|
||||||
|
|
||||||
latest_build_number = latest_testflight_build_number(
|
latest_build_number = app_store_build_number(
|
||||||
app_identifier: options[:app_identifier] || ios_config[:app_identifier],
|
app_identifier: options[:app_identifier] || ios_config[:app_identifier],
|
||||||
api_key: Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
|
api_key: Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY],
|
||||||
|
version: ios_config[:version_number]
|
||||||
)
|
)
|
||||||
|
|
||||||
increment_build_number(
|
increment_build_number(
|
||||||
|
|||||||
@ -5,72 +5,87 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="00: default_platform" time="0.000168">
|
<testcase classname="fastlane.lanes" name="00: default_platform" time="0.001053">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="01: Switch to ios increment_version lane" time="0.000156">
|
<testcase classname="fastlane.lanes" name="01: Switch to ios increment_version lane" time="0.00043">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="02: firebase_app_distribution_get_latest_release" time="1.487805">
|
<testcase classname="fastlane.lanes" name="02: firebase_app_distribution_get_latest_release" time="1.157779">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="03: Switch to ios build_signed_ios lane" time="0.000382">
|
<testcase classname="fastlane.lanes" name="03: increment_build_number" time="0.848547">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="04: Switch to ios setup_ci_if_needed lane" time="0.000269">
|
<testcase classname="fastlane.lanes" name="04: Switch to ios build_signed_ios lane" time="0.000849">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="05: Switch to ios load_api_key lane" time="0.000286">
|
<testcase classname="fastlane.lanes" name="05: Switch to ios setup_ci_if_needed lane" time="0.000275">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="06: app_store_connect_api_key" time="0.010104">
|
<testcase classname="fastlane.lanes" name="06: Switch to ios load_api_key lane" time="0.000238">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="07: Switch to ios fetch_certificates_with_match lane" time="0.000295">
|
<testcase classname="fastlane.lanes" name="07: app_store_connect_api_key" time="0.019969">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="08: match" time="6.779149">
|
<testcase classname="fastlane.lanes" name="08: Switch to ios fetch_certificates_with_match lane" time="0.000275">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="09: Switch to ios build_ios_project lane" time="0.000162">
|
<testcase classname="fastlane.lanes" name="09: match" time="4.097984">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="10: build_ios_app" time="1599.756975">
|
<testcase classname="fastlane.lanes" name="10: Switch to ios build_ios_project lane" time="0.000169">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="11: Switch to ios generateReleaseNote lane" time="0.000179">
|
<testcase classname="fastlane.lanes" name="11: cocoapods" time="7.410226">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="12: changelog_from_git_commits" time="0.018834">
|
<testcase classname="fastlane.lanes" name="12: update_code_signing_settings" time="0.736504">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="13: firebase_app_distribution" time="222.652332">
|
<testcase classname="fastlane.lanes" name="13: build_ios_app" time="68.8691">
|
||||||
|
|
||||||
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
|
<testcase classname="fastlane.lanes" name="14: Switch to ios generateReleaseNote lane" time="0.001172">
|
||||||
|
|
||||||
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
|
<testcase classname="fastlane.lanes" name="15: changelog_from_git_commits" time="0.021015">
|
||||||
|
|
||||||
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
|
<testcase classname="fastlane.lanes" name="16: firebase_app_distribution" time="49.270173">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user