File -> new project to deploy in 10 minutes with TeamCity and Octopus Deploy
1. FILE -> NEW PROJECT TO
DEPLOY IN 10 MINUTES WITH
TEAMCITY AND OCTOPUS
DEPLOY
(and PowerShell)
London/NDC London
Tomas Jansson
06/12/2013
2. Tomas Jansson
Manager & .NET Group Lead
BEKK Oslo
Norwegian .NET User Group
@TomasJansson
tomas.jansson@bekk.no
github.com/mastoj
blog.tomasjansson.com
10. WHAT I WANT YOU TO EXPERIENCE TODAY
Some tips and tricks for Teamcity
Experience Octopusdeploy
Get to appreciate PowerShell
11.
12. WHY CONTINUOUS DEPLOYMENT?
Bug impact
Features
Time
Shorter time between releases
smaller impact
New features faster
happier customers and
improved learning
Automated deploy more
time for development and
happier developers
13. WHY CONTINUOUS DEPLOYMENT?
Bug impact
Money
Time
Shorter time between releases
smaller impact
New features faster
happier customers and
improved learning
Automated deploy more
time for development
14. WHERE SHOULD I START?
Visualize what is needed for you to make a complete deployment
Build
Test
(5 min)
(5 min)
Provision
server
(1 hr)
Deploy
(20 min)
Then ask the following questions:
•
How often do I do each step during a day/week/month?
•
Which step can I improve?
My guess is; build, test, deploy and last provision of server
15. WHAT CAN I DO?
Build
Test
Deploy
Smaller solutions
Minimize DB-test/test setup
Clear artifacts
Decouple projects
Minimize network traffic
Automated deploy
Optimize code
Repetitive
Parallel testing
21. KEY FEATURES: TEAMCITY
Templating
Build template
Project X
Project X
Project X
Build Project X
Dependencies
Deploy template
Project X
Project X
Project X
Deploy Project X
You can start using conventions
for build and deploy
Build Project X
Deploy Project X
22. OCTOPUS DEPLOY
Automated deployment for .NET (Windows)
•
Created by Paul Stovell (@paulstovell)
•
Targeting .NET
•
Currently in v 2.0 public beta
25. Octopus deploy is eating
their own dog food since
v 2.0.
Web application is using
the public REST API.
http://petcountrysupplies.co.uk/Dog%20Shop%20images/Dog%20Food/Dog%20Food.jpg
26. OCTOPUS DEPLOY PROCESS
•
•
Pre
deploy
•
Run transformations of
config files
•
Octopus does IIS setup
Check environment
•
Configure environment
•
Copy files needed for deploy
•
PostDeploy.ps1
•
Delete files
•
Clean up
Deploy.ps1
•
PreDeploy.ps1
PowerShell is
the key to
great success!
Deploy
Post
deploy
27. OCTOPUS CONCEPTS
Environments
Roles
An environment contains one or many machines
Defines where to deploy
Adding a machine is done in one place instead of
in every project
Multiple machines can have the same role in one
environment deploy to multiple machines at
once
28. OCTOPUS CONCEPTS
Project groups
Project
A collection of projects
Definition of what to deploy
Map environment to project groups
One project can multiple deploy steps
Great if you have multiple customers
A step can:
•
Deploy a NuGet package
•
Run a PowerShell script
•
Send an email
•
Require manual intervention
•
Deploy to Windows Azure
•
Upload files by FTP
Variables can be configured per environment,
role, machine and/or step
29. OCTOPUS CONCEPTS
Release package
Deploy
A definition of a release
An actual deploy of a release
Has a version number
Contains specific packages (version can differ
from release version)
33. SUMMARY
•
Continuous deployment doesn’t have to be hard
•
The right tools will help you a long way (TeamCity and Octopus deploy)
•
Learn PowerShell, it will make your life easier
34. RESOURCES
Blog post about the setup: http://tinyurl.com/PowerOctoTeam
Octopus Deploy: http://www.octopusdeploy.com
TeamCity: http://www.jetbrains.com/teamcity/
OctoWebSetup GitHub project: https://github.com/mastoj/OctoWebSetup
OctoWebSetup NuGet download: https://nuget.org/packages/OctoWebSetup/
Octopusdeploy automation script: https://gist.github.com/mastoj/7746853
Minimizeimpactofbugs long lead time thebugswill have more affect and youneed to take more seriousdecisionaboutwhat to doMinimize time for fix automated (fast) deploy makes it easier to release a fix fasterMore time for whatyouaresupposed to do
Minimizeimpactofbugs long lead time thebugswill have more affect and youneed to take more seriousdecisionaboutwhat to doMinimize time for fix automated (fast) deploy makes it easier to release a fix fasterMore time for whatyouaresupposed to do
I haven’tevenmentioned risk here,whichalsoshould be takenintoaccount
Things I have deployed: .NET web applications, Web services, EPiServer, SharePoint, Database migrations, Windows Services