iOSCon 2018: Sustainable Releases

iOSCon 2018: Sustainable Releases

8e7d17f63cb19895a31b4ba6a976e781?s=128

Danielle Tomlinson

March 22, 2018
Tweet

Transcript

  1. Sustainable Releases A tale of teams and automation @dantoml @dantoml

    [she/they] - iOSCon 2018
  2. $ whoami @dantoml [she/they] - iOSCon 2018

  3. CocoaPods @dantoml [she/they] - iOSCon 2018

  4. ! fastlane ! @dantoml [she/they] - iOSCon 2018

  5. CircleCI @dantoml [she/they] - iOSCon 2018

  6. ! @dantoml [she/they] - iOSCon 2018

  7. !!! @dantoml [she/they] - iOSCon 2018

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

    all of your problems @dantoml [she/they] - iOSCon 2018
  9. !" @dantoml [she/they] - iOSCon 2018

  10. !" @dantoml [she/they] - iOSCon 2018

  11. Backstory @dantoml [she/they] - iOSCon 2018

  12. It didn’t build. @dantoml [she/they] - iOSCon 2018

  13. !" @dantoml [she/they] - iOSCon 2018

  14. ! @dantoml [she/they] - iOSCon 2018

  15. ! @dantoml [she/they] - iOSCon 2018

  16. Sound Familiar? @dantoml [she/they] - iOSCon 2018

  17. ! @dantoml [she/they] - iOSCon 2018

  18. ! all the things? @dantoml [she/they] - iOSCon 2018

  19. No amount of ! will save you from a dysfunctional

    environment. @dantoml [she/they] - iOSCon 2018
  20. It's about delivering value @dantoml [she/they] - iOSCon 2018

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

  22. How often do you ship? @dantoml [she/they] - iOSCon 2018

  23. Release more often @dantoml [she/they] - iOSCon 2018

  24. Every release is an opportunity to make users happy. @dantoml

    [she/they] - iOSCon 2018
  25. TypicalCorp: Milestone based releases @dantoml [she/they] - iOSCon 2018

  26. TypicalCorp: Milestone based releases → Y Features need to be

    in by X date @dantoml [she/they] - iOSCon 2018
  27. 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
  28. 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
  29. 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
  30. Atlassian, the business case for continuous delivery blog @dantoml [she/they]

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

  32. So what can we improve? @dantoml [she/they] - iOSCon 2018

  33. You can ship smaller changes @dantoml [she/they] - iOSCon 2018

  34. Manage Expectations @dantoml [she/they] - iOSCon 2018

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

  36. You don't need deadlines. @dantoml [she/they] - iOSCon 2018

  37. ⚗ Experiment! @dantoml [she/they] - iOSCon 2018

  38. ! @dantoml [she/they] - iOSCon 2018

  39. ! Metrics @dantoml [she/they] - iOSCon 2018

  40. So what now? @dantoml [she/they] - iOSCon 2018

  41. Release ! @dantoml [she/they] - iOSCon 2018

  42. Some Requirements @dantoml [she/they] - iOSCon 2018

  43. Some Requirements → Automated build + test for branches/prs @dantoml

    [she/they] - iOSCon 2018
  44. Some Requirements → Automated build + test for branches/prs →

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

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

  47. But it's not just automation → Policy for escalating hot

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

    fix builds → Set release cadence for the App Store @dantoml [she/they] - iOSCon 2018
  49. 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
  50. 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
  51. !"# @dantoml [she/they] - iOSCon 2018

  52. Testing @dantoml [she/they] - iOSCon 2018

  53. Acceptance Testing @dantoml [she/they] - iOSCon 2018

  54. XCUITest @dantoml [she/they] - iOSCon 2018

  55. ! @dantoml [she/they] - iOSCon 2018

  56. Changelog! @dantoml [she/they] - iOSCon 2018

  57. !" @dantoml [she/they] - iOSCon 2018

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

  59. 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
  60. Localisation @dantoml [she/they] - iOSCon 2018

  61. ! @dantoml [she/they] - iOSCon 2018

  62. ! Feature Toggles @dantoml [she/they] - iOSCon 2018

  63. Toggles are intentional Technical Debt @dantoml [she/they] - iOSCon 2018

  64. Review Times @dantoml [she/they] - iOSCon 2018

  65. Tooling @dantoml [she/they] - iOSCon 2018

  66. Real World Example* *by which i mean a totally contrived

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

  68. ! @dantoml [she/they] - iOSCon 2018

  69. Thank you @dantoml @dantoml [she/they] - iOSCon 2018