Hands on
continuous delivery
Ioan Eugen Stan - I T.A.K.E. , Bucharest 2014
Disclaimer
This is my way of making software
that runs great in production.
It’s work in progress
and
adapted to the envir...
Software ‘goods’
Operating System,
Firmware
Web ApplicationDeskptop/Mobile Application
Software consumprtion: versions
● Debian 7, Windows 8.1, Android 4.4.2
● Firefox 24, Java 8
● Wikipedia version ? - curren...
Continuous Delivery (CD)
is a design practice used in
software development to
automate and improve the
process of software...
Process
http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
Continuous delivery diagram - Jez Humble
http://continuousdelivery.com/2010/02/continuous-delivery/
Tools
● distributed version control system
● a build tool (project management tool)
● software artifact repository
● conti...
Version control
Where all the code gets refactored
● manage and track source code changes
● history tracking
● enable colaboration on code
What do they do?
Popular implementations
Developer Productivity Report 2013 (Zeroturnaround)
Take advantage of the VCS
● use a distributed VCS (git or similar)
● ‘master’ branch only for releases
● ‘develop’ contain...
A successful Git
branching model
by Vincent
Driessen
Git branching
model by Lemi
Orhan Ergin
Git branching
model by Lemi
Orhan Ergin
Git branching
model by Lemi
Orhan Ergin
My advice
● use profesional services like Github,
BitBucket or the like as much as posible
● use the integrated code revie...
Build (automation) tools
Generic build process
Simple build process
http://physinfo-mac0.ulb.ac.be/divers_html/powerpc_programming_info/intro_to_pp...
Some popular build automation tools
Tool Mostly used for languages
make C/C++ mostly
distcc C/C++ mostly
rake Ruby
Apache ...
DevProd Redux (Zeroturnaround)
Maven standard build process
Build life cycle
● fixed life-cycle - disadvantage
● very Java centric, but
● promotes dependency management
● is a standard for Artifact R...
The software/artifact repository
What are they good for
● store versions of artifacts (libraries,
resources, binaries)
● eases consumption for tools/users
...
http://wiki.netbeans.org/MavenBestPractices
Software package repositories by language
Language/purpose Repository
C++ Boost
Haskell Hackage
Java Maven
.NET NuGet
Node...
Continuous Integration
Simple CI definition
A set of software engineering practices that
speed up the delivery of software by
decreasing integrat...
In practice
● build application on commit
● run unit tests on commit
● run integration test on commit
● execute other post...
Developer Productivity Report 2013 (Zeroturnaround)
My attempt to achieve CD
● keep everything in version control
● standard deployment infrastructure (Debian stable VM’
s)
●...
Demo (fingers crossed)
Conclusion
The key test is that a business sponsor could
request that the current development version of
the software can ...
DZone Continuous Delivery Research 2014
About me
IT Consultant/Developer
Apache Committer
Debian Contributor
BJUG leader
http://ro.linkedin.com/in/ieugen/
@ieugen...
Resources
● http://dzone.com/research/continuousdelivery
● http://nvie.com/posts/a-successful-git-branching-model/
● http:...
Upcoming SlideShare
Loading in...5
×

Hands on continouous delivery, I TAKE 2014

3,460

Published on

Tools needed to build a Continuous delivery pipeline. Most tools are generic and can be used regardless of language, some are specific for Java/JVM.

http://2014.itakeunconf.com/

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,460
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Hands on continouous delivery, I TAKE 2014

  1. 1. Hands on continuous delivery Ioan Eugen Stan - I T.A.K.E. , Bucharest 2014
  2. 2. Disclaimer This is my way of making software that runs great in production. It’s work in progress and adapted to the environment.
  3. 3. Software ‘goods’ Operating System, Firmware Web ApplicationDeskptop/Mobile Application
  4. 4. Software consumprtion: versions ● Debian 7, Windows 8.1, Android 4.4.2 ● Firefox 24, Java 8 ● Wikipedia version ? - current ● Facebook version ? - current ● Google version ? - current
  5. 5. Continuous Delivery (CD) is a design practice used in software development to automate and improve the process of software delivery (Make releases boring) http://en.wikipedia.org/wiki/File:Worksman_delivery_trike.jpg Continuous delivery
  6. 6. Process http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
  7. 7. Continuous delivery diagram - Jez Humble http://continuousdelivery.com/2010/02/continuous-delivery/
  8. 8. Tools ● distributed version control system ● a build tool (project management tool) ● software artifact repository ● continuous integration server ● many environments - test, staging, production, etc.
  9. 9. Version control Where all the code gets refactored
  10. 10. ● manage and track source code changes ● history tracking ● enable colaboration on code What do they do?
  11. 11. Popular implementations Developer Productivity Report 2013 (Zeroturnaround)
  12. 12. Take advantage of the VCS ● use a distributed VCS (git or similar) ● ‘master’ branch only for releases ● ‘develop’ contains the next release ● use feature branches
  13. 13. A successful Git branching model by Vincent Driessen
  14. 14. Git branching model by Lemi Orhan Ergin
  15. 15. Git branching model by Lemi Orhan Ergin
  16. 16. Git branching model by Lemi Orhan Ergin
  17. 17. My advice ● use profesional services like Github, BitBucket or the like as much as posible ● use the integrated code review tools they provide ● roll your own only with strong SysAdmin team
  18. 18. Build (automation) tools
  19. 19. Generic build process Simple build process http://physinfo-mac0.ulb.ac.be/divers_html/powerpc_programming_info/intro_to_ppc/ppc5_porting5.html
  20. 20. Some popular build automation tools Tool Mostly used for languages make C/C++ mostly distcc C/C++ mostly rake Ruby Apache Ant Java Apaceh Maven JVM langs, JavaScript,PHP Gradle JVM languages, generic sbt Scala, JVM Grunt JavaScript
  21. 21. DevProd Redux (Zeroturnaround)
  22. 22. Maven standard build process Build life cycle
  23. 23. ● fixed life-cycle - disadvantage ● very Java centric, but ● promotes dependency management ● is a standard for Artifact Repositories ● used for PHP: http://www.php-maven.org/ ● used for JS: http://www.webjars.org/ About Maven
  24. 24. The software/artifact repository
  25. 25. What are they good for ● store versions of artifacts (libraries, resources, binaries) ● eases consumption for tools/users ● could be a simple FTP location/ git repos
  26. 26. http://wiki.netbeans.org/MavenBestPractices
  27. 27. Software package repositories by language Language/purpose Repository C++ Boost Haskell Hackage Java Maven .NET NuGet Node.js NPM Python PyPl R CRAN Ruby Ruby Application Archive http://en.wikipedia.org/wiki/Software_repository
  28. 28. Continuous Integration
  29. 29. Simple CI definition A set of software engineering practices that speed up the delivery of software by decreasing integration times.
  30. 30. In practice ● build application on commit ● run unit tests on commit ● run integration test on commit ● execute other post-build jobs
  31. 31. Developer Productivity Report 2013 (Zeroturnaround)
  32. 32. My attempt to achieve CD ● keep everything in version control ● standard deployment infrastructure (Debian stable VM’ s) ● build a single artifact - .deb package - that builds and starts our app ● rely on Jenkins automated build ● automated integration testing, via Jenkins ● automated acceptance testing, via Jenkins
  33. 33. Demo (fingers crossed)
  34. 34. Conclusion The key test is that a business sponsor could request that the current development version of the software can be deployed into production at a moment's notice - and nobody would bat an eyelid, let alone panic. (Martin Fowler)
  35. 35. DZone Continuous Delivery Research 2014
  36. 36. About me IT Consultant/Developer Apache Committer Debian Contributor BJUG leader http://ro.linkedin.com/in/ieugen/ @ieugen222 stan.ieugen@gmail.com
  37. 37. Resources ● http://dzone.com/research/continuousdelivery ● http://nvie.com/posts/a-successful-git-branching-model/ ● http://www.slideshare.net/lemiorhan/git-branching-model ● http://continuousdelivery.com/ ● http://martinfowler.com/books/continuousDelivery.html ● http://jenkins-ci.org/ ● http://maven.apache.org/ ● http://git-scm.com/ ● http://blog.idrsolutions.com/2013/09/3-build-automation-tools-featured-at- javaone/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×