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

Optimize Flutter Workflow on Bitrise

Optimize Flutter Workflow on Bitrise

Flutter Meetup Tokyo #8"でのLT資料です。
https://flutter-jp.connpass.com/event/121387/

Hiroki Matsue

March 26, 2019
Tweet

More Decks by Hiroki Matsue

Other Decks in Technology

Transcript

  1. Reulst on my project Timeout => 9 minutes Just few

    minutes, but Free plan is not so bad ¯\(π)/¯
  2. Flutter CI steps 1. Install Flutter 2. Execute "flutter analyze"

    3. Execute "flutter test" 4. Execute "flutter build" (Android and iOS both)
  3. What if we cache Flutter? • flutter installation: 137sec 㱺

    2sec (-135sec) • cache-pull: 11sec 㱺 27sec (+16sec) • cache-push: 92sec 㱺 209sec (+117sec) Only remote storage was changed, no time reduction
  4. Pods caching result • flutter build ios: 172sec 㱺 99sec

    (-73sec) • cache-pull: 9sec => 11sec (+2sec) • cache-push: 58sec 㱺 72sec (+14sec) Very effective !
  5. DerivedData caching result • flutter build ios: 140sec 㱺 54sec

    (-86sec) • cache-pull: 15sec => 15sec (+0sec) • cache-push: 85sec 㱺 141sec (+56sec)
  6. Non effective items on my project • build/ • ios/Flutter/

    • ios/.symlinks/ • $HOME/.gradle/ • android/.gradle/ cache-push tooks too long time for .gradle on my project.
  7. References • "60% faster builds: force Xcode to use caching

    on Bitrise!" https://medium.com/@bitrise/60-faster-builds-force-xcode- to-use-caching-on-bitrise-af8979ca39a6 • "Cache Gradle dependencies on Bitrise" https:// medium.com/bitrise/cache-gradle-dependencies-on- bitrise-cf19a2580d07
  8. Other ideas • Put dependencies to the repo • Use

    build scheduling for long workflows • Pay for Bitrise • Concurrent build for ios and apk
  9. Summary Caching following items, and using new Flutter Hybrid stacks

    will be efficient. • ios/Pods/ • $HOME/Library/Developer/Xcode/DerivedData