SlideShare a Scribd company logo
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Hands-On iOS Developments with
Jenkins
Arnaud Héritier
eXo Platform
http://www.exoplatform.com
Mathieu Hausherr
Octo Technology
http://www.octo.com
http://goo.gl/XWGDy 1
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Polls
•  English or french ?
•  Who is already doing iOS developments ?
•  Who is already using JenkinsCI ?
•  Who is already using JenkinsCI to manage
iOS developments ?
http://goo.gl/XWGDy 2
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Arnaud Héritier
"   Jenkins
–  Committer since 2010
–  Maven integration
–  Xcode, Appaloosa plugins …
"   Apache Maven
–  Committer since 2004 and
member of the Project
Management Committee
–  Coauthor of « Apache
Maven »
•  published by Pearson (in
French)
" eXo platform
–  Software Factory
Manager
–  In charge of tools
and methods
"   Contact me
–  http://aheritier.net
–  Twitter : @aheritier
–  Skype : aheritier
3http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Mathieu Hausherr
"   iOS
–  Developer since 2008
"   Other mobile platforms
–  Android, Bada, Blackberry,
Windows Phone 7...
"   Octo Technology
–  Mobile Expert
–  Installation of software
factories for customers
"   Contact me
–  Mail: mha@octo.com
–  Twitter : @mhausherr
4http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Slide legend
http://goo.gl/XWGDy 5
"   If you have a mac with XCode,
follow us.
"   In this slide you have something to
do.
"   In this slide we explain a
workaround. Don’t be afraid by this
explanation. You only need it
tomorrow at home for your own
Software factory.
"   Find these slides here
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Hands-On iOS Developments with Jenkins
"   Concepts
–  iOS specificities
–  Continuous integration
–  Continuous deployment
"   How to
–  Step by step Jenkins server setup
–  Tips & Tricks to deals with Apple’s bug
"   Hands on
–  Prepare the Sample App
–  Setup your Jenkins jobs
–  Deploy your app on your device
6http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
CONCEPTS
Goals of Jenkins-CI on iOS
7http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Reminder: Apple application
provisioning strategy
Validity
Limite of
devices
Apple
validation
Availability
Ad Hoc 1 year 100 NO Everybody
In House 1 year ∞ NO
Only for
companies
App Store For life ∞ YES Everybody
8http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Certificate management pitfalls
•  Certificate with the same name doesn’t
work
•  Create specific keychains per project
–  Never use default keychain
•  “security set-default” command isn’t thread
safe
–  Allow only one executor per server
9http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Why automatic distribution is useful for?
•  Speedup the feedback loop with early
adopters and QA Teams
•  Improve time to market
–  Spend time to develop instead of distribute
•  Resign apps for certificates expiration
–  Ad Hoc and In House certificates expire after one
year
–  Rebuild all your app safely
10http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Continuous integration concepts
Developer
Developer
Source code
+ tests
Unit
tests
SenTesting
Source code
+ tests1
1
2
3
Software
Factory
Building
application
Jenkins
Code
versionning
Git
Static
analysis
Clang
11http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Continuous deployment concepts
Publish
Building
application
Jenkins
Private
store
Appaloosa
Download
Documentation
generation
Apple doc
1
2
4
Code
versionning
Git
Push
5
6
User
devices
Software
Factory
Archive4
Archive
Public
store
App Store
Submit
5
6 Download
12http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Appaloosa concept
13http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Getting your device
UDID
We need your device UDID to
be able to push apps to your
device
1.  Download “UDID sender” on
the App Store
2.  Send UDID via E-Mail to
mha@octo.com
http://goo.gl/XWGDy 14
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
HOW TO
Step by step guide for Jenkins-CI on iOS
15http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Plugins installation
Ø  Home
Ø  Manage Jenkins
Ø  Manage Plugins
Ø  Install these plugins
•  Appaloosa
•  Clang Scan-Build
•  Git
•  Xcode
16http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Plugins configuration
•  By default Xcode plugin
settings should be good for a
standard installation
•  Clang Static Analyzer
binaries have to be
downloaded from
http://clang-
analyzer.llvm.org/ and
extracted on the server or
agent where they’ll be used
•  In “System settings” (Clang
Scan-Build Plugin part) you
need to add at least one
installation.
17http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
What if I soon have a Jenkins on a non
Mac server?
•  Why use a non Mac
Jenkins?
–  Regroup all your jobs
–  Maintain only one
instance of Jenkins
–  Create dependencies
between mobile and not
mobile projects
•  How use a non Mac
Jenkins?
–  Create Mac OS node
–  Only need a SSH
connection
http://goo.gl/XWGDy 18
Master Node
Scheduling
build
Jenkins
Code
versionning
Git
MacOS Node
Building
application
XCode
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Node creation
•  To create an agent
dedicated for xcode builds
you need to create a node
with :
•  A label to select jobs for
which you’ll use it
•  A SSH connection with a
password less private key
•  The path for Clang checker
binaries
19http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Affect job to a node
•  Create a “MacOSX” label
•  Force job to run on
“MacOSX”-labeled nodes
20http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Xcode bug for iOS unit
testing
Source: http://
www.raingrove.com/
2012/03/28/running-ocunit-and-
specta-tests-from-command-
line.html
•  Edit your RunPlatformUnitTests
sudo vim `xcode-select -print-path`/
Platforms/iPhoneSimulator.platform/
Developer/Tools/RunPlatformUnitTests
Replace
Warning ${LINENO} "Skipping tests; the
iPhoneSimulator platform does not currently
support application-hosted tests (TEST_HOST
set)."
By:
export CFFIXED_USER_HOME="$
{BUILT_PRODUCTS_DIR}/UserHome/"
mkdir -p "${CFFIXED_USER_HOME}"
mkdir -p "${CFFIXED_USER_HOME}/Library/
Caches"
mkdir "${CFFIXED_USER_HOME}/Library/
Preferences"
mkdir "${CFFIXED_USER_HOME}/Documents"
export OTHER_TEST_FLAGS="$
{OTHER_TEST_FLAGS} -
RegisterForSystemEvents"
RunTestsForApplication "${TEST_HOST}" "$
{TEST_BUNDLE_PATH}"
21http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Configure your project
for Unit Tests
•  Check run action for your
Test target
•  Share your Scheme
22http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Add Xcode unit testing
build phase
•  Commit your scheme on GIT
•  Use Scheme instead of target
for testing. Use target only for
building.
•  Set SDK to iphonesimulator
•  Set Configuration to Debug
•  Add TEST_AFTER_BUILD=YES in
Custom xcodebuild
arguments
23http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Write a test
-  (void)test_parseRoomsFromDictionary_!
returnObjectsArrayForCorrectDictionnary!
{!
// Given!
NSDictionary *dictionnary =
[NSDictionary dictionaryWithObject:
[NSArray array] forKey:KEY_ROOMS];!
!
// When!
NSArray* rooms = [JUCEventsService
parseRoomsFromDictionary:dictionnary];!
!
// Then!
STAssertTrue([rooms isKindOfClass:
[NSArray class]],nil);!
}
•  Use SenTestKit Framework
•  Add Mock With OCMock
24http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Add clang static
analysis build phase
•  Configure your target
25http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Appaloosa jenkins’
integration
•  Check IPA generation
•  Add Appaloosa step to your
project
•  Receive Push Notification
Token: igjrz4w701ynrkzd2zwh2u450ilg00dg
26http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Publish to the App Store
•  Apple doesn’t provide API
•  Need manual actions
–  On a Mac
–  Without proxy
27http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Generate Apple Doc
•  Install Apple Doc
https://github.com/tomaz/
appledoc
•  Command line
appledoc conf.plist
<outfile>
•  Add an “aggregate” target
to the project
Perform automatic doc
generation locally
28http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
HANDS ON … LET’S GO
Jenkins set-up, from GitHub to your device
29http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Fork on github the
sample project
http://goo.gl/alKgW
And then clone your
fork
git clone git://
github.com/XXXX/
JenkinsSample.git
30http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Setup a continuous
integration job
Setup Git
http://goo.gl/XWGDy 31
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Setup a continuous
integration job
Add a Clang Scan-Build Phase
http://goo.gl/XWGDy 32
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Setup a continuous
integration job
Add an Xcode build step to
execute tests
•  Use a schema (JUC Paris)
•  SDK = iphonesimulator
•  Config = Debug
•  Args = TEST_AFTER_BUILD=YES
•  Clean test reports
http://goo.gl/XWGDy 33
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Setup a continuous
integration job
Activate Clang and unit tests
reports
http://goo.gl/XWGDy 34
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Fix the test
In
JUC ParisTests/JUC_ParisTests.m
Comment the failling test
Commit and push on github
git add .
git commit
git push
Relaunch your build
http://goo.gl/XWGDy 35
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Change your Bundle
Id
In
Project Properties > JUC Paris
Target > Summary
Change
Bundle identifier to
com.jenkins.juc-
paris.app.yourname
Commit and push on github
git add .
git commit
git push
http://goo.gl/XWGDy 36
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Add a deployment
Job
Same github settings
Create an Xcode build step
•  Target = JUC Paris
•  Config = Release
•  Setup versions
•  Build IPA
•  Embedded profile
http://goo.gl/XWGDy 37
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Appaloosa installation
on your device
http://goo.gl/hQ2Ue
http://goo.gl/XWGDy 38
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Appaloosa installation
on your device
Account information
•  Login:
mha+juc@octo.com
•  Password:
jenkins 
http://goo.gl/XWGDy 39
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Add a deployment
Job
Setup Appaloosa with this token :
igjrz4w701ynrkzd2zwh2u450ilg00dg
http://goo.gl/XWGDy 40
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Enjoy
41http://goo.gl/XWGDy
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf
Thank You To Our Sponsors
Platinum Sponsor
Silver Sponsor
Gold Sponsor
42http://goo.gl/XWGDy

More Related Content

What's hot

Zalenium - Czyli lepszy Selenium Grid
Zalenium - Czyli lepszy Selenium GridZalenium - Czyli lepszy Selenium Grid
Zalenium - Czyli lepszy Selenium Grid
Michał Ślęzak
 
Null July - OWTF - Bharadwaj Machiraju
Null July - OWTF - Bharadwaj MachirajuNull July - OWTF - Bharadwaj Machiraju
Null July - OWTF - Bharadwaj Machiraju
Raghunath G
 
Intro to JavaScript Tooling in Visual Studio Code
Intro to JavaScript Tooling in Visual Studio CodeIntro to JavaScript Tooling in Visual Studio Code
Intro to JavaScript Tooling in Visual Studio Code
ColdFusionConference
 
Selenoid + Allure - How to use these tools together?
Selenoid + Allure - How to use these tools together?Selenoid + Allure - How to use these tools together?
Selenoid + Allure - How to use these tools together?
Michał Ślęzak
 
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
Gavin Pickin
 
End to-end testing from rookie to pro
End to-end testing  from rookie to proEnd to-end testing  from rookie to pro
End to-end testing from rookie to pro
Domenico Gemoli
 
Create, test, secure, repeat
Create, test, secure, repeatCreate, test, secure, repeat
Create, test, secure, repeat
Michelangelo van Dam
 
Defcon - Veil-Pillage
Defcon - Veil-PillageDefcon - Veil-Pillage
Defcon - Veil-Pillage
VeilFramework
 
Continuous Integration Testing in Django
Continuous Integration Testing in DjangoContinuous Integration Testing in Django
Continuous Integration Testing in Django
Kevin Harvey
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Ondřej Machulda
 
OWASP OWTF - Summer Storm - OWASP AppSec EU 2013
OWASP OWTF - Summer Storm - OWASP AppSec EU 2013OWASP OWTF - Summer Storm - OWASP AppSec EU 2013
OWASP OWTF - Summer Storm - OWASP AppSec EU 2013
Abraham Aranguren
 
Magento and Continuous Integration - Damian Luszczymak
Magento and Continuous Integration - Damian LuszczymakMagento and Continuous Integration - Damian Luszczymak
Magento and Continuous Integration - Damian Luszczymak
Meet Magento Spain
 
Testing Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade WorkflowTesting Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade Workflow
Pantheon
 
Selenoid & Allure - how to make them work together?
Selenoid & Allure -  how to make them work together?Selenoid & Allure -  how to make them work together?
Selenoid & Allure - how to make them work together?
Michał Ślęzak
 
Java fx smart code econ
Java fx smart code econJava fx smart code econ
Java fx smart code econ
Tom Schindl
 
Cocoa pods
Cocoa podsCocoa pods
Cocoa pods
CocoaHeads France
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
Shreeniwas Iyer
 
Why Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your ClientsWhy Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your Clients
Pantheon
 
PhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
PhoneGap day 2016 EU: Simulating Cordova Plugins in the BrowserPhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
PhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
Ryan J. Salva
 
Building JBoss AS 7 for Fedora
Building JBoss AS 7 for FedoraBuilding JBoss AS 7 for Fedora
Building JBoss AS 7 for Fedora
wolfc71
 

What's hot (20)

Zalenium - Czyli lepszy Selenium Grid
Zalenium - Czyli lepszy Selenium GridZalenium - Czyli lepszy Selenium Grid
Zalenium - Czyli lepszy Selenium Grid
 
Null July - OWTF - Bharadwaj Machiraju
Null July - OWTF - Bharadwaj MachirajuNull July - OWTF - Bharadwaj Machiraju
Null July - OWTF - Bharadwaj Machiraju
 
Intro to JavaScript Tooling in Visual Studio Code
Intro to JavaScript Tooling in Visual Studio CodeIntro to JavaScript Tooling in Visual Studio Code
Intro to JavaScript Tooling in Visual Studio Code
 
Selenoid + Allure - How to use these tools together?
Selenoid + Allure - How to use these tools together?Selenoid + Allure - How to use these tools together?
Selenoid + Allure - How to use these tools together?
 
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
 
End to-end testing from rookie to pro
End to-end testing  from rookie to proEnd to-end testing  from rookie to pro
End to-end testing from rookie to pro
 
Create, test, secure, repeat
Create, test, secure, repeatCreate, test, secure, repeat
Create, test, secure, repeat
 
Defcon - Veil-Pillage
Defcon - Veil-PillageDefcon - Veil-Pillage
Defcon - Veil-Pillage
 
Continuous Integration Testing in Django
Continuous Integration Testing in DjangoContinuous Integration Testing in Django
Continuous Integration Testing in Django
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
 
OWASP OWTF - Summer Storm - OWASP AppSec EU 2013
OWASP OWTF - Summer Storm - OWASP AppSec EU 2013OWASP OWTF - Summer Storm - OWASP AppSec EU 2013
OWASP OWTF - Summer Storm - OWASP AppSec EU 2013
 
Magento and Continuous Integration - Damian Luszczymak
Magento and Continuous Integration - Damian LuszczymakMagento and Continuous Integration - Damian Luszczymak
Magento and Continuous Integration - Damian Luszczymak
 
Testing Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade WorkflowTesting Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade Workflow
 
Selenoid & Allure - how to make them work together?
Selenoid & Allure -  how to make them work together?Selenoid & Allure -  how to make them work together?
Selenoid & Allure - how to make them work together?
 
Java fx smart code econ
Java fx smart code econJava fx smart code econ
Java fx smart code econ
 
Cocoa pods
Cocoa podsCocoa pods
Cocoa pods
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
 
Why Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your ClientsWhy Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your Clients
 
PhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
PhoneGap day 2016 EU: Simulating Cordova Plugins in the BrowserPhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
PhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
 
Building JBoss AS 7 for Fedora
Building JBoss AS 7 for FedoraBuilding JBoss AS 7 for Fedora
Building JBoss AS 7 for Fedora
 

Viewers also liked

CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
eXo Platform
 
CRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineCRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual Machine
eXo Platform
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXo Platform
 
eXo Platform 4.4 Released: Work Better with More Context!
eXo Platform 4.4 Released: Work Better with More Context!eXo Platform 4.4 Released: Work Better with More Context!
eXo Platform 4.4 Released: Work Better with More Context!
eXo Platform
 
When Collaboration Drives Your Digital Transformation
When Collaboration Drives Your Digital TransformationWhen Collaboration Drives Your Digital Transformation
When Collaboration Drives Your Digital Transformation
eXo Platform
 
Introduce Bootstrap 3 to Develop Responsive Design Application
Introduce Bootstrap 3 to Develop Responsive Design ApplicationIntroduce Bootstrap 3 to Develop Responsive Design Application
Introduce Bootstrap 3 to Develop Responsive Design Application
eXo Platform
 
Modèles Business Open Source - Success story eXo
Modèles Business Open Source - Success story eXoModèles Business Open Source - Success story eXo
Modèles Business Open Source - Success story eXo
eXo Platform
 

Viewers also liked (7)

CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
 
CRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineCRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual Machine
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
 
eXo Platform 4.4 Released: Work Better with More Context!
eXo Platform 4.4 Released: Work Better with More Context!eXo Platform 4.4 Released: Work Better with More Context!
eXo Platform 4.4 Released: Work Better with More Context!
 
When Collaboration Drives Your Digital Transformation
When Collaboration Drives Your Digital TransformationWhen Collaboration Drives Your Digital Transformation
When Collaboration Drives Your Digital Transformation
 
Introduce Bootstrap 3 to Develop Responsive Design Application
Introduce Bootstrap 3 to Develop Responsive Design ApplicationIntroduce Bootstrap 3 to Develop Responsive Design Application
Introduce Bootstrap 3 to Develop Responsive Design Application
 
Modèles Business Open Source - Success story eXo
Modèles Business Open Source - Success story eXoModèles Business Open Source - Success story eXo
Modèles Business Open Source - Success story eXo
 

Similar to Hands on iOS developments with Jenkins

Hands on iOS developments with jenkins
Hands on iOS developments with jenkinsHands on iOS developments with jenkins
Hands on iOS developments with jenkins
Arnaud Héritier
 
PHP - Programming language war, does it matter
PHP - Programming language war, does it matterPHP - Programming language war, does it matter
PHP - Programming language war, does it matter
Mizno Kruge
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
AppsDojo
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
Ivo Jansch
 
When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?
Niklas Heidloff
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
Aécio Pires
 
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
NCCOMMS
 
JUC Paris 2012 — Jenkins @ Nuxeo
JUC Paris 2012 — Jenkins @ NuxeoJUC Paris 2012 — Jenkins @ Nuxeo
JUC Paris 2012 — Jenkins @ Nuxeo
Julien Carsique
 
Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)
Ivo Jansch
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
Heiko Voigt
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
CloudBees
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
John M. Wargo
 
Selenium Training in Chennai
Selenium Training in ChennaiSelenium Training in Chennai
Selenium Training in Chennai
Thecreating Experts
 
Solving the Automation Puzzle - how to select the right automation framework ...
Solving the Automation Puzzle - how to select the right automation framework ...Solving the Automation Puzzle - how to select the right automation framework ...
Solving the Automation Puzzle - how to select the right automation framework ...
Ori Bendet
 
JavaOne 2017 CON2902 - Java Code Inspection and Testing Power Tools
JavaOne 2017 CON2902 - Java Code Inspection and Testing Power ToolsJavaOne 2017 CON2902 - Java Code Inspection and Testing Power Tools
JavaOne 2017 CON2902 - Java Code Inspection and Testing Power Tools
Jorge Hidalgo
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Applitools
 
JenkinsPy workshop
JenkinsPy workshop JenkinsPy workshop
JenkinsPy workshop
Haifa Ftirich
 
Developing modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsDeveloping modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular js
Shekhar Gulati
 
TiConf NYC - Documenting Your Titanium Applications
TiConf NYC - Documenting Your Titanium ApplicationsTiConf NYC - Documenting Your Titanium Applications
TiConf NYC - Documenting Your Titanium Applications
Jamil Spain
 

Similar to Hands on iOS developments with Jenkins (20)

Hands on iOS developments with jenkins
Hands on iOS developments with jenkinsHands on iOS developments with jenkins
Hands on iOS developments with jenkins
 
PHP - Programming language war, does it matter
PHP - Programming language war, does it matterPHP - Programming language war, does it matter
PHP - Programming language war, does it matter
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
 
JUC Paris 2012 — Jenkins @ Nuxeo
JUC Paris 2012 — Jenkins @ NuxeoJUC Paris 2012 — Jenkins @ Nuxeo
JUC Paris 2012 — Jenkins @ Nuxeo
 
Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
 
Selenium Training in Chennai
Selenium Training in ChennaiSelenium Training in Chennai
Selenium Training in Chennai
 
Solving the Automation Puzzle - how to select the right automation framework ...
Solving the Automation Puzzle - how to select the right automation framework ...Solving the Automation Puzzle - how to select the right automation framework ...
Solving the Automation Puzzle - how to select the right automation framework ...
 
JavaOne 2017 CON2902 - Java Code Inspection and Testing Power Tools
JavaOne 2017 CON2902 - Java Code Inspection and Testing Power ToolsJavaOne 2017 CON2902 - Java Code Inspection and Testing Power Tools
JavaOne 2017 CON2902 - Java Code Inspection and Testing Power Tools
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
 
JenkinsPy workshop
JenkinsPy workshop JenkinsPy workshop
JenkinsPy workshop
 
Developing modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsDeveloping modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular js
 
TiConf NYC - Documenting Your Titanium Applications
TiConf NYC - Documenting Your Titanium ApplicationsTiConf NYC - Documenting Your Titanium Applications
TiConf NYC - Documenting Your Titanium Applications
 

More from eXo Platform

Workshop blockchain au service de l engagement - 20-3-2019
Workshop blockchain au service de l engagement - 20-3-2019Workshop blockchain au service de l engagement - 20-3-2019
Workshop blockchain au service de l engagement - 20-3-2019
eXo Platform
 
Digitalisation RH –Avec ou sans les DRH
Digitalisation RH –Avec ou sans les DRHDigitalisation RH –Avec ou sans les DRH
Digitalisation RH –Avec ou sans les DRH
eXo Platform
 
De l'Intranet institutionnel à la Digital Workplace : la démarche du groupe d...
De l'Intranet institutionnel à la Digital Workplace : la démarche du groupe d...De l'Intranet institutionnel à la Digital Workplace : la démarche du groupe d...
De l'Intranet institutionnel à la Digital Workplace : la démarche du groupe d...
eXo Platform
 
L’Intranet, socle de l’entreprise digitale !
L’Intranet, socle de l’entreprise digitale !L’Intranet, socle de l’entreprise digitale !
L’Intranet, socle de l’entreprise digitale !
eXo Platform
 
Un hub collaboratif unique et intégré : les pour et les contre
Un hub collaboratif unique et intégré : les pour et les contreUn hub collaboratif unique et intégré : les pour et les contre
Un hub collaboratif unique et intégré : les pour et les contre
eXo Platform
 
Intranet Project: Roll-out Strategy & Pain Points to consider
Intranet Project: Roll-out Strategy & Pain Points to considerIntranet Project: Roll-out Strategy & Pain Points to consider
Intranet Project: Roll-out Strategy & Pain Points to consider
eXo Platform
 
How we migrate 350+ Maven CI jobs to Pipeline as Code with Jenkins 2 and Docker
How we migrate 350+ Maven CI jobs to Pipeline as Code with Jenkins 2 and DockerHow we migrate 350+ Maven CI jobs to Pipeline as Code with Jenkins 2 and Docker
How we migrate 350+ Maven CI jobs to Pipeline as Code with Jenkins 2 and Docker
eXo Platform
 
Peut-on décider un changement de culture d'entreprise?
Peut-on décider un changement de culture d'entreprise? Peut-on décider un changement de culture d'entreprise?
Peut-on décider un changement de culture d'entreprise?
eXo Platform
 
Conférence sur la Digital Workplace au Salon Intranet & Collaboratif
Conférence sur la Digital Workplace au Salon Intranet & CollaboratifConférence sur la Digital Workplace au Salon Intranet & Collaboratif
Conférence sur la Digital Workplace au Salon Intranet & Collaboratif
eXo Platform
 
eXo Platform - Votre plateforme de travail collaboratif
eXo Platform - Votre plateforme de travail collaboratifeXo Platform - Votre plateforme de travail collaboratif
eXo Platform - Votre plateforme de travail collaboratif
eXo Platform
 
Solutions to your employee disengagement
Solutions to your employee disengagementSolutions to your employee disengagement
Solutions to your employee disengagement
eXo Platform
 
Performance testing and_reporting_with_j_meter by Le Van Nghi
Performance testing and_reporting_with_j_meter by  Le Van NghiPerformance testing and_reporting_with_j_meter by  Le Van Nghi
Performance testing and_reporting_with_j_meter by Le Van Nghi
eXo Platform
 

More from eXo Platform (12)

Workshop blockchain au service de l engagement - 20-3-2019
Workshop blockchain au service de l engagement - 20-3-2019Workshop blockchain au service de l engagement - 20-3-2019
Workshop blockchain au service de l engagement - 20-3-2019
 
Digitalisation RH –Avec ou sans les DRH
Digitalisation RH –Avec ou sans les DRHDigitalisation RH –Avec ou sans les DRH
Digitalisation RH –Avec ou sans les DRH
 
De l'Intranet institutionnel à la Digital Workplace : la démarche du groupe d...
De l'Intranet institutionnel à la Digital Workplace : la démarche du groupe d...De l'Intranet institutionnel à la Digital Workplace : la démarche du groupe d...
De l'Intranet institutionnel à la Digital Workplace : la démarche du groupe d...
 
L’Intranet, socle de l’entreprise digitale !
L’Intranet, socle de l’entreprise digitale !L’Intranet, socle de l’entreprise digitale !
L’Intranet, socle de l’entreprise digitale !
 
Un hub collaboratif unique et intégré : les pour et les contre
Un hub collaboratif unique et intégré : les pour et les contreUn hub collaboratif unique et intégré : les pour et les contre
Un hub collaboratif unique et intégré : les pour et les contre
 
Intranet Project: Roll-out Strategy & Pain Points to consider
Intranet Project: Roll-out Strategy & Pain Points to considerIntranet Project: Roll-out Strategy & Pain Points to consider
Intranet Project: Roll-out Strategy & Pain Points to consider
 
How we migrate 350+ Maven CI jobs to Pipeline as Code with Jenkins 2 and Docker
How we migrate 350+ Maven CI jobs to Pipeline as Code with Jenkins 2 and DockerHow we migrate 350+ Maven CI jobs to Pipeline as Code with Jenkins 2 and Docker
How we migrate 350+ Maven CI jobs to Pipeline as Code with Jenkins 2 and Docker
 
Peut-on décider un changement de culture d'entreprise?
Peut-on décider un changement de culture d'entreprise? Peut-on décider un changement de culture d'entreprise?
Peut-on décider un changement de culture d'entreprise?
 
Conférence sur la Digital Workplace au Salon Intranet & Collaboratif
Conférence sur la Digital Workplace au Salon Intranet & CollaboratifConférence sur la Digital Workplace au Salon Intranet & Collaboratif
Conférence sur la Digital Workplace au Salon Intranet & Collaboratif
 
eXo Platform - Votre plateforme de travail collaboratif
eXo Platform - Votre plateforme de travail collaboratifeXo Platform - Votre plateforme de travail collaboratif
eXo Platform - Votre plateforme de travail collaboratif
 
Solutions to your employee disengagement
Solutions to your employee disengagementSolutions to your employee disengagement
Solutions to your employee disengagement
 
Performance testing and_reporting_with_j_meter by Le Van Nghi
Performance testing and_reporting_with_j_meter by  Le Van NghiPerformance testing and_reporting_with_j_meter by  Le Van Nghi
Performance testing and_reporting_with_j_meter by Le Van Nghi
 

Recently uploaded

OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 

Recently uploaded (20)

OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 

Hands on iOS developments with Jenkins

  • 1. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Hands-On iOS Developments with Jenkins Arnaud Héritier eXo Platform http://www.exoplatform.com Mathieu Hausherr Octo Technology http://www.octo.com http://goo.gl/XWGDy 1
  • 2. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Polls •  English or french ? •  Who is already doing iOS developments ? •  Who is already using JenkinsCI ? •  Who is already using JenkinsCI to manage iOS developments ? http://goo.gl/XWGDy 2
  • 3. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Arnaud Héritier "   Jenkins –  Committer since 2010 –  Maven integration –  Xcode, Appaloosa plugins … "   Apache Maven –  Committer since 2004 and member of the Project Management Committee –  Coauthor of « Apache Maven » •  published by Pearson (in French) " eXo platform –  Software Factory Manager –  In charge of tools and methods "   Contact me –  http://aheritier.net –  Twitter : @aheritier –  Skype : aheritier 3http://goo.gl/XWGDy
  • 4. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Mathieu Hausherr "   iOS –  Developer since 2008 "   Other mobile platforms –  Android, Bada, Blackberry, Windows Phone 7... "   Octo Technology –  Mobile Expert –  Installation of software factories for customers "   Contact me –  Mail: mha@octo.com –  Twitter : @mhausherr 4http://goo.gl/XWGDy
  • 5. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Slide legend http://goo.gl/XWGDy 5 "   If you have a mac with XCode, follow us. "   In this slide you have something to do. "   In this slide we explain a workaround. Don’t be afraid by this explanation. You only need it tomorrow at home for your own Software factory. "   Find these slides here
  • 6. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Hands-On iOS Developments with Jenkins "   Concepts –  iOS specificities –  Continuous integration –  Continuous deployment "   How to –  Step by step Jenkins server setup –  Tips & Tricks to deals with Apple’s bug "   Hands on –  Prepare the Sample App –  Setup your Jenkins jobs –  Deploy your app on your device 6http://goo.gl/XWGDy
  • 7. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf CONCEPTS Goals of Jenkins-CI on iOS 7http://goo.gl/XWGDy
  • 8. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Reminder: Apple application provisioning strategy Validity Limite of devices Apple validation Availability Ad Hoc 1 year 100 NO Everybody In House 1 year ∞ NO Only for companies App Store For life ∞ YES Everybody 8http://goo.gl/XWGDy
  • 9. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Certificate management pitfalls •  Certificate with the same name doesn’t work •  Create specific keychains per project –  Never use default keychain •  “security set-default” command isn’t thread safe –  Allow only one executor per server 9http://goo.gl/XWGDy
  • 10. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Why automatic distribution is useful for? •  Speedup the feedback loop with early adopters and QA Teams •  Improve time to market –  Spend time to develop instead of distribute •  Resign apps for certificates expiration –  Ad Hoc and In House certificates expire after one year –  Rebuild all your app safely 10http://goo.gl/XWGDy
  • 11. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Continuous integration concepts Developer Developer Source code + tests Unit tests SenTesting Source code + tests1 1 2 3 Software Factory Building application Jenkins Code versionning Git Static analysis Clang 11http://goo.gl/XWGDy
  • 12. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Continuous deployment concepts Publish Building application Jenkins Private store Appaloosa Download Documentation generation Apple doc 1 2 4 Code versionning Git Push 5 6 User devices Software Factory Archive4 Archive Public store App Store Submit 5 6 Download 12http://goo.gl/XWGDy
  • 13. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Appaloosa concept 13http://goo.gl/XWGDy
  • 14. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Getting your device UDID We need your device UDID to be able to push apps to your device 1.  Download “UDID sender” on the App Store 2.  Send UDID via E-Mail to mha@octo.com http://goo.gl/XWGDy 14
  • 15. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf HOW TO Step by step guide for Jenkins-CI on iOS 15http://goo.gl/XWGDy
  • 16. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Plugins installation Ø  Home Ø  Manage Jenkins Ø  Manage Plugins Ø  Install these plugins •  Appaloosa •  Clang Scan-Build •  Git •  Xcode 16http://goo.gl/XWGDy
  • 17. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Plugins configuration •  By default Xcode plugin settings should be good for a standard installation •  Clang Static Analyzer binaries have to be downloaded from http://clang- analyzer.llvm.org/ and extracted on the server or agent where they’ll be used •  In “System settings” (Clang Scan-Build Plugin part) you need to add at least one installation. 17http://goo.gl/XWGDy
  • 18. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf What if I soon have a Jenkins on a non Mac server? •  Why use a non Mac Jenkins? –  Regroup all your jobs –  Maintain only one instance of Jenkins –  Create dependencies between mobile and not mobile projects •  How use a non Mac Jenkins? –  Create Mac OS node –  Only need a SSH connection http://goo.gl/XWGDy 18 Master Node Scheduling build Jenkins Code versionning Git MacOS Node Building application XCode
  • 19. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Node creation •  To create an agent dedicated for xcode builds you need to create a node with : •  A label to select jobs for which you’ll use it •  A SSH connection with a password less private key •  The path for Clang checker binaries 19http://goo.gl/XWGDy
  • 20. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Affect job to a node •  Create a “MacOSX” label •  Force job to run on “MacOSX”-labeled nodes 20http://goo.gl/XWGDy
  • 21. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Xcode bug for iOS unit testing Source: http:// www.raingrove.com/ 2012/03/28/running-ocunit-and- specta-tests-from-command- line.html •  Edit your RunPlatformUnitTests sudo vim `xcode-select -print-path`/ Platforms/iPhoneSimulator.platform/ Developer/Tools/RunPlatformUnitTests Replace Warning ${LINENO} "Skipping tests; the iPhoneSimulator platform does not currently support application-hosted tests (TEST_HOST set)." By: export CFFIXED_USER_HOME="$ {BUILT_PRODUCTS_DIR}/UserHome/" mkdir -p "${CFFIXED_USER_HOME}" mkdir -p "${CFFIXED_USER_HOME}/Library/ Caches" mkdir "${CFFIXED_USER_HOME}/Library/ Preferences" mkdir "${CFFIXED_USER_HOME}/Documents" export OTHER_TEST_FLAGS="$ {OTHER_TEST_FLAGS} - RegisterForSystemEvents" RunTestsForApplication "${TEST_HOST}" "$ {TEST_BUNDLE_PATH}" 21http://goo.gl/XWGDy
  • 22. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Configure your project for Unit Tests •  Check run action for your Test target •  Share your Scheme 22http://goo.gl/XWGDy
  • 23. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Add Xcode unit testing build phase •  Commit your scheme on GIT •  Use Scheme instead of target for testing. Use target only for building. •  Set SDK to iphonesimulator •  Set Configuration to Debug •  Add TEST_AFTER_BUILD=YES in Custom xcodebuild arguments 23http://goo.gl/XWGDy
  • 24. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Write a test -  (void)test_parseRoomsFromDictionary_! returnObjectsArrayForCorrectDictionnary! {! // Given! NSDictionary *dictionnary = [NSDictionary dictionaryWithObject: [NSArray array] forKey:KEY_ROOMS];! ! // When! NSArray* rooms = [JUCEventsService parseRoomsFromDictionary:dictionnary];! ! // Then! STAssertTrue([rooms isKindOfClass: [NSArray class]],nil);! } •  Use SenTestKit Framework •  Add Mock With OCMock 24http://goo.gl/XWGDy
  • 25. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Add clang static analysis build phase •  Configure your target 25http://goo.gl/XWGDy
  • 26. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Appaloosa jenkins’ integration •  Check IPA generation •  Add Appaloosa step to your project •  Receive Push Notification Token: igjrz4w701ynrkzd2zwh2u450ilg00dg 26http://goo.gl/XWGDy
  • 27. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Publish to the App Store •  Apple doesn’t provide API •  Need manual actions –  On a Mac –  Without proxy 27http://goo.gl/XWGDy
  • 28. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Generate Apple Doc •  Install Apple Doc https://github.com/tomaz/ appledoc •  Command line appledoc conf.plist <outfile> •  Add an “aggregate” target to the project Perform automatic doc generation locally 28http://goo.gl/XWGDy
  • 29. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf HANDS ON … LET’S GO Jenkins set-up, from GitHub to your device 29http://goo.gl/XWGDy
  • 30. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Fork on github the sample project http://goo.gl/alKgW And then clone your fork git clone git:// github.com/XXXX/ JenkinsSample.git 30http://goo.gl/XWGDy
  • 31. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Setup a continuous integration job Setup Git http://goo.gl/XWGDy 31
  • 32. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Setup a continuous integration job Add a Clang Scan-Build Phase http://goo.gl/XWGDy 32
  • 33. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Setup a continuous integration job Add an Xcode build step to execute tests •  Use a schema (JUC Paris) •  SDK = iphonesimulator •  Config = Debug •  Args = TEST_AFTER_BUILD=YES •  Clean test reports http://goo.gl/XWGDy 33
  • 34. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Setup a continuous integration job Activate Clang and unit tests reports http://goo.gl/XWGDy 34
  • 35. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Fix the test In JUC ParisTests/JUC_ParisTests.m Comment the failling test Commit and push on github git add . git commit git push Relaunch your build http://goo.gl/XWGDy 35
  • 36. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Change your Bundle Id In Project Properties > JUC Paris Target > Summary Change Bundle identifier to com.jenkins.juc- paris.app.yourname Commit and push on github git add . git commit git push http://goo.gl/XWGDy 36
  • 37. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Add a deployment Job Same github settings Create an Xcode build step •  Target = JUC Paris •  Config = Release •  Setup versions •  Build IPA •  Embedded profile http://goo.gl/XWGDy 37
  • 38. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Appaloosa installation on your device http://goo.gl/hQ2Ue http://goo.gl/XWGDy 38
  • 39. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Appaloosa installation on your device Account information •  Login: mha+juc@octo.com •  Password: jenkins  http://goo.gl/XWGDy 39
  • 40. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Add a deployment Job Setup Appaloosa with this token : igjrz4w701ynrkzd2zwh2u450ilg00dg http://goo.gl/XWGDy 40
  • 41. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Enjoy 41http://goo.gl/XWGDy
  • 42. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Thank You To Our Sponsors Platinum Sponsor Silver Sponsor Gold Sponsor 42http://goo.gl/XWGDy