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

iOSCon 2018: Sustainable Releases

iOSCon 2018: Sustainable Releases

Danielle Tomlinson

March 22, 2018
Tweet

More Decks by Danielle Tomlinson

Other Decks in Technology

Transcript

  1. This is not a talk about how CD will solve

    all of your problems @dantoml [she/they] - iOSCon 2018
  2. No amount of ! will save you from a dysfunctional

    environment. @dantoml [she/they] - iOSCon 2018
  3. TypicalCorp: Milestone based releases → Y Features need to be

    in by X date @dantoml [she/they] - iOSCon 2018
  4. TypicalCorp: Milestone based releases → Y Features need to be

    in by X date → On X date we send to QA @dantoml [she/they] - iOSCon 2018
  5. TypicalCorp: Milestone based releases → Y Features need to be

    in by X date → On X date we send to QA → After QA we fix bugs @dantoml [she/they] - iOSCon 2018
  6. TypicalCorp: Milestone based releases → Y Features need to be

    in by X date → On X date we send to QA → After QA we fix bugs → Then we ship @dantoml [she/they] - iOSCon 2018
  7. Some Requirements → Automated build + test for branches/prs →

    Automated internal builds @dantoml [she/they] - iOSCon 2018
  8. Some Requirements → Automated build + test for branches/prs →

    Automated internal builds → Automated App Store builds @dantoml [she/they] - iOSCon 2018
  9. But it's not just automation → Policy for escalating hot

    fix builds @dantoml [she/they] - iOSCon 2018
  10. But it's not just automation → Policy for escalating hot

    fix builds → Set release cadence for the App Store @dantoml [she/they] - iOSCon 2018
  11. But it's not just automation → Policy for escalating hot

    fix builds → Set release cadence for the App Store → Prioritised backlog of work @dantoml [she/they] - iOSCon 2018
  12. RandomCorp: Release Trains → Sends a nightly internal+qa build →

    Releases every other Tuesday w/ CI → Uses a release branch to make pushing hotfixes easier @dantoml [she/they] - iOSCon 2018
  13. scheme("SnapshotGenerator") devices([ "iPhone 6", "iPhone 6 Plus", "iPhone 5", "iPhone

    4s" ]) languages([ "en-US", "de-DE", "es-ES", ["pt", "pt_BR"] # Portuguese with Brazilian locale ]) launch_arguments(["-username Felix"]) output_directory('./screenshots') clear_previous_screenshots(true) @dantoml [she/they] - iOSCon 2018
  14. Real World Example* *by which i mean a totally contrived

    example. @dantoml [she/they] - iOSCon 2018