SlideShare uma empresa Scribd logo
1 de 15
External Use
TM
Continuous Integration with
Hudson™ and Jenkins™
J U L . 0 2 . 2 0 1 4
Vlad Lică | Software Eng.
TM
External Use 1
Introduction
• Hudson and Jenkins are an extendable set of Tools designed to quickly
set-up a Continuous Integration Infrastructure for a software development
project
• Written in Java™, the Hudson/Jenkins tools are widely used to support an
incremental development process, aiding developers across the board by
automatically running a set of “Jobs” to build, test and validate each
commit to the main source code repository. A way to avoid the so-called
“integration hell”.
• Running in a servlet container, the Hudson/Jenkins CI server provides a
http-accessible dashboard that allows us to inspect and configure various
Jobs that run in a cluster-like environment - a collection of physical hosts
and Virtual Machines which function as workers assigned to a main node
• Provides a wide range of plug-ins, integrating commonly-used
development tools, that address each step in the build-to-release pipeline:
source repository polling, easily scripting the build process, running tests,
generating performance reports, publishing a build for release and setting
up alerts and notifications
TM
External Use 2
Hudson vs. Jenkins
Timeline
2004 2011
• The “Butler” Wars
• Similar front-end dashboard
• Back-end API / Implementation differences
• Inter-compatibility/ports for most Plug-ins -> similar eco-system
• Maintainers: Eclipse Foundation (Hudson) vs. original Hudson developers
(Jenkins)
• In recent years, more commits/development activity favoring Jenkins
Hudson - Sun™ Hudson - Oracle™ Hudson – Eclipse Foundation™
Jenkins
TM
External Use 3
Setup
• The Hudson/Jenkins Dashboard
• Download and install the Jenkins server Application; Configuration is done through the
Jenkins Dashboard accessible at :8080
• Register main node (start-up script provided in Jenkins distribution)
• Register each physical or VM worker (for each slave machine, simply start provided script at
start-up, running jenkins-slave.jar to connect to master server)
• Install and configure commonly used build tools and environment variables in the main node;
the main node dispatches this configuration and tools to heterogeneous workers
• A one-time general configuration for machines running both Windows™ and Linux™
distributions; additional, specific tweaks can be made for each worker or in the context of a
specific job)
TM
External Use 4
Plug-in selection
… there’s probably a plug-in that solves our problem
TM
External Use 5
Job Types - Overview
• Regular CI jobs: regular polls made to a version control repository (Git) for any source changes; if changes are
detected, a full build of the entire code base (Java/Eclipse & C/C++) is triggered; runs a set of minimal unit tests and
static analysis; sends customized e-mail to either the commiter or a distribution list, reporting Success or Failure +
build log -> designed for fast turn-around: build time ~ 10-20 minutes
• Gerrit code review tool Integration (DEMO)
• Validation Jobs: run nightly, on schedule; perform a full build and run all possible tests (unit & run-time tests),
validation and performance measuring tools (static analysis, code coverage, memcheck, valgrind etc.). Reports are
sent by email and also integrated in the Jenkins Dashboard for stats trend inspection
• Weekly Release Jobs: manually triggered, the Release jobs are designed to publish an official build of the component
to the Internal File Server, along with logs, build reports and release notes: a history of changes on a release-by-
release basis is generated; runs the same steps as a Nightly Validation, but building a Release version; generates an
unique build number for version control and publishes all artifacts to the internal repository.
TM
External Use 6
Configuring a Jenkins Job – Common Flow
• Parameterized builds – allows to start a job with specific parameters; useful if
triggered from an upstream job or to address a specific build configuration
• Pre-build – source control
- Jenkins plug-ins for commonly used version control tools
- A build may be triggered by detecting changes made to the provided repository
TM
External Use 7
Configuring a Jenkins Job – Common Flow
• Version Control for Release build Jobs
− Jenkins plug-in to generate an unique build number for version
control, possibly combining time-stamp with the current build number
− The build number generated persists as a global environment
variable, visible in any build step of the current job (e.g.:
${BUILD_ID})
TM
External Use 8
Configuring a Jenkins Job – Build Steps
• Scripting a build in Jenkins is done in a modular fashion
• Combine build tool plug-ins and shell scripting in any number of sequential build steps, although too many are not recommended;
• A minor nitpick is that the Jenkins dashboard does not provide a pick-and-set configuration for build steps; if not well thought-out initially, they
can be cumbersome to reorder
TM
External Use 9
Configuring a Jenkins Job – Build Steps
• A very useful feature is the ability to open a shell at any point in the build flow
• No matter the OS host, if the build slave is properly configured, any type of shell may be opened by providing the
proper shebang as the first line (e.g. #!/bin/sh, #!c:cygwinbinsh, #!c:MinGWmsys1.0binbash –login etc.)
• The shell’s output is captured in real-time and may be viewed during the job from the Dashboard
• Jenkins also provides a set of useful environment variables that can be used in any build step
TM
External Use 10
Configuring a Jenkins Job – Tests & Validation
• Unit Tests
- Java/Eclipse: plug-ins are built using Tycho™; as such, the tycho-sure-fire plug-in is
configured in the project’s main pom.xml file to run unit/SWTBot tests
- C/C++: Unit tests are written using Google™ Test Framework and are run with CTest
tool
* Jenkins provides a plug-in to aggregate all test result reports .xml files and generate a
report/graph trend. Eclipse surefire defaults to the xunit format; for C/C++, a python
shell script converts the output reports to xunit
TM
External Use 11
Configuring a Jenkins Job – Tests & Validation
• Static Analysis
− Eclipse: Findbugs integration
• Code coverage tools
− C/C++:
 gcov tool + Cobertura Jenkins plug-in for publishing;
 python tool (gcovr) to wrap gcov-generated coverage reports to Jenkins Cobertura plug-in format
 Valgrind integration for run-time memory leak detection
− Eclipse: static/dynamic (run-time) tools
 Emma vs. Cobertura vs. Jacoco
 JaCoCo selected as coverage tool: excellent Jenkins integration; easy to set-up; supports plug-in
profiling; benefits from regular maintenance and releases; free
TM
External Use 12
Post Build – Email Notification
• Jenkins plug-in for Email Notifications
− Very flexible; provides a standard template, along with useful variables that expand to statistics, such as: build result status,
git commit, source changes, log file output, test results parsing and a lot more
− Manually code a custom html email OR use groovy/jelly script files to interface directly with Jenkins’ REST API and
extract/format any details regarding the build
− Custom triggers for Successful/Failed/Unstable builds
TM
External Use 13
Thank you
TM
© 2014 Freescale Semiconductor, Inc. | External Use
www.Freescale.com

Mais conteúdo relacionado

Mais procurados

CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandTroublemaker Khunpech
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with JenkinsMartin Málek
 
Jenkins 101: Getting Started
Jenkins 101: Getting StartedJenkins 101: Getting Started
Jenkins 101: Getting StartedR Geoffrey Avery
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svnAnkur Goyal
 
Jenkins introduction
Jenkins introductionJenkins introduction
Jenkins introductionGourav Varma
 
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 (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Dennys Hsieh
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsNETWAYS
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingSwapnil Jadhav
 
Drupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The BasicsDrupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The BasicsJohn Smith
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtMark Waite
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Puppet
 
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Edureka!
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsMandi Walls
 

Mais procurados (20)

Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
Jenkins 101: Getting Started
Jenkins 101: Getting StartedJenkins 101: Getting Started
Jenkins 101: Getting Started
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svn
 
Jenkins introduction
Jenkins introductionJenkins introduction
Jenkins introduction
 
Jenkins
JenkinsJenkins
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 (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating Jenkins
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of Testing
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Drupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The BasicsDrupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The Basics
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
 
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
 
Jenkins pipeline as code
Jenkins pipeline as codeJenkins pipeline as code
Jenkins pipeline as code
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
 

Destaque

DPTF - Dataflow Programming Tools Framework
DPTF - Dataflow Programming Tools FrameworkDPTF - Dataflow Programming Tools Framework
DPTF - Dataflow Programming Tools Frameworkfliordache
 
What's new in cdt 8.1
What's new in cdt 8.1What's new in cdt 8.1
What's new in cdt 8.1Mircea Givan
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsBrice Argenson
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationamscanne
 
Continuous integration testing fundamentals
Continuous integration testing fundamentalsContinuous integration testing fundamentals
Continuous integration testing fundamentalsCygnet Infotech
 

Destaque (6)

DPTF - Dataflow Programming Tools Framework
DPTF - Dataflow Programming Tools FrameworkDPTF - Dataflow Programming Tools Framework
DPTF - Dataflow Programming Tools Framework
 
What's new in cdt 8.1
What's new in cdt 8.1What's new in cdt 8.1
What's new in cdt 8.1
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with Jenkins
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Continuous integration testing fundamentals
Continuous integration testing fundamentalsContinuous integration testing fundamentals
Continuous integration testing fundamentals
 

Semelhante a Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson

Introduction To Jenkins - SpringPeople
Introduction To Jenkins - SpringPeopleIntroduction To Jenkins - SpringPeople
Introduction To Jenkins - SpringPeopleSpringPeople
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdfMahmoudAlnmr1
 
Jenkins.pptx
Jenkins.pptxJenkins.pptx
Jenkins.pptxrfojdar
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Michal Ziarnik
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developerAbe Diaz
 
DevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of JenkinsDevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of JenkinsNigel Charman
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitisSteve Povilaitis
 
Ankit Chohan - Java
Ankit Chohan - JavaAnkit Chohan - Java
Ankit Chohan - JavaAnkit Chohan
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Kurt Madel
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup PuneUmesh Kumhar
 
Version your build process as you version your code
Version your build process as you version your codeVersion your build process as you version your code
Version your build process as you version your codeVincent Latombe
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptxVgPolampalli
 

Semelhante a Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson (20)

Contineous integration
Contineous integrationContineous integration
Contineous integration
 
Introduction To Jenkins - SpringPeople
Introduction To Jenkins - SpringPeopleIntroduction To Jenkins - SpringPeople
Introduction To Jenkins - SpringPeople
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Jenkins.pptx
Jenkins.pptxJenkins.pptx
Jenkins.pptx
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2
 
Jenkins.pdf
Jenkins.pdfJenkins.pdf
Jenkins.pdf
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developer
 
Build Time Hacking
Build Time HackingBuild Time Hacking
Build Time Hacking
 
DevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of JenkinsDevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of Jenkins
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
JenkinsCI
JenkinsCIJenkinsCI
JenkinsCI
 
Ankit Chohan - Java
Ankit Chohan - JavaAnkit Chohan - Java
Ankit Chohan - Java
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 
Devops.pptx
Devops.pptxDevops.pptx
Devops.pptx
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup Pune
 
Version your build process as you version your code
Version your build process as you version your codeVersion your build process as you version your code
Version your build process as you version your code
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptx
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 

Último

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 

Último (20)

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 

Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson

  • 1. External Use TM Continuous Integration with Hudson™ and Jenkins™ J U L . 0 2 . 2 0 1 4 Vlad Lică | Software Eng.
  • 2. TM External Use 1 Introduction • Hudson and Jenkins are an extendable set of Tools designed to quickly set-up a Continuous Integration Infrastructure for a software development project • Written in Java™, the Hudson/Jenkins tools are widely used to support an incremental development process, aiding developers across the board by automatically running a set of “Jobs” to build, test and validate each commit to the main source code repository. A way to avoid the so-called “integration hell”. • Running in a servlet container, the Hudson/Jenkins CI server provides a http-accessible dashboard that allows us to inspect and configure various Jobs that run in a cluster-like environment - a collection of physical hosts and Virtual Machines which function as workers assigned to a main node • Provides a wide range of plug-ins, integrating commonly-used development tools, that address each step in the build-to-release pipeline: source repository polling, easily scripting the build process, running tests, generating performance reports, publishing a build for release and setting up alerts and notifications
  • 3. TM External Use 2 Hudson vs. Jenkins Timeline 2004 2011 • The “Butler” Wars • Similar front-end dashboard • Back-end API / Implementation differences • Inter-compatibility/ports for most Plug-ins -> similar eco-system • Maintainers: Eclipse Foundation (Hudson) vs. original Hudson developers (Jenkins) • In recent years, more commits/development activity favoring Jenkins Hudson - Sun™ Hudson - Oracle™ Hudson – Eclipse Foundation™ Jenkins
  • 4. TM External Use 3 Setup • The Hudson/Jenkins Dashboard • Download and install the Jenkins server Application; Configuration is done through the Jenkins Dashboard accessible at :8080 • Register main node (start-up script provided in Jenkins distribution) • Register each physical or VM worker (for each slave machine, simply start provided script at start-up, running jenkins-slave.jar to connect to master server) • Install and configure commonly used build tools and environment variables in the main node; the main node dispatches this configuration and tools to heterogeneous workers • A one-time general configuration for machines running both Windows™ and Linux™ distributions; additional, specific tweaks can be made for each worker or in the context of a specific job)
  • 5. TM External Use 4 Plug-in selection … there’s probably a plug-in that solves our problem
  • 6. TM External Use 5 Job Types - Overview • Regular CI jobs: regular polls made to a version control repository (Git) for any source changes; if changes are detected, a full build of the entire code base (Java/Eclipse & C/C++) is triggered; runs a set of minimal unit tests and static analysis; sends customized e-mail to either the commiter or a distribution list, reporting Success or Failure + build log -> designed for fast turn-around: build time ~ 10-20 minutes • Gerrit code review tool Integration (DEMO) • Validation Jobs: run nightly, on schedule; perform a full build and run all possible tests (unit & run-time tests), validation and performance measuring tools (static analysis, code coverage, memcheck, valgrind etc.). Reports are sent by email and also integrated in the Jenkins Dashboard for stats trend inspection • Weekly Release Jobs: manually triggered, the Release jobs are designed to publish an official build of the component to the Internal File Server, along with logs, build reports and release notes: a history of changes on a release-by- release basis is generated; runs the same steps as a Nightly Validation, but building a Release version; generates an unique build number for version control and publishes all artifacts to the internal repository.
  • 7. TM External Use 6 Configuring a Jenkins Job – Common Flow • Parameterized builds – allows to start a job with specific parameters; useful if triggered from an upstream job or to address a specific build configuration • Pre-build – source control - Jenkins plug-ins for commonly used version control tools - A build may be triggered by detecting changes made to the provided repository
  • 8. TM External Use 7 Configuring a Jenkins Job – Common Flow • Version Control for Release build Jobs − Jenkins plug-in to generate an unique build number for version control, possibly combining time-stamp with the current build number − The build number generated persists as a global environment variable, visible in any build step of the current job (e.g.: ${BUILD_ID})
  • 9. TM External Use 8 Configuring a Jenkins Job – Build Steps • Scripting a build in Jenkins is done in a modular fashion • Combine build tool plug-ins and shell scripting in any number of sequential build steps, although too many are not recommended; • A minor nitpick is that the Jenkins dashboard does not provide a pick-and-set configuration for build steps; if not well thought-out initially, they can be cumbersome to reorder
  • 10. TM External Use 9 Configuring a Jenkins Job – Build Steps • A very useful feature is the ability to open a shell at any point in the build flow • No matter the OS host, if the build slave is properly configured, any type of shell may be opened by providing the proper shebang as the first line (e.g. #!/bin/sh, #!c:cygwinbinsh, #!c:MinGWmsys1.0binbash –login etc.) • The shell’s output is captured in real-time and may be viewed during the job from the Dashboard • Jenkins also provides a set of useful environment variables that can be used in any build step
  • 11. TM External Use 10 Configuring a Jenkins Job – Tests & Validation • Unit Tests - Java/Eclipse: plug-ins are built using Tycho™; as such, the tycho-sure-fire plug-in is configured in the project’s main pom.xml file to run unit/SWTBot tests - C/C++: Unit tests are written using Google™ Test Framework and are run with CTest tool * Jenkins provides a plug-in to aggregate all test result reports .xml files and generate a report/graph trend. Eclipse surefire defaults to the xunit format; for C/C++, a python shell script converts the output reports to xunit
  • 12. TM External Use 11 Configuring a Jenkins Job – Tests & Validation • Static Analysis − Eclipse: Findbugs integration • Code coverage tools − C/C++:  gcov tool + Cobertura Jenkins plug-in for publishing;  python tool (gcovr) to wrap gcov-generated coverage reports to Jenkins Cobertura plug-in format  Valgrind integration for run-time memory leak detection − Eclipse: static/dynamic (run-time) tools  Emma vs. Cobertura vs. Jacoco  JaCoCo selected as coverage tool: excellent Jenkins integration; easy to set-up; supports plug-in profiling; benefits from regular maintenance and releases; free
  • 13. TM External Use 12 Post Build – Email Notification • Jenkins plug-in for Email Notifications − Very flexible; provides a standard template, along with useful variables that expand to statistics, such as: build result status, git commit, source changes, log file output, test results parsing and a lot more − Manually code a custom html email OR use groovy/jelly script files to interface directly with Jenkins’ REST API and extract/format any details regarding the build − Custom triggers for Successful/Failed/Unstable builds
  • 15. TM © 2014 Freescale Semiconductor, Inc. | External Use www.Freescale.com