Advertisement
emcniece

Example Fastlane Android+iOS config

Feb 16th, 2018
544
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.21 KB | None | 0 0
  1. # NPM run commands in this file:
  2. #
  3. # "production-android": "ionic cordova build android --release --prod --env=prod"
  4. # "production-ios": "ionic cordova build ios --buildConfig ./config/build-ios.json --release --prod"
  5. #
  6.  
  7. fastlane_version "2.35.1"
  8.  
  9. default_platform :ios
  10.  
  11. platform :ios do
  12.   before_all do
  13.     ENV["SLACK_URL"] = "https://hooks.slack.com/services/xxx"
  14.   end
  15.  
  16.   desc "Submit a new Beta Build to Apple TestFlight"
  17.   desc "This will also make sure the profile is up to date"
  18.   lane :release do
  19.     app_name_sanitized = 'Myapp'
  20.     ios_project_path = "platforms/ios/#{app_name_sanitized}.xcodeproj"
  21.  
  22.     sh("cd ..; npm run production-ios; cd fastlane;")
  23.  
  24.     cert
  25.  
  26.     # more information: https://codesigning.guide
  27.     match(type: "appstore", app_identifier: "ca.company.myapp", readonly: true)
  28.  
  29.     sigh(
  30.       force: false
  31.     )
  32.  
  33.     # Recreate schemes to ensure a smooth transition from cordova to gym
  34.     recreate_schemes(
  35.       project: ios_project_path
  36.     )
  37.  
  38.     # Build your app - more options available
  39.     # Archive app into ipa
  40.     gym(
  41.       scheme: app_name_sanitized,
  42.       project: ios_project_path
  43.       #export_method: 'app-store'
  44.     )
  45.  
  46.     slack(
  47.       message: "Successfully built new myApp version."
  48.     )
  49.  
  50.   end
  51.  
  52.   lane :upload do
  53.  
  54.     # Upload to TestFlight
  55.     pilot(
  56.       team_name: "iTunes Connect Users"
  57.     )
  58.  
  59.     slack(
  60.       message: "Successfully deployed new iOS TestFlight version."
  61.     )
  62.   end
  63.  
  64.  
  65.   error do |lane, exception|
  66.     slack(
  67.       message: exception.message,
  68.       success: false
  69.     )
  70.   end
  71. end
  72.  
  73. platform :android do
  74.   desc "Compile a new build for Android"
  75.  
  76.   before_all do
  77.     ENV["SLACK_URL"] = "https://hooks.slack.com/services/xxxxx"
  78.   end
  79.  
  80.   lane :release do |options|
  81.     app_android_key = 'myapp'
  82.  
  83.     sh("rm -f ../platforms/android/build/outputs/apk/*.apk")
  84.     sh("cd ..; npm run production-android; cd fastlane;")
  85.  
  86.     sign_apk(
  87.       apk_path: "platforms/android/build/outputs/apk/android-release-unsigned.apk",
  88.       signed_apk_path: "platforms/android/build/outputs/apk/android-release-signed.apk",
  89.       keystore_path: "fastlane/release-cred/myapp-release-key.jks",
  90.       alias: app_android_key,
  91.     )
  92.     zipalign(apk_path: "#{lane_context[SharedValues::SIGNED_APK_PATH]}")
  93.  
  94.     slack(
  95.       message: "Successfully built new myApp version."
  96.     )
  97.   end
  98.  
  99.   lane :upload do
  100.     supply(
  101.       json_key: "fastlane/android-developer.json",
  102.       apk: "./platforms/android/build/outputs/apk/android-release-signed.apk",
  103.       track: "alpha",
  104.       package_name: "ca.company.myapp"
  105.     )
  106.  
  107.     slack(
  108.       message: "Successfully deployed new Android App Update."
  109.     )
  110.   end
  111.  
  112.   lane :promote_alpha do
  113.     supply(
  114.       package_name: "ca.company.myapp",
  115.       json_key: "fastlane/android-developer.json",
  116.       track: "alpha",
  117.       track_promote_to: "beta",
  118.       skip_upload_apk: true,
  119.       skip_upload_metadata: true,
  120.       skip_upload_images: true,
  121.       skip_upload_screenshots: true,
  122.     )
  123.  
  124.     slack(
  125.       message: "Promoted Alpha build to Beta channel."
  126.     )
  127.   end
  128.  
  129.   error do |lane, exception|
  130.     slack(
  131.       message: exception.message,
  132.       success: false
  133.     )
  134.   end
  135. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement