Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Increase mobile development productivity with F...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for Lim Shang Yi Lim Shang Yi
July 10, 2021
72

Increase mobile development productivity with Firebase App Distribution

Learn how Hubble, asia's leading technology startup focused on the construction industry, tackle challenges faced that impact developer productivity and how we are able to resolve them.

Avatar for Lim Shang Yi

Lim Shang Yi

July 10, 2021

Transcript

  1. 1 Increase mobile development productivity with Firebase App Distribution Lim

    Shang Yi Google Developer Expert Firebase Software Engineer @ Hubble @shanggyilim
  2. 4 Hubble is Asia's leading full fledged technology company focused

    on the construction industry. Our end-to-end enterprise construction management software allows you to unify all key stakeholders – developers, consultants, fabricators, and contractors - and digitise operations on a single platform – The Hubble Platform.
  3. 5

  4. Background Team Tech 6 - 4 Team members - Teams

    may work on various sub-systems - 1/2 QA Test Engineer - 1 Product Owner - Gitlab - React Native v63 - Talks to backend via APIs - Multiple product flavours, e.g. Dev, Staging, Release
  5. Workflow 7 Dev work & test features Open MR/PR to

    main Merge to main Dev builds app and sends to QA Dev work & test features PM requests a build Dev builds app and sends to PM QA requests a build
  6. Workflow 8 Dev work & test features Open MR/PR to

    main Merge to main Dev builds app and sends to QA Dev work & test features PM requests a build Dev builds app and sends to PM QA requests a build
  7. 10 - Occupying computer resources - Building incorrect flavours -

    Introduce unintended changes - Security risk It’s still building Problems “The app is still building!” Building!!
  8. 11 - Building ad-hoc causes disruption in developer workflows -

    Wasted time increasing version number, code Stop bothering me Problems
  9. 12 - Builds sent in slack 👁 👄 👁 -

    Can come from any team member - Unable to determine features deployed - Sharing builds between many people can be cumbersome Where did it go? Problems
  10. 13 - Unsure which features are in which build -

    Delay QA testing - Devs unsure too leading to rebuilds - Unsure to use which version code and name What’s in the box Problems
  11. 14 - Which commit broke the build? - Onboarding new

    devs can be an issue Sudden Death Problems
  12. 15 Problems - Need a way to get the same

    app with different environments installed the same device - Need a way to get testers to easily find different environments of the same app to download Same same but different
  13. 17 - The same app can live in the same

    device but identified by different application ID / Bundle ID - Different environment uses different APIs, dev uses Dev APIs, while QA uses QA APIs. - Android app uses product flavours - iOS app uses iOS Schemes and Build Configurations Handling Multiple App Environments Solution
  14. 18 android { flavorDimensions "default" productFlavors { dev{ applicationIdSuffix ".dev"

    } qa { applicationIdSuffix ".test" } re { applicationIdSuffix ".release" } demo { applicationIdSuffix ".demo" } prod { } } }
  15. 19 const ANDROID_ASSEMBLE_TYPES = { dev: 'assembleDevRelease', qa: 'assembleQaRelease', release:

    'assembleReRelease', demo: 'assembleDemoRelease', prod: 'assembleProdRelease', }; execSync(`cd android && ./gradlew ${assembleType} && cd ..`);
  16. 20

  17. 21 // Configured in Xcode Toolbar > Product > Manage

    Schemes const IOS_SCHEME = { dev: 'HubbleApp-Dev', qa: 'HubbleApp-QA', release: 'HubbleApp-Rel', demo: 'HubbleApp-Demo', prod: 'HubbleOneApp', }; // Configured in XCode HubbleOneApp Project > Configurations const IOS_CONFIGURATION = { dev: 'Dev.Release', qa: 'QA.Release', release: 'Rel.Release', demo: 'Demo.Release', prod: 'release', }; execSync( `xcodebuild -workspace ios/HubbleOneApp.xcworkspace -scheme ${ IOS_SCHEME[argv.env] } \ clean archive -configuration ${IOS_CONFIGURATION[argv.env]} -sdk iphoneos`);
  18. 22 - Plugins that let you automate tasks for mobile

    apps - fastlane-plugin-increment_version_name for android, fastlane-plugin-versioning for iOS - fastlane-plugin-increment_version_code, fastlane-plugin-increment_version_name to automatically increase version numbers Fastlane Solutions
  19. 23

  20. 25 - Create scheduled pipelines - Runs every night with

    latest from code branch - Android: Gitlab pipeline runner with react-native-community/docker-android - iOS: Gitlab pipeline runner delegate to Bitrise Automatic Nightly Builds Solutions
  21. 26

  22. Workflow QA requests a build Dev triggers build pipeline Automate

    deployment of apps QA receives installable app
  23. 29 - Distribute pre-production versions for Android, iOS - Upload

    APKs or AABs for Android, IPAs for iOS - Apps are easy to install - Manage testers and groups - Easy workflow integration Firebase App Distribution Solutions
  24. 30

  25. 31

  26. 32

  27. Previous Workflow 33 Dev work & test features Open MR/PR

    to main Merge to main Dev builds app and sends to QA Dev work & test features PM requests a build Dev builds app and sends to PM QA requests a build
  28. Previous Workflow 34 Dev work & test features Open MR/PR

    to main Merge to main Dev builds app and sends to QA Dev work & test features PM requests a build Dev builds app and sends to PM QA requests a build
  29. Workflow 35 Dev work & test features Open MR/PR to

    main Merge to main Dev triggers build & deploy pipeline QA requests a build
  30. Pipeline Workflow 36 Pipeline triggered APP_ENV=QA COMMIT_BEFORE_SHA =74a5156 Android build

    started iOS build delegated to Bitrise Firebase App Distribution emails test group Deploy to Firebase App Distribution Deploy to Firebase App Distribution Firebase App Distribution emails test group
  31. 43 Android App Bundle Support Firebase App Distribution - Uncover

    and debug device-specific issues. - Test app bundle features like Play Feature Delivery and Play Asset Delivery. - Reduce the size of downloads for your testers.
  32. 46 Conclusion Build Pipeline Firebase App Distribution - Simplify build

    process - Delegate build to pipeline instead of devs - Identify errors as soon as build fails - Fits well with workflows - Manage apps in a single location - Fast distribution to user - Tester management - Crashlytics support - Allow AAB distribution
  33. Thank you! Firebase Documentation https://bit.ly/2Uyyy Firebase Blog - Android App

    Bundle Support https://bit.ly/333KJR Hubble - Integrated Construction Management Digital Platform https://bit.ly/3je77 Links 47 Shang Yi - Software Engineer, Hubble @shanggyilim