SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Jenkins User Conference

Herzelia, July 5 2012

Full Cycle (Mobile) Build
Automation with Jenkins

Anton Weiss
AT&T Israel

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

About me	
!
!
!
!

  11 years in SW engineering
  7+ years in CM/Build/Automation
  5 years: home-grown solutions
  2 last years: Jenkins (Hudson)

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

Contents:
!
!
!
!
!
!
!
!
!

  What’s in the full cycle?
  Mobile specifics.
  Getting to the source.
  Building Java (Android/BlackBerry)
  Building Objective C (iOS)
  Analyze It
  Notify
  Testing Time
  Wrapping it all up

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

“Good” Build Automation
!
!
!
!
!

  Reliable
  Repeatable
  Transparent
  Well-documented
  Informative

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

What’s in the full cycle?
!   One build flow:
• 
• 
• 
• 
• 
• 
• 

SCM
Build + Publish
Unit Testing
Static Code Analysis
Deployment
Automated Functional Tests
Reporting

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

Build flow - example	

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

Mobile Specifics	
!  Short Builds (dedicated build
machines)
!  Simple Deployment (OTA)
!  Android : multiple devices
	

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

#jenkinsconf

Getting to the source.
	
! ClearCase
• 
• 
• 
• 
• 

UCM ClearCase
Multiple streams ( change lists )
Pre-build Baseline
Read-only Build Stream
Not supported on Mac OSX

!   SVN
•  Built-in support
•  Change list and revision in mail and on Jenkins
Jenkins User Conference

Herzelia, July 5 2012

#jenkinsconf

ClearCase Configuration	

Integ Stream	

Build baseline	
Build Stream
Jenkins User Conference

Herzelia, July 5 2012

Building Java (Android/BlackBerry)
	
!   Using Ant (instead of Eclipse)
•  BlackBerry : bb_ant_tools
•  Android : SDK custom tasks
•  Android : run-time properties

!   Scan for compiler warnings

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

Building Objective C (iOS)
	
! ClearCase view on Windows
! Ssh to Mac
!   Not using Xcode plugin

#jenkinsconf
Jenkins User Conference

Analyze It!
	
!   Java
•  Sonar
•  Lint

! iOS
•  Clang 	

Herzelia, July 5 2012

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

Notify	
!   Rally Notifier
!   Email-ext plugin
•  Create formatted files to be sent with:
${FILE,path="weblinks.txt"}
${FILE,path="changeset.txt"}

•  Use env variables
${ENV,var="PackDir"}

!   Create nightly summary (perl+XML
API)	

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

Testing Time
	
! JSystem based automaton
!   Emulators and real devices
!   ‘Archive artifacts’ for HTML output
!   Groovy post-build plugin:
-  Parse console log for failures
-  Place badge on build page
	

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

#jenkinsconf

Groovy post-build plugin	
pattern = ~/.*Automated_Tests_Faileds*:s*(d+).*/
manager.build.logFile.eachLine { line ->
matcher = pattern.matcher(line)
if(matcher.matches()) {
manager.addWarningBadge("Failed tests.")
failedTests= matcher.group(1)
manager.createSummary("warning.gif").appendText("<h3> $failedTests failed
tests!</h3>", false, false, false, "red")
manager.buildUnstable()
}
}
def result = manager.build.result
def gifname
if(result == hudson.model.Result.SUCCESS) gifname="blue.gif"
if(result == hudson.model.Result.FAILURE) gifname="red.gif"
if(result == hudson.model.Result.UNSTABLE) gifname="yellow.gif"
if (manager.build.getHasArtifacts())
manager.createSummary(gifname).appendText("<b><a href="artifact/logs/
index.html">JSystem Report</a></b>", false)
Jenkins User Conference

Herzelia, July 5 2012

#jenkinsconf

Wrapping it all up	
!   Managing build flows:
•  What’s my version?
•  Parameterized trigger – pass this on.
•  XML API

!   Missing features:
–  Flow-wide parameters ( Cascading Projects can be
used)
–  Flow data ( use XML API )
–  Improved build pipeline
Jenkins User Conference

Herzelia, July 5 2012

Questions?	

?

ant.weiss@gmail.com	

#jenkinsconf
Jenkins User Conference

Herzelia, July 5 2012

Thank You To Our Sponsors
Platinum
Sponsors

Silver
Sponsor

#jenkinsconf

Contenu connexe

Tendances

A Study of the Characteristics of Developers′ Activities in GitHub
A Study of the Characteristics of Developers′ Activities in GitHubA Study of the Characteristics of Developers′ Activities in GitHub
A Study of the Characteristics of Developers′ Activities in GitHub
奈良先端大 情報科学研究科
 
RAD in Action: Building Connected Apps with Bluetooth and App Tethering
RAD in Action: Building Connected Apps with Bluetooth and App TetheringRAD in Action: Building Connected Apps with Bluetooth and App Tethering
RAD in Action: Building Connected Apps with Bluetooth and App Tethering
Embarcadero Technologies
 
Documenting apps ti confnyc
Documenting apps   ti confnycDocumenting apps   ti confnyc
Documenting apps ti confnyc
Jamil Spain
 
AgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpAgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel Harp
Barry Gavril
 

Tendances (20)

From Virtual Machines to Containers
From Virtual Machines to ContainersFrom Virtual Machines to Containers
From Virtual Machines to Containers
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?
 
Ciprian redinciuc continuous integration with jenkins for i os
Ciprian redinciuc   continuous integration with jenkins for i osCiprian redinciuc   continuous integration with jenkins for i os
Ciprian redinciuc continuous integration with jenkins for i os
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
 
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and MaintenanceJUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018
 
Global Azure Bootcamp - Vancouver (2018) - Testing with Containers
Global Azure Bootcamp - Vancouver (2018) - Testing with ContainersGlobal Azure Bootcamp - Vancouver (2018) - Testing with Containers
Global Azure Bootcamp - Vancouver (2018) - Testing with Containers
 
A Study of the Characteristics of Developers′ Activities in GitHub
A Study of the Characteristics of Developers′ Activities in GitHubA Study of the Characteristics of Developers′ Activities in GitHub
A Study of the Characteristics of Developers′ Activities in GitHub
 
Cool .NET tools, techniques and libraries
Cool .NET tools, techniques and librariesCool .NET tools, techniques and libraries
Cool .NET tools, techniques and libraries
 
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...
 
Supermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talkSupermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talk
 
Practical continuous quality gates for development process
Practical continuous quality gates for development processPractical continuous quality gates for development process
Practical continuous quality gates for development process
 
Android + jenkins
Android + jenkinsAndroid + jenkins
Android + jenkins
 
RAD in Action: Building Connected Apps with Bluetooth and App Tethering
RAD in Action: Building Connected Apps with Bluetooth and App TetheringRAD in Action: Building Connected Apps with Bluetooth and App Tethering
RAD in Action: Building Connected Apps with Bluetooth and App Tethering
 
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with Appcelerator
 
Documenting apps ti confnyc
Documenting apps   ti confnycDocumenting apps   ti confnyc
Documenting apps ti confnyc
 
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDEAn Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
 
AgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpAgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel Harp
 

Similaire à Continuous Delivery for Mobile R&D

Using Jenkins XML API
Using Jenkins XML APIUsing Jenkins XML API
Using Jenkins XML API
Anton Weiss
 
The challenge - testing the oVirt project
The challenge - testing the oVirt projectThe challenge - testing the oVirt project
The challenge - testing the oVirt project
Eyal Edri
 
Mix Tech Ed Update No Video
Mix Tech Ed Update No VideoMix Tech Ed Update No Video
Mix Tech Ed Update No Video
AllyWick
 

Similaire à Continuous Delivery for Mobile R&D (20)

Jenkins 1
Jenkins 1Jenkins 1
Jenkins 1
 
Using Jenkins XML API
Using Jenkins XML APIUsing Jenkins XML API
Using Jenkins XML API
 
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
 
Jenkins Reviewbot
Jenkins ReviewbotJenkins Reviewbot
Jenkins Reviewbot
 
JUC NY - Advanced Continuous Deployment with Jenkins
JUC NY - Advanced Continuous Deployment with JenkinsJUC NY - Advanced Continuous Deployment with Jenkins
JUC NY - Advanced Continuous Deployment with Jenkins
 
Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014
 
JUC NYC 2012: Yale Build and Deployment with Jenkins
JUC NYC 2012: Yale Build and Deployment with JenkinsJUC NYC 2012: Yale Build and Deployment with Jenkins
JUC NYC 2012: Yale Build and Deployment with Jenkins
 
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsGraduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
 
Jenkins & IaC
Jenkins & IaCJenkins & IaC
Jenkins & IaC
 
JUC Paris 2012 — Jenkins @ Nuxeo
JUC Paris 2012 — Jenkins @ NuxeoJUC Paris 2012 — Jenkins @ Nuxeo
JUC Paris 2012 — Jenkins @ Nuxeo
 
The challenge - testing the oVirt project
The challenge - testing the oVirt projectThe challenge - testing the oVirt project
The challenge - testing the oVirt project
 
Jenkins For One
Jenkins For OneJenkins For One
Jenkins For One
 
Best Practices for Mission-Critical Jenkins
Best Practices for Mission-Critical JenkinsBest Practices for Mission-Critical Jenkins
Best Practices for Mission-Critical Jenkins
 
Meet my CI
Meet my CIMeet my CI
Meet my CI
 
Basics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote ControlBasics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote Control
 
Mix Tech Ed Update No Video
Mix Tech Ed Update No VideoMix Tech Ed Update No Video
Mix Tech Ed Update No Video
 
Hands on iOS developments with Jenkins
Hands on iOS developments with JenkinsHands on iOS developments with Jenkins
Hands on iOS developments with Jenkins
 
Setup Build & Deploy with Jenkins CI
Setup Build & Deploy with Jenkins CISetup Build & Deploy with Jenkins CI
Setup Build & Deploy with Jenkins CI
 
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 

Plus de Anton Weiss

The New Science of Software Delivery
The New Science of Software DeliveryThe New Science of Software Delivery
The New Science of Software Delivery
Anton Weiss
 

Plus de Anton Weiss (20)

The New Science of Software Delivery
The New Science of Software DeliveryThe New Science of Software Delivery
The New Science of Software Delivery
 
Escaping the Jungle - Migrating to Cloud Native CI/CD
Escaping the Jungle - Migrating to Cloud Native CI/CDEscaping the Jungle - Migrating to Cloud Native CI/CD
Escaping the Jungle - Migrating to Cloud Native CI/CD
 
Envoy, Wasm and Rust - the Mighty Trio
Envoy, Wasm and Rust -  the Mighty TrioEnvoy, Wasm and Rust -  the Mighty Trio
Envoy, Wasm and Rust - the Mighty Trio
 
Dumb Services in Smart Nets - istio
Dumb Services in Smart Nets -  istioDumb Services in Smart Nets -  istio
Dumb Services in Smart Nets - istio
 
WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh? WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh?
 
Many Changes Little Fun
Many Changes Little Fun Many Changes Little Fun
Many Changes Little Fun
 
Optimizing the Delivery Pipeline for Flow
Optimizing the Delivery Pipeline for FlowOptimizing the Delivery Pipeline for Flow
Optimizing the Delivery Pipeline for Flow
 
A Deeper Look at Cargo
A Deeper Look at CargoA Deeper Look at Cargo
A Deeper Look at Cargo
 
Heralding change - How to Get Engineers On Board the DevOps Ship
Heralding change - How to Get Engineers On Board the DevOps ShipHeralding change - How to Get Engineers On Board the DevOps Ship
Heralding change - How to Get Engineers On Board the DevOps Ship
 
When Your Pipelines Are a Mess
When Your Pipelines Are a MessWhen Your Pipelines Are a Mess
When Your Pipelines Are a Mess
 
Wiring up microservices with Istio
Wiring up microservices with IstioWiring up microservices with Istio
Wiring up microservices with Istio
 
ChatOps - the Road to a Collaborative CLI
ChatOps  - the Road to a Collaborative CLI ChatOps  - the Road to a Collaborative CLI
ChatOps - the Road to a Collaborative CLI
 
The Road to a Hybrid, Transparent Pipeline
The Road to a Hybrid, Transparent PipelineThe Road to a Hybrid, Transparent Pipeline
The Road to a Hybrid, Transparent Pipeline
 
Jenkins and the Future of Software Delivery
Jenkins and the Future of Software DeliveryJenkins and the Future of Software Delivery
Jenkins and the Future of Software Delivery
 
How Openstack is Built
How Openstack is BuiltHow Openstack is Built
How Openstack is Built
 
Continuous Delivery is Not a Commodity
Continuous Delivery is Not a CommodityContinuous Delivery is Not a Commodity
Continuous Delivery is Not a Commodity
 
Grooving with Jenkins
Grooving with JenkinsGrooving with Jenkins
Grooving with Jenkins
 
Ninja, Choose Your Weapon!
Ninja, Choose Your Weapon!Ninja, Choose Your Weapon!
Ninja, Choose Your Weapon!
 
DevOps - Transparency & Self Service
DevOps - Transparency & Self ServiceDevOps - Transparency & Self Service
DevOps - Transparency & Self Service
 
Vagrant in 15 minutes
Vagrant in 15 minutesVagrant in 15 minutes
Vagrant in 15 minutes
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Dernier (20)

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
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 

Continuous Delivery for Mobile R&D

  • 1. Jenkins User Conference Herzelia, July 5 2012 Full Cycle (Mobile) Build Automation with Jenkins Anton Weiss AT&T Israel #jenkinsconf
  • 2. Jenkins User Conference Herzelia, July 5 2012 About me ! ! ! !   11 years in SW engineering   7+ years in CM/Build/Automation   5 years: home-grown solutions   2 last years: Jenkins (Hudson) #jenkinsconf
  • 3. Jenkins User Conference Herzelia, July 5 2012 Contents: ! ! ! ! ! ! ! ! !   What’s in the full cycle?   Mobile specifics.   Getting to the source.   Building Java (Android/BlackBerry)   Building Objective C (iOS)   Analyze It   Notify   Testing Time   Wrapping it all up #jenkinsconf
  • 4. Jenkins User Conference Herzelia, July 5 2012 “Good” Build Automation ! ! ! ! !   Reliable   Repeatable   Transparent   Well-documented   Informative #jenkinsconf
  • 5. Jenkins User Conference Herzelia, July 5 2012 What’s in the full cycle? !   One build flow: •  •  •  •  •  •  •  SCM Build + Publish Unit Testing Static Code Analysis Deployment Automated Functional Tests Reporting #jenkinsconf
  • 6. Jenkins User Conference Herzelia, July 5 2012 Build flow - example #jenkinsconf
  • 7. Jenkins User Conference Herzelia, July 5 2012 Mobile Specifics !  Short Builds (dedicated build machines) !  Simple Deployment (OTA) !  Android : multiple devices #jenkinsconf
  • 8. Jenkins User Conference Herzelia, July 5 2012 #jenkinsconf Getting to the source. ! ClearCase •  •  •  •  •  UCM ClearCase Multiple streams ( change lists ) Pre-build Baseline Read-only Build Stream Not supported on Mac OSX !   SVN •  Built-in support •  Change list and revision in mail and on Jenkins
  • 9. Jenkins User Conference Herzelia, July 5 2012 #jenkinsconf ClearCase Configuration Integ Stream Build baseline Build Stream
  • 10. Jenkins User Conference Herzelia, July 5 2012 Building Java (Android/BlackBerry) !   Using Ant (instead of Eclipse) •  BlackBerry : bb_ant_tools •  Android : SDK custom tasks •  Android : run-time properties !   Scan for compiler warnings #jenkinsconf
  • 11. Jenkins User Conference Herzelia, July 5 2012 Building Objective C (iOS) ! ClearCase view on Windows ! Ssh to Mac !   Not using Xcode plugin #jenkinsconf
  • 12. Jenkins User Conference Analyze It! !   Java •  Sonar •  Lint ! iOS •  Clang Herzelia, July 5 2012 #jenkinsconf
  • 13. Jenkins User Conference Herzelia, July 5 2012 Notify !   Rally Notifier !   Email-ext plugin •  Create formatted files to be sent with: ${FILE,path="weblinks.txt"} ${FILE,path="changeset.txt"} •  Use env variables ${ENV,var="PackDir"} !   Create nightly summary (perl+XML API) #jenkinsconf
  • 14. Jenkins User Conference Herzelia, July 5 2012 Testing Time ! JSystem based automaton !   Emulators and real devices !   ‘Archive artifacts’ for HTML output !   Groovy post-build plugin: -  Parse console log for failures -  Place badge on build page #jenkinsconf
  • 15. Jenkins User Conference Herzelia, July 5 2012 #jenkinsconf Groovy post-build plugin pattern = ~/.*Automated_Tests_Faileds*:s*(d+).*/ manager.build.logFile.eachLine { line -> matcher = pattern.matcher(line) if(matcher.matches()) { manager.addWarningBadge("Failed tests.") failedTests= matcher.group(1) manager.createSummary("warning.gif").appendText("<h3> $failedTests failed tests!</h3>", false, false, false, "red") manager.buildUnstable() } } def result = manager.build.result def gifname if(result == hudson.model.Result.SUCCESS) gifname="blue.gif" if(result == hudson.model.Result.FAILURE) gifname="red.gif" if(result == hudson.model.Result.UNSTABLE) gifname="yellow.gif" if (manager.build.getHasArtifacts()) manager.createSummary(gifname).appendText("<b><a href="artifact/logs/ index.html">JSystem Report</a></b>", false)
  • 16. Jenkins User Conference Herzelia, July 5 2012 #jenkinsconf Wrapping it all up !   Managing build flows: •  What’s my version? •  Parameterized trigger – pass this on. •  XML API !   Missing features: –  Flow-wide parameters ( Cascading Projects can be used) –  Flow data ( use XML API ) –  Improved build pipeline
  • 17. Jenkins User Conference Herzelia, July 5 2012 Questions? ? ant.weiss@gmail.com #jenkinsconf
  • 18. Jenkins User Conference Herzelia, July 5 2012 Thank You To Our Sponsors Platinum Sponsors Silver Sponsor #jenkinsconf