diff --git a/.github/workflows/multi-platform-build-and-publish.yml b/.github/workflows/multi-platform-build-and-publish.yml index 6f399984..085a10a1 100644 --- a/.github/workflows/multi-platform-build-and-publish.yml +++ b/.github/workflows/multi-platform-build-and-publish.yml @@ -71,7 +71,7 @@ on: target_branch: type: string - default: 'dev' + default: 'development' description: 'Target branch for release' build_ios: @@ -104,7 +104,7 @@ jobs: ios_package_name: 'mifospay-ios' # <-- Change this to your ios package name desktop_package_name: 'mifospay-desktop' # <-- Change this to your desktop package name web_package_name: 'mifospay-web' # <-- Change this to your web package name - tester_groups: 'mobile-wallet-testing' # <-- Change this to your Firebase tester group + tester_groups: 'mifos-mobile-testers' # <-- Change this to your Firebase tester group build_ios: ${{ inputs.build_ios }} publish_ios: ${{ inputs.publish_ios }} secrets: diff --git a/.github/workflows/tag-weekly-release.yml b/.github/workflows/tag-weekly-release.yml index 9607410d..9647aff2 100644 --- a/.github/workflows/tag-weekly-release.yml +++ b/.github/workflows/tag-weekly-release.yml @@ -107,7 +107,7 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, workflow_id: 'multi-platform-build-and-publish.yml', - ref: 'dev', + ref: 'development', inputs: { "release_type": "beta", }, diff --git a/.github/workflows/upload-demo-app-on-firebase.yaml b/.github/workflows/upload-demo-app-on-firebase.yaml new file mode 100644 index 00000000..89f69186 --- /dev/null +++ b/.github/workflows/upload-demo-app-on-firebase.yaml @@ -0,0 +1,43 @@ +name: Upload Demo App on Firebase + +on: + workflow_dispatch: + inputs: + tester_groups: + description: 'Comma-separated list of tester groups' + required: true + default: 'mifos-mobile-testers' + type: string + + pull_request: + types: [ labeled ] + branches: + - 'development' + - 'master' + +concurrency: + group: firebase-${{ github.ref }} + cancel-in-progress: true + +jobs: + upload_demo_app_on_firebase: + name: Upload Demo App on Firebase + runs-on: macos-latest + if: github.event.label.name == 'firebase-test-on' || github.event_name == 'workflow_dispatch' + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: โ˜๏ธ Deploy Android App on Firebase + uses: openMF/kmp-android-firebase-publish-action@v1.0.0 + with: + release_type: 'demo' + android_package_name: 'mifospay-android' + keystore_file: ${{ secrets.ORIGINAL_KEYSTORE_FILE }} + keystore_password: ${{ secrets.ORIGINAL_KEYSTORE_FILE_PASSWORD }} + keystore_alias: ${{ secrets.ORIGINAL_KEYSTORE_ALIAS }} + keystore_alias_password: ${{ secrets.ORIGINAL_KEYSTORE_ALIAS_PASSWORD }} + google_services: ${{ secrets.GOOGLESERVICES }} + firebase_creds: ${{ secrets.FIREBASECREDS }} + tester_groups: ${{ inputs.tester_groups }} \ No newline at end of file diff --git a/Gemfile b/Gemfile index 205f1c3a..66422d1d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,12 @@ source "https://rubygems.org" -ruby File.read(".ruby-version").strip +begin + ruby File.read(".ruby-version").strip +rescue Errno::ENOENT + ruby "3.3.5" # Default version if .ruby-version doesn't exist +end gem "fastlane" -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) \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 19e6f489..92f36531 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,8 +10,8 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.3.0) - aws-partitions (1.1023.0) - aws-sdk-core (3.214.0) + aws-partitions (1.1035.0) + aws-sdk-core (3.215.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -19,11 +19,11 @@ GEM aws-sdk-kms (1.96.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.176.1) + aws-sdk-s3 (1.177.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.10.1) + aws-sigv4 (1.11.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.2.0) @@ -58,8 +58,8 @@ GEM faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.0.4) - multipart-post (~> 2) + faraday-multipart (1.1.0) + multipart-post (~> 2.0) faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) @@ -67,7 +67,7 @@ GEM faraday-retry (1.0.3) faraday_middleware (1.2.1) faraday (~> 1.0) - fastimage (2.3.1) + fastimage (2.4.0) fastlane (2.226.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) @@ -110,7 +110,7 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.4.0) xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) - fastlane-plugin-firebase_app_distribution (0.9.1) + fastlane-plugin-firebase_app_distribution (0.10.0) google-apis-firebaseappdistribution_v1 (~> 0.3.0) google-apis-firebaseappdistribution_v1alpha (~> 0.2.0) fastlane-plugin-increment_build_number (0.0.4) @@ -162,8 +162,8 @@ GEM domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.6.2) - json (2.9.0) - jwt (2.9.3) + json (2.9.1) + jwt (2.10.1) base64 mini_magick (4.13.2) mini_mime (1.1.5) @@ -174,7 +174,7 @@ GEM nkf (0.2.0) optparse (0.6.0) os (1.1.4) - plist (3.7.1) + plist (3.7.2) public_suffix (6.0.1) rake (13.2.1) representable (3.2.0) @@ -185,7 +185,7 @@ GEM rexml (3.4.0) rouge (3.28.0) ruby2_keywords (0.0.5) - rubyzip (2.3.2) + rubyzip (2.4.1) security (0.1.5) signet (0.19.0) addressable (~> 2.8) diff --git a/fastlane-config/android_config.rb b/fastlane-config/android_config.rb new file mode 100644 index 00000000..b822bb5b --- /dev/null +++ b/fastlane-config/android_config.rb @@ -0,0 +1,23 @@ +module FastlaneConfig + module AndroidConfig + STORE_CONFIG = { + default_store_file: "release_keystore.keystore", + default_store_password: "Mifospay", + default_key_alias: "key0", + default_key_password: "Mifos@123" + } + + FIREBASE_CONFIG = { + firebase_prod_app_id: "1:64530857057:android:f8d67b786db1b844", + firebase_demo_app_id: "1:728434912738:android:48ccd9153349f31e1a1dbb", + firebase_service_creds_file: "secrets/firebaseAppDistributionServiceCredentialsFile.json", + firebase_groups: "mifos-mobile-testers" + } + + BUILD_PATHS = { + prod_apk_path: "mifospay-android/build/outputs/apk/prod/release/mifospay-android-prod-release.apk", + demo_apk_path: "mifospay-android/build/outputs/apk/demo/release/mifospay-android-demo-release.apk", + prod_aab_path: "mifospay-android/build/outputs/bundle/prodRelease/mifospay-android-prod-release.aab" + } + end +end \ No newline at end of file diff --git a/fastlane-config/ios_config.rb b/fastlane-config/ios_config.rb new file mode 100644 index 00000000..63fe3f2f --- /dev/null +++ b/fastlane-config/ios_config.rb @@ -0,0 +1,15 @@ +module FastlaneConfig + module IosConfig + FIREBASE_CONFIG = { + firebase_app_id: "1:728434912738:ios:86a7badfaed88b841a1dbb", + firebase_service_creds_file: "secrets/firebaseAppDistributionServiceCredentialsFile.json", + firebase_groups: "mifos-mobile-testers" + } + + BUILD_CONFIG = { + project_path: "mifospay-ios/iosApp.xcodeproj", + scheme: "iosApp", + output_directory: "mifospay-ios/build" + } + end +end \ No newline at end of file diff --git a/fastlane/FastFile b/fastlane/FastFile index 7fa1a59a..fd049c53 100644 --- a/fastlane/FastFile +++ b/fastlane/FastFile @@ -1,3 +1,9 @@ +project_dir = File.expand_path('..', Dir.pwd) + +require_relative File.join(project_dir, 'fastlane-config', 'android_config') +require_relative File.join(project_dir, 'fastlane-config', 'ios_config') +require_relative './config/config_helpers' + default_platform(:android) platform :android do @@ -10,10 +16,7 @@ platform :android do desc "Assemble Release APK" lane :assembleReleaseApks do |options| - options[:storeFile] ||= "release_keystore.keystore" - options[:storePassword] ||= "Mifospay" - options[:keyAlias] ||= "key0" - options[:keyPassword] ||= "Mifos@123" + signing_config = FastlaneConfig.get_android_signing_config(options) # Generate version generateVersion = generateVersion() @@ -21,73 +24,120 @@ platform :android do buildAndSignApp( taskName: "assemble", buildType: "Release", - storeFile: options[:storeFile], - storePassword: options[:storePassword], - keyAlias: options[:keyAlias], - keyPassword: options[:keyPassword], + **signing_config ) end - desc "Bundle Play Store release" - lane :bundlePlayStoreRelease do |options| - options[:storeFile] ||= "release_keystore.keystore" - options[:storePassword] ||= "Mifospay" - options[:keyAlias] ||= "key0" - options[:keyPassword] ||= "Mifos@123" + desc "Bundle Release APK" + lane :bundleReleaseApks do |options| + signing_config = FastlaneConfig.get_android_signing_config(options) # Generate version generateVersion = generateVersion() - # Generate Release Note - releaseNotes = generateReleaseNotes() - - # Write the generated release notes to default.txt - buildConfigPath = "metadata/android/en-GB/changelogs/default.txt" - File.write(buildConfigPath, releaseNotes) - buildAndSignApp( taskName: "bundle", buildType: "Release", - storeFile: options[:storeFile], - storePassword: options[:storePassword], - keyAlias: options[:keyAlias], - keyPassword: options[:keyPassword], + **signing_config ) end - desc "Publish Release Play Store artifacts to Firebase App Distribution" - lane :deploy_on_firebase do |options| - options[:apkFile] ||= "mifospay-android/build/outputs/apk/prod/release/mifospay-android-prod-release.apk" - options[:serviceCredsFile] ||= "secrets/firebaseAppDistributionServiceCredentialsFile.json" - options[:groups] ||= "mifos-wallet-testers" + desc "Publish Release Artifacts to Firebase App Distribution" + lane :deployReleaseApkOnFirebase do |options| + signing_config = FastlaneConfig.get_android_signing_config(options) + firebase_config = FastlaneConfig.get_firebase_config(:android, :prod) + build_paths = FastlaneConfig::AndroidConfig::BUILD_PATHS + + # Generate version + generateVersion = generateVersion( + platform: "firebase", + **firebase_config + ) # Generate Release Note - releaseNotes = generateReleaseNotes() + releaseNotes = generateReleaseNote() + + buildAndSignApp( + taskName: "assembleProd", + buildType: "Release", + **signing_config + ) firebase_app_distribution( - app: "1:64530857057:android:f8d67b786db1b844", + app: firebase_config[:appId], android_artifact_type: "APK", - android_artifact_path: options[:apkFile], - service_credentials_file: options[:serviceCredsFile], - groups: options[:groups], - release_notes: "#{releaseNotes}", + android_artifact_path: build_paths[:prod_apk_path], + service_credentials_file: firebase_config[:serviceCredsFile], + groups: firebase_config[:groups], + release_notes: releaseNotes + ) + end + + desc "Publish Demo Artifacts to Firebase App Distribution" + lane :deployDemoApkOnFirebase do |options| + signing_config = FastlaneConfig.get_android_signing_config(options) + firebase_config = FastlaneConfig.get_firebase_config(:android, :demo) + build_paths = FastlaneConfig::AndroidConfig::BUILD_PATHS + + # Generate version + generateVersion = generateVersion( + platform: "firebase", + **firebase_config + ) + + # Generate Release Note + releaseNotes = generateReleaseNote() + + buildAndSignApp( + taskName: "assembleDemo", + buildType: "Release", + **signing_config + ) + + firebase_app_distribution( + app: firebase_config[:appId], + android_artifact_type: "APK", + android_artifact_path: build_paths[:demo_apk_path], + service_credentials_file: firebase_config[:serviceCredsFile], + groups: firebase_config[:groups], + release_notes: releaseNotes ) end desc "Deploy internal tracks to Google Play" - lane :deploy_internal do |options| - options[:aabFile] ||= "mifospay-android/build/outputs/bundle/prodRelease/mifospay-android-prod-release.aab" + lane :deployInternal do |options| + signing_config = FastlaneConfig.get_android_signing_config(options) + build_paths = FastlaneConfig::AndroidConfig::BUILD_PATHS + + # Generate version + generateVersion = generateVersion(platform: "playstore") + + # Generate Release Note + releaseNotes = generateReleaseNote() + + # Write the generated release notes to default.txt + buildConfigPath = "metadata/android/en-GB/changelogs/default.txt" + FileUtils.mkdir_p(File.dirname(buildConfigPath)) + File.write(buildConfigPath, releaseNotes) + + buildAndSignApp( + taskName: "bundleProd", + buildType: "Release", + **signing_config + ) + upload_to_play_store( track: 'internal', - aab: options[:aabFile], + aab: build_paths[:prod_aab_path], skip_upload_metadata: true, skip_upload_images: true, skip_upload_screenshots: true, + skip_upload_apk: true, ) end desc "Promote internal tracks to beta on Google Play" - lane :promote_to_beta do + lane :promoteToBeta do upload_to_play_store( track: 'internal', track_promote_to: 'beta', @@ -138,31 +188,135 @@ platform :android do ) end - desc "Generate Version" - lane :generateVersion do - # Generate version file + desc "Generate Version for different platforms" + lane :generateVersion do |options| + platform = (options[:platform] || 'git').downcase + + # Generate version file for all platforms gradle(tasks: ["versionFile"]) - # Set version from file - ENV['VERSION'] = File.read("../version.txt").strip + # Set version from file with fallback + version = File.read("../version.txt").strip rescue "1.0.0" + ENV['VERSION'] = version - # Calculate and set version code - commit_count = `git rev-list --count HEAD`.to_i - tag_count = `git tag | grep -v beta | wc -l`.to_i - ENV['VERSION_CODE'] = ((commit_count + tag_count) << 1).to_s + case platform + when 'playstore' + prod_codes = google_play_track_version_codes(track: 'production') + beta_codes = google_play_track_version_codes(track: 'beta') + latest_code = (prod_codes + beta_codes).max || 1 + ENV['VERSION_CODE'] = (latest_code + 1).to_s + when 'firebase' + begin + latest_release = firebase_app_distribution_get_latest_release( + app: options[:appId], + service_credentials_file: options[:serviceCredsFile] + ) + latest_build_version = latest_release ? latest_release[:buildVersion].to_i : 0 + ENV['VERSION_CODE'] = (latest_build_version + 1).to_s + rescue => e + UI.error("Error generating Firebase version: #{e.message}") + raise e + end + + when 'git' + # Calculate version code from git history + commit_count = `git rev-list --count HEAD`.to_i + ENV['VERSION_CODE'] = (commit_count << 1).to_s + else + UI.user_error!("Unsupported platform: #{platform}. Supported platforms are: playstore, firebase, git") + end + + # Output the results + UI.success("Generated version for #{platform}") UI.success("Set VERSION=#{ENV['VERSION']} VERSION_CODE=#{ENV['VERSION_CODE']}") + version end desc "Generate release notes" - lane :generateReleaseNotes do |options| - branchName = `git rev-parse --abbrev-ref HEAD`.chomp() + lane :generateReleaseNote do |options| releaseNotes = changelog_from_git_commits( commits_count: 1, ) releaseNotes end + desc "Generate full release notes from specified tag or latest release tag" + lane :generateFullReleaseNote do |options| + def get_latest_tag + latest = `git describe --tags --abbrev=0`.strip + return latest unless latest.empty? + + latest = `git tag --sort=-creatordate`.split("\n").first + return latest unless latest.nil? || latest.empty? + + nil + end + + from_tag = options[:fromTag] || get_latest_tag + UI.message "Using tag: #{from_tag || 'No tags found. Getting all commits...'}" + + commits = if from_tag && !from_tag.empty? + `git log #{from_tag}..HEAD --pretty=format:"%B"`.split("\n") + else + `git log --pretty=format:"%B"`.split("\n") + end + + categories = process_commits(commits) + format_release_notes(categories) + end + + private_lane :process_commits do |commits| + notes = { + "breaking" => [], "feat" => [], "fix" => [], + "perf" => [], "refactor" => [], "style" => [], + "docs" => [], "test" => [], "build" => [], + "ci" => [], "chore" => [], "other" => [] + } + + commits.each do |commit| + next if commit.empty? || commit.start_with?("Co-authored-by:", "Merge") + + if commit.include?("BREAKING CHANGE:") || commit.include?("!") + notes["breaking"] << commit.sub(/^[^:]+:\s*/, "") + elsif commit =~ /^(feat|fix|perf|refactor|style|docs|test|build|ci|chore)(\(.+?\))?:/ + notes[$1] << commit.sub(/^[^:]+:\s*/, "") + else + notes["other"] << commit + end + end + notes + end + + private_lane :format_release_notes do |categories| + sections = { + "breaking" => "๐Ÿ’ฅ Breaking Changes", + "feat" => "๐Ÿš€ New Features", + "fix" => "๐Ÿ› Bug Fixes", + "perf" => "โšก Performance Improvements", + "refactor" => "โ™ป๏ธ Refactoring", + "style" => "๐Ÿ’… Style Changes", + "docs" => "๐Ÿ“š Documentation", + "test" => "๐Ÿงช Tests", + "build" => "๐Ÿ“ฆ Build System", + "ci" => "๐Ÿ‘ท CI Changes", + "chore" => "๐Ÿ”ง Maintenance", + "other" => "๐Ÿ“ Other Changes" + } + + notes = ["# Release Notes", "\nRelease date: #{Time.now.strftime('%d-%m-%Y')}"] + + sections.each do |type, title| + next if categories[type].empty? + notes << "\n## #{title}" + categories[type].each { |commit| notes << "\n- #{commit}" } + end + + UI.message "Generated Release Notes:" + UI.message notes.join("\n") + notes.join("\n") + end + end platform :ios do @@ -170,59 +324,60 @@ platform :ios do lane :build_ios do |options| # Set default configuration if not provided options[:configuration] ||= "Debug" + ios_config = FastlaneConfig::IosConfig::BUILD_CONFIG - # automatic code signing update_code_signing_settings( use_automatic_signing: true, - path: "mifospay-ios/iosApp.xcodeproj" + path: ios_config[:project_path] ) + build_ios_app( - project: "mifospay-ios/iosApp.xcodeproj", - scheme: "iosApp", - # Set configuration to debug for now + project: ios_config[:project_path], + scheme: ios_config[:scheme], configuration: options[:configuration], skip_codesigning: "true", - output_directory: "mifospay-ios/build", + output_directory: ios_config[:output_directory], skip_archive: "true" ) end lane :increment_version do |options| - options[:serviceCredsFile] ||= "secrets/firebaseAppDistributionServiceCredentialsFile.json" + firebase_config = FastlaneConfig.get_firebase_config(:ios) + ios_config = FastlaneConfig::IosConfig::BUILD_CONFIG latest_release = firebase_app_distribution_get_latest_release( - app: "1:728434912738:ios:86a7badfaed88b841a1dbb", - service_credentials_file: options[:serviceCredsFile] + app: firebase_config[:appId], + service_credentials_file: options[:serviceCredsFile] || firebase_config[:serviceCredsFile] ) + increment_build_number( - xcodeproj: "mifospay-ios/iosApp.xcodeproj", + xcodeproj: ios_config[:project_path], build_number: latest_release[:buildVersion].to_i + 1 ) end desc "Upload iOS application to Firebase App Distribution" lane :deploy_on_firebase do |options| - options[:serviceCredsFile] ||= "secrets/firebaseAppDistributionServiceCredentialsFile.json" - options[:groups] ||= "mifos-wallet-testers" + firebase_config = FastlaneConfig.get_firebase_config(:ios) - increment_version() + increment_version(serviceCredsFile: firebase_config[:serviceCredsFile]) build_ios() - releaseNotes = generateReleaseNotes() - release = firebase_app_distribution( - app: "1:728434912738:ios:86a7badfaed88b841a1dbb", - service_credentials_file: options[:serviceCredsFile], - release_notes_file: "#{releaseNotes}", - groups: options[:groups] - ) + releaseNotes = generateReleaseNote() + firebase_app_distribution( + app: firebase_config[:appId], + service_credentials_file: firebase_config[:serviceCredsFile], + release_notes: releaseNotes, + groups: firebase_config[:groups] + ) end desc "Generate release notes" - lane :generateReleaseNotes do + lane :generateReleaseNote do branchName = `git rev-parse --abbrev-ref HEAD`.chomp() releaseNotes = changelog_from_git_commits( commits_count: 1, ) releaseNotes end -end +end \ No newline at end of file diff --git a/fastlane/README.md b/fastlane/README.md index 8ec31293..c8de7f00 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -15,18 +15,58 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do ## Android -### android deploy_internal +### android assembleDebugApks ```sh -[bundle exec] fastlane android deploy_internal +[bundle exec] fastlane android assembleDebugApks +``` + +Assemble debug APKs. + +### android assembleReleaseApks + +```sh +[bundle exec] fastlane android assembleReleaseApks +``` + +Assemble Release APK + +### android bundleReleaseApks + +```sh +[bundle exec] fastlane android bundleReleaseApks +``` + +Bundle Release APK + +### android deployReleaseApkOnFirebase + +```sh +[bundle exec] fastlane android deployReleaseApkOnFirebase +``` + +Publish Release Artifacts to Firebase App Distribution + +### android deployDemoApkOnFirebase + +```sh +[bundle exec] fastlane android deployDemoApkOnFirebase +``` + +Publish Demo Artifacts to Firebase App Distribution + +### android deployInternal + +```sh +[bundle exec] fastlane android deployInternal ``` Deploy internal tracks to Google Play -### android promote_to_beta +### android promoteToBeta ```sh -[bundle exec] fastlane android promote_to_beta +[bundle exec] fastlane android promoteToBeta ``` Promote internal tracks to beta on Google Play @@ -39,13 +79,29 @@ Promote internal tracks to beta on Google Play Promote beta tracks to production on Google Play -### android deploy_on_firebase +### android generateVersion ```sh -[bundle exec] fastlane android deploy_on_firebase +[bundle exec] fastlane android generateVersion ``` -Upload Android application to Firebase App Distribution +Generate Version for different platforms + +### android generateReleaseNote + +```sh +[bundle exec] fastlane android generateReleaseNote +``` + +Generate release notes + +### android generateFullReleaseNote + +```sh +[bundle exec] fastlane android generateFullReleaseNote +``` + +Generate full release notes from specified tag or latest release tag ---- @@ -60,6 +116,14 @@ Upload Android application to Firebase App Distribution Build iOS application +### ios increment_version + +```sh +[bundle exec] fastlane ios increment_version +``` + + + ### ios deploy_on_firebase ```sh @@ -68,6 +132,14 @@ Build iOS application Upload iOS application to Firebase App Distribution +### ios generateReleaseNote + +```sh +[bundle exec] fastlane ios generateReleaseNote +``` + +Generate release notes + ---- This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. diff --git a/fastlane/config/config_helpers.rb b/fastlane/config/config_helpers.rb new file mode 100644 index 00000000..ffd10152 --- /dev/null +++ b/fastlane/config/config_helpers.rb @@ -0,0 +1,32 @@ +require_relative '../../fastlane-config/android_config' +require_relative '../../fastlane-config/ios_config' + +module FastlaneConfig + # Move methods directly into FastlaneConfig module instead of nested Helpers module + def self.get_android_signing_config(options = {}) + { + storeFile: options[:store_file] || ENV['ANDROID_STORE_FILE'] || AndroidConfig::STORE_CONFIG[:default_store_file], + storePassword: options[:store_password] || ENV['ANDROID_STORE_PASSWORD'] || AndroidConfig::STORE_CONFIG[:default_store_password], + keyAlias: options[:key_alias] || ENV['ANDROID_KEY_ALIAS'] || AndroidConfig::STORE_CONFIG[:default_key_alias], + keyPassword: options[:key_password] || ENV['ANDROID_KEY_PASSWORD'] || AndroidConfig::STORE_CONFIG[:default_key_password] + } + end + + def self.get_firebase_config(platform, type = :prod) + case platform + when :android + app_id = type == :prod ? AndroidConfig::FIREBASE_CONFIG[:firebase_prod_app_id] : AndroidConfig::FIREBASE_CONFIG[:firebase_demo_app_id] + { + appId: ENV['FIREBASE_ANDROID_APP_ID'] || app_id, + serviceCredsFile: ENV['FIREBASE_SERVICE_CREDS_FILE'] || AndroidConfig::FIREBASE_CONFIG[:firebase_service_creds_file], + groups: ENV['FIREBASE_GROUPS'] || AndroidConfig::FIREBASE_CONFIG[:firebase_groups] + } + when :ios + { + appId: ENV['FIREBASE_IOS_APP_ID'] || IosConfig::FIREBASE_CONFIG[:firebase_app_id], + serviceCredsFile: ENV['FIREBASE_SERVICE_CREDS_FILE'] || IosConfig::FIREBASE_CONFIG[:firebase_service_creds_file], + groups: ENV['FIREBASE_GROUPS'] || IosConfig::FIREBASE_CONFIG[:firebase_groups] + } + end + end +end \ No newline at end of file diff --git a/fastlane/metadata/android/en-GB/changelogs/default.txt b/fastlane/metadata/android/en-GB/changelogs/default.txt index e69de29b..52cf2e4a 100644 --- a/fastlane/metadata/android/en-GB/changelogs/default.txt +++ b/fastlane/metadata/android/en-GB/changelogs/default.txt @@ -0,0 +1 @@ +Merge branch 'openMF:dev' into dev diff --git a/fastlane/report.xml b/fastlane/report.xml index 2dfe55d8..c2f28757 100644 --- a/fastlane/report.xml +++ b/fastlane/report.xml @@ -5,12 +5,24 @@ - + - + + + + + + + + + + + + +