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

`fastlane beta` 2 или почему я стал пить больше кофе

`fastlane beta` 2 или почему я стал пить больше кофе

30219c8562e62f5a6702c8e3fdec2390?s=128

Vladimir Burdukov

January 26, 2017
Tweet

Transcript

  1. fastlane beta или почему я стал пить больше кофе

  2. • "Собери билд для тестровщиков." • "Можешь добавить Васин iPhone

    в ad-hoc профайл?" • "Дайте ditribution сертификат для Appstore." • "Залей новые скриншоты, описания и release notes для нашего приложения на 15 языках." • "Кто забыл залить в Crashlytics dSYM?" • "Ой всё, пойду писать под андроид."
  3. День релиза: • паника ! ; • тестирование " ;

    • release notes # ; • скриншоты $ ; • provisioning profile и ditribution certificate ; • Xcode → Product → Archive ; • Organizer → Upload to Appstore (Next * 5) ;
  4. День релиза: • отправить на ревью ! ; • выпить

    кофе ☕☕ ; • отметить релиз ### .
  5. Что делать? !

  6. None
  7. None
  8. deliver

  9. snapshot

  10. frameit

  11. None
  12. gym

  13. gym xcodebuild clean archive -archivePath build/MyApp \ -scheme MyApp xcodebuild

    -exportArchive \ -exportFormat ipa \ -archivePath "build/MyApp.xcarchive" \ -exportPath "build/MyApp.ipa" \ -exportProvisioningProfile "ProvisioningProfileName"
  14. gym gym --workspace MyApp.xcworkspace --scheme 'MyApp' --clean

  15. scan

  16. scan xcodebuild \ -workspace MyApp.xcworkspace \ -scheme 'MyApp' \ -sdk

    iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3' \ test
  17. scan scan --workspace MyApp.xcworkspace --scheme 'MyApp' -a 'iPhone 6'

  18. Время релизов!

  19. Время релизов: • тестирование – scan; • обновить release notes,

    загрузить скриншоты – deliver; • Xcode → Product → Archive – gym; • Organizer → Upload to Appstore (Next * 5) – deliver;
  20. Fastfile

  21. Fastfile before_all do ENV['GYM_WORKSPACE'] = 'MyApp.xcworkspace' ENV['GYM_SCHEME'] = 'MyApp' end

  22. fastlane test lane :test do |options| scan end

  23. fastlane beta lane :beta do |options| cocoapods set_info_plist_value( path: 'MyApp/Info.plist',

    key: 'CFBundleVersion', value: (latest_testflight_build_number + 1).to_s )
  24. fastlane beta gym( configuration: 'Beta', output_name: 'MyApp.beta.ipa', export_method: 'app-store' )

    pilot end
  25. fastlane appstore lane :appstore do |options| cocoapods set_info_plist_value( ... )

    gym( configuration: 'Release', output_name: 'MyApp.appstore.ipa', export_method: 'app-store' )
  26. fastlane appstore deliver( screenshots_path: '.fastlane/screenshots', metadata_path: '.fastlane/metadata', app_icon: '.fastlane/metadata/AppIcon.png' )

    end
  27. Демо

  28. Code Signing?

  29. Code Signing?

  30. cert → sigh → gym

  31. cert

  32. sigh

  33. gym

  34. match

  35. match три типа профилей: • development • adhoc • appstore

  36. match • сертификаты и профили хранятся в отдельном репозитории в

    шифрованном виде • это позволяет быстро получить актуальные сертификаты и профили на новом компьютере • достаточно знать url репозитория и пароль, которым он зашифрован
  37. Демо

  38. Расширения

  39. actions fastlane ├── Fastfile ├── Matchfile └── actions └── generate_date.rb

  40. Pluginfile

  41. spaceship

  42. Зачем это нужно? • универсальность • решение вопроса code signing

    для командой работы • расширяемость
  43. Кофе?

  44. Что дальше? • github.com/fastlane/fastlane • fastlane.tools • codesigning.guide

  45. Vladimir Burdukov • @chippcheg • github.com/chipp