SlideShare a Scribd company logo
Part 2: Improving your software development  process March 2011 Santa Clara Karim DJAAFAR CO of Jasmine Conseil
Outline Towards a better build process using agile tools Build Managements Continuous Integration, Principles and Tools  JasForge  project Using hudson in jasforge Project Demos
TOWARDS A BETTER BUILD PROCESS USING AGILE TOOLS
Build is often a hard process
What Is a Build? A build is much more than a compile (or its dynamic language variations) A build may consist of the compilation, testing, inspection, and deployment—among other things A build acts as the process for putting source code together and verifying that the software works as a cohesive unit.
The  Integrate   button Source :  Continuous Integration by Paul M. DUVALL
Why  using  Build Tools? Builds are messy Builds are hard It is hard to learn how to do them “right” - what is “right” by the way? Builds are typically not well documented Trial and error ... and you often run out of bamboo  ...
Build Tools Automation in a agile scenario CI Build Server Automated testing  Automated code quality Build Tool
Build Tool Collect input Process inputs Generate final outputs
Build Tool - Inputs Source code Java, SQL Resources Properties, XML Dependencies Libraries, components, frameworks
Build Tool - Processing Compile Run tests Copy files Replace keywords Package Install / deploy
Build Tool - Outputs JAR / WAR / EAR files Zip files Reports
What is the primary build tool and release management you typically use ? Source: Eclipse community Survey
Maven Project and artifact-based build  platform Uses  repositories to manage  artifacts and third party libraries Customized by modifying the  behavior of the  life-cycle via plugins.
Maven and the Development Build Process Maven the source build management tool for enterprise Java projects Use declarative approche rather then the task-based approach used in Ant or in traditional Make files or shell scripts Promotes the use of standard directory  structures and a well-defined build lifecycle Support quality metric reporting and  documentation generation tool throw the use of plugins
Phases: build life cycle The standard goals for building: compile & test -  compile and test the code package –  build and test the artifact install –  package the artifact and install to local  repository deploy  – package the artifact and copy to the  remote repository (release time) Release management
Common way to build applications MOJO – Maven 2 Plugins Project http://mojo.codehaus.org/ plugins user e.g. mvn install M2 generate- sources compile test install deploy package integration- test Well-known phases mojo mojo mojo mojo mojo bindings
CONTINUOUS INTEGRATION PRINCIPLES AND TOOLS
What is CI (Continuous Integration) ? “ Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build  (includingtest) to detect integration errors as quickly as possible.” Martin Fowler.
Continuous Integration (CI)  scenario
A CI scenario starts with the developer committing source code to the repository.  On a typical project, people in many project roles may commit changes that trigger a CI cycle:  Developers change source code,  database administrators (DBAs) change table definitions, build and deployment teams change configuration files, interface teams change DTD/XSD specifications,  and so on… Continuous Integration (CI)  scenario
Why do we need CI ? Replace big (and long) integration phases with small and frequent ones Ideally instantaneous Think of « incremental compilation » in Eclipse Minimize integration effort Keep the development process running … CI was introduced with XP principles and by Martin Fowler
The components of a CI system Commit changes Compile Source Code, Integrate Database, Run Tests, Run Inspections, Deploy Software Feedback Mechanism Generate feedback SCM Server  (Svn, Git, …) CI Server
Workflow Checkout from SCM Code a new feature Run automated build on my machine Repeat 2 and 3 until test pass ! Merge with  latest changes from SCM Fix and rebuild until test pass Commit Run a build on a clean machine Immediately fix bugs and integration issues
Version Control Repository Simply put, you must use a version control repository in order to perform  CI Even if you don’t use CI, a version control repository should be standard for your project The purpose of a version control repository is to manage changes to source code and other software assets (such as documentation) using a controlled access repository There are  different types of version control systems you can use too We use  Subversion for most of the examples in this seminar
Continuous Integration not exist without TDD ! A software development practice where members of a team integrate their work frequently usually each person integrates at least daily (Martin Fowler)  CI leads to significantly reduced integration problems and allow a team to develop cohesive software more rapidly and reduce risk To complete this definition Automated, self-testing and fast  builds Make it easy for everyone to get the last executable Automate deployment Everyone can see what’s happening progress, statistics on code coverage tests, etc … Reduced risks
Continuous   Integration Major tools Hudson No install required  put a war in a  web container) Cruise Control Continuum Java and Ant/Maven based  Open Source  …
Every commit much triggers a build ! Commit at least daily… As soon as you have completed an independent functionnality A full build on another empty machine Not on your own !  With hudson SCM polling Cron-like scheduller Trigger with http request (from maven or svn commit hook)
JASFORGE  ©  PROJECT AND  HUDSON CI TOOL
Managing all the agile tool is a complex process Today, managing and taking control of your software process is a major  challenge for maintaining is capacity to be innovative and competitive Ho can we manage efficiently all these toolls in an unified way ? We must manage the quality of our software development en meet the requirements and delays  in a predictive mode This is the aim of  JasForge ©  Project ( http://www.jasforge.com ) : Taking the control of your development process using an “agile “ approache
What is JasForge ? Jasforge  is an Open Source project   to build  a scalable  Team  collaboration platform  for Integrating  work across  the phases  of  the  development  lifecycle Available: Community Edition  (Eclipse Public License) Enterprise Edition Exemple  of  tools  : hudson
Hudson ? Open-source CI server Writen in java  ( https://hudson.dev.java.net/  ) Extensibility 230+ community-developed public plugins By 230+ contributors Estimated 13,000 installations
Basic Feature Set Hudson notices that there is a code change Checks out the source code CVS, Subversion, ClearCase, Mercurial, Accurev, Perforce, Git, StarTeam, … Builds Ant, Maven, shell script, NAnt, … Record and publish results Tool Integration Findbugs, Corbertura, ...
 List of projects
 Browse workspaces
 FindBugs integration
 Tracking changes
Provides Feedback RSS feeds Email/IM notification Tray application to notify developers Linux/Windows (Toolbar), Mac (Growl)
JASFORGE  ©   HUDSON TOOLS
Full CI support with Hudson Tool using SOAP/REST Support Notice is managed by LDAP Authentification inside Hudson  Page     XML/RPC Hudson SOAP/REST createBuildService …… HTTP
Simple scenarios:
Thank you for your Attention Jasforge: A Jasmine  Conseil  concept http://www.jasmineconseil.com Need More information ? [email_address]

More Related Content

PPT
Presentation 1 open source tools in continuous integration environment v1.0
PPTX
Continuous integration with Jenkins
PDF
TMF2014 CI-CD Workshop Michael Palotas
 
PPT
Build And Automation
ODP
Software Build processes and Git
PPT
Continuous integration
PPT
CI and CD with Jenkins
PPT
Introduction to Software Build Technology
Presentation 1 open source tools in continuous integration environment v1.0
Continuous integration with Jenkins
TMF2014 CI-CD Workshop Michael Palotas
 
Build And Automation
Software Build processes and Git
Continuous integration
CI and CD with Jenkins
Introduction to Software Build Technology

What's hot (20)

PPT
Continuous Integration using Cruise Control
PPTX
DevOps and Build Automation
PPTX
Build Time Hacking
PDF
Continuous Integration, Continuous Quality, Continuous Delivery
PDF
Automating development-operations-v1
PPTX
2012 01-jenkins-udeploy
PDF
2013 10-28 php ug presentation - ci using phing and hudson
PPTX
Jenkins - From Continuous Integration to Continuous Delivery
PDF
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
 
PPTX
02 - Build and Deployment Management
ZIP
Continuous Integration, Build Pipelines and Continuous Deployment
ODP
Continuous deployment-at-flipkart
PPTX
Agile a to z chapter 4 feedback loop
PDF
Introducing CI/CD to Engineering Teams - By: Matt Brunsdon
PDF
Jenkins Meetup Pune
PDF
Continuous Integration With Jenkins
PDF
Agile Bodensee - Testautomation & Continuous Delivery Workshop
PDF
Continuous Delivery at Oracle Database Insights
PDF
Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...
PDF
JenkinsCIdocumentations-removedcredentials.docx
Continuous Integration using Cruise Control
DevOps and Build Automation
Build Time Hacking
Continuous Integration, Continuous Quality, Continuous Delivery
Automating development-operations-v1
2012 01-jenkins-udeploy
2013 10-28 php ug presentation - ci using phing and hudson
Jenkins - From Continuous Integration to Continuous Delivery
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
 
02 - Build and Deployment Management
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous deployment-at-flipkart
Agile a to z chapter 4 feedback loop
Introducing CI/CD to Engineering Teams - By: Matt Brunsdon
Jenkins Meetup Pune
Continuous Integration With Jenkins
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Continuous Delivery at Oracle Database Insights
Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...
JenkinsCIdocumentations-removedcredentials.docx
Ad

Viewers also liked (6)

PPTX
Making software development processes to work for you
PDF
Designing OpenStack Architectures
PDF
Deep dive into highly available open stack architecture openstack summit va...
PPTX
OpenStack Architecture and Use Cases
PPTX
Delivering IaaS with Open Source Software
PDF
OpenStack Architecture
Making software development processes to work for you
Designing OpenStack Architectures
Deep dive into highly available open stack architecture openstack summit va...
OpenStack Architecture and Use Cases
Delivering IaaS with Open Source Software
OpenStack Architecture
Ad

Similar to Part 2 improving your software development v1.0 (20)

PPT
Continuous Integration: A Case Study
PPT
Continuous Integration (Jenkins/Hudson)
PPT
Continuous Integration and Builds
PPT
Continous Integration: A Case Study
PDF
Intro to DevOps 4 undergraduates
ODP
Jbossworld Presentation
PPTX
Continous integration and delivery for single page applications
PPTX
Hudson
 
PDF
DevOps & DevEx
PDF
Let's banish "it works on my machine"
PPTX
Continuous Integration and development environment approach
PPTX
Enterprise DevOps: Scaling Build, Deploy, Test, Release
PPTX
Continuous Integration & the Release Maturity Model
PPT
Part5 - enforcing coding standard and best practices with jas forge v1.0
PDF
Continuous Everything
PPTX
SCALABLE CI CD DEVOPS
PPTX
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
PDF
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
PPTX
SDLC & DevOps Transformation with Agile
PPTX
Lets talk about CI CD Pipeline in Agile
Continuous Integration: A Case Study
Continuous Integration (Jenkins/Hudson)
Continuous Integration and Builds
Continous Integration: A Case Study
Intro to DevOps 4 undergraduates
Jbossworld Presentation
Continous integration and delivery for single page applications
Hudson
 
DevOps & DevEx
Let's banish "it works on my machine"
Continuous Integration and development environment approach
Enterprise DevOps: Scaling Build, Deploy, Test, Release
Continuous Integration & the Release Maturity Model
Part5 - enforcing coding standard and best practices with jas forge v1.0
Continuous Everything
SCALABLE CI CD DEVOPS
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
SDLC & DevOps Transformation with Agile
Lets talk about CI CD Pipeline in Agile

More from Jasmine Conseil (19)

PDF
JEE 8, A Big Overview
PDF
Meet up paris 13 of jun 2017
PDF
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
PPTX
L'ecosysteme Android, une chance pour le developpement logiciel en Afrique
PPTX
Android Studio, premier contact
PPTX
Android Studio, premier contact
PDF
Ecm 5 13_djaafar_jas_forge
PPT
Part 8 - Enforcing modularity of JasForge using OSGI and Futures Evolutions
PPT
Part 7 - Managing and fixing bugs with jira using jasforge
PPT
Part6 introducing the jas forge collaborative project
PPT
Part 4 - Managing your svn repository using jas forge
PPT
Part 3 JasForge the collaborative and agile project v1.0
PPT
JasForge Community project : Future Evolution
PPT
JasForge Community project : Future Evolution
PPT
JasForge : the collaborative agile project
PPT
Jasforgepresentationv1 3
PPT
JasForge: The Agile Collaborative Platform
PPT
Jasforge : The Collaborative Agile Project
PPT
Jasforge Agile Collaborative Platform
JEE 8, A Big Overview
Meet up paris 13 of jun 2017
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
L'ecosysteme Android, une chance pour le developpement logiciel en Afrique
Android Studio, premier contact
Android Studio, premier contact
Ecm 5 13_djaafar_jas_forge
Part 8 - Enforcing modularity of JasForge using OSGI and Futures Evolutions
Part 7 - Managing and fixing bugs with jira using jasforge
Part6 introducing the jas forge collaborative project
Part 4 - Managing your svn repository using jas forge
Part 3 JasForge the collaborative and agile project v1.0
JasForge Community project : Future Evolution
JasForge Community project : Future Evolution
JasForge : the collaborative agile project
Jasforgepresentationv1 3
JasForge: The Agile Collaborative Platform
Jasforge : The Collaborative Agile Project
Jasforge Agile Collaborative Platform

Recently uploaded (20)

PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Mushroom cultivation and it's methods.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
TLE Review Electricity (Electricity).pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
August Patch Tuesday
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Unlocking AI with Model Context Protocol (MCP)
Univ-Connecticut-ChatGPT-Presentaion.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
A Presentation on Artificial Intelligence
A comparative analysis of optical character recognition models for extracting...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Mushroom cultivation and it's methods.pdf
Spectral efficient network and resource selection model in 5G networks
Reach Out and Touch Someone: Haptics and Empathic Computing
Group 1 Presentation -Planning and Decision Making .pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
TLE Review Electricity (Electricity).pptx
MIND Revenue Release Quarter 2 2025 Press Release
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
August Patch Tuesday
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Per capita expenditure prediction using model stacking based on satellite ima...
Unlocking AI with Model Context Protocol (MCP)

Part 2 improving your software development v1.0

  • 1. Part 2: Improving your software development process March 2011 Santa Clara Karim DJAAFAR CO of Jasmine Conseil
  • 2. Outline Towards a better build process using agile tools Build Managements Continuous Integration, Principles and Tools JasForge project Using hudson in jasforge Project Demos
  • 3. TOWARDS A BETTER BUILD PROCESS USING AGILE TOOLS
  • 4. Build is often a hard process
  • 5. What Is a Build? A build is much more than a compile (or its dynamic language variations) A build may consist of the compilation, testing, inspection, and deployment—among other things A build acts as the process for putting source code together and verifying that the software works as a cohesive unit.
  • 6. The Integrate button Source : Continuous Integration by Paul M. DUVALL
  • 7. Why using Build Tools? Builds are messy Builds are hard It is hard to learn how to do them “right” - what is “right” by the way? Builds are typically not well documented Trial and error ... and you often run out of bamboo ...
  • 8. Build Tools Automation in a agile scenario CI Build Server Automated testing Automated code quality Build Tool
  • 9. Build Tool Collect input Process inputs Generate final outputs
  • 10. Build Tool - Inputs Source code Java, SQL Resources Properties, XML Dependencies Libraries, components, frameworks
  • 11. Build Tool - Processing Compile Run tests Copy files Replace keywords Package Install / deploy
  • 12. Build Tool - Outputs JAR / WAR / EAR files Zip files Reports
  • 13. What is the primary build tool and release management you typically use ? Source: Eclipse community Survey
  • 14. Maven Project and artifact-based build platform Uses repositories to manage artifacts and third party libraries Customized by modifying the behavior of the life-cycle via plugins.
  • 15. Maven and the Development Build Process Maven the source build management tool for enterprise Java projects Use declarative approche rather then the task-based approach used in Ant or in traditional Make files or shell scripts Promotes the use of standard directory structures and a well-defined build lifecycle Support quality metric reporting and documentation generation tool throw the use of plugins
  • 16. Phases: build life cycle The standard goals for building: compile & test - compile and test the code package – build and test the artifact install – package the artifact and install to local repository deploy – package the artifact and copy to the remote repository (release time) Release management
  • 17. Common way to build applications MOJO – Maven 2 Plugins Project http://mojo.codehaus.org/ plugins user e.g. mvn install M2 generate- sources compile test install deploy package integration- test Well-known phases mojo mojo mojo mojo mojo bindings
  • 19. What is CI (Continuous Integration) ? “ Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (includingtest) to detect integration errors as quickly as possible.” Martin Fowler.
  • 21. A CI scenario starts with the developer committing source code to the repository. On a typical project, people in many project roles may commit changes that trigger a CI cycle: Developers change source code, database administrators (DBAs) change table definitions, build and deployment teams change configuration files, interface teams change DTD/XSD specifications, and so on… Continuous Integration (CI) scenario
  • 22. Why do we need CI ? Replace big (and long) integration phases with small and frequent ones Ideally instantaneous Think of « incremental compilation » in Eclipse Minimize integration effort Keep the development process running … CI was introduced with XP principles and by Martin Fowler
  • 23. The components of a CI system Commit changes Compile Source Code, Integrate Database, Run Tests, Run Inspections, Deploy Software Feedback Mechanism Generate feedback SCM Server (Svn, Git, …) CI Server
  • 24. Workflow Checkout from SCM Code a new feature Run automated build on my machine Repeat 2 and 3 until test pass ! Merge with latest changes from SCM Fix and rebuild until test pass Commit Run a build on a clean machine Immediately fix bugs and integration issues
  • 25. Version Control Repository Simply put, you must use a version control repository in order to perform CI Even if you don’t use CI, a version control repository should be standard for your project The purpose of a version control repository is to manage changes to source code and other software assets (such as documentation) using a controlled access repository There are different types of version control systems you can use too We use Subversion for most of the examples in this seminar
  • 26. Continuous Integration not exist without TDD ! A software development practice where members of a team integrate their work frequently usually each person integrates at least daily (Martin Fowler) CI leads to significantly reduced integration problems and allow a team to develop cohesive software more rapidly and reduce risk To complete this definition Automated, self-testing and fast builds Make it easy for everyone to get the last executable Automate deployment Everyone can see what’s happening progress, statistics on code coverage tests, etc … Reduced risks
  • 27. Continuous Integration Major tools Hudson No install required put a war in a web container) Cruise Control Continuum Java and Ant/Maven based Open Source …
  • 28. Every commit much triggers a build ! Commit at least daily… As soon as you have completed an independent functionnality A full build on another empty machine Not on your own ! With hudson SCM polling Cron-like scheduller Trigger with http request (from maven or svn commit hook)
  • 29. JASFORGE © PROJECT AND HUDSON CI TOOL
  • 30. Managing all the agile tool is a complex process Today, managing and taking control of your software process is a major challenge for maintaining is capacity to be innovative and competitive Ho can we manage efficiently all these toolls in an unified way ? We must manage the quality of our software development en meet the requirements and delays in a predictive mode This is the aim of JasForge © Project ( http://www.jasforge.com ) : Taking the control of your development process using an “agile “ approache
  • 31. What is JasForge ? Jasforge is an Open Source project to build a scalable Team collaboration platform for Integrating work across the phases of the development lifecycle Available: Community Edition (Eclipse Public License) Enterprise Edition Exemple of tools : hudson
  • 32. Hudson ? Open-source CI server Writen in java ( https://hudson.dev.java.net/ ) Extensibility 230+ community-developed public plugins By 230+ contributors Estimated 13,000 installations
  • 33. Basic Feature Set Hudson notices that there is a code change Checks out the source code CVS, Subversion, ClearCase, Mercurial, Accurev, Perforce, Git, StarTeam, … Builds Ant, Maven, shell script, NAnt, … Record and publish results Tool Integration Findbugs, Corbertura, ...
  • 34.  List of projects
  • 38. Provides Feedback RSS feeds Email/IM notification Tray application to notify developers Linux/Windows (Toolbar), Mac (Growl)
  • 39. JASFORGE © HUDSON TOOLS
  • 40. Full CI support with Hudson Tool using SOAP/REST Support Notice is managed by LDAP Authentification inside Hudson Page  XML/RPC Hudson SOAP/REST createBuildService …… HTTP
  • 42. Thank you for your Attention Jasforge: A Jasmine Conseil concept http://www.jasmineconseil.com Need More information ? [email_address]

Editor's Notes

  • #24: 1. First, a developer commits code to the version control repository. Meanwhile, the CI server on the integration build machine is polling this repository for changes (e.g., every few minutes). 2. Soon after a commit occurs, the CI server detects that changes have occurred in the version control repository, so the CI server retrieves the latest copy of the code from the repository and then executes a build script, which integrates the software. 3. The CI server generates feedback by e-mailing build results to specified project members. 4. The CI server continues to poll for changes in the version control repository.
  • #32: An agile Platform to manage Continuous Integration Process Help development team to better collaborate and be efficient in their daily task (project creation, development, tests, integration, deployment ...)   A central platform for the creation and managing of middle to complex projects, from the inception to the deployment Available in two edition: Community Edition (Eclipse Public License) Enterprise Edition
  • #42: Démo video CreateProject ImportProject