Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOSCon 2018: Sustainable Releases
Search
Danielle Tomlinson
March 22, 2018
Technology
94
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOSCon 2018: Sustainable Releases
Danielle Tomlinson
March 22, 2018
More Decks by Danielle Tomlinson
See All by Danielle Tomlinson
KubeCon EU 2018: Write Less Code, Use More Tools
dantoml
0
160
Introduction to Swift Performance - Try! Swift 2016
dantoml
1
18k
NSScotland 2015: AppKit for iOS Developers
dantoml
1
160
Swift Testing and Architecture
dantoml
0
200
Swift, meet Objective-C
dantoml
2
5.3k
Other Decks in Technology
See All in Technology
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
4
2.3k
GitHub Copilot app最速の発信の裏側
tomokusaba
1
200
脆弱性対応、どこで線を引くか
rymiyamoto
1
420
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
260
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
5
1.5k
Chainlitで作るお手軽チャットUI
ynt0485
0
280
200個のGitHubリポジトリを横断調査したかった
icck
0
140
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
450
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
220
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
110
アジャイルな経理と Claude Code と経営の未来
kawaguti
PRO
3
170
Featured
See All Featured
Mind Mapping
helmedeiros
PRO
1
260
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
440
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
How GitHub (no longer) Works
holman
316
150k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Building the Perfect Custom Keyboard
takai
2
800
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
WCS-LA-2024
lcolladotor
0
650
Transcript
Sustainable Releases A tale of teams and automation @dantoml @dantoml
[she/they] - iOSCon 2018
$ whoami @dantoml [she/they] - iOSCon 2018
CocoaPods @dantoml [she/they] - iOSCon 2018
! fastlane ! @dantoml [she/they] - iOSCon 2018
CircleCI @dantoml [she/they] - iOSCon 2018
! @dantoml [she/they] - iOSCon 2018
!!! @dantoml [she/they] - iOSCon 2018
This is not a talk about how CD will solve
all of your problems @dantoml [she/they] - iOSCon 2018
!" @dantoml [she/they] - iOSCon 2018
!" @dantoml [she/they] - iOSCon 2018
Backstory @dantoml [she/they] - iOSCon 2018
It didn’t build. @dantoml [she/they] - iOSCon 2018
!" @dantoml [she/they] - iOSCon 2018
! @dantoml [she/they] - iOSCon 2018
! @dantoml [she/they] - iOSCon 2018
Sound Familiar? @dantoml [she/they] - iOSCon 2018
! @dantoml [she/they] - iOSCon 2018
! all the things? @dantoml [she/they] - iOSCon 2018
No amount of ! will save you from a dysfunctional
environment. @dantoml [she/they] - iOSCon 2018
It's about delivering value @dantoml [she/they] - iOSCon 2018
@dantoml [she/they] - iOSCon 2018
How often do you ship? @dantoml [she/they] - iOSCon 2018
Release more often @dantoml [she/they] - iOSCon 2018
Every release is an opportunity to make users happy. @dantoml
[she/they] - iOSCon 2018
TypicalCorp: Milestone based releases @dantoml [she/they] - iOSCon 2018
TypicalCorp: Milestone based releases → Y Features need to be
in by X date @dantoml [she/they] - iOSCon 2018
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
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
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
Atlassian, the business case for continuous delivery blog @dantoml [she/they]
- iOSCon 2018
@dantoml [she/they] - iOSCon 2018
So what can we improve? @dantoml [she/they] - iOSCon 2018
You can ship smaller changes @dantoml [she/they] - iOSCon 2018
Manage Expectations @dantoml [she/they] - iOSCon 2018
@dantoml [she/they] - iOSCon 2018
You don't need deadlines. @dantoml [she/they] - iOSCon 2018
⚗ Experiment! @dantoml [she/they] - iOSCon 2018
! @dantoml [she/they] - iOSCon 2018
! Metrics @dantoml [she/they] - iOSCon 2018
So what now? @dantoml [she/they] - iOSCon 2018
Release ! @dantoml [she/they] - iOSCon 2018
Some Requirements @dantoml [she/they] - iOSCon 2018
Some Requirements → Automated build + test for branches/prs @dantoml
[she/they] - iOSCon 2018
Some Requirements → Automated build + test for branches/prs →
Automated internal builds @dantoml [she/they] - iOSCon 2018
Some Requirements → Automated build + test for branches/prs →
Automated internal builds → Automated App Store builds @dantoml [she/they] - iOSCon 2018
But it's not just automation @dantoml [she/they] - iOSCon 2018
But it's not just automation → Policy for escalating hot
fix builds @dantoml [she/they] - iOSCon 2018
But it's not just automation → Policy for escalating hot
fix builds → Set release cadence for the App Store @dantoml [she/they] - iOSCon 2018
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
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
!"# @dantoml [she/they] - iOSCon 2018
Testing @dantoml [she/they] - iOSCon 2018
Acceptance Testing @dantoml [she/they] - iOSCon 2018
XCUITest @dantoml [she/they] - iOSCon 2018
! @dantoml [she/they] - iOSCon 2018
Changelog! @dantoml [she/they] - iOSCon 2018
!" @dantoml [she/they] - iOSCon 2018
@dantoml [she/they] - iOSCon 2018
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
Localisation @dantoml [she/they] - iOSCon 2018
! @dantoml [she/they] - iOSCon 2018
! Feature Toggles @dantoml [she/they] - iOSCon 2018
Toggles are intentional Technical Debt @dantoml [she/they] - iOSCon 2018
Review Times @dantoml [she/they] - iOSCon 2018
Tooling @dantoml [she/they] - iOSCon 2018
Real World Example* *by which i mean a totally contrived
example. @dantoml [she/they] - iOSCon 2018
@dantoml [she/they] - iOSCon 2018
! @dantoml [she/they] - iOSCon 2018
Thank you @dantoml @dantoml [she/they] - iOSCon 2018