SlideShare a Scribd company logo
CONTINUOUS CROSS PLATFORM
MOBILE DEVELOPMENT WITH JENKINS
ADAM PAXTON
PHOTO OP
SLIDES AND NOTES
bit.ly/jenkinsnotes
HELLO
ADAM PAXTON
▸ Freelance Mobile App Developer polancomedia.com
▸ iOS, Android, Appcelerator Titanium
▸ Twitter: @adampax
▸ Github: adampax
GOALS
WHAT WE WANT TO DO TODAY
▸ Will this help our team?
▸ Pros, cons for using Jenkins
▸ Alternatives
▸ Stuff we learned when setting it up.
▸ Be the boss!
RUN THE APP, MAKE SURE THE TESTS PASS, BUILD IT
FOR DISTRIBUTION, UPLOAD IT TO THE BUILD
DISTRIBUTION SERVICE, EMAIL TESTERS. THEN DO IT
ALL AGAIN FOR THE OTHER PLATFORM. AND THEN DO
IT AGAIN TOMORROW FOR THE NEXT FEATURE OR BUG
FIX.
- You, every single day
LET’S GET A BUILD OUT TO TEST…
THAT’S NOT THE HALF OF IT
DON’T FORGET…
▸ Pull the latest commit?
▸ Are we doing unit tests? Did those
run?
▸ Where are those keys?
▸ What version of Xcode did we build
on last time?
▸ Which branch?
▸ What’s the password to the
distribution service?
▸ Who needs this version sent to
them?
▸ Where was the build from yesterday?
▸ Who did that build?
▸ What version of the sdk did they use?
▸ Wait, what was that password again?
▸ No, I meant the keystore password,
sorry.
▸ Err, actually, the alias?
▸ I don’t know what it is, either.
▸ How do I run the tests?
OK, LET’S MAKE SOMEONE THE
BUILD MASTER.
THAT’S A LOT OF STUFF FOR ALL OF US
TO REMEMBER
LET’S HAVE ONE PERSON REMEMBER TO DO ALL THAT STUFF.
PROBLEM SOLVED, RIGHT?
▸ Sometimes multiple builds go out a day (then double that,
since we are cross-platform devs).
▸ Takes our build master’s dev time, and is disruptive.
▸ Multiple people coordinating to do build.
▸ Sometimes we like to go home, or even take vacation!
BUILD A ROBOT.
THERE HAS TO BE A BETTER WAY
FITTER HAPPIER
AUTOMATE THE TEDIOUS BITS
▸ Identify your workflow
▸ Start with the core ‘build’
▸ Expand forward and backward from there
15 STEPS
CURRENT SETUP
PULL
CHANGES
FROM GIT
TEST IOS
TEST
ANDROID
BUILD AD
HOC
UPLOAD
IPA
UPLOAD
APK
EMAIL
TESTERS
Someone asks me 

for a build
…So I ask buildmaster
Build master tells me tests failed,

back to step 1
So who should

get notified?
Do we need to sign the apk?
New devices for the

provisioning profile?
THEN A SHEER DROP
MOVING TO THE BUILD SERVER
TEST IOS, ANDROID

BUILD AD HOC
Jobs
UPLOAD IPA, APK

EMAIL TESTERS
Plugin
PULL CHANGES
FROM GIT
Plugin
Build Server
THEN A SHEER DROP
INTERACT WITH THE BUILD SERVER
Build Server
Trigger a build
Tell us if build failed
Send out the build!

Excelsior!
AUTOMATING WORKFLOW.
WHAT ARE WE REALLY DOING?
JIGSAW FALLING INTO PLACE
DOESN’T THIS FEEL FAMILIAR?
▸ We’re refactoring our workflow.
function doBuild(opts, success, error) {

…

}
MORNING BELL
HOW TO START A BUILD
▸ Watch for changes to a repository
▸ At regular intervals, every x hours
▸ When another build completes
▸ Via URL, cURL POST
▸ etc.
LET DOWN
TELL US IF BUILD FAILED
▸ Usually email logs to us
▸ What test failed?
▸ Blame the last commiter?
▸ Pretty much anything else you want
FUL STOP
POST BUILD ACTIONS
▸ Upload to our build distribution service, email users
▸ Publish it?
▸ Trigger another build
▸ Anything else you want
OK COMPUTER
WHAT WE NEED
▸ A way to have this stuff done for us
▸ We’re cross platform, so it has to build iOS and Android
▸ Mac for iOS
▸ Android, Java, stuff like that
▸ Whatever our x-platform tool requires, like Node.js
▸ We’re all remote, so has to be remotely accessible
NO SURPRISES
HOW ABOUT JENKINS
▸ An automation server
▸ Open source, strong community
▸ Web admin
▸ Insanely flexible (can be overwhelming!)
▸ Probably already a plugin for what you need
▸ jenkins.io
I MIGHT BE WRONG
CONS
▸ Every person’s setup is a unique snowflake
▸ Need to maintain the build server
▸ Flexibility can indeed be overwhelming
▸ Ramp up
USING JENKINS.
WHAT WORKED FOR US, AND WHAT
DIDN’T.
HOW WE USE JENKINS
FIRST, SOME TERMINOLOGY
▸ Job/Project: Any task that you configure Jenkins to run
▸ Build: Result of one run of a job
▸ Build Trigger: How the build is started
▸ Build Step: An action performed by the build, such as run a
command
▸ Post Build Action: What to do when build completes
▸ Workspace: Temporary working directory used for building a job.
▸ Plugin: Extend the functionality of Jenkins w/ core or 3rd party plugins
▸ Pipeline: New(ish)! Define an entire job with a script
HOW WE USE JENKINS
INSTALL
▸ A fairly recent Mac w/ latest OS
▸ Install Java 7 or 8 first
▸ Jenkins version 2 LTS
▸ Mac Installer
▸ Installs Applications/Jenkins/jenkins.war
▸ Creates a launch daemon that runs jenkins
▸ Creates a ‘jenkins’ user that runs the jobs/projects
▸ Puts configuration in users/shared/jenkins/home
HOW WE USE JENKINS
INSTALL
▸ Our first hurdle: the ‘jenkins’ user
▸ All jobs run as jenkins user, so it needs access to any
sdks, folders, etc.
▸ Can either log in as the jenkins user to set up your dev
environment, or do a lot of ‘sudo su’ and ‘chmod’
▸ Both options can work
HOW WE USE JENKINS
MORE INSTALLATION GOTCHAS
▸ Installing developer keys/certificates into keychain
▸ If connected via VNC /remote desktop, the password will fail
silently
▸ Need to connect a physical keyboard to enter pw
▸ Using Node.js with nvm or n didn’t work for us, neither did
Nodejs Jenkins plugin
▸ Installed node.js globally
▸ export PATH=“/usr/local/bin:$PATH" in any build step shell
HOW WE USE JENKINS
MOVE THE CORE BUILD
▸ Install your dev requirements
▸ Xcode
▸ Android sdks
▸ X-Platform sdk
▸ etc
▸ Make sure you can run a build manually, start to finish, as
jenkins user
HOW WE USE JENKINS
THE WEB UI
▸ localhost:8080
▸ Jenkins 2 has improved the default security settings,
prompting you to set up security during Setup Wizard
▸ Home page shows list of jobs and their stats
▸ Nav column for Managing jenkins, users, etc
HOW WE USE JENKINS
ON SECURITY
▸ Not wide-open by default anymore in v2
▸ Create accounts, add to group
▸ For job level access:
▸ ‘Project-based Matrix Authorization Strategy’ sounds a lot more
complex than it really is
▸ Manage Jenkins > Configure Global Security
▸ Then set user/group access on each job
▸ Consider using VPN for remote access
HOW WE USE JENKINS
GLOBAL SETTINGS
▸ Manage Jenkins > Manage Plugins
▸ Github plugin (as opposed to just ‘git’ plugin)
▸ Mask Passwords plugin
▸ TestFairy Plugin
▸ wiki.jenkins-ci.org/display/JENKINS/Plugins
▸ Manage Jenkins > Configure System
▸ Configure email
▸ Git settings
HOW WE USE JENKINS
CREATING A JOB
▸ New Item > Freestyle Project
▸ Security
▸ Parameterized build?
▸ Prompt user for build inputs, or pass via url args
▸ use them as env variables $paramName
▸ SCM
▸ Build Triggers
▸ Build steps
▸ Post-build actions
HOW WE USE JENKINS
CONFIGURING A JOB
HOW WE USE JENKINS
SCM AND TRIGGERS
HOW WE USE JENKINS
BUILD STEPS
HOW WE USE JENKINS
POST BUILD
HOW WE USE JENKINS
AFTER A BUILD
▸ Check the build console output.
▸ You will do many of these.
HOW WE USE JENKINS
ALTERNATIVES
▸ Bamboo - Atlassian
▸ travis-ci.org
▸ circleci.com
▸ codeship.com
▸ buddybuild.com
HOW WE USE JENKINS
NEXT STEPS
▸ Keep automating more items when it makes sense
▸ Ongoing process
▸ fastlane.tools
▸ Pay attention to tests!
▸ Move scripts to source control
▸ Pipelines
HOW WE USE JENKINS
WHAT WE LEARNED
▸ Complete automation or CI wasn’t always best for us
▸ Stepped back from having a commit trigger a build all
the way to the user
▸ Making use of URL/params to trigger builds as needed
▸ We keep finding more stuff to automate
EXIT MUSIC
TAKEAWAYS
▸ Teams of any size will benefit from automation
▸ Save time!
▸ More consistent testing and distribution
▸ Your workflow and methodologies will fit
▸ Start with the core build, move from there
▸ You will find more ways to automate, improve workflow
THANKS Adam

is bit.ly/jenkinsnotes

Cool
Ad

More Related Content

What's hot (20)

Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins Docker
Alex Soto
 
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
Troublemaker Khunpech
 
Game of Codes: the Battle for CI
Game of Codes: the Battle for CIGame of Codes: the Battle for CI
Game of Codes: the Battle for CI
Atlassian
 
Improve your Java Environment with Docker
Improve your Java Environment with DockerImprove your Java Environment with Docker
Improve your Java Environment with Docker
HanoiJUG
 
Dev to Delivery with Puppet, Vagrant and AWS
Dev to Delivery with Puppet, Vagrant and AWSDev to Delivery with Puppet, Vagrant and AWS
Dev to Delivery with Puppet, Vagrant and AWS
Puppet
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
Tikal Knowledge
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginners
BugRaptors
 
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony AlvarezDevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
Anthony Alvarez
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
Jonathan Holloway
 
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
Mandi Walls
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating Jenkins
NETWAYS
 
Bringing Javascript to the Desktop with Electron
Bringing Javascript to the Desktop with ElectronBringing Javascript to the Desktop with Electron
Bringing Javascript to the Desktop with Electron
Nir Noy
 
Production ready word press
Production ready word pressProduction ready word press
Production ready word press
Edmund Turbin
 
node-webkit : Make a magic from your a desktop app to desktop app!
node-webkit : Make a magic from your a desktop app to desktop app!node-webkit : Make a magic from your a desktop app to desktop app!
node-webkit : Make a magic from your a desktop app to desktop app!
욱진 양
 
Jenkins talk at Silicon valley DevOps meetup
Jenkins talk at Silicon valley DevOps meetupJenkins talk at Silicon valley DevOps meetup
Jenkins talk at Silicon valley DevOps meetup
CloudBees
 
vodQA(Pune) 2018 - Visual testing of web apps in headless environment manis...
vodQA(Pune) 2018 - Visual testing of web apps in headless environment   manis...vodQA(Pune) 2018 - Visual testing of web apps in headless environment   manis...
vodQA(Pune) 2018 - Visual testing of web apps in headless environment manis...
vodQA
 
Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two Approaches
Ross Snyder
 
Jenkins Best Practices
Jenkins Best PracticesJenkins Best Practices
Jenkins Best Practices
Gergely Brautigam
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
Knoldus Inc.
 
vodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in Testing
vodQA
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins Docker
Alex Soto
 
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
Troublemaker Khunpech
 
Game of Codes: the Battle for CI
Game of Codes: the Battle for CIGame of Codes: the Battle for CI
Game of Codes: the Battle for CI
Atlassian
 
Improve your Java Environment with Docker
Improve your Java Environment with DockerImprove your Java Environment with Docker
Improve your Java Environment with Docker
HanoiJUG
 
Dev to Delivery with Puppet, Vagrant and AWS
Dev to Delivery with Puppet, Vagrant and AWSDev to Delivery with Puppet, Vagrant and AWS
Dev to Delivery with Puppet, Vagrant and AWS
Puppet
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
Tikal Knowledge
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginners
BugRaptors
 
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony AlvarezDevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
Anthony Alvarez
 
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
Mandi Walls
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating Jenkins
NETWAYS
 
Bringing Javascript to the Desktop with Electron
Bringing Javascript to the Desktop with ElectronBringing Javascript to the Desktop with Electron
Bringing Javascript to the Desktop with Electron
Nir Noy
 
Production ready word press
Production ready word pressProduction ready word press
Production ready word press
Edmund Turbin
 
node-webkit : Make a magic from your a desktop app to desktop app!
node-webkit : Make a magic from your a desktop app to desktop app!node-webkit : Make a magic from your a desktop app to desktop app!
node-webkit : Make a magic from your a desktop app to desktop app!
욱진 양
 
Jenkins talk at Silicon valley DevOps meetup
Jenkins talk at Silicon valley DevOps meetupJenkins talk at Silicon valley DevOps meetup
Jenkins talk at Silicon valley DevOps meetup
CloudBees
 
vodQA(Pune) 2018 - Visual testing of web apps in headless environment manis...
vodQA(Pune) 2018 - Visual testing of web apps in headless environment   manis...vodQA(Pune) 2018 - Visual testing of web apps in headless environment   manis...
vodQA(Pune) 2018 - Visual testing of web apps in headless environment manis...
vodQA
 
Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two Approaches
Ross Snyder
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
Knoldus Inc.
 
vodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in Testing
vodQA
 

Viewers also liked (20)

The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
Adam Paxton
 
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Adam Paxton
 
Build Custom Maps with Appcelerator Titanium, Mapbox and OpenStreetMap - tiCo...
Build Custom Maps with Appcelerator Titanium, Mapbox and OpenStreetMap - tiCo...Build Custom Maps with Appcelerator Titanium, Mapbox and OpenStreetMap - tiCo...
Build Custom Maps with Appcelerator Titanium, Mapbox and OpenStreetMap - tiCo...
Adam Paxton
 
Trivadis TechEvent 2016 State of the Private Cloud - Oracle Edition by Bernha...
Trivadis TechEvent 2016 State of the Private Cloud - Oracle Edition by Bernha...Trivadis TechEvent 2016 State of the Private Cloud - Oracle Edition by Bernha...
Trivadis TechEvent 2016 State of the Private Cloud - Oracle Edition by Bernha...
Trivadis
 
Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in android
Javier Gamarra
 
Html5, Native and Platform based Mobile Applications
Html5, Native and Platform based Mobile ApplicationsHtml5, Native and Platform based Mobile Applications
Html5, Native and Platform based Mobile Applications
Yoss Cohen
 
Connected & Disconnected Apps with Azure Mobile Apps
Connected & Disconnected Apps with Azure Mobile AppsConnected & Disconnected Apps with Azure Mobile Apps
Connected & Disconnected Apps with Azure Mobile Apps
Pranav Ainavolu
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation tool
Ioan Eugen Stan
 
Continuous Integration for your Android projects
Continuous Integration for your Android projectsContinuous Integration for your Android projects
Continuous Integration for your Android projects
Sergii Zhuk
 
Native vs. Mobile Web vs. Hybrid Apps for Mobile Development
Native vs. Mobile Web vs. Hybrid Apps for Mobile DevelopmentNative vs. Mobile Web vs. Hybrid Apps for Mobile Development
Native vs. Mobile Web vs. Hybrid Apps for Mobile Development
Jason Grigsby
 
HTML5 or Android for Mobile Development?
HTML5 or Android for Mobile Development?HTML5 or Android for Mobile Development?
HTML5 or Android for Mobile Development?
Reto Meier
 
Hands on continouous delivery, I TAKE 2014
Hands on continouous delivery, I TAKE 2014Hands on continouous delivery, I TAKE 2014
Hands on continouous delivery, I TAKE 2014
Ioan Eugen Stan
 
20160915 automation with_gradle
20160915 automation with_gradle20160915 automation with_gradle
20160915 automation with_gradle
Yuki Nanri
 
Los vatos
Los vatosLos vatos
Los vatos
losvatoslocos
 
Juc west-how to build a jenkins db the wrong way!
Juc west-how to build a jenkins db the wrong way!Juc west-how to build a jenkins db the wrong way!
Juc west-how to build a jenkins db the wrong way!
Michael Barbine
 
Jenkins Workflow - An Introduction
Jenkins Workflow - An IntroductionJenkins Workflow - An Introduction
Jenkins Workflow - An Introduction
Ben Snape
 
20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2 20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2
TSE-JU LIN(Louis)
 
Using Jenkins XML API
Using Jenkins XML APIUsing Jenkins XML API
Using Jenkins XML API
Anton Weiss
 
DevOps – SonarQube
DevOps – SonarQubeDevOps – SonarQube
DevOps – SonarQube
Delta-N
 
Track code quality with SonarQube
Track code quality with SonarQubeTrack code quality with SonarQube
Track code quality with SonarQube
Dmytro Patserkovskyi
 
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
Adam Paxton
 
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Adam Paxton
 
Build Custom Maps with Appcelerator Titanium, Mapbox and OpenStreetMap - tiCo...
Build Custom Maps with Appcelerator Titanium, Mapbox and OpenStreetMap - tiCo...Build Custom Maps with Appcelerator Titanium, Mapbox and OpenStreetMap - tiCo...
Build Custom Maps with Appcelerator Titanium, Mapbox and OpenStreetMap - tiCo...
Adam Paxton
 
Trivadis TechEvent 2016 State of the Private Cloud - Oracle Edition by Bernha...
Trivadis TechEvent 2016 State of the Private Cloud - Oracle Edition by Bernha...Trivadis TechEvent 2016 State of the Private Cloud - Oracle Edition by Bernha...
Trivadis TechEvent 2016 State of the Private Cloud - Oracle Edition by Bernha...
Trivadis
 
Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in android
Javier Gamarra
 
Html5, Native and Platform based Mobile Applications
Html5, Native and Platform based Mobile ApplicationsHtml5, Native and Platform based Mobile Applications
Html5, Native and Platform based Mobile Applications
Yoss Cohen
 
Connected & Disconnected Apps with Azure Mobile Apps
Connected & Disconnected Apps with Azure Mobile AppsConnected & Disconnected Apps with Azure Mobile Apps
Connected & Disconnected Apps with Azure Mobile Apps
Pranav Ainavolu
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation tool
Ioan Eugen Stan
 
Continuous Integration for your Android projects
Continuous Integration for your Android projectsContinuous Integration for your Android projects
Continuous Integration for your Android projects
Sergii Zhuk
 
Native vs. Mobile Web vs. Hybrid Apps for Mobile Development
Native vs. Mobile Web vs. Hybrid Apps for Mobile DevelopmentNative vs. Mobile Web vs. Hybrid Apps for Mobile Development
Native vs. Mobile Web vs. Hybrid Apps for Mobile Development
Jason Grigsby
 
HTML5 or Android for Mobile Development?
HTML5 or Android for Mobile Development?HTML5 or Android for Mobile Development?
HTML5 or Android for Mobile Development?
Reto Meier
 
Hands on continouous delivery, I TAKE 2014
Hands on continouous delivery, I TAKE 2014Hands on continouous delivery, I TAKE 2014
Hands on continouous delivery, I TAKE 2014
Ioan Eugen Stan
 
20160915 automation with_gradle
20160915 automation with_gradle20160915 automation with_gradle
20160915 automation with_gradle
Yuki Nanri
 
Juc west-how to build a jenkins db the wrong way!
Juc west-how to build a jenkins db the wrong way!Juc west-how to build a jenkins db the wrong way!
Juc west-how to build a jenkins db the wrong way!
Michael Barbine
 
Jenkins Workflow - An Introduction
Jenkins Workflow - An IntroductionJenkins Workflow - An Introduction
Jenkins Workflow - An Introduction
Ben Snape
 
20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2 20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2
TSE-JU LIN(Louis)
 
Using Jenkins XML API
Using Jenkins XML APIUsing Jenkins XML API
Using Jenkins XML API
Anton Weiss
 
DevOps – SonarQube
DevOps – SonarQubeDevOps – SonarQube
DevOps – SonarQube
Delta-N
 
Ad

Similar to Continuous Cross Platform Mobile App Development using Jenkins Build Server (20)

自己的 Jenkins 自己來 for Android developer
自己的 Jenkins 自己來  for Android developer自己的 Jenkins 自己來  for Android developer
自己的 Jenkins 自己來 for Android developer
哲偉 楊
 
Jenkins for android developer at TWJUG
Jenkins for android developer at TWJUGJenkins for android developer at TWJUG
Jenkins for android developer at TWJUG
哲偉 楊
 
From devOps to front end Ops, test first
From devOps to front end Ops, test firstFrom devOps to front end Ops, test first
From devOps to front end Ops, test first
Caesar Chi
 
Intro to DevOps
Intro to DevOpsIntro to DevOps
Intro to DevOps
Ernest Mueller
 
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
London Hashicorp Meetup #8 -  Testing Programmable Infrastructure By Matt LongLondon Hashicorp Meetup #8 -  Testing Programmable Infrastructure By Matt Long
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
OpenCredo
 
Drone CI
Drone CIDrone CI
Drone CI
Thomas Boerger
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
Kris Buytaert
 
React Fundamentals - Jakarta JS, Apr 2016
React Fundamentals - Jakarta JS, Apr 2016React Fundamentals - Jakarta JS, Apr 2016
React Fundamentals - Jakarta JS, Apr 2016
Simon Sturmer
 
Grunt understanding
Grunt understandingGrunt understanding
Grunt understanding
Khalid Khan
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the Continuist
Paul Blundell
 
Continuous Integration with Hackintosh
Continuous Integration with HackintoshContinuous Integration with Hackintosh
Continuous Integration with Hackintosh
David Ventura, M.E.T.
 
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Ted Won
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
VictorSzoltysek
 
Jenkins
JenkinsJenkins
Jenkins
MohanRaviRohitth
 
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev Environment
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev EnvironmentPhoneGap Day 2016 EU: Creating the Ideal Cordova Dev Environment
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev Environment
Ryan J. Salva
 
WordPress automation and CI
WordPress automation and CIWordPress automation and CI
WordPress automation and CI
Ran Bar-Zik
 
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @OrbitzEnabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
Steve Hoffman
 
Production Ready Javascript With Grunt
Production Ready Javascript With GruntProduction Ready Javascript With Grunt
Production Ready Javascript With Grunt
XB Software, Ltd.
 
Ideal Deployment In .NET World
Ideal Deployment In .NET WorldIdeal Deployment In .NET World
Ideal Deployment In .NET World
Dima Pasko
 
Automated Continuous Delivery for iOS
Automated Continuous Delivery for iOSAutomated Continuous Delivery for iOS
Automated Continuous Delivery for iOS
Edu Caselles
 
自己的 Jenkins 自己來 for Android developer
自己的 Jenkins 自己來  for Android developer自己的 Jenkins 自己來  for Android developer
自己的 Jenkins 自己來 for Android developer
哲偉 楊
 
Jenkins for android developer at TWJUG
Jenkins for android developer at TWJUGJenkins for android developer at TWJUG
Jenkins for android developer at TWJUG
哲偉 楊
 
From devOps to front end Ops, test first
From devOps to front end Ops, test firstFrom devOps to front end Ops, test first
From devOps to front end Ops, test first
Caesar Chi
 
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
London Hashicorp Meetup #8 -  Testing Programmable Infrastructure By Matt LongLondon Hashicorp Meetup #8 -  Testing Programmable Infrastructure By Matt Long
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
OpenCredo
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
Kris Buytaert
 
React Fundamentals - Jakarta JS, Apr 2016
React Fundamentals - Jakarta JS, Apr 2016React Fundamentals - Jakarta JS, Apr 2016
React Fundamentals - Jakarta JS, Apr 2016
Simon Sturmer
 
Grunt understanding
Grunt understandingGrunt understanding
Grunt understanding
Khalid Khan
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the Continuist
Paul Blundell
 
Continuous Integration with Hackintosh
Continuous Integration with HackintoshContinuous Integration with Hackintosh
Continuous Integration with Hackintosh
David Ventura, M.E.T.
 
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Ted Won
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
VictorSzoltysek
 
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev Environment
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev EnvironmentPhoneGap Day 2016 EU: Creating the Ideal Cordova Dev Environment
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev Environment
Ryan J. Salva
 
WordPress automation and CI
WordPress automation and CIWordPress automation and CI
WordPress automation and CI
Ran Bar-Zik
 
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @OrbitzEnabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
Steve Hoffman
 
Production Ready Javascript With Grunt
Production Ready Javascript With GruntProduction Ready Javascript With Grunt
Production Ready Javascript With Grunt
XB Software, Ltd.
 
Ideal Deployment In .NET World
Ideal Deployment In .NET WorldIdeal Deployment In .NET World
Ideal Deployment In .NET World
Dima Pasko
 
Automated Continuous Delivery for iOS
Automated Continuous Delivery for iOSAutomated Continuous Delivery for iOS
Automated Continuous Delivery for iOS
Edu Caselles
 
Ad

Recently uploaded (20)

Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Innovative Approaches to Software Dev no good at all
Innovative Approaches to Software Dev no good at allInnovative Approaches to Software Dev no good at all
Innovative Approaches to Software Dev no good at all
ayeshakanwal75
 
Cryptocurrency Exchange Script like Binance.pptx
Cryptocurrency Exchange Script like Binance.pptxCryptocurrency Exchange Script like Binance.pptx
Cryptocurrency Exchange Script like Binance.pptx
riyageorge2024
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
DVDFab Crack FREE Download Latest Version 2025
DVDFab Crack FREE Download Latest Version 2025DVDFab Crack FREE Download Latest Version 2025
DVDFab Crack FREE Download Latest Version 2025
younisnoman75
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Not So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java WebinarNot So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java Webinar
Tier1 app
 
Creating Automated Tests with AI - Cory House - Applitools.pdf
Creating Automated Tests with AI - Cory House - Applitools.pdfCreating Automated Tests with AI - Cory House - Applitools.pdf
Creating Automated Tests with AI - Cory House - Applitools.pdf
Applitools
 
🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdf
🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdf🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdf
🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdf
Imma Valls Bernaus
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Full Cracked Resolume Arena Latest Version
Full Cracked Resolume Arena Latest VersionFull Cracked Resolume Arena Latest Version
Full Cracked Resolume Arena Latest Version
jonesmichealj2
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Innovative Approaches to Software Dev no good at all
Innovative Approaches to Software Dev no good at allInnovative Approaches to Software Dev no good at all
Innovative Approaches to Software Dev no good at all
ayeshakanwal75
 
Cryptocurrency Exchange Script like Binance.pptx
Cryptocurrency Exchange Script like Binance.pptxCryptocurrency Exchange Script like Binance.pptx
Cryptocurrency Exchange Script like Binance.pptx
riyageorge2024
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
DVDFab Crack FREE Download Latest Version 2025
DVDFab Crack FREE Download Latest Version 2025DVDFab Crack FREE Download Latest Version 2025
DVDFab Crack FREE Download Latest Version 2025
younisnoman75
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Not So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java WebinarNot So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java Webinar
Tier1 app
 
Creating Automated Tests with AI - Cory House - Applitools.pdf
Creating Automated Tests with AI - Cory House - Applitools.pdfCreating Automated Tests with AI - Cory House - Applitools.pdf
Creating Automated Tests with AI - Cory House - Applitools.pdf
Applitools
 
🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdf
🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdf🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdf
🌱 Green Grafana 🌱 Essentials_ Data, Visualizations and Plugins.pdf
Imma Valls Bernaus
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Full Cracked Resolume Arena Latest Version
Full Cracked Resolume Arena Latest VersionFull Cracked Resolume Arena Latest Version
Full Cracked Resolume Arena Latest Version
jonesmichealj2
 

Continuous Cross Platform Mobile App Development using Jenkins Build Server

  • 1. CONTINUOUS CROSS PLATFORM MOBILE DEVELOPMENT WITH JENKINS ADAM PAXTON
  • 2. PHOTO OP SLIDES AND NOTES bit.ly/jenkinsnotes
  • 3. HELLO ADAM PAXTON ▸ Freelance Mobile App Developer polancomedia.com ▸ iOS, Android, Appcelerator Titanium ▸ Twitter: @adampax ▸ Github: adampax
  • 4. GOALS WHAT WE WANT TO DO TODAY ▸ Will this help our team? ▸ Pros, cons for using Jenkins ▸ Alternatives ▸ Stuff we learned when setting it up. ▸ Be the boss!
  • 5. RUN THE APP, MAKE SURE THE TESTS PASS, BUILD IT FOR DISTRIBUTION, UPLOAD IT TO THE BUILD DISTRIBUTION SERVICE, EMAIL TESTERS. THEN DO IT ALL AGAIN FOR THE OTHER PLATFORM. AND THEN DO IT AGAIN TOMORROW FOR THE NEXT FEATURE OR BUG FIX. - You, every single day LET’S GET A BUILD OUT TO TEST…
  • 6. THAT’S NOT THE HALF OF IT DON’T FORGET… ▸ Pull the latest commit? ▸ Are we doing unit tests? Did those run? ▸ Where are those keys? ▸ What version of Xcode did we build on last time? ▸ Which branch? ▸ What’s the password to the distribution service? ▸ Who needs this version sent to them? ▸ Where was the build from yesterday? ▸ Who did that build? ▸ What version of the sdk did they use? ▸ Wait, what was that password again? ▸ No, I meant the keystore password, sorry. ▸ Err, actually, the alias? ▸ I don’t know what it is, either. ▸ How do I run the tests?
  • 7. OK, LET’S MAKE SOMEONE THE BUILD MASTER. THAT’S A LOT OF STUFF FOR ALL OF US TO REMEMBER
  • 8. LET’S HAVE ONE PERSON REMEMBER TO DO ALL THAT STUFF. PROBLEM SOLVED, RIGHT? ▸ Sometimes multiple builds go out a day (then double that, since we are cross-platform devs). ▸ Takes our build master’s dev time, and is disruptive. ▸ Multiple people coordinating to do build. ▸ Sometimes we like to go home, or even take vacation!
  • 9. BUILD A ROBOT. THERE HAS TO BE A BETTER WAY
  • 10. FITTER HAPPIER AUTOMATE THE TEDIOUS BITS ▸ Identify your workflow ▸ Start with the core ‘build’ ▸ Expand forward and backward from there
  • 11. 15 STEPS CURRENT SETUP PULL CHANGES FROM GIT TEST IOS TEST ANDROID BUILD AD HOC UPLOAD IPA UPLOAD APK EMAIL TESTERS Someone asks me 
 for a build …So I ask buildmaster Build master tells me tests failed,
 back to step 1 So who should
 get notified? Do we need to sign the apk? New devices for the
 provisioning profile?
  • 12. THEN A SHEER DROP MOVING TO THE BUILD SERVER TEST IOS, ANDROID
 BUILD AD HOC Jobs UPLOAD IPA, APK
 EMAIL TESTERS Plugin PULL CHANGES FROM GIT Plugin Build Server
  • 13. THEN A SHEER DROP INTERACT WITH THE BUILD SERVER Build Server Trigger a build Tell us if build failed Send out the build!
 Excelsior!
  • 14. AUTOMATING WORKFLOW. WHAT ARE WE REALLY DOING?
  • 15. JIGSAW FALLING INTO PLACE DOESN’T THIS FEEL FAMILIAR? ▸ We’re refactoring our workflow. function doBuild(opts, success, error) {
 …
 }
  • 16. MORNING BELL HOW TO START A BUILD ▸ Watch for changes to a repository ▸ At regular intervals, every x hours ▸ When another build completes ▸ Via URL, cURL POST ▸ etc.
  • 17. LET DOWN TELL US IF BUILD FAILED ▸ Usually email logs to us ▸ What test failed? ▸ Blame the last commiter? ▸ Pretty much anything else you want
  • 18. FUL STOP POST BUILD ACTIONS ▸ Upload to our build distribution service, email users ▸ Publish it? ▸ Trigger another build ▸ Anything else you want
  • 19. OK COMPUTER WHAT WE NEED ▸ A way to have this stuff done for us ▸ We’re cross platform, so it has to build iOS and Android ▸ Mac for iOS ▸ Android, Java, stuff like that ▸ Whatever our x-platform tool requires, like Node.js ▸ We’re all remote, so has to be remotely accessible
  • 20. NO SURPRISES HOW ABOUT JENKINS ▸ An automation server ▸ Open source, strong community ▸ Web admin ▸ Insanely flexible (can be overwhelming!) ▸ Probably already a plugin for what you need ▸ jenkins.io
  • 21. I MIGHT BE WRONG CONS ▸ Every person’s setup is a unique snowflake ▸ Need to maintain the build server ▸ Flexibility can indeed be overwhelming ▸ Ramp up
  • 22. USING JENKINS. WHAT WORKED FOR US, AND WHAT DIDN’T.
  • 23. HOW WE USE JENKINS FIRST, SOME TERMINOLOGY ▸ Job/Project: Any task that you configure Jenkins to run ▸ Build: Result of one run of a job ▸ Build Trigger: How the build is started ▸ Build Step: An action performed by the build, such as run a command ▸ Post Build Action: What to do when build completes ▸ Workspace: Temporary working directory used for building a job. ▸ Plugin: Extend the functionality of Jenkins w/ core or 3rd party plugins ▸ Pipeline: New(ish)! Define an entire job with a script
  • 24. HOW WE USE JENKINS INSTALL ▸ A fairly recent Mac w/ latest OS ▸ Install Java 7 or 8 first ▸ Jenkins version 2 LTS ▸ Mac Installer ▸ Installs Applications/Jenkins/jenkins.war ▸ Creates a launch daemon that runs jenkins ▸ Creates a ‘jenkins’ user that runs the jobs/projects ▸ Puts configuration in users/shared/jenkins/home
  • 25. HOW WE USE JENKINS INSTALL ▸ Our first hurdle: the ‘jenkins’ user ▸ All jobs run as jenkins user, so it needs access to any sdks, folders, etc. ▸ Can either log in as the jenkins user to set up your dev environment, or do a lot of ‘sudo su’ and ‘chmod’ ▸ Both options can work
  • 26. HOW WE USE JENKINS MORE INSTALLATION GOTCHAS ▸ Installing developer keys/certificates into keychain ▸ If connected via VNC /remote desktop, the password will fail silently ▸ Need to connect a physical keyboard to enter pw ▸ Using Node.js with nvm or n didn’t work for us, neither did Nodejs Jenkins plugin ▸ Installed node.js globally ▸ export PATH=“/usr/local/bin:$PATH" in any build step shell
  • 27. HOW WE USE JENKINS MOVE THE CORE BUILD ▸ Install your dev requirements ▸ Xcode ▸ Android sdks ▸ X-Platform sdk ▸ etc ▸ Make sure you can run a build manually, start to finish, as jenkins user
  • 28. HOW WE USE JENKINS THE WEB UI ▸ localhost:8080 ▸ Jenkins 2 has improved the default security settings, prompting you to set up security during Setup Wizard ▸ Home page shows list of jobs and their stats ▸ Nav column for Managing jenkins, users, etc
  • 29. HOW WE USE JENKINS ON SECURITY ▸ Not wide-open by default anymore in v2 ▸ Create accounts, add to group ▸ For job level access: ▸ ‘Project-based Matrix Authorization Strategy’ sounds a lot more complex than it really is ▸ Manage Jenkins > Configure Global Security ▸ Then set user/group access on each job ▸ Consider using VPN for remote access
  • 30. HOW WE USE JENKINS GLOBAL SETTINGS ▸ Manage Jenkins > Manage Plugins ▸ Github plugin (as opposed to just ‘git’ plugin) ▸ Mask Passwords plugin ▸ TestFairy Plugin ▸ wiki.jenkins-ci.org/display/JENKINS/Plugins ▸ Manage Jenkins > Configure System ▸ Configure email ▸ Git settings
  • 31. HOW WE USE JENKINS CREATING A JOB ▸ New Item > Freestyle Project ▸ Security ▸ Parameterized build? ▸ Prompt user for build inputs, or pass via url args ▸ use them as env variables $paramName ▸ SCM ▸ Build Triggers ▸ Build steps ▸ Post-build actions
  • 32. HOW WE USE JENKINS CONFIGURING A JOB
  • 33. HOW WE USE JENKINS SCM AND TRIGGERS
  • 34. HOW WE USE JENKINS BUILD STEPS
  • 35. HOW WE USE JENKINS POST BUILD
  • 36. HOW WE USE JENKINS AFTER A BUILD ▸ Check the build console output. ▸ You will do many of these.
  • 37. HOW WE USE JENKINS ALTERNATIVES ▸ Bamboo - Atlassian ▸ travis-ci.org ▸ circleci.com ▸ codeship.com ▸ buddybuild.com
  • 38. HOW WE USE JENKINS NEXT STEPS ▸ Keep automating more items when it makes sense ▸ Ongoing process ▸ fastlane.tools ▸ Pay attention to tests! ▸ Move scripts to source control ▸ Pipelines
  • 39. HOW WE USE JENKINS WHAT WE LEARNED ▸ Complete automation or CI wasn’t always best for us ▸ Stepped back from having a commit trigger a build all the way to the user ▸ Making use of URL/params to trigger builds as needed ▸ We keep finding more stuff to automate
  • 40. EXIT MUSIC TAKEAWAYS ▸ Teams of any size will benefit from automation ▸ Save time! ▸ More consistent testing and distribution ▸ Your workflow and methodologies will fit ▸ Start with the core build, move from there ▸ You will find more ways to automate, improve workflow