SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Continuous Integration and Engineering Environment approach Aleksandr Tsertkov
Continuous integration Continuous Integration provides quick feedback on recent code changes
Continuous Integration Software engineering practice, where project is build frequently Emerged in the Extreme Programming (XP) community
Continuous Integration Build is made by automated build tools like: make, Ant, Maven, etc. Automated tests results and software metrics are collected for each build Build process is executed and results published on CI server
Build CI server executes build scripts regularly: Predefined delay is used to execute build scripts. Every one hour for example CI server regularly checks SCM system and in case of changes made since last build time a new build is made
Build status Each build has a status: successful or failed Build is considered as successful if all build tasks were executed without errors and failed otherwise Automated tests are executed as build tasks
Build status Build status may be reported by email, IM, SMS, etc.
Build artifacts Each build receives unique number. Build artifacts are published with this number.
Build artifacts Build artifacts are different from project to project but usually they include: Binaries: installation package, application files, … Generated documentation: API, end-user documentation, … Unit test results: time taken, code coverage, … Software metrics: LOC changes, PMD, CRAP index, coding standards violations, …
Binary packages Binary packages produced by build process may include: Installation packages Executable binaries Etc.
Documentation Usually API documentation is compiled during build and is published within other artifacts End-user documentation also may be compiled and published accordingly to project needs
API Documentation
Code coverage Code coverage used to show which lines of source code has been tested with unit tests 100% code coverage is a required but not a sufficient criteria for measuring test quality
Code coverage
Code coverage
Coding standards violations Strict coding standards in a project help to improve reading and understanding of code and raise maintainability With help of specialized tools coding standards may be checked as part of build process
Software metrics A software metric is a measure of some property of a piece of software or its specifications. LOC - Lines Of Code PMD – Project Mess Detector C.R.A.P. – Change Risk Analysis and Predictions Code coverage
Advantages Early notification about integration errors Early warning about broken code Immediate unit testing of all changes Constant availability of build packages including: testing, demo, beta, etc. Collected software metrics focus developers on producing high quality code
Software A wide range of CI software is available providing different notification medias, SCM systems, build tools support and IDE integration: CruiseControl Bamboo Hudson BuildBot Etc.
CruiseControl CruiseControl is an extensible framework for creating continuous build process: It includes dozens of plugins for a variety of source controls, build technologies, and notifications schemes including email and instant messaging A web interface to view details and access artifacts of builds
CruiseControl CruiseControl is written in Java but is used on a wide variety of projects thanks to different build tools supported: Ant, NAnt, Maven, Phing, Rake, Xcode “exec” builder which can be used with any command-line tool or script
CruiseControl May be used with C/C++ since build tasks can be wrapped into Ant tasks CppUnit or CxxTest can be used as unit testing framework
Generic Visual C++.NET Ant target
CruiseControl
phpUnderControl phpUnderControl is customization of CruiseControl that brings functionality needed for PHP projects: PHPUnit PHPDocumentor PHP_CodeSniffer …
phpUnderControl
phpUnderControl
phpUnderControl
phpUnderControl
phpUnderControl
peer code review Improves code quality and aids software developers professional growth
Code review Code review is a process of checking programming code for common mistakes, vulnerabilities, bugs and errors. Code might be reviewed by author, team members or 3rd party company providing code review service.
Code review Several common types of code review: Formal inspection – code is reviewed on a projector by a team of reviewers Over-the-shoulder review where author walks the reviewer though a set of code changes E-mail pass-around – whole files or changes are packed up by the author and sent to reviewers via email Tool assisted – specialized code review tools are used
Peer code review Systematic examination of code individually by each reviewer. Usually developers are able to review each other code in a small team, but it’s better to set rules for handling review process roles.
Peer code review best practices Review fewer than 200-400 lines of code at a time Take enough time for a proper, slow review, but not more than 60-90 minutes Verify that defects are actually fixed
Advantages Helps to identify bugs early Encourages collaboration and builds a team Helps in keeping code maintainable Improves code quality Improves cross team know-how Shares experience within a team Improves developers professional skills
Peer code review software Reviewboardhttp://code.google.com/p/reviewboard/ Cruciblehttp://www.atlassian.com/software/crucible/ CodeCollaborator http://smartbear.com/
Reviewboard
CodeCollaborator
Crucible Web based peer code review tool Simplified workflow Integrates with Fisheye and JIRA since it is ATLASSIAN’s product Pre and post commit reviews are supported Integration into Eclipse & IntelliJ IDEA
Crucible To start a new review Crucible allows: Selecting concrete revision, for example the most recent commit in Subversion or revision identified by number or date Selecting individual files and folders (even from different revisions)
Crucible Supports email notification of: Review requests Review comments Review actions (close, etc.)
Crucible
Crucible
Engineering environment
Engineering environment Our engineering environment approach was specially designed for web development though some subsystems may be utilized for non-web development as well. Environment is based on dedicated server where project code is developed and tested – remote environment.
Environment components CI: CruiseControl + phpUnderControl Peer code review: Crucible SCM system: Subversion Development web servers Database, memcached, etc. Development toolsPhpMyAdmin, PHPUnit, PHPDocumentor
Environment components Each component is highly tuned to simplify it’s use and speed up development Subversion hooks are used to apply validation rules on committed code and send on-commit notifications to the team Web server components are configured accordingly to project requirements
Remote environment Code is developed, tested and stored on a remote dedicated server Each developer has isolated environment where he has good control over his vhosts configuration
Key points Environment similar to production (server OS, cron jobs, tools and software) Abstracts developers from occasional need in environment reconfiguration since this is made only once by server admin Possibility to send links to development/current/demonstration version of project
Key points Build automation, continuous integration Engineering tools suite: debugging tools, common frameworks and libraries, unit testing suite, build tools, database management tools Centralized backup
Subversion Subversion is used as Version Control System and provides following benefits: IDE integration Access over WebDav (web browser) Hooks system
Subversion over WebDav
Subversion Hooks Subversion hooks system allows to execute custom program on some repository event. With post-commit hooks we send on-commit emails notifying team about changed made in the repository. Pre-commit hooks are used to validate coding standards and apply other rules.
Subversion on-commit email
Subversion pre-commit script
Remote development Every developer has a separate account on development server with access over SSH Remote files might be accessed via: SFTP/SCP FTP/FTPS Samba (Windows network share)
Samba share mounted
Private namespace (subdomains) Every developer has full control over subdomains of USERNAMENAME.dev.gface.de Subfolders in ~/vhosts/are automatically mapped to domain names:
Development web servers Several development web servers with different configurations and- or modules may run on dev server. With help of reverse proxy it is possible to switch between servers by simply prefixing domain name with server identificator.
Development web servers
Development web servers Three web servers are running on one machine with different versions of PHP installed
Questions?
Thank You!

Weitere ähnliche Inhalte

Was ist angesagt?

Azure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesAzure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesMicrosoft Tech Community
 
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...Dot Net Tricks
 
Testing in an Open Source Middleware Platform Space The WSO2 Way.
Testing in an Open Source Middleware Platform Space  The WSO2 Way.Testing in an Open Source Middleware Platform Space  The WSO2 Way.
Testing in an Open Source Middleware Platform Space The WSO2 Way.WSO2
 
Mvvw patterns
Mvvw patternsMvvw patterns
Mvvw patternseleksdev
 
ASP.NET Core deployment options
ASP.NET Core deployment optionsASP.NET Core deployment options
ASP.NET Core deployment optionsKen Cenerelli
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#DotNetCampus
 
Building scalable applications using serverless on the cloud
Building scalable applications using serverless on the cloudBuilding scalable applications using serverless on the cloud
Building scalable applications using serverless on the cloudCallon Campbell
 
Azure Resource Manager - Technical Primer
Azure Resource Manager - Technical PrimerAzure Resource Manager - Technical Primer
Azure Resource Manager - Technical PrimerBen Coleman
 
Dnc2015 azure-microservizi-vforusso
Dnc2015 azure-microservizi-vforussoDnc2015 azure-microservizi-vforusso
Dnc2015 azure-microservizi-vforussoDotNetCampus
 
MS Insights Brazil 2015 containers and devops
MS Insights Brazil 2015   containers and devopsMS Insights Brazil 2015   containers and devops
MS Insights Brazil 2015 containers and devopsDamien Caro
 
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...Marc Müller
 
Azure dev ops integrations with Jenkins
Azure dev ops integrations with JenkinsAzure dev ops integrations with Jenkins
Azure dev ops integrations with JenkinsDamien Caro
 
Exposing services with Azure API Management
Exposing services with Azure API ManagementExposing services with Azure API Management
Exposing services with Azure API ManagementCallon Campbell
 
Contract-based Testing Approach as a Tool for Shift Lef
Contract-based Testing Approach as a Tool for Shift LefContract-based Testing Approach as a Tool for Shift Lef
Contract-based Testing Approach as a Tool for Shift LefKatherine Golovinova
 
Zure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training dayZure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training dayOkko Oulasvirta
 

Was ist angesagt? (20)

Azure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesAzure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservices
 
Azure ARM Template
Azure ARM TemplateAzure ARM Template
Azure ARM Template
 
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
 
Testing in an Open Source Middleware Platform Space The WSO2 Way.
Testing in an Open Source Middleware Platform Space  The WSO2 Way.Testing in an Open Source Middleware Platform Space  The WSO2 Way.
Testing in an Open Source Middleware Platform Space The WSO2 Way.
 
Serverless in action
Serverless in actionServerless in action
Serverless in action
 
Mvvw patterns
Mvvw patternsMvvw patterns
Mvvw patterns
 
ASP.NET Core deployment options
ASP.NET Core deployment optionsASP.NET Core deployment options
ASP.NET Core deployment options
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
 
Building scalable applications using serverless on the cloud
Building scalable applications using serverless on the cloudBuilding scalable applications using serverless on the cloud
Building scalable applications using serverless on the cloud
 
Windows azure overview for SharePoint Pros
Windows azure overview for SharePoint Pros Windows azure overview for SharePoint Pros
Windows azure overview for SharePoint Pros
 
Azure Resource Manager - Technical Primer
Azure Resource Manager - Technical PrimerAzure Resource Manager - Technical Primer
Azure Resource Manager - Technical Primer
 
Dnc2015 azure-microservizi-vforusso
Dnc2015 azure-microservizi-vforussoDnc2015 azure-microservizi-vforusso
Dnc2015 azure-microservizi-vforusso
 
MS Insights Brazil 2015 containers and devops
MS Insights Brazil 2015   containers and devopsMS Insights Brazil 2015   containers and devops
MS Insights Brazil 2015 containers and devops
 
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
 
Azure dev ops integrations with Jenkins
Azure dev ops integrations with JenkinsAzure dev ops integrations with Jenkins
Azure dev ops integrations with Jenkins
 
Exposing services with Azure API Management
Exposing services with Azure API ManagementExposing services with Azure API Management
Exposing services with Azure API Management
 
Contract-based Testing Approach as a Tool for Shift Lef
Contract-based Testing Approach as a Tool for Shift LefContract-based Testing Approach as a Tool for Shift Lef
Contract-based Testing Approach as a Tool for Shift Lef
 
Zure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training dayZure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training day
 
Introduction to chef
Introduction to chefIntroduction to chef
Introduction to chef
 
Serverless
ServerlessServerless
Serverless
 

Ähnlich wie Continuous Integration and development environment approach

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
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationLior Tal
 
Introduction to Continuous integration
Introduction to Continuous integrationIntroduction to Continuous integration
Introduction to Continuous integrationliortal53
 
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
 
Building a CI/CD Pipeline for PHP apps
Building a CI/CD Pipeline for PHP appsBuilding a CI/CD Pipeline for PHP apps
Building a CI/CD Pipeline for PHP appsJuan Manuel Torres
 
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationDelivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationAspire Systems
 
Part5 - enforcing coding standard and best practices with jas forge v1.0
Part5 -  enforcing coding standard and best practices with jas forge v1.0Part5 -  enforcing coding standard and best practices with jas forge v1.0
Part5 - enforcing coding standard and best practices with jas forge v1.0Jasmine Conseil
 
Hudson
HudsonHudson
Hudson8x8
 
Improving Development Productivity: Static Analysis and Continuous Integration
Improving Development Productivity: Static Analysis and Continuous IntegrationImproving Development Productivity: Static Analysis and Continuous Integration
Improving Development Productivity: Static Analysis and Continuous IntegrationKlocwork
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile ME
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopWajih Aslam
 
Continuous Integrations & Deployments
Continuous Integrations & DeploymentsContinuous Integrations & Deployments
Continuous Integrations & DeploymentsShinu Suresh
 
QA Automation Solution
QA Automation SolutionQA Automation Solution
QA Automation SolutionDataArt
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Controlelliando dias
 
Software engineering
Software engineeringSoftware engineering
Software engineeringbartlowe
 
devops ppt for hjs jsdjhjd hsdbusinees.pptx
devops ppt for hjs jsdjhjd hsdbusinees.pptxdevops ppt for hjs jsdjhjd hsdbusinees.pptx
devops ppt for hjs jsdjhjd hsdbusinees.pptxDeepakgupta273447
 
Flash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsFlash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsRIA RUI Society
 
Continuous Integration for iOS
Continuous Integration for iOSContinuous Integration for iOS
Continuous Integration for iOSCODETE
 

Ähnlich wie Continuous Integration and development environment approach (20)

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
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Introduction to Continuous integration
Introduction to Continuous integrationIntroduction to Continuous integration
Introduction to Continuous integration
 
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
 
Cruise control
Cruise controlCruise control
Cruise control
 
Building a CI/CD Pipeline for PHP apps
Building a CI/CD Pipeline for PHP appsBuilding a CI/CD Pipeline for PHP apps
Building a CI/CD Pipeline for PHP apps
 
Build Time Hacking
Build Time HackingBuild Time Hacking
Build Time Hacking
 
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationDelivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous Integration
 
Part5 - enforcing coding standard and best practices with jas forge v1.0
Part5 -  enforcing coding standard and best practices with jas forge v1.0Part5 -  enforcing coding standard and best practices with jas forge v1.0
Part5 - enforcing coding standard and best practices with jas forge v1.0
 
Hudson
HudsonHudson
Hudson
 
Improving Development Productivity: Static Analysis and Continuous Integration
Improving Development Productivity: Static Analysis and Continuous IntegrationImproving Development Productivity: Static Analysis and Continuous Integration
Improving Development Productivity: Static Analysis and Continuous Integration
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loop
 
Continuous Integrations & Deployments
Continuous Integrations & DeploymentsContinuous Integrations & Deployments
Continuous Integrations & Deployments
 
QA Automation Solution
QA Automation SolutionQA Automation Solution
QA Automation Solution
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Control
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
devops ppt for hjs jsdjhjd hsdbusinees.pptx
devops ppt for hjs jsdjhjd hsdbusinees.pptxdevops ppt for hjs jsdjhjd hsdbusinees.pptx
devops ppt for hjs jsdjhjd hsdbusinees.pptx
 
Flash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsFlash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applications
 
Continuous Integration for iOS
Continuous Integration for iOSContinuous Integration for iOS
Continuous Integration for iOS
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 

Kürzlich hochgeladen (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Continuous Integration and development environment approach

  • 1. Continuous Integration and Engineering Environment approach Aleksandr Tsertkov
  • 2. Continuous integration Continuous Integration provides quick feedback on recent code changes
  • 3. Continuous Integration Software engineering practice, where project is build frequently Emerged in the Extreme Programming (XP) community
  • 4. Continuous Integration Build is made by automated build tools like: make, Ant, Maven, etc. Automated tests results and software metrics are collected for each build Build process is executed and results published on CI server
  • 5. Build CI server executes build scripts regularly: Predefined delay is used to execute build scripts. Every one hour for example CI server regularly checks SCM system and in case of changes made since last build time a new build is made
  • 6. Build status Each build has a status: successful or failed Build is considered as successful if all build tasks were executed without errors and failed otherwise Automated tests are executed as build tasks
  • 7. Build status Build status may be reported by email, IM, SMS, etc.
  • 8. Build artifacts Each build receives unique number. Build artifacts are published with this number.
  • 9. Build artifacts Build artifacts are different from project to project but usually they include: Binaries: installation package, application files, … Generated documentation: API, end-user documentation, … Unit test results: time taken, code coverage, … Software metrics: LOC changes, PMD, CRAP index, coding standards violations, …
  • 10. Binary packages Binary packages produced by build process may include: Installation packages Executable binaries Etc.
  • 11. Documentation Usually API documentation is compiled during build and is published within other artifacts End-user documentation also may be compiled and published accordingly to project needs
  • 13. Code coverage Code coverage used to show which lines of source code has been tested with unit tests 100% code coverage is a required but not a sufficient criteria for measuring test quality
  • 16. Coding standards violations Strict coding standards in a project help to improve reading and understanding of code and raise maintainability With help of specialized tools coding standards may be checked as part of build process
  • 17. Software metrics A software metric is a measure of some property of a piece of software or its specifications. LOC - Lines Of Code PMD – Project Mess Detector C.R.A.P. – Change Risk Analysis and Predictions Code coverage
  • 18. Advantages Early notification about integration errors Early warning about broken code Immediate unit testing of all changes Constant availability of build packages including: testing, demo, beta, etc. Collected software metrics focus developers on producing high quality code
  • 19. Software A wide range of CI software is available providing different notification medias, SCM systems, build tools support and IDE integration: CruiseControl Bamboo Hudson BuildBot Etc.
  • 20. CruiseControl CruiseControl is an extensible framework for creating continuous build process: It includes dozens of plugins for a variety of source controls, build technologies, and notifications schemes including email and instant messaging A web interface to view details and access artifacts of builds
  • 21. CruiseControl CruiseControl is written in Java but is used on a wide variety of projects thanks to different build tools supported: Ant, NAnt, Maven, Phing, Rake, Xcode “exec” builder which can be used with any command-line tool or script
  • 22. CruiseControl May be used with C/C++ since build tasks can be wrapped into Ant tasks CppUnit or CxxTest can be used as unit testing framework
  • 25. phpUnderControl phpUnderControl is customization of CruiseControl that brings functionality needed for PHP projects: PHPUnit PHPDocumentor PHP_CodeSniffer …
  • 31. peer code review Improves code quality and aids software developers professional growth
  • 32. Code review Code review is a process of checking programming code for common mistakes, vulnerabilities, bugs and errors. Code might be reviewed by author, team members or 3rd party company providing code review service.
  • 33. Code review Several common types of code review: Formal inspection – code is reviewed on a projector by a team of reviewers Over-the-shoulder review where author walks the reviewer though a set of code changes E-mail pass-around – whole files or changes are packed up by the author and sent to reviewers via email Tool assisted – specialized code review tools are used
  • 34. Peer code review Systematic examination of code individually by each reviewer. Usually developers are able to review each other code in a small team, but it’s better to set rules for handling review process roles.
  • 35. Peer code review best practices Review fewer than 200-400 lines of code at a time Take enough time for a proper, slow review, but not more than 60-90 minutes Verify that defects are actually fixed
  • 36. Advantages Helps to identify bugs early Encourages collaboration and builds a team Helps in keeping code maintainable Improves code quality Improves cross team know-how Shares experience within a team Improves developers professional skills
  • 37. Peer code review software Reviewboardhttp://code.google.com/p/reviewboard/ Cruciblehttp://www.atlassian.com/software/crucible/ CodeCollaborator http://smartbear.com/
  • 40. Crucible Web based peer code review tool Simplified workflow Integrates with Fisheye and JIRA since it is ATLASSIAN’s product Pre and post commit reviews are supported Integration into Eclipse & IntelliJ IDEA
  • 41. Crucible To start a new review Crucible allows: Selecting concrete revision, for example the most recent commit in Subversion or revision identified by number or date Selecting individual files and folders (even from different revisions)
  • 42. Crucible Supports email notification of: Review requests Review comments Review actions (close, etc.)
  • 46. Engineering environment Our engineering environment approach was specially designed for web development though some subsystems may be utilized for non-web development as well. Environment is based on dedicated server where project code is developed and tested – remote environment.
  • 47. Environment components CI: CruiseControl + phpUnderControl Peer code review: Crucible SCM system: Subversion Development web servers Database, memcached, etc. Development toolsPhpMyAdmin, PHPUnit, PHPDocumentor
  • 48. Environment components Each component is highly tuned to simplify it’s use and speed up development Subversion hooks are used to apply validation rules on committed code and send on-commit notifications to the team Web server components are configured accordingly to project requirements
  • 49. Remote environment Code is developed, tested and stored on a remote dedicated server Each developer has isolated environment where he has good control over his vhosts configuration
  • 50. Key points Environment similar to production (server OS, cron jobs, tools and software) Abstracts developers from occasional need in environment reconfiguration since this is made only once by server admin Possibility to send links to development/current/demonstration version of project
  • 51. Key points Build automation, continuous integration Engineering tools suite: debugging tools, common frameworks and libraries, unit testing suite, build tools, database management tools Centralized backup
  • 52. Subversion Subversion is used as Version Control System and provides following benefits: IDE integration Access over WebDav (web browser) Hooks system
  • 54. Subversion Hooks Subversion hooks system allows to execute custom program on some repository event. With post-commit hooks we send on-commit emails notifying team about changed made in the repository. Pre-commit hooks are used to validate coding standards and apply other rules.
  • 57. Remote development Every developer has a separate account on development server with access over SSH Remote files might be accessed via: SFTP/SCP FTP/FTPS Samba (Windows network share)
  • 59. Private namespace (subdomains) Every developer has full control over subdomains of USERNAMENAME.dev.gface.de Subfolders in ~/vhosts/are automatically mapped to domain names:
  • 60. Development web servers Several development web servers with different configurations and- or modules may run on dev server. With help of reverse proxy it is possible to switch between servers by simply prefixing domain name with server identificator.
  • 62. Development web servers Three web servers are running on one machine with different versions of PHP installed