SlideShare a Scribd company logo
1 of 18
Download to read offline
Introduction First Design Second Design
Implementing a Continuous Integration System
for Software Design
Vincent Borchardt
Department of Computer Science
University of Minnesota, Morris
May 1, 2013
Introduction First Design Second Design
Objective
Make a continuous integration system to support the new web-based
software projects for software design.
Three main components of the system:
Tomcat: Web server for hosting student projects and/or the other
components
Jenkins: Automated build system for projects in Subversion
Sonar: Code analysis tool
Introduction First Design Second Design
Tomcat
A web server that hosts .war files (Java web container):
Student projects
Other utilities (Jenkins and Sonar)
Introduction First Design Second Design
Jenkins
An automated build system:
Checks if the build compiles
Runs the tests
Keeps track of all previous builds over time
Runs either by itself or on a web server
Introduction First Design Second Design
Sonar
A code analysis tool:
Checks for duplication
Calculates technical debt
Checks test coverage
Introduction First Design Second Design
Initial Objective
Became TA for Spring 12 offering of CSci 3601 Software Design
Many changes to the class this year:
Designing a web-based application (using Groovy and Grails)
instead of a desktop application (using Java and Swing)
New Agile textbook brings new practices (Inception Deck,
Story-Building Workshop)
Projects use continuous integration
Introduction First Design Second Design
System Design
One virtual machine (csci3601sp12)
Runs a Tomcat server that holds Jenkins, Sonar, and the students’
projects
Simplest possible execution
Introduction First Design Second Design
Problems
Overall:
Managing memory was always an issue, even as the RAM
available to the VM was increased over time
Which version of the software to use was always a problem
Authentication was not a priority
Jenkins:
Very easy to upgrade (download a new WAR file, upload to
Tomcat)
Easy to integrate with LDAP in the lab
Initially setup with no authentication system, but was "hacked"
halfway through the project
Most successful of the three components
Introduction First Design Second Design
Problems
Overall:
Managing memory was always an issue, even as the RAM
available to the VM was increased over time
Which version of the software to use was always a problem
Authentication was not a priority
Tomcat:
Started with Tomcat 6–memory leaks occurred whenever a WAR
file was removed from the server
Jenkins uploaded a new WAR of each project on each successful
build, so many WAR files were added and removed over time
Upgrading to Tomcat 7 fixed the memory leak problem–the
upgrade was not much trouble
Only I had access to Tomcat, but Jenkins needed access as well
I manually entered the password to access Tomcat for each project
Introduction First Design Second Design
Problems
Overall:
Managing memory was always an issue, even as the RAM
available to the VM was increased over time
Which version of the software to use was always a problem
Authentication was not a priority
Sonar:
Used Sonar 2.12–wasn’t compatible with LDAP authentication
Used the trial built-in database through the whole course:
Builds took extremely long
Sonar could not be updated
Introduction First Design Second Design
System Design
Three virtual machines (jenkins, sonar, tomcat)
Each component is running by itself, instead of all running on a
Tomcat server.
Services are backed up with database support if necessary
Introduction First Design Second Design
Jenkins
Installed with yum instead of being deployed on a Tomcat server
Uses Sonar Runner to transfer information from Jenkins to Sonar
Mostly unchanged from the first design
Introduction First Design Second Design
Sonar
Installed with yum instead of being deployed on Tomcat
Used version 3–LDAP works.
Backed up with a MySQL database for handling project information:
Allows for upgrading Sonar
Builds take less time
Introduction First Design Second Design
Tomcat
Installed manually
Started with version 7
Backed up with a MySQL database so students’ projects can be
connected to real databases in production
Introduction First Design Second Design
Current Problems
Overall:
Memory still a concern
Sonar doesn’t support Grails/Groovy perfectly
Tomcat has many quirks
Jenkins:
Test success/code coverage is being kept track of in Jenkins
instead of Sonar
Introduction First Design Second Design
Current Problems
Overall:
Memory still a concern
Sonar doesn’t support Grails/Groovy perfectly
Tomcat has many quirks
Tomcat:
Grails projects leave a Timer thread when undeployed
Causes a large memory leak; Tomcat must be occasionally
restarted (by restarting the whole VM)
Tomcat must be restarted manually when the VM starts
Errors in projects deployed on Tomcat don’t give meaningful error
messages by default
A logging.properties file in the Grails project allows stack traces to
be shown in Tomcat–but that file is deleted when tests are run on
the Grails project for some reason.
Introduction First Design Second Design
Current Problems
Overall:
Memory still a concern
Sonar doesn’t support Grails/Groovy perfectly
Tomcat has many quirks
Sonar:
Sonar cannot process code coverage information produced by
Grails through our current build process
Lots of information available in Sonar; difficult to find the
important information
Introduction First Design Second Design
Future Plans
Implement a larger-scale build process for more than just Grails
projects:
Sonar works with plain Java/Groovy projects, but tests aren’t run
Jenkins and Sonar have plugins for many languages
Confirm each service scales:
Do we want to leave each project on Jenkins/Sonar/Tomcat
forever?
How big must each VM be?
Determine which features of each tool are most important, and which
are missing

More Related Content

What's hot

Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with SubversionGuy K. Kloss
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationhugo lu
 
Upgrade to java 16 or 17
Upgrade to java 16 or 17Upgrade to java 16 or 17
Upgrade to java 16 or 17Johan Janssen
 
Automated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and JenkinsAutomated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and Jenkinswalkerchang
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineSlawa Giterman
 
Continuous integration / deployment with Jenkins
Continuous integration / deployment with JenkinsContinuous integration / deployment with Jenkins
Continuous integration / deployment with Jenkinscherryhillco
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup PuneUmesh Kumhar
 
Introduction to Containers & Diving a little deeper into the benefits of Con...
 Introduction to Containers & Diving a little deeper into the benefits of Con... Introduction to Containers & Diving a little deeper into the benefits of Con...
Introduction to Containers & Diving a little deeper into the benefits of Con...Synergetics Learning and Cloud Consulting
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous IntegrationGeff Henderson Chang
 
Getting Started With Subversion
Getting Started With SubversionGetting Started With Subversion
Getting Started With SubversionJordan Hatch
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynoteSuyash Joshi
 
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...Eric Smalling
 
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
 
Subversion Overview
Subversion OverviewSubversion Overview
Subversion Overviewpolarion
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best PracticesAshraf Fouad
 

What's hot (20)

Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with Subversion
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Upgrade to java 16 or 17
Upgrade to java 16 or 17Upgrade to java 16 or 17
Upgrade to java 16 or 17
 
Automated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and JenkinsAutomated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and Jenkins
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
 
Continuous integration / deployment with Jenkins
Continuous integration / deployment with JenkinsContinuous integration / deployment with Jenkins
Continuous integration / deployment with Jenkins
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup Pune
 
Introduction to Containers & Diving a little deeper into the benefits of Con...
 Introduction to Containers & Diving a little deeper into the benefits of Con... Introduction to Containers & Diving a little deeper into the benefits of Con...
Introduction to Containers & Diving a little deeper into the benefits of Con...
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous Integration
 
Getting Started With Subversion
Getting Started With SubversionGetting Started With Subversion
Getting Started With Subversion
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynote
 
Vsts ci cd-java
Vsts ci cd-javaVsts ci cd-java
Vsts ci cd-java
 
Svn tutorial
Svn tutorialSvn tutorial
Svn tutorial
 
Using svn
Using svnUsing svn
Using svn
 
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
 
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
 
Subversion Overview
Subversion OverviewSubversion Overview
Subversion Overview
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 

Similar to Implementing a Continuous Integration System for Software Design

Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkBruno Abinader
 
Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” LogeekNightUkraine
 
Introduction to Software Build Technology
Introduction to Software Build TechnologyIntroduction to Software Build Technology
Introduction to Software Build TechnologyPhilip Johnson
 
Continuous integration ( jen kins travis ci)
Continuous integration ( jen kins  travis ci)Continuous integration ( jen kins  travis ci)
Continuous integration ( jen kins travis ci)Sadani Rodrigo
 
Maven TestNg frame work (1) (1)
Maven TestNg frame work (1) (1)Maven TestNg frame work (1) (1)
Maven TestNg frame work (1) (1)Gopi Raghavendra
 
XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainersVincent Massol
 
What’s New In Cincom Smalltalk
What’s New In Cincom SmalltalkWhat’s New In Cincom Smalltalk
What’s New In Cincom SmalltalkESUG
 
A simplest way to reconstruct .Net Framework - CRB Tech
A simplest way to reconstruct .Net Framework - CRB TechA simplest way to reconstruct .Net Framework - CRB Tech
A simplest way to reconstruct .Net Framework - CRB TechPooja Gaikwad
 
A simplest-way-to-reconstruct-.net-framework
A simplest-way-to-reconstruct-.net-frameworkA simplest-way-to-reconstruct-.net-framework
A simplest-way-to-reconstruct-.net-frameworksonia merchant
 
CI/CD Pipeline with Docker
CI/CD Pipeline with DockerCI/CD Pipeline with Docker
CI/CD Pipeline with Dockerkushalsingh007
 
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamMoving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamSofia Fateeva
 
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamMoving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamPVS-Studio
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Controlelliando dias
 
Continous Integration.pptx
Continous Integration.pptxContinous Integration.pptx
Continous Integration.pptxAnuj Sharma
 
Whats In Your QA Tool Belt?
Whats In Your QA Tool Belt?Whats In Your QA Tool Belt?
Whats In Your QA Tool Belt?Walter Mamed
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptxVgPolampalli
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseMatt Raible
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker, Inc.
 

Similar to Implementing a Continuous Integration System for Software Design (20)

Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and Blink
 
Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost”
 
Introduction to Software Build Technology
Introduction to Software Build TechnologyIntroduction to Software Build Technology
Introduction to Software Build Technology
 
Continuous integration ( jen kins travis ci)
Continuous integration ( jen kins  travis ci)Continuous integration ( jen kins  travis ci)
Continuous integration ( jen kins travis ci)
 
Maven TestNg frame work (1) (1)
Maven TestNg frame work (1) (1)Maven TestNg frame work (1) (1)
Maven TestNg frame work (1) (1)
 
XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainers
 
Gatehouse software genanvendelse
Gatehouse software genanvendelseGatehouse software genanvendelse
Gatehouse software genanvendelse
 
What’s New In Cincom Smalltalk
What’s New In Cincom SmalltalkWhat’s New In Cincom Smalltalk
What’s New In Cincom Smalltalk
 
A simplest way to reconstruct .Net Framework - CRB Tech
A simplest way to reconstruct .Net Framework - CRB TechA simplest way to reconstruct .Net Framework - CRB Tech
A simplest way to reconstruct .Net Framework - CRB Tech
 
A simplest-way-to-reconstruct-.net-framework
A simplest-way-to-reconstruct-.net-frameworkA simplest-way-to-reconstruct-.net-framework
A simplest-way-to-reconstruct-.net-framework
 
CI/CD Pipeline with Docker
CI/CD Pipeline with DockerCI/CD Pipeline with Docker
CI/CD Pipeline with Docker
 
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamMoving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
 
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development teamMoving from CruiseControl.NET to Jenkins in the PVS-Studio development team
Moving from CruiseControl.NET to Jenkins in the PVS-Studio development team
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Control
 
Continous Integration.pptx
Continous Integration.pptxContinous Integration.pptx
Continous Integration.pptx
 
Whats In Your QA Tool Belt?
Whats In Your QA Tool Belt?Whats In Your QA Tool Belt?
Whats In Your QA Tool Belt?
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptx
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker Cloud
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer 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
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 

Recently uploaded (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer 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
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 

Implementing a Continuous Integration System for Software Design

  • 1. Introduction First Design Second Design Implementing a Continuous Integration System for Software Design Vincent Borchardt Department of Computer Science University of Minnesota, Morris May 1, 2013
  • 2. Introduction First Design Second Design Objective Make a continuous integration system to support the new web-based software projects for software design. Three main components of the system: Tomcat: Web server for hosting student projects and/or the other components Jenkins: Automated build system for projects in Subversion Sonar: Code analysis tool
  • 3. Introduction First Design Second Design Tomcat A web server that hosts .war files (Java web container): Student projects Other utilities (Jenkins and Sonar)
  • 4. Introduction First Design Second Design Jenkins An automated build system: Checks if the build compiles Runs the tests Keeps track of all previous builds over time Runs either by itself or on a web server
  • 5. Introduction First Design Second Design Sonar A code analysis tool: Checks for duplication Calculates technical debt Checks test coverage
  • 6. Introduction First Design Second Design Initial Objective Became TA for Spring 12 offering of CSci 3601 Software Design Many changes to the class this year: Designing a web-based application (using Groovy and Grails) instead of a desktop application (using Java and Swing) New Agile textbook brings new practices (Inception Deck, Story-Building Workshop) Projects use continuous integration
  • 7. Introduction First Design Second Design System Design One virtual machine (csci3601sp12) Runs a Tomcat server that holds Jenkins, Sonar, and the students’ projects Simplest possible execution
  • 8. Introduction First Design Second Design Problems Overall: Managing memory was always an issue, even as the RAM available to the VM was increased over time Which version of the software to use was always a problem Authentication was not a priority Jenkins: Very easy to upgrade (download a new WAR file, upload to Tomcat) Easy to integrate with LDAP in the lab Initially setup with no authentication system, but was "hacked" halfway through the project Most successful of the three components
  • 9. Introduction First Design Second Design Problems Overall: Managing memory was always an issue, even as the RAM available to the VM was increased over time Which version of the software to use was always a problem Authentication was not a priority Tomcat: Started with Tomcat 6–memory leaks occurred whenever a WAR file was removed from the server Jenkins uploaded a new WAR of each project on each successful build, so many WAR files were added and removed over time Upgrading to Tomcat 7 fixed the memory leak problem–the upgrade was not much trouble Only I had access to Tomcat, but Jenkins needed access as well I manually entered the password to access Tomcat for each project
  • 10. Introduction First Design Second Design Problems Overall: Managing memory was always an issue, even as the RAM available to the VM was increased over time Which version of the software to use was always a problem Authentication was not a priority Sonar: Used Sonar 2.12–wasn’t compatible with LDAP authentication Used the trial built-in database through the whole course: Builds took extremely long Sonar could not be updated
  • 11. Introduction First Design Second Design System Design Three virtual machines (jenkins, sonar, tomcat) Each component is running by itself, instead of all running on a Tomcat server. Services are backed up with database support if necessary
  • 12. Introduction First Design Second Design Jenkins Installed with yum instead of being deployed on a Tomcat server Uses Sonar Runner to transfer information from Jenkins to Sonar Mostly unchanged from the first design
  • 13. Introduction First Design Second Design Sonar Installed with yum instead of being deployed on Tomcat Used version 3–LDAP works. Backed up with a MySQL database for handling project information: Allows for upgrading Sonar Builds take less time
  • 14. Introduction First Design Second Design Tomcat Installed manually Started with version 7 Backed up with a MySQL database so students’ projects can be connected to real databases in production
  • 15. Introduction First Design Second Design Current Problems Overall: Memory still a concern Sonar doesn’t support Grails/Groovy perfectly Tomcat has many quirks Jenkins: Test success/code coverage is being kept track of in Jenkins instead of Sonar
  • 16. Introduction First Design Second Design Current Problems Overall: Memory still a concern Sonar doesn’t support Grails/Groovy perfectly Tomcat has many quirks Tomcat: Grails projects leave a Timer thread when undeployed Causes a large memory leak; Tomcat must be occasionally restarted (by restarting the whole VM) Tomcat must be restarted manually when the VM starts Errors in projects deployed on Tomcat don’t give meaningful error messages by default A logging.properties file in the Grails project allows stack traces to be shown in Tomcat–but that file is deleted when tests are run on the Grails project for some reason.
  • 17. Introduction First Design Second Design Current Problems Overall: Memory still a concern Sonar doesn’t support Grails/Groovy perfectly Tomcat has many quirks Sonar: Sonar cannot process code coverage information produced by Grails through our current build process Lots of information available in Sonar; difficult to find the important information
  • 18. Introduction First Design Second Design Future Plans Implement a larger-scale build process for more than just Grails projects: Sonar works with plain Java/Groovy projects, but tests aren’t run Jenkins and Sonar have plugins for many languages Confirm each service scales: Do we want to leave each project on Jenkins/Sonar/Tomcat forever? How big must each VM be? Determine which features of each tool are most important, and which are missing