Continuous Integration and delivery
for Java based web applications using
Jenkins-Gradle-Artifactory
Sunil Dalal (@sunieldalal)
Full Stack Developer / Architect
What is 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 (including test) to detect integration errors as quickly as possible. Many teams
find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive
software more rapidly."
- Martin Fowler, ThoughtWorks Chief Scientist
What is Continuous Delivery?
Continuous Delivery is the natural extension of Continuous Integration: an approach in which teams
ensure that every change to the system is releasable, and that we can release any version at the push
of a button. Continuous Delivery aims to make releases boring, so we can deliver frequently and get
fast feedback on what users care about.
http://www.thoughtworks.com/continuous-delivery
It’s best thing happened in my developer life! CI and CD gives a great confidence to developer and
makes them more productive. CI/CD is a must for any successful software product.
- My View
Before Continuous Integration / Delivery?
• Manual Deployments.
• Manual Restarts.
• No Automated Test infrastructure. Only manual testing!
• Less confidence! Long turnaround time.
Why Continuous Integration / Delivery?
• Immediate feedback, faster turn around time.
• Enforces discipline of frequent automated testing.
• Better coding practices - Frequent code check-in pushes developers to create modular, less
complex code.
• Every commit can result in a release!
Continuous Integration / Delivery Workflow
CI / CD step by step
• Developers check out code into their local machines.
• Developer commit changes to the source code repository.
• The CI server monitors the source code repository and starts build process.
• The CI server builds the system and runs unit and integration tests.
• The CI server releases deployable artifacts for testing.
• The CI server assigns a build label to the version of the code it just built.
• The CI server informs the team of the successful build.
• If the build or tests fail, the CI server alerts the team.
• The team fix the issue at the earliest opportunity.
• Continue to continually integrate and test throughout the project
• On Approval, CI server deploys to test environments.
• CI Server runs functional / performance tests on Test environment.
• CI Server stage / Deploys to Production Environments (Can set up email based approval).
Reference: https://www.thoughtworks.com/continuous-integration
Tools Used
Tools Options
Source Code Repository Github, Perforce
Continuous Integration Server Jenkins
Binary Repository Manager Artifactory
Code Analysis Sonar Qube
Code Analysis Tools(Java) Checkstyle, PMD, Jacoco, FindBugs,
JDepend
Build Tools (Java) Gradle
Achieving CI / CD using Gradle / Jenkins /
Artifactory
CI/CD Workflow
Jenkins Workflow
Jenkins Workflow
Each Jenkins job executes one of the commands available via Gradle
gradle compile
gradle build
gradle test
Jenkins Build Step
Jenkins Build Step
Executes gradle build via Jenkins job
Jenkins Unit Test Step
Jenkins Build Step
Executes gradle test command via Jenkins job
Jenkins Code Analysis Step
Code Analysis Tools
• Checkstyle
Ideal for projects that want to enforce a coding standard. Discovers poor design, duplicated code and bug
patterns.
• FindBugs
Helps in discovering potential bugs, performance issues and bad coding practices.
• Jdepend
Helps in measuring design quality metrics like maintainability, reusability, extensibility.
• PMD
Finds unused, overly complex and inefficient code.
• JaCoCo
Used for Code Coverage. On the fly byte code instrumentation.
Code Analysis Tools - Checkstyle
Checkstyle is highly configurable and can be made to support almost any coding
standard.
Integrated by adding checstyle Gradle plugin in the project.
Code Analysis Tools - PMD
 PMD is a source code analyzer. It finds common programming flaws like unused
variables, empty catch blocks, unnecessary object creation, and so forth. It
supports Java, JavaScript, XML, XSL.
 Integrated by adding PMD Gradle plugin in the project.
Code Analysis Tools - JDepend
 JDepend traverses Java class file directories and generates design quality metrics
for each Java package. JDepend allows you to automatically measure the quality
of a design in terms of its extensibility, reusability, and maintainability to manage
package dependencies effectively.
 Integrated by adding Jdepend Gradle plugin in the project.
Code Analysis Tools - FindBugs
uses static analysis to look for bugs in Java code.
Integrated by adding FindBugs Gradle plugin in the project.
Code Analysis Tools - JaCoCo
 Used for Code Coverage. On the fly byte code instrumentation.
 In a continuous delivery pipeline, where packaging the deliverable is done after
executing the code analysis phase, we want to make sure that the source or byte
code isn’t modified after the compilation process to avoid unexpected behavior in
target enironment. That’s why, on-the-fly instrumentation should be preferred.
 Integrated by adding JaCoCo Gradle plugin in the project.
SONAR - Architect’s friend in managing code
quality
SonarQube is an open platform to manage code quality. As such, it covers the 7
axes of code quality.
Imports All Code analysis data in SONAR DB for further analysis..
SONAR Dashboard
26
CI – Publish
27
Artifactory Integration
28
Artifactory Dashboard
29
Deploy Artifacts
30
CI – Deploy
31
CI – Deploy
 Can Use scripts or Plugins which can directly deploy to Tomcat or any other
application Servers.
Common Questions
33
Great! what all plugins you guys have used
for Jenkins?
 Git Plugin to checkout source code from repo.
 Gitlab plugin for polling and start builds on each checkin.
 Gradle plugin to install gradle on CI and execute Gradle commands.
 Credentials Plugin to store the credentials securely.
 Build Pipeline plugin.
 Used Clone Workspace Plugin.
 Used Set Build Name Plugin.
 Parametrized Build Plugin.
 GitLab plugin for integration with Gitlab.
34
Great! what all plugins you guys have used
for Gradle?
35
Do we need to copy these gradle plugins to
every project? Code duplication?
 Keep it DRY (Don’t Repeat yourself)
 You can move all gradle plugins to your company wide gradle wrapper
 Individual projects can point to your company wide gradle wrapper to get new
updates.
36
Do you do build on each check in?
 Set up Git Jenkins SSH integration so that we can invoke build on each check in.
Works great for smaller teams.
 For larger teams, CI server polls the SCM and build every 10 minutes!
37
How to manage versioning for project?
 SNAPSHOT-BuildNumber for internal builds.
 RELEASE-x.0 for builds to be released.
 Versioning can be managed via gradle properties file where you can tag version type
as SNAPSHOT or RELEASE
 OR
 Make changes in your CI server to have jobs which can tag builds based on your
defined criteria.
 You can also have jobs which can promote builds from SNAPSHOT to RELEASE.
38
How do you do rollback?
 Rollback should be one click similar to deploy.
 Make your CI server Jobs intelligent to achieve this.
Twitter: @sunieldalal
Blog: http://sunieldalal.github.io/
Github: https://github.com/sunieldalal
LinkedIn: https://www.linkedin.com/in/sunieldalalThank you so much!

More Related Content

PDF
JavaOne 2015 - Swimming upstream in the container revolution
PDF
How To Be a Java Automated Testing Superstar
PPTX
Test Policy and Practices
PDF
Working effectively with OpenShift
PDF
Developing Great Apps with Apache Cordova
PPTX
Database CI/CD Pipeline
KEY
Enterprise Architectures with Ruby (and Rails)
PPTX
FAST for SharePoint Deep Dive
JavaOne 2015 - Swimming upstream in the container revolution
How To Be a Java Automated Testing Superstar
Test Policy and Practices
Working effectively with OpenShift
Developing Great Apps with Apache Cordova
Database CI/CD Pipeline
Enterprise Architectures with Ruby (and Rails)
FAST for SharePoint Deep Dive

What's hot (20)

PPTX
From Continuous Integration to DevOps
PDF
Apache DeltaSpike the CDI toolbox
PDF
Java 11 OMG
PDF
Java APIs- The missing manual (concurrency)
PDF
Jenkins vs. AWS CodePipeline
PDF
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
PDF
Full-Stack Development with Spring Boot and VueJS
PDF
Server Add-ons for Front-end Developers
PDF
Transform Digital Business with DevOps
PPTX
Leveling Up Deployment Infrastructure
PDF
Prod-Like Integration Testing for Distributed Containerized Applications
PDF
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
PDF
Java APIs - the missing manual
PDF
Microservices Testing at Scale
KEY
Continuous Integration & Drupal
PDF
Grails 3.0 Preview
PDF
How to Build a Better JIRA Add-on
PDF
Serverless Delivery
PDF
Configuration as Code in Bamboo
PPTX
Moving to the Client - JavaFX and HTML5
From Continuous Integration to DevOps
Apache DeltaSpike the CDI toolbox
Java 11 OMG
Java APIs- The missing manual (concurrency)
Jenkins vs. AWS CodePipeline
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
Full-Stack Development with Spring Boot and VueJS
Server Add-ons for Front-end Developers
Transform Digital Business with DevOps
Leveling Up Deployment Infrastructure
Prod-Like Integration Testing for Distributed Containerized Applications
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
Java APIs - the missing manual
Microservices Testing at Scale
Continuous Integration & Drupal
Grails 3.0 Preview
How to Build a Better JIRA Add-on
Serverless Delivery
Configuration as Code in Bamboo
Moving to the Client - JavaFX and HTML5
Ad

Viewers also liked (20)

PDF
Docker for Java Developers
PDF
Docker for Java Developers
PPTX
Docker introduction
PDF
JavaLand 2014 - Ankor.io Presentation
PPTX
Automate Database Deployment - SQL In The City Workshop
PDF
Iuandalucia programa2012
PPTX
PPTX
Mi vida eres tu
PPT
1:1 In a 5th Grade Classroom
PDF
Caderno literario pragmatha 56 abril 2014
PPTX
Delo z besedilom
ODP
Jms.back.to.basic
PDF
Granada roja 25
PPTX
Sneak Peek to the Healthy Living Market
PPT
SD36 Surrey - Inquiry teams Oct.2010
PPTX
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
PDF
Joomladay Netherlands 2012 - Joomla in the Cloud
DOCX
3 assignment of mis
PDF
Continuous Delivery in Java
PPTX
JavaLand - Integration Testing How-to
Docker for Java Developers
Docker for Java Developers
Docker introduction
JavaLand 2014 - Ankor.io Presentation
Automate Database Deployment - SQL In The City Workshop
Iuandalucia programa2012
Mi vida eres tu
1:1 In a 5th Grade Classroom
Caderno literario pragmatha 56 abril 2014
Delo z besedilom
Jms.back.to.basic
Granada roja 25
Sneak Peek to the Healthy Living Market
SD36 Surrey - Inquiry teams Oct.2010
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
Joomladay Netherlands 2012 - Joomla in the Cloud
3 assignment of mis
Continuous Delivery in Java
JavaLand - Integration Testing How-to
Ad

Similar to Continuous integration and delivery for java based web applications (20)

PPTX
Continous integration and delivery for single page applications
PDF
Agile Bodensee - Testautomation & Continuous Delivery Workshop
PPT
Presentation 1 open source tools in continuous integration environment v1.0
PDF
TMF2014 CI-CD Workshop Michael Palotas
 
PPT
Part 2 improving your software development v1.0
PPTX
Making software development processes to work for you
PDF
Quickstart for continuous integration
PDF
Delivering Quality Software with Continuous Integration
PPTX
CI, CD -Tools to integrate without manual intervention
PPTX
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
PPT
Continuous deployment steve povilaitis
PDF
Continuous Development Pipeline
PPTX
OVerview of Jenkins - A WIP pPT that needs to be refined
PDF
Software Delivery in 2016 - A Continuous Delivery Approach
PPT
Continuous Integration (Jenkins/Hudson)
PPTX
Continuous Integration with Jenkins and Java EE
PDF
Continuous Integration as a Development Team’s Way of Life
PPTX
Agile Network India | Continuous Integration & Continuous Deployment & Automa...
PPTX
Continuous Integrations & Deployments
PDF
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Continous integration and delivery for single page applications
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Presentation 1 open source tools in continuous integration environment v1.0
TMF2014 CI-CD Workshop Michael Palotas
 
Part 2 improving your software development v1.0
Making software development processes to work for you
Quickstart for continuous integration
Delivering Quality Software with Continuous Integration
CI, CD -Tools to integrate without manual intervention
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Continuous deployment steve povilaitis
Continuous Development Pipeline
OVerview of Jenkins - A WIP pPT that needs to be refined
Software Delivery in 2016 - A Continuous Delivery Approach
Continuous Integration (Jenkins/Hudson)
Continuous Integration with Jenkins and Java EE
Continuous Integration as a Development Team’s Way of Life
Agile Network India | Continuous Integration & Continuous Deployment & Automa...
Continuous Integrations & Deployments
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo

Recently uploaded (20)

PDF
1_Keynote_Breaking Barriers_한계를 넘어서_Charith Mendis.pdf
PPTX
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]
PDF
State of AI in Business 2025 - MIT NANDA
PPT
Overviiew on Intellectual property right
PPTX
Presentation - Principles of Instructional Design.pptx
PDF
Human Computer Interaction Miterm Lesson
PDF
Ebook - The Future of AI A Comprehensive Guide.pdf
PPTX
Blending method and technology for hydrogen.pptx
PPTX
CRM(Customer Relationship Managmnet) Presentation
PDF
Uncertainty-aware contextual multi-armed bandits for recommendations in e-com...
PPTX
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
PDF
Be ready for tomorrow’s needs with a longer-lasting, higher-performing PC
PDF
Applying Agentic AI in Enterprise Automation
PDF
Peak of Data & AI Encore: Scalable Design & Infrastructure
PDF
【AI論文解説】高速・高品質な生成を実現するFlow Map Models(Part 1~3)
PDF
Intravenous drug administration application for pediatric patients via augmen...
PDF
Child-friendly e-learning for artificial intelligence education in Indonesia:...
PDF
“Introduction to Designing with AI Agents,” a Presentation from Amazon Web Se...
PDF
The Digital Engine Room: Unlocking APAC’s Economic and Digital Potential thro...
PDF
Examining Bias in AI Generated News Content.pdf
1_Keynote_Breaking Barriers_한계를 넘어서_Charith Mendis.pdf
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]
State of AI in Business 2025 - MIT NANDA
Overviiew on Intellectual property right
Presentation - Principles of Instructional Design.pptx
Human Computer Interaction Miterm Lesson
Ebook - The Future of AI A Comprehensive Guide.pdf
Blending method and technology for hydrogen.pptx
CRM(Customer Relationship Managmnet) Presentation
Uncertainty-aware contextual multi-armed bandits for recommendations in e-com...
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
Be ready for tomorrow’s needs with a longer-lasting, higher-performing PC
Applying Agentic AI in Enterprise Automation
Peak of Data & AI Encore: Scalable Design & Infrastructure
【AI論文解説】高速・高品質な生成を実現するFlow Map Models(Part 1~3)
Intravenous drug administration application for pediatric patients via augmen...
Child-friendly e-learning for artificial intelligence education in Indonesia:...
“Introduction to Designing with AI Agents,” a Presentation from Amazon Web Se...
The Digital Engine Room: Unlocking APAC’s Economic and Digital Potential thro...
Examining Bias in AI Generated News Content.pdf

Continuous integration and delivery for java based web applications

  • 1. Continuous Integration and delivery for Java based web applications using Jenkins-Gradle-Artifactory Sunil Dalal (@sunieldalal) Full Stack Developer / Architect
  • 2. What is 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 (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly." - Martin Fowler, ThoughtWorks Chief Scientist
  • 3. What is Continuous Delivery? Continuous Delivery is the natural extension of Continuous Integration: an approach in which teams ensure that every change to the system is releasable, and that we can release any version at the push of a button. Continuous Delivery aims to make releases boring, so we can deliver frequently and get fast feedback on what users care about. http://www.thoughtworks.com/continuous-delivery It’s best thing happened in my developer life! CI and CD gives a great confidence to developer and makes them more productive. CI/CD is a must for any successful software product. - My View
  • 4. Before Continuous Integration / Delivery? • Manual Deployments. • Manual Restarts. • No Automated Test infrastructure. Only manual testing! • Less confidence! Long turnaround time.
  • 5. Why Continuous Integration / Delivery? • Immediate feedback, faster turn around time. • Enforces discipline of frequent automated testing. • Better coding practices - Frequent code check-in pushes developers to create modular, less complex code. • Every commit can result in a release!
  • 6. Continuous Integration / Delivery Workflow
  • 7. CI / CD step by step • Developers check out code into their local machines. • Developer commit changes to the source code repository. • The CI server monitors the source code repository and starts build process. • The CI server builds the system and runs unit and integration tests. • The CI server releases deployable artifacts for testing. • The CI server assigns a build label to the version of the code it just built. • The CI server informs the team of the successful build. • If the build or tests fail, the CI server alerts the team. • The team fix the issue at the earliest opportunity. • Continue to continually integrate and test throughout the project • On Approval, CI server deploys to test environments. • CI Server runs functional / performance tests on Test environment. • CI Server stage / Deploys to Production Environments (Can set up email based approval). Reference: https://www.thoughtworks.com/continuous-integration
  • 8. Tools Used Tools Options Source Code Repository Github, Perforce Continuous Integration Server Jenkins Binary Repository Manager Artifactory Code Analysis Sonar Qube Code Analysis Tools(Java) Checkstyle, PMD, Jacoco, FindBugs, JDepend Build Tools (Java) Gradle
  • 9. Achieving CI / CD using Gradle / Jenkins / Artifactory
  • 12. Jenkins Workflow Each Jenkins job executes one of the commands available via Gradle gradle compile gradle build gradle test
  • 14. Jenkins Build Step Executes gradle build via Jenkins job
  • 16. Jenkins Build Step Executes gradle test command via Jenkins job
  • 18. Code Analysis Tools • Checkstyle Ideal for projects that want to enforce a coding standard. Discovers poor design, duplicated code and bug patterns. • FindBugs Helps in discovering potential bugs, performance issues and bad coding practices. • Jdepend Helps in measuring design quality metrics like maintainability, reusability, extensibility. • PMD Finds unused, overly complex and inefficient code. • JaCoCo Used for Code Coverage. On the fly byte code instrumentation.
  • 19. Code Analysis Tools - Checkstyle Checkstyle is highly configurable and can be made to support almost any coding standard. Integrated by adding checstyle Gradle plugin in the project.
  • 20. Code Analysis Tools - PMD  PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Java, JavaScript, XML, XSL.  Integrated by adding PMD Gradle plugin in the project.
  • 21. Code Analysis Tools - JDepend  JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.  Integrated by adding Jdepend Gradle plugin in the project.
  • 22. Code Analysis Tools - FindBugs uses static analysis to look for bugs in Java code. Integrated by adding FindBugs Gradle plugin in the project.
  • 23. Code Analysis Tools - JaCoCo  Used for Code Coverage. On the fly byte code instrumentation.  In a continuous delivery pipeline, where packaging the deliverable is done after executing the code analysis phase, we want to make sure that the source or byte code isn’t modified after the compilation process to avoid unexpected behavior in target enironment. That’s why, on-the-fly instrumentation should be preferred.  Integrated by adding JaCoCo Gradle plugin in the project.
  • 24. SONAR - Architect’s friend in managing code quality SonarQube is an open platform to manage code quality. As such, it covers the 7 axes of code quality. Imports All Code analysis data in SONAR DB for further analysis..
  • 31. 31 CI – Deploy  Can Use scripts or Plugins which can directly deploy to Tomcat or any other application Servers.
  • 33. 33 Great! what all plugins you guys have used for Jenkins?  Git Plugin to checkout source code from repo.  Gitlab plugin for polling and start builds on each checkin.  Gradle plugin to install gradle on CI and execute Gradle commands.  Credentials Plugin to store the credentials securely.  Build Pipeline plugin.  Used Clone Workspace Plugin.  Used Set Build Name Plugin.  Parametrized Build Plugin.  GitLab plugin for integration with Gitlab.
  • 34. 34 Great! what all plugins you guys have used for Gradle?
  • 35. 35 Do we need to copy these gradle plugins to every project? Code duplication?  Keep it DRY (Don’t Repeat yourself)  You can move all gradle plugins to your company wide gradle wrapper  Individual projects can point to your company wide gradle wrapper to get new updates.
  • 36. 36 Do you do build on each check in?  Set up Git Jenkins SSH integration so that we can invoke build on each check in. Works great for smaller teams.  For larger teams, CI server polls the SCM and build every 10 minutes!
  • 37. 37 How to manage versioning for project?  SNAPSHOT-BuildNumber for internal builds.  RELEASE-x.0 for builds to be released.  Versioning can be managed via gradle properties file where you can tag version type as SNAPSHOT or RELEASE  OR  Make changes in your CI server to have jobs which can tag builds based on your defined criteria.  You can also have jobs which can promote builds from SNAPSHOT to RELEASE.
  • 38. 38 How do you do rollback?  Rollback should be one click similar to deploy.  Make your CI server Jobs intelligent to achieve this.
  • 39. Twitter: @sunieldalal Blog: http://sunieldalal.github.io/ Github: https://github.com/sunieldalal LinkedIn: https://www.linkedin.com/in/sunieldalalThank you so much!