file -> new project to deploy in 10 minutes with teamcity and octopus deploy
DESCRIPTION
Introduction to Octopus Deploy and TeamCity and why you should use it.TRANSCRIPT
FILE -> NEW PROJECT TO DEPLOY IN 10 MINUTES
WITH TEAMCITY AND OCTOPUS DEPLOY
(and PowerShell)
London/NDC London
Tomas Jansson
06/12/2013
Tomas JanssonManager & .NET Group Lead BEKK OsloNorwegian .NET User Group
@[email protected]/mastojblog.tomasjansson.com
My story
What I didn’t see
I didn’t know
http://www.thewallpapers.org/photo/23036/Meadow-And-Trees.jpg
One day I did the deploy
http://1.bp.blogspot.com/-AuV-3M279Yw/TvFwqK2SJFI/AAAAAAAAPss/avHyNeySJwU/s1600/recipes+002.JPG
But the result!
http://th05.deviantart.net/fs34/PRE/f/2008/294/9/5/Messy_kid_by_Hollie32.jpg
Tomas angry
http://subcultureforthecultured.com/wp-content/uploads/2012/05/hulk1.jpg
The result!
http://img.directindustry.com/images_di/photo-g/blister-packaging-machines-60364-2546945.jpg
WHAT I WANT YOU TO EXPERIENCE TODAY
Some tips and tricks for Teamcity
Experience Octopusdeploy
Get to appreciate PowerShell
WHY CONTINUOUS DEPLOYMENT?
Shorter time between releases smaller impact
New features faster happier customers and improved learning
Bug impact
Features
Automated deploy more time for development and happier developers
Time
WHY CONTINUOUS DEPLOYMENT?
Shorter time between releases smaller impact
New features faster happier customers and improved learning
Bug impact
Money
Automated deploy more time for development
Time
WHERE SHOULD I START?
Visualize what is needed for you to make a complete deployment
Build
(5 min)
Test
(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
WHAT CAN I DO?
Smaller solutions
Decouple projects
Minimize DB-test/test setup
Minimize network traffic
Optimize code
Parallel testing
Build
Test
Clear artifacts
Automated deploy
Repetitive
Deploy
Klikk - eller drag and drop - for å sette inn bilde (merk at runde bilder passer best).Klikk - eller drag and drop - for å sette inn bilde (merk at runde bilder passer best).Klikk - eller drag and drop - for å sette inn bilde (merk at runde bilder passer best).
Klikk - eller drag and drop - for å sette inn bilde
The Goal
Repetitive
One artifact
Automated
CONCEPTUAL SETUP
Developers
VCS Build server
Deployment manager
Artifact repository
Dev
Test
Prod
THE GOAL
Tools
http://api.ning.com/files/wi*oWNYzff-TE0NdSZQIetMjtPWOTyiTLnYIS91gI2PE-zRWP1h2dBj79yb-nK0AghzWRpShzOmdbE9LsAnGLqa1M*u8zGMs/Swiss_Giant.jpg
TEAMCITY
Continuous integration engine
JetBrains
Free for small teams
KEY FEATURES: TEAMCITY
Templating
Dependencies
Build templateDeploy
template
Project XProject XProject XBuild Project XProject XProject XProject XDeploy Project
X
Deploy Project X
Build Project X
You can start using conventions for build and
deploy
OCTOPUS DEPLOY
Automated deployment for .NET (Windows)
• Created by Paul Stovell (@paulstovell)
• Targeting .NET
• Currently in v 2.0 public beta
NUGET & OCTOPUS DEPLOY
NUGET & OCTOPUS DEPLOY
Pull deploy from v 2.0!
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
OCTOPUS DEPLOY PROCESS
Pre deploy
Deploy
Post deploy
• PreDeploy.ps1
• Check environment
• Configure environment
• Copy files needed for deploy
• Deploy.ps1
• Run transformations of config files
• Octopus does IIS setup
• PostDeploy.ps1
• Delete files
• Clean up
PowerShell is the key to great success!
OCTOPUS CONCEPTS
An environment contains one or many machines
Adding a machine is done in one place instead of in every project
Defines where to deploy
Multiple machines can have the same role in one environment deploy to multiple machines at once
Environments
Roles
OCTOPUS CONCEPTS
A collection of projects
Map environment to project groups
Great if you have multiple customers
Definition of what to deploy
One project can multiple deploy steps
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
Project groups
Project
OCTOPUS CONCEPTS
A definition of a release
Has a version number
Contains specific packages (version can differ from release version)
An actual deploy of a release
Release package
Deploy
PowerShell
GETTINGS STARTED WITH PROGRAMMING IIS IN POWERSHELL
> Import-Module WebAdministration> $iisAppPoolsPath = "IIS:\AppPools\MyAppPool"> New-Item $iisAppPoolsPath
Name State Applications---- ----- ------------MyAppPool Started
> $iisSitesPath = "IIS:\Sites\MySite"> New-Item $iisSitesPath -bindings @{protocol="http";bindingInformation="*:8321:*"} -physicalPath "c:\tmp"
Name ID State Physical Path Bindings---- -- ----- ------------- --------MySite 5 Stopped c:\tmp http *:8321:*
> Set-ItemProperty $iisSitesPath -name applicationPool -value "MyAppPool"> Start-Website "MySite"
BETA Demo!
http://www.mrwallpaper.com/wallpapers/despicable-me-hitman-minion-1920x1080.jpg
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
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
Questions?
Thank you!
@TomasJansson