SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
Continuous Integration

“Make Love, Not War”

Linards Liepiņš
SIA LATAKKO
2014
Flavors and Concepts



To Build or Not to Build?



To Test or Not to Test?



To Analyze or Not to Analyze?



To Deploy or Not To Deploy?
Advantages and Disadvantages



Advantages:
When unit tests fail or a bug emerges, developers might revert the codebase to a bug-free state, without wasting time
debugging
Developers detect and fix integration problems continuously — avoiding last-minute chaos at release dates, (when
everyone tries to check in their slightly incompatible versions).
Early warning of broken/incompatible code
Early warning of conflicting changes
Immediate unit testing of all changes
Constant availability of a "current" build for testing, demo, or release purposes
Immediate feedback to developers on the quality, functionality, or system-wide impact of code they are writing
Frequent code check-in pushes developers to create modular, less complex code[citation needed]
Metrics generated from automated testing and CI (such as metrics for code coverage, code complexity, and features
complete) focus developers on developing functional, quality code, and help develop momentum in a team[citation needed]
Disadvantages
Initial setup time required
Well-developed test-suite required to achieve automated testing advantages

Source: http://en.wikipedia.org/wiki/Continuous_integration#Advantages_and_disadvantages
Implementations and Realizations



Open / Free:


Jenkins



BuildHive ( Cloud-based )





Closed / Trials; Freemium; Subscriptions, etc.


Team Fundation Server



Hudson



TeamCity

+
Representation(s) and Accessibility
●

Cloud → Web-browser → IDEs
●

Though it means bunch of VM, you still will have best margin of
wysiwyg from IDE

●

Server → Web-browser → CLI
●

Though it means bunch of OS-specific coding, you still do not
want surprises from custom regexp :)

●

Workstation→ Data Transmission Protocols → JSON ;
REST(ful) ; XML ; etc.
●

It depends from knowledge of developer itself. It is possible to
launch most actions in CI software, like Jenkins, from any
objects above.
●

Exclusion For TFS: using Team Foundation Server OData
API
Examples of Web GUI
Jenkins Static Code Analysis
Examples of IDE GUI
Team Foundation Server 2010



Something similar to PivotTables...
Problem(s) – Everyone wants to be happy

●

●

Define in most possible detail what your CI
solution is for. For example, You cannot
argue with colleges that they cannot access
their required data because they are lazy or
not willing to spend time searching for
particular stuff. You must guide them so
the search feels natural and comfortable
– but only transparent guidance is
process-based.

Set up reoccurring events or meet-ups with different
colleges of what their experiences was lately with CI
solution. If CI solution is closed source, ensure you
advise users do Feedback. Users must feel they are
backed up and can consult and do not get in frustration
of the chaos they might think CI is. Programmer or
Developer will force on fast and straight result; SysAdmin will
ask to provide small and compact packaging; Solution /
System Architect will always have its own legit view.
Distribution / Deployment will want for tested & verified data.
Problem(s) – Executable is high-priority element in the build-process

Define relation(s) between what you see and what you get out of
something CI solutions invoked build-process utilizes. For example,
avoid thinking only in one-way pattern that call to executable “x” only
references to actual task or sub-task. Each executable is just one
element of whole process and all it does it transforms data.
Once you parallelize two or more of them, you must acknowledge
you might start to complicate things. Maybe your CI solution is just
too powerful or too extensible, causing confusion?
Problem(s) – Too much elements, too few layers, zero understanding

Each new introduction of new “tool” is a new challenge of evaluation
of sustainability of your CI setup as whole. Group all tools you use (
executables, at this point ), define their tasks and expected
outcome, and group them, making layers. For example, if you use
subversion and git in single (build)system, label it as “svn”.
Each group might intersect some of its behavior by others. Do not
expect it will not happen; instead, ensure accessibility of debug
logging assets and monitor their usage. You might be surprised what
you will see there, especially if you present results to colleges.
Solutions(s) – Visualize!

Nothing frustrates DevOps more than (build)system users doing or even
performing changes that do not follow strictly defined description of
process. Once you introduce something new, redraw this image and see, how
big difference from default you are having now.
Solution(s) – Different README for everyone

Best way to ensure all the
parties will understand they are
dealing with is not to write it on
your own. Company
ecosystem is very dynamic
place. Let the core tools
provide help content, because
they ignore subjective view of
any involved person in such
README content.
Solution(s) Capability Maturity Model Integration ( CMMI )

Auditing your (build)system
using CMMI can also be
used to discover issues
between different layers of
your CI solution /
(build)system. Level 1-4
can be fully put
side-by-side with main CI
tasks: Compile; Tests;
Package; Deploy. Each of
tasks may contain
multiple layers.
Case-study: Jack-of-all-trades /
Master Exploder?

Single server → specified IDEs →
specified language pre-pocessing
capabilities → specified post-processing
capabilities → limited Quality-Assurance
support → usability-driven CI server
support and maintenance plan →
Knowledge-base!!!

Single server → unspecified IDEs →
unspecified language pre-processing
capabilities → unspecified language
post-processing capabilities →
unlimited QA support → capacity-driven
CI server support and maintenance
plan → CMMI & Knowledge-base!!!

Team
City

Server
Container

$

.NET
Ant,
Rake,
( scripti Maven, Foxcop
ng )
Gradle, , CMD
IDEA

Subversio
n, CVS,
Git,
Mercurial,
AccuRev
SCM,
Clearcase,
Perforce,
SourceSaf
e,
StarTeam,
TFS, Vault

E-mail,
XMPP,
RSS,
IDE,
SysTray

Eclipse, VS,
IntelliJ IDEA,
RubyMine,
PyCharm,
PhpStorm,
WebStorm →
Jetbrains
Youtrack, JIRA,
Bugzilla,
FishEye,
FindBugs,
PMD,
dotCover,
NCover

TFS

Win,
VSTM

$

.NET
( IDE )

TFS

E-mail,
SOAP

VS,
Eclipse

Ant,
Maven

Scripting,
CMD
Case-study: Make CI work for you, not You for CI

●

●

●

Any stack-trace or debug info you see in Web-browser
representation of CI server is your friend. Once user sees it,
always advice to register it in internal CI bugtracking software.
Any more detailed log than usual shows both your
professionalism and actually represents you do care about
future.
● OS: ${JENKINS_HOME}*.log
Any non-build reports of statistics or actions performed is
extremely valuable if suddenly CI server fails and gets
unreachable.
● JVM: -Xdebug
Experience(s) – It's all about echo...

●

Jenkins / Hudson – it should be all about command line. Once you
press “Build” button, each external tool is new layer between
build-process and build-result. :)
●

●

Supports Puppet both ways!

TeamCity – it should be all about task-to-task, where developer do not
directly interfere with build-scripting :)
●

●

Puppet supports TeamCity :)

Team Foundation Server – it all should be about Windows ecosystem
supported products. You got good salary - “You do it right” ; You got
Microsoft Logo poster in your bedroom - “You do it wrong”.
●

Ignores Puppet ; Got VS Release management / Team System.
Experience(s) – Half planned CI is dangerous

●

Plan fully all the data flow ( in blocks ) from the initiation of
build-process to the moment of build-result. If you do not
determine and cannot characterize in full detail each and every
I/O operation your CI solution performs, you might not
understand the purpose of that examined process. Block
schemes is your friend, when used with, for example, Jenkins.

●

On other hand, TFS has limited extensibility, which leads to
more determined outcome.
Experience(s) – Do not let become wiki dumpsite ( “build monkey” )!

●

Working in Company that both is Software Developer and Software
System Maintainer forces individuals to start to become something
like dumpsite of all wiki-fiable information about Companies IT
Ecosystem. If it is happening, it is first signal that Layers either
are too much intersecting, either there is critically insufficient
HR and documentation of build-process as whole. It means you
gave to get back to block-scheme ; internal auditing and CMMI.

●

On other hand, TFS, as strictly defined environment, provides more
tighten standardization
Experience(s) – Hardware-oriented tasks are overhead

It is not very rare that you might be forced to integrate some
“cleanup” behavior for some cases, especially if you use
Compilation, which intends to create garbage in your physical
data storage. Once situation is acknowledged, it is
necessary to optimize data flow and data life-cycle.
Summary

●

●

●

Extensibility starts from Shell / Command line – if CI solution you
use starts from here, you MUST support full and SEPERATED
Product Release and Infrastructure Maintenance teams.
● Jenkins
Flexibility starts from build-scripts, for example, MAKE, ANT,
NANT, PHING, etc. If you you go from here, you MUST ensure
process describes both its own capabilities and Human utilizing this
(build)system.
● Jenkins ; TeamCity
Reliability / Stability starts from language CI has been built-on.
If your CI documentation states it is, for example, Java-based, then
you MUST keep full Performance and Reliability logging in all levels
of (build)system in the way any system crash is fully transparent to
users. Fear not – weekly metrics with JRockit rock!
● Jenkins, TeamCity, Team Fundation Server
Thank you!



Resources:
http://kief.com/
http://linardsliepins.wordpress.com/
http://continuousdelivery.com/


















Disclaimer:
Some portions of images is not property of author
and are used without any copyright infringements
intended to their respective owners.
Author keeps full rights to textual content only.





References:







See QR code.

Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

Neal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureNeal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureThoughtworks
 
Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...
Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...
Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...SlideTeam
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentIBM UrbanCode Products
 
Test Driven Development by Denis Lutz
Test Driven Development by Denis LutzTest Driven Development by Denis Lutz
Test Driven Development by Denis Lutzjazzman1980
 
Shirly Ronen - rapid release flow and agile testing-as
Shirly Ronen - rapid release flow and agile testing-asShirly Ronen - rapid release flow and agile testing-as
Shirly Ronen - rapid release flow and agile testing-asAgileSparks
 
Test driven development
Test driven developmentTest driven development
Test driven developmentShalabh Saxena
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps OverviewSagar Mody
 
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex EnvironmentsDr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex EnvironmentsAgileSparks
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at FrosconKris Buytaert
 
Shirly Ronen - User story testing activities
Shirly Ronen - User story testing activitiesShirly Ronen - User story testing activities
Shirly Ronen - User story testing activitiesAgileSparks
 
Software testing agile_environment_wp
Software testing agile_environment_wpSoftware testing agile_environment_wp
Software testing agile_environment_wpCristiano Caetano
 
SDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with AgileSDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with AgileAbdel Moneim Emad
 
Shirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectShirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectAgileSparks
 
Why Test Driven Development?
Why Test Driven Development?Why Test Driven Development?
Why Test Driven Development?Naresh Jain
 
Continuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedContinuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedAsh Maurya
 

Was ist angesagt? (20)

Agile Testing
Agile Testing  Agile Testing
Agile Testing
 
Neal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureNeal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary Architecture
 
Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...
Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...
Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel Development
 
Test Driven Development by Denis Lutz
Test Driven Development by Denis LutzTest Driven Development by Denis Lutz
Test Driven Development by Denis Lutz
 
Shirly Ronen - rapid release flow and agile testing-as
Shirly Ronen - rapid release flow and agile testing-asShirly Ronen - rapid release flow and agile testing-as
Shirly Ronen - rapid release flow and agile testing-as
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps Overview
 
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex EnvironmentsDr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
 
Shirly Ronen - User story testing activities
Shirly Ronen - User story testing activitiesShirly Ronen - User story testing activities
Shirly Ronen - User story testing activities
 
DevOps
DevOpsDevOps
DevOps
 
UI architecture & designing
UI architecture & designingUI architecture & designing
UI architecture & designing
 
Software testing agile_environment_wp
Software testing agile_environment_wpSoftware testing agile_environment_wp
Software testing agile_environment_wp
 
SDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with AgileSDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with Agile
 
A Scalable Software Build Accelerator
A Scalable Software Build AcceleratorA Scalable Software Build Accelerator
A Scalable Software Build Accelerator
 
Shirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectShirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defect
 
Why Test Driven Development?
Why Test Driven Development?Why Test Driven Development?
Why Test Driven Development?
 
Continuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedContinuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons Learned
 

Andere mochten auch

Surfaces their nature, roughness, and
Surfaces their nature, roughness, andSurfaces their nature, roughness, and
Surfaces their nature, roughness, andMaliani Mat Lazim
 
Brio qat visit pinnacle honda
Brio qat visit pinnacle hondaBrio qat visit pinnacle honda
Brio qat visit pinnacle hondasouravbabin
 
Media Evaluation
Media EvaluationMedia Evaluation
Media EvaluationLPMedia
 
Маркетинг в бюджетной сфере
Маркетинг в бюджетной сфереМаркетинг в бюджетной сфере
Маркетинг в бюджетной сфереSLASH Communications
 

Andere mochten auch (7)

Surfaces their nature, roughness, and
Surfaces their nature, roughness, andSurfaces their nature, roughness, and
Surfaces their nature, roughness, and
 
Brio qat visit pinnacle honda
Brio qat visit pinnacle hondaBrio qat visit pinnacle honda
Brio qat visit pinnacle honda
 
Portfolio CAO - Bike 3D
Portfolio CAO - Bike 3DPortfolio CAO - Bike 3D
Portfolio CAO - Bike 3D
 
Media Evaluation
Media EvaluationMedia Evaluation
Media Evaluation
 
Buddy Up Animal Society
Buddy Up Animal SocietyBuddy Up Animal Society
Buddy Up Animal Society
 
Маркетинг в бюджетной сфере
Маркетинг в бюджетной сфереМаркетинг в бюджетной сфере
Маркетинг в бюджетной сфере
 
Homemakersparadise
Homemakersparadise Homemakersparadise
Homemakersparadise
 

Ähnlich wie Ci tips and_tricks_linards_liepins

Luiz Fernando Testa Contador - Aplicando DevOps em grandes corporações
Luiz Fernando Testa Contador - Aplicando DevOps em grandes corporaçõesLuiz Fernando Testa Contador - Aplicando DevOps em grandes corporações
Luiz Fernando Testa Contador - Aplicando DevOps em grandes corporaçõesAgile Trends
 
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy EnvironmentsPete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy EnvironmentsPeter Marshall
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Enkitec
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0Jasmine Conseil
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0Jasmine Conseil
 
Clone Clone Make: a better way to build
Clone Clone Make: a better way to buildClone Clone Make: a better way to build
Clone Clone Make: a better way to buildDanHeidinga
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to ProductionKarthik Gaekwad
 
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014Jwooldridge
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous EverythingAndrea Tino
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedJoão Pedro Martins
 
#SPSToronto How to do #DevOps with #SPFx and why it matters
#SPSToronto How to do #DevOps with #SPFx and why it matters#SPSToronto How to do #DevOps with #SPFx and why it matters
#SPSToronto How to do #DevOps with #SPFx and why it mattersVincent Biret
 
Tech foundations-slides
Tech foundations-slidesTech foundations-slides
Tech foundations-slidestranquynh93
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAdam Stephensen
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case StudyIndicThreads
 
Our Journey To Continuous Delivery
Our Journey To Continuous DeliveryOur Journey To Continuous Delivery
Our Journey To Continuous DeliveryRobert Mircea
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeSteve Mercier
 
Accelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAccelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAmazon Web Services
 

Ähnlich wie Ci tips and_tricks_linards_liepins (20)

Luiz Fernando Testa Contador - Aplicando DevOps em grandes corporações
Luiz Fernando Testa Contador - Aplicando DevOps em grandes corporaçõesLuiz Fernando Testa Contador - Aplicando DevOps em grandes corporações
Luiz Fernando Testa Contador - Aplicando DevOps em grandes corporações
 
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy EnvironmentsPete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
Continuous Integration & the Release Maturity Model
Continuous Integration & the Release Maturity Model Continuous Integration & the Release Maturity Model
Continuous Integration & the Release Maturity Model
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Clone Clone Make: a better way to build
Clone Clone Make: a better way to buildClone Clone Make: a better way to build
Clone Clone Make: a better way to build
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to Production
 
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
 
#SPSToronto How to do #DevOps with #SPFx and why it matters
#SPSToronto How to do #DevOps with #SPFx and why it matters#SPSToronto How to do #DevOps with #SPFx and why it matters
#SPSToronto How to do #DevOps with #SPFx and why it matters
 
Tech foundations-slides
Tech foundations-slidesTech foundations-slides
Tech foundations-slides
 
Isset Presentation @ EECI2009
Isset Presentation @ EECI2009Isset Presentation @ EECI2009
Isset Presentation @ EECI2009
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
 
Our Journey To Continuous Delivery
Our Journey To Continuous DeliveryOur Journey To Continuous Delivery
Our Journey To Continuous Delivery
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
 
Accelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAccelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and Microservices
 

Kürzlich hochgeladen

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Kürzlich hochgeladen (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

Ci tips and_tricks_linards_liepins

  • 1. Continuous Integration “Make Love, Not War” Linards Liepiņš SIA LATAKKO 2014
  • 2. Flavors and Concepts  To Build or Not to Build?  To Test or Not to Test?  To Analyze or Not to Analyze?  To Deploy or Not To Deploy?
  • 3. Advantages and Disadvantages  Advantages: When unit tests fail or a bug emerges, developers might revert the codebase to a bug-free state, without wasting time debugging Developers detect and fix integration problems continuously — avoiding last-minute chaos at release dates, (when everyone tries to check in their slightly incompatible versions). Early warning of broken/incompatible code Early warning of conflicting changes Immediate unit testing of all changes Constant availability of a "current" build for testing, demo, or release purposes Immediate feedback to developers on the quality, functionality, or system-wide impact of code they are writing Frequent code check-in pushes developers to create modular, less complex code[citation needed] Metrics generated from automated testing and CI (such as metrics for code coverage, code complexity, and features complete) focus developers on developing functional, quality code, and help develop momentum in a team[citation needed] Disadvantages Initial setup time required Well-developed test-suite required to achieve automated testing advantages Source: http://en.wikipedia.org/wiki/Continuous_integration#Advantages_and_disadvantages
  • 4. Implementations and Realizations  Open / Free:  Jenkins  BuildHive ( Cloud-based )   Closed / Trials; Freemium; Subscriptions, etc.  Team Fundation Server  Hudson  TeamCity +
  • 5. Representation(s) and Accessibility ● Cloud → Web-browser → IDEs ● Though it means bunch of VM, you still will have best margin of wysiwyg from IDE ● Server → Web-browser → CLI ● Though it means bunch of OS-specific coding, you still do not want surprises from custom regexp :) ● Workstation→ Data Transmission Protocols → JSON ; REST(ful) ; XML ; etc. ● It depends from knowledge of developer itself. It is possible to launch most actions in CI software, like Jenkins, from any objects above. ● Exclusion For TFS: using Team Foundation Server OData API
  • 6. Examples of Web GUI Jenkins Static Code Analysis
  • 7. Examples of IDE GUI Team Foundation Server 2010  Something similar to PivotTables...
  • 8. Problem(s) – Everyone wants to be happy ● ● Define in most possible detail what your CI solution is for. For example, You cannot argue with colleges that they cannot access their required data because they are lazy or not willing to spend time searching for particular stuff. You must guide them so the search feels natural and comfortable – but only transparent guidance is process-based. Set up reoccurring events or meet-ups with different colleges of what their experiences was lately with CI solution. If CI solution is closed source, ensure you advise users do Feedback. Users must feel they are backed up and can consult and do not get in frustration of the chaos they might think CI is. Programmer or Developer will force on fast and straight result; SysAdmin will ask to provide small and compact packaging; Solution / System Architect will always have its own legit view. Distribution / Deployment will want for tested & verified data.
  • 9. Problem(s) – Executable is high-priority element in the build-process Define relation(s) between what you see and what you get out of something CI solutions invoked build-process utilizes. For example, avoid thinking only in one-way pattern that call to executable “x” only references to actual task or sub-task. Each executable is just one element of whole process and all it does it transforms data. Once you parallelize two or more of them, you must acknowledge you might start to complicate things. Maybe your CI solution is just too powerful or too extensible, causing confusion?
  • 10. Problem(s) – Too much elements, too few layers, zero understanding Each new introduction of new “tool” is a new challenge of evaluation of sustainability of your CI setup as whole. Group all tools you use ( executables, at this point ), define their tasks and expected outcome, and group them, making layers. For example, if you use subversion and git in single (build)system, label it as “svn”. Each group might intersect some of its behavior by others. Do not expect it will not happen; instead, ensure accessibility of debug logging assets and monitor their usage. You might be surprised what you will see there, especially if you present results to colleges.
  • 11. Solutions(s) – Visualize! Nothing frustrates DevOps more than (build)system users doing or even performing changes that do not follow strictly defined description of process. Once you introduce something new, redraw this image and see, how big difference from default you are having now.
  • 12. Solution(s) – Different README for everyone Best way to ensure all the parties will understand they are dealing with is not to write it on your own. Company ecosystem is very dynamic place. Let the core tools provide help content, because they ignore subjective view of any involved person in such README content.
  • 13. Solution(s) Capability Maturity Model Integration ( CMMI ) Auditing your (build)system using CMMI can also be used to discover issues between different layers of your CI solution / (build)system. Level 1-4 can be fully put side-by-side with main CI tasks: Compile; Tests; Package; Deploy. Each of tasks may contain multiple layers.
  • 14. Case-study: Jack-of-all-trades / Master Exploder? Single server → specified IDEs → specified language pre-pocessing capabilities → specified post-processing capabilities → limited Quality-Assurance support → usability-driven CI server support and maintenance plan → Knowledge-base!!! Single server → unspecified IDEs → unspecified language pre-processing capabilities → unspecified language post-processing capabilities → unlimited QA support → capacity-driven CI server support and maintenance plan → CMMI & Knowledge-base!!! Team City Server Container $ .NET Ant, Rake, ( scripti Maven, Foxcop ng ) Gradle, , CMD IDEA Subversio n, CVS, Git, Mercurial, AccuRev SCM, Clearcase, Perforce, SourceSaf e, StarTeam, TFS, Vault E-mail, XMPP, RSS, IDE, SysTray Eclipse, VS, IntelliJ IDEA, RubyMine, PyCharm, PhpStorm, WebStorm → Jetbrains Youtrack, JIRA, Bugzilla, FishEye, FindBugs, PMD, dotCover, NCover TFS Win, VSTM $ .NET ( IDE ) TFS E-mail, SOAP VS, Eclipse Ant, Maven Scripting, CMD
  • 15. Case-study: Make CI work for you, not You for CI ● ● ● Any stack-trace or debug info you see in Web-browser representation of CI server is your friend. Once user sees it, always advice to register it in internal CI bugtracking software. Any more detailed log than usual shows both your professionalism and actually represents you do care about future. ● OS: ${JENKINS_HOME}*.log Any non-build reports of statistics or actions performed is extremely valuable if suddenly CI server fails and gets unreachable. ● JVM: -Xdebug
  • 16. Experience(s) – It's all about echo... ● Jenkins / Hudson – it should be all about command line. Once you press “Build” button, each external tool is new layer between build-process and build-result. :) ● ● Supports Puppet both ways! TeamCity – it should be all about task-to-task, where developer do not directly interfere with build-scripting :) ● ● Puppet supports TeamCity :) Team Foundation Server – it all should be about Windows ecosystem supported products. You got good salary - “You do it right” ; You got Microsoft Logo poster in your bedroom - “You do it wrong”. ● Ignores Puppet ; Got VS Release management / Team System.
  • 17. Experience(s) – Half planned CI is dangerous ● Plan fully all the data flow ( in blocks ) from the initiation of build-process to the moment of build-result. If you do not determine and cannot characterize in full detail each and every I/O operation your CI solution performs, you might not understand the purpose of that examined process. Block schemes is your friend, when used with, for example, Jenkins. ● On other hand, TFS has limited extensibility, which leads to more determined outcome.
  • 18. Experience(s) – Do not let become wiki dumpsite ( “build monkey” )! ● Working in Company that both is Software Developer and Software System Maintainer forces individuals to start to become something like dumpsite of all wiki-fiable information about Companies IT Ecosystem. If it is happening, it is first signal that Layers either are too much intersecting, either there is critically insufficient HR and documentation of build-process as whole. It means you gave to get back to block-scheme ; internal auditing and CMMI. ● On other hand, TFS, as strictly defined environment, provides more tighten standardization
  • 19. Experience(s) – Hardware-oriented tasks are overhead It is not very rare that you might be forced to integrate some “cleanup” behavior for some cases, especially if you use Compilation, which intends to create garbage in your physical data storage. Once situation is acknowledged, it is necessary to optimize data flow and data life-cycle.
  • 20. Summary ● ● ● Extensibility starts from Shell / Command line – if CI solution you use starts from here, you MUST support full and SEPERATED Product Release and Infrastructure Maintenance teams. ● Jenkins Flexibility starts from build-scripts, for example, MAKE, ANT, NANT, PHING, etc. If you you go from here, you MUST ensure process describes both its own capabilities and Human utilizing this (build)system. ● Jenkins ; TeamCity Reliability / Stability starts from language CI has been built-on. If your CI documentation states it is, for example, Java-based, then you MUST keep full Performance and Reliability logging in all levels of (build)system in the way any system crash is fully transparent to users. Fear not – weekly metrics with JRockit rock! ● Jenkins, TeamCity, Team Fundation Server
  • 21. Thank you!  Resources: http://kief.com/ http://linardsliepins.wordpress.com/ http://continuousdelivery.com/          Disclaimer: Some portions of images is not property of author and are used without any copyright infringements intended to their respective owners. Author keeps full rights to textual content only.   References:    See QR code. Questions?