Upload
justin-caldicott
View
879
Download
3
Embed Size (px)
DESCRIPTION
Slides from a session presented at the DDD North event on 12th October 2013. It’s remarkably easy to share code between a web service, web site, iOS app and desktop app, using .NET and Xamarin. Continuous delivery across multiple platforms *should* be easy too – the tools are all there, and the benefits for testing and productivity are huge, so let’s look at what it takes to get it working. This session will look at how to set up a multi-platform continuous delivery process, show you where the gotchas and pitfalls are, and explain how it’s going to make it easier to develop future software. It’s for anyone interested in smoothly delivering software to any platform, and anyone who wants to see what’s possible when someone else has done all the trial and error!
Citation preview
Cross Platform Continuous Delivery: Web, Mobile and Desktop -
A Grand Unified Theory
First Stars by Paul Chaloner, flickr
WhyContinuously Deliver?
AboutBluebird…
TheProblems…
• Slow build server• CI < Math.Enough• Office bound• Manual releases• Backups < Math.Enough
Unhappy clock by nocore, flickr
WhyNow?
• Feeling the pain• Less time, very shortly• Need to outsource• Increased awareness
TheAspirations...
• Work anywhere• Work with anyone• With without internet• Start developing instantly• Get feedback, fast• Frequent, reliable releases• Price < Math.TooMuch
IMG_4255 by Michel van den Bogaard, flickr
• Accessible from anywhere• Easy to collaborate• Develop/commit without internet• $22/month for 20 private repos
ForSource control…
Quick look@ GitHub…
ForContinuous integration…
+• Free (20 projects)• Cross-platform• Intuitive UI• Lots of useful features• Flexible• $67/month for small VM
Quick look@ TeamCity…
TheIdeals...
• Local & CI build parity• No redundant building• Lose coupling of projects• Internal dependencies as products• Internal & external dependency consistency
• Over 16,000 in the NuGet gallery• Can be used for internal dependencies• Can be used for deployments• Tools & repositories
PackagesFTW…
Quick look@ MyGet…
TheDesign...• Separate repository for each project & tests• NuGet for all dependencies• TeamCity & MyGet for feeds• TeamCity creates release ready artefacts• Auto-update references to latest dependencies
Architecture by Moyan Brenn, flickr
DemoMaking changes…
TheChallenges…
• Need agent side checkout• Build retriggering• Remember snaphots• NuGet not designed for internal
dependencies
Matterhorn Mickey by Andy Castro, flickr
ForRelease management…
• Free (5 projects)• Intuitive UI• Flexible• Package based• Fits our release process
Quick look@ Deployment Manager
OutstandingDifficulties…
• Updating dependencies• Cross-repository changes• Feature branches• AppStore deployments
Maze 2 by Michael Wyszomierski, flickr
KeyTakeaways…
• Infrastructure can be in the cloud• DVCS worth learning• Get everything under CI• Libraries are products too• Release management > deployment via CI• Tools available
Streets of San Francisco by Frank Kehren, flickr
AnyQuestions?
Finger face with a question by Tsahi Levent-Levi, flickr
@JustinCaldicott