SlideShare una empresa de Scribd logo
1 de 31
Continuous
Integration 101
Maor Hayun
19/3/2014
Agenda
Continuous Integration1
2 Dealing with Dependencies
3 Package Managing – using Nuget
1 Continuous Integration
What did we have before?
Software development life cycle methodologies
• Long development iterations
• Integration as a phase
• Each developer worked on his own environment
• At most, Nightly build
• “Don’t Break the Build” Culture
What is Continuous Integration?
“Continuous integration (CI) is the practice,
in software engineering, of merging all
developer working copies with a
shared mainline several times a day”
Martin Fowler, May 2006
Main Goal
• Detect integration errors as quickly as possible
• Ability to deploy software to production at any time
Treat Integration as Non-Event
What’s Integration All About
How often is continuously?
As frequently as possible or… at least daily
CI Core Practices
• Maintain a code repository
• Single point of truth, no developer branch, shared ownership
• Automate the Build
• Make your build self-testing
• Unit & Integration tests, failed test breaks the build
• Every commit should build on an integration machine
• Keep the build fast
• Test in a clone of the production environment
• Everyone can see what’s happening
• Automate deployment
Well…
The Agile Maturity Model
Level -1
Regressive
unrepeatable, poorly
controlled and reactive
• Manual processes for
building software
• No management of
artifacts and reports
Level 0
Repeatable
process documented and
partly automated
• Regular automated
build and testing
• Any build can be
recreated from
source control using
automated process
Level 1
Consistent
automated processes
applied across whole
application lifecycle
• Automated build and
test cycle every time a
change is committed
• Dependencies managed
• Reuse of scripts and
tools
Level 2
Quantitatively
Managed
process measured and
controlled
• Build metrics
gathered, made
visible and acted on
• Builds are not left
broken
Level 3
Optimizing
focus on process
improvement
• Teams regularly meet to
discuss integration
problems and resolve
them with automation
• Faster feedback and
better visibility
By Jez Humble and Rolf Russell | September 2009
http://info.thoughtworks.com/rs/thoughtworks2/images/agile_maturity_model.pdf
• Immediate feedback on code quality & functionality
• Developers detect and fix integration problems continuously
• Constant availability of a "current" build
• Immediate unit testing
• Frequent code commits leads modular, less complex code
• Metrics
• Initial setup time required
• Requires Team’s responsibility and
maintenance
CI Anti-Patterns
• Infrequent commits
• Broken builds
• Minimal feedback
• Spam feedback
• Slow Build Machine
• Relying on a bloated build
CI Tools
Demo – TeamCity
2 Dealing with Dependencies
Dependency Hell
1. Too many dependencies
Lengthy downloads, not portable easily
“A term for the frustration of software users who have installed software
packages which have dependencies on specific versions of other packages.”
Dependency Hell
1. Too many dependencies
Lengthy downloads, not portable easily
2. Long dependency chain
app depends on LibA -> LibB -> … > LibZ
“A term for the frustration of software users who have installed software
packages which have dependencies on specific versions of other packages.”
Dependency Hell
1. Too many dependencies
Lengthy downloads, not portable easily
2. Long dependency chain
app depends on LibA -> LibB -> … > LibZ
3. Conflicting dependencies
app1 depends on libFoo 1.2, app2 depends on libFoo 1.3
“A term for the frustration of software users who have installed software
packages which have dependencies on specific versions of other packages.”
Dependency Hell
1. Too many dependencies
Lengthy downloads, not portable easily
2. Long dependency chain
app depends on LibA -> LibB -> … > LibZ
3. Conflicting dependencies
app1 depends on libFoo 1.2, app2 depends on libFoo 1.3
4. Circular dependencies
“A term for the frustration of software users who have installed software
packages which have dependencies on specific versions of other packages.”
3 Package Management
USING NUGET
Nuget
• Package Manager for Microsoft ecosystem
• In Nuget Gallery: ~20600 unique packages, ~175K in total
• Provides a centeral location to store common knowledge
• code, assemblies, configuration and automation scripts
• Provides concrete solutions rather than guidance, samples or
abstract standarts
Nuget Package
Basically, just a simple zip file containg:
• content and source files – to be injected into target project
• PowerShell scripts and executables
• Configuration files and source code transformations
• Using David Ebbo’s WebActivator –
light-up-your-nupacks-with-startup-code-and-webactivator.aspx
Nuget Package Structure
Folder structure
• Tools (init.ps1, install.ps1, uninstall.ps1)
• Content
• Manifest (.nuspec file)
• Lib
Nuget Package Manifest
Nuspec manifest file
• Xml file (with XSD available)
• Package metadata
• Can be generated
from csproj file
Demo - Nuget
Resources
• Continuous Integration: Improving Software
Quality and Reduce Risks
• By Paul M. Duval, Steve Matyas, Andrew Glover
• Continuous Integration Manifest
• http://martinfowler.com/articles/continuousIntegration.html
• TeamCity
• http://www.jetbrains.com/teamcity/
• Nuget
• http://www.nuget.org/
• MyGet
• http://www.myget.org/
Continuous Integration 101: CI Best Practices and Dependency Management with Nuget

Más contenido relacionado

La actualidad más candente

Why NXTware Remote for Jenkins
Why NXTware Remote for JenkinsWhy NXTware Remote for Jenkins
Why NXTware Remote for Jenkinsecubemarketing
 
Introduction To Continuous Integration
Introduction To Continuous IntegrationIntroduction To Continuous Integration
Introduction To Continuous IntegrationChristopher Read
 
WSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer GuideWSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer Guidehugo lu
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsDicodingEvent
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentChristopher Read
 
AgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpAgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpBarry Gavril
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...CloudBees
 
Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for BeginnersYüce Çelikel
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICDKnoldus Inc.
 
Standardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins TeamStandardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins TeamDeborah Schalm
 
Ansible with Jenkins in a CI/CD Process
Ansible with Jenkins in a CI/CD ProcessAnsible with Jenkins in a CI/CD Process
Ansible with Jenkins in a CI/CD ProcessKhairul Zebua
 
Flight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewFlight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewSynopsys Software Integrity Group
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationhugo lu
 
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeKeeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeAbraham Marin-Perez
 
Towards Continuous Delivery in Mobile Apps
Towards Continuous Delivery in Mobile AppsTowards Continuous Delivery in Mobile Apps
Towards Continuous Delivery in Mobile AppsPhillip Wheatley
 
Devops Companies in Bangalore - Mobinius
Devops Companies in Bangalore - MobiniusDevops Companies in Bangalore - Mobinius
Devops Companies in Bangalore - Mobiniusmobiniusdigitals
 

La actualidad más candente (20)

Why NXTware Remote for Jenkins
Why NXTware Remote for JenkinsWhy NXTware Remote for Jenkins
Why NXTware Remote for Jenkins
 
Introduction To Continuous Integration
Introduction To Continuous IntegrationIntroduction To Continuous Integration
Introduction To Continuous Integration
 
WSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer GuideWSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer Guide
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
 
AgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpAgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel Harp
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
 
Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for Beginners
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
CICD with Jenkins
CICD with JenkinsCICD with Jenkins
CICD with Jenkins
 
Continuous Integration 101
Continuous Integration 101Continuous Integration 101
Continuous Integration 101
 
Standardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins TeamStandardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins Team
 
Enter the Team City
Enter the Team CityEnter the Team City
Enter the Team City
 
Ansible with Jenkins in a CI/CD Process
Ansible with Jenkins in a CI/CD ProcessAnsible with Jenkins in a CI/CD Process
Ansible with Jenkins in a CI/CD Process
 
Flight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewFlight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An Overview
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeKeeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
 
Towards Continuous Delivery in Mobile Apps
Towards Continuous Delivery in Mobile AppsTowards Continuous Delivery in Mobile Apps
Towards Continuous Delivery in Mobile Apps
 
Devops Companies in Bangalore - Mobinius
Devops Companies in Bangalore - MobiniusDevops Companies in Bangalore - Mobinius
Devops Companies in Bangalore - Mobinius
 

Destacado

Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practicesCode Mastery
 
Rule jenkins with configuration as code
Rule jenkins with configuration as codeRule jenkins with configuration as code
Rule jenkins with configuration as codeChristian Rasp
 
XPages build automation and testing
XPages build automation and testingXPages build automation and testing
XPages build automation and testingmpradny
 
Continuous integration 101
Continuous integration 101Continuous integration 101
Continuous integration 101Manuel Spezzani
 
Continuous delivery 101
Continuous delivery 101Continuous delivery 101
Continuous delivery 101darkofabijan
 
Continuous integration 101
Continuous integration 101Continuous integration 101
Continuous integration 101Gary Park
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationVijaya K
 
Improving software quality using Continuous Integration
Improving software quality using Continuous IntegrationImproving software quality using Continuous Integration
Improving software quality using Continuous IntegrationWouter Konecny
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integrationdrluckyspin
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineRobert McDermott
 

Destacado (11)

Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
Build Automation in Android
Build Automation in AndroidBuild Automation in Android
Build Automation in Android
 
Rule jenkins with configuration as code
Rule jenkins with configuration as codeRule jenkins with configuration as code
Rule jenkins with configuration as code
 
XPages build automation and testing
XPages build automation and testingXPages build automation and testing
XPages build automation and testing
 
Continuous integration 101
Continuous integration 101Continuous integration 101
Continuous integration 101
 
Continuous delivery 101
Continuous delivery 101Continuous delivery 101
Continuous delivery 101
 
Continuous integration 101
Continuous integration 101Continuous integration 101
Continuous integration 101
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Improving software quality using Continuous Integration
Improving software quality using Continuous IntegrationImproving software quality using Continuous Integration
Improving software quality using Continuous Integration
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
 

Similar a Continuous Integration 101: CI Best Practices and Dependency Management with Nuget

DevOps Overview in my own words
DevOps Overview in my own wordsDevOps Overview in my own words
DevOps Overview in my own wordsSUBHENDU KARMAKAR
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationXPDays
 
Super chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsSuper chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsNikola Gotsev
 
Supercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsSupercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsNikola Gotsev
 
DevOps Training institute in Ameerpet
DevOps Training institute in Ameerpet DevOps Training institute in Ameerpet
DevOps Training institute in Ameerpet Visualpath Training
 
Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP WorldIdaf_1er
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
Introduction to dev ops
Introduction to dev opsIntroduction to dev ops
Introduction to dev opsLen Bass
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdfMahmoudAlnmr1
 
Hudson
HudsonHudson
Hudson8x8
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityIvan Porta
 
Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source toolsSebastian Helzle
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deploymentLilia Sfaxi
 
Devops - why, what and how?
Devops - why, what and how?Devops - why, what and how?
Devops - why, what and how?Malinda Kapuruge
 
Testing in the new age of DevOps
Testing in the new age of DevOpsTesting in the new age of DevOps
Testing in the new age of DevOpsMoataz Mahmoud
 

Similar a Continuous Integration 101: CI Best Practices and Dependency Management with Nuget (20)

DevOps Overview in my own words
DevOps Overview in my own wordsDevOps Overview in my own words
DevOps Overview in my own words
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Super chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsSuper chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeployments
 
Supercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsSupercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration Deployments
 
DevOps Training institute in Ameerpet
DevOps Training institute in Ameerpet DevOps Training institute in Ameerpet
DevOps Training institute in Ameerpet
 
Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
 
Continuous Everything v2.0
Continuous Everything v2.0Continuous Everything v2.0
Continuous Everything v2.0
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
Introduction to dev ops
Introduction to dev opsIntroduction to dev ops
Introduction to dev ops
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Hudson
HudsonHudson
Hudson
 
Jenkins.pdf
Jenkins.pdfJenkins.pdf
Jenkins.pdf
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivity
 
Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source tools
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deployment
 
Devops - why, what and how?
Devops - why, what and how?Devops - why, what and how?
Devops - why, what and how?
 
intro to DevOps
intro to DevOpsintro to DevOps
intro to DevOps
 
Testing in the new age of DevOps
Testing in the new age of DevOpsTesting in the new age of DevOps
Testing in the new age of DevOps
 

Último

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Último (20)

Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Continuous Integration 101: CI Best Practices and Dependency Management with Nuget

  • 2. Agenda Continuous Integration1 2 Dealing with Dependencies 3 Package Managing – using Nuget
  • 4. What did we have before?
  • 5. Software development life cycle methodologies • Long development iterations • Integration as a phase • Each developer worked on his own environment • At most, Nightly build • “Don’t Break the Build” Culture
  • 6. What is Continuous Integration? “Continuous integration (CI) is the practice, in software engineering, of merging all developer working copies with a shared mainline several times a day” Martin Fowler, May 2006
  • 7. Main Goal • Detect integration errors as quickly as possible • Ability to deploy software to production at any time Treat Integration as Non-Event
  • 9. How often is continuously? As frequently as possible or… at least daily
  • 10.
  • 11. CI Core Practices • Maintain a code repository • Single point of truth, no developer branch, shared ownership • Automate the Build • Make your build self-testing • Unit & Integration tests, failed test breaks the build • Every commit should build on an integration machine • Keep the build fast • Test in a clone of the production environment • Everyone can see what’s happening • Automate deployment
  • 13.
  • 14. The Agile Maturity Model Level -1 Regressive unrepeatable, poorly controlled and reactive • Manual processes for building software • No management of artifacts and reports Level 0 Repeatable process documented and partly automated • Regular automated build and testing • Any build can be recreated from source control using automated process Level 1 Consistent automated processes applied across whole application lifecycle • Automated build and test cycle every time a change is committed • Dependencies managed • Reuse of scripts and tools Level 2 Quantitatively Managed process measured and controlled • Build metrics gathered, made visible and acted on • Builds are not left broken Level 3 Optimizing focus on process improvement • Teams regularly meet to discuss integration problems and resolve them with automation • Faster feedback and better visibility By Jez Humble and Rolf Russell | September 2009 http://info.thoughtworks.com/rs/thoughtworks2/images/agile_maturity_model.pdf
  • 15. • Immediate feedback on code quality & functionality • Developers detect and fix integration problems continuously • Constant availability of a "current" build • Immediate unit testing • Frequent code commits leads modular, less complex code • Metrics • Initial setup time required • Requires Team’s responsibility and maintenance
  • 16. CI Anti-Patterns • Infrequent commits • Broken builds • Minimal feedback • Spam feedback • Slow Build Machine • Relying on a bloated build
  • 19. 2 Dealing with Dependencies
  • 20. Dependency Hell 1. Too many dependencies Lengthy downloads, not portable easily “A term for the frustration of software users who have installed software packages which have dependencies on specific versions of other packages.”
  • 21. Dependency Hell 1. Too many dependencies Lengthy downloads, not portable easily 2. Long dependency chain app depends on LibA -> LibB -> … > LibZ “A term for the frustration of software users who have installed software packages which have dependencies on specific versions of other packages.”
  • 22. Dependency Hell 1. Too many dependencies Lengthy downloads, not portable easily 2. Long dependency chain app depends on LibA -> LibB -> … > LibZ 3. Conflicting dependencies app1 depends on libFoo 1.2, app2 depends on libFoo 1.3 “A term for the frustration of software users who have installed software packages which have dependencies on specific versions of other packages.”
  • 23. Dependency Hell 1. Too many dependencies Lengthy downloads, not portable easily 2. Long dependency chain app depends on LibA -> LibB -> … > LibZ 3. Conflicting dependencies app1 depends on libFoo 1.2, app2 depends on libFoo 1.3 4. Circular dependencies “A term for the frustration of software users who have installed software packages which have dependencies on specific versions of other packages.”
  • 25. Nuget • Package Manager for Microsoft ecosystem • In Nuget Gallery: ~20600 unique packages, ~175K in total • Provides a centeral location to store common knowledge • code, assemblies, configuration and automation scripts • Provides concrete solutions rather than guidance, samples or abstract standarts
  • 26. Nuget Package Basically, just a simple zip file containg: • content and source files – to be injected into target project • PowerShell scripts and executables • Configuration files and source code transformations • Using David Ebbo’s WebActivator – light-up-your-nupacks-with-startup-code-and-webactivator.aspx
  • 27. Nuget Package Structure Folder structure • Tools (init.ps1, install.ps1, uninstall.ps1) • Content • Manifest (.nuspec file) • Lib
  • 28. Nuget Package Manifest Nuspec manifest file • Xml file (with XSD available) • Package metadata • Can be generated from csproj file
  • 30. Resources • Continuous Integration: Improving Software Quality and Reduce Risks • By Paul M. Duval, Steve Matyas, Andrew Glover • Continuous Integration Manifest • http://martinfowler.com/articles/continuousIntegration.html • TeamCity • http://www.jetbrains.com/teamcity/ • Nuget • http://www.nuget.org/ • MyGet • http://www.myget.org/

Notas del editor

  1. Waterfall, Spiral, Incremental, Prototype
  2. Paradigm change: integration as non event
  3. Rebuild DatabaseBuild prod distributionPackage library and publish
  4. Maintain a code repositoryThis practice advocates the use of a revision control system for the project's source code. All artifacts required to build the project should be placed in the repository. In this practice and in the revision control community, the convention is that the system should be buildable from a fresh checkout and not require additional dependencies. Extreme Programming advocate Martin Fowler also mentions that where branching is supported by tools, its use should be minimized.[4] Instead, it is preferred for changes to be integrated rather than for multiple versions of the software to be maintained simultaneously. The mainline (or trunk) should be the place for the working version of the software.Automate the buildA single command should have the capability of building the system. Many build-tools, such as make, have existed for many years. Other more recent tools are frequently used in continuous integration environments. Automation of the build should include automating the integration, which often includes deployment into a production-like environment. In many cases, the build script not only compiles binaries, but also generates documentation, website pages, statistics and distribution media (such as Debian DEB, Red Hat RPM or Windows MSI files).Make the build self-testingOnce the code is built, all tests should run to confirm that it behaves as the developers expect it to behave.Everyone commits to the baseline every dayBy committing regularly, every committer can reduce the number of conflicting changes. Checking in a week's worth of work runs the risk of conflicting with other features and can be very difficult to resolve. Early, small conflicts in an area of the system cause team members to communicate about the change they are making. Committing all changes at least once a day (once per feature built) is generally considered part of the definition of Continuous Integration. In addition performing a nightly build is generally recommended. These are lower bounds, the typical frequency is expected to be much higher.Every commit (to baseline) should be builtThe system should build commits to the current working version in order to verify that they integrate correctly. A common practice is to use Automated Continuous Integration, although this may be done manually. For many[who?], continuous integration is synonymous with using Automated Continuous Integration where a continuous integration server or daemon monitors the revision control system for changes, then automatically runs the build process.Keep the build fastThe build needs to complete rapidly, so that if there is a problem with integration, it is quickly identified.Test in a clone of the production environmentHaving a test environment can lead to failures in tested systems when they deploy in the production environment, because the production environment may differ from the test environment in a significant way. However, building a replica of a production environment is cost prohibitive. Instead, the pre-production environment should be built to be a scalable version of the actual production environment to both alleviate costs while maintaining technology stack composition and nuances.Everyone can see the results of the latest buildIt should be easy to find out whether the build breaks and, if so, who made the relevant change.Automate deploymentMost CI systems allow the running of scripts after a build finishes. In most situations, it is possible to write a script to deploy the application to a live test server that everyone can look at. A further advance in this way of thinking is Continuous deployment, which calls for the software to be deployed directly into production, often with additional automation to prevent defects or regressions.
  5. Infrequent check-ins – leads to delayed integrationBroken builds – blocks teams from moving to other tasksMinimal feedback – prevents action from occurringSpam feedback – causes people to ignore messagesSlow Build Machine – creates build bottleneck and delays feedbackRelying on a bloated build - reduces rapid feedbackhttp://www.ibm.com/developerworks/library/j-ap11297/
  6. Bamboo – byAtlassian, integrates with JiraCruisecontrol – xml configuration based CruiseControl.rb - lightweight, Ruby-based continuous integration server that can build any codebaseHudson – Java based, formerly open-sourced until Sun made it commercial Jenkins – Fork of Hudson, Java based.TeamCity – commercial product by JetBrainsXcode 5 also contains a proprietary continuous integration system, works closely with OS X Server for OS X Mavericks