iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew...
Transcript of iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew...
![Page 1: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/1.jpg)
Mr. Jenkins
Gerd Bernhardt
iOS - Continuous Integration
A Freelancer’s Experience
Installation and Configuration Useful Plugins Software-Metrics Mobile Development Process Integration
![Page 2: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/2.jpg)
Overview
• Installation
• Plugins
• Jobs
• Process Integration
• Alternatives
![Page 3: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/3.jpg)
Installation
Physical Machines / Cloud
8.27.3
Virtual Machines
8.2
• Support Different Versions
• Support Different Clients / Apple-IDs
• Scalable
• Manageable & Stable
• Fast Enough
• Backup Jenkins Home
3https://jenkins.io/doc/book/hardware-recommendations/
![Page 4: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/4.jpg)
Installation> brew install jenkins > brew services start jenkins
• Homebrew Installation cp instead of ln -svf /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
• Own Local User Account
• Setup SSHssh-keygen
4
✓ http://localhost:8080
![Page 5: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/5.jpg)
Installation - Launch Agent
• Enable Automatic Login
• Lock Screen Automatically
• LoginHook Launch Agent
5
![Page 6: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/6.jpg)
Installation - Accounts• Own Apple-ID / SCM Account
• Apple Distribution Certificate + Agent’s Private Key
• SCM SSH Access
• 2FA + Fastlane Apple Account: Enable App Specific Password
Manage Jenkins -> Configure System
6
![Page 7: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/7.jpg)
Installation - Xcode• Enable Code Coverage
• Share Workspace Scheme
Xcode Edit Schemes Xcode Manage Schemes
![Page 8: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/8.jpg)
Plugin Visualisation
8
1. Build Monitor View
3. Description Setter2. Build-Name-Setter 4. Build Failure Analyzergit rev-parse --short HEAD git reflog show —all` git rev-list HEAD | wc -l | tr -d ' '
Feature Name Number of Tests
RegEx based learning
![Page 9: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/9.jpg)
Plugin Metrics
9
• SLOCCount Plugin
• DRY Plug-in (CPD)
• PMD Plugin (obj-c) Swift: https://github.com/yopeso/Taylor
• Static Analysis Collector Plugin
• Cobertura Plugin
Intallation: Manage Jenkins -> Manage Plugins
![Page 10: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/10.jpg)
Plugin Metrics• SLOCcount
• CPD
• PMD > brew install Caskroom/cask/oclint
> brew install sloccount
> brew install pmd
Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild
10
Generate compile_commands.json
> oclint-json-compilation-database \ -e Pods \ -- -report-type=pmd -o=lint.xml
![Page 11: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/11.jpg)
Xcode - Coverage
• Install Slather
• Configure
• Run
11
> slather coverage
> brew install slather
![Page 12: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/12.jpg)
More Plugins
• Locks and Latches Plugin or via script e.g.:
• Job Configuration History PluginAlternatively use SCM, backup ~/.jenkins/jobs
• Post-build Actions Plugin
12
![Page 13: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/13.jpg)
Job Setup
• SCM / Build Trigger
• Setup Build Steps
• Post Actions
![Page 14: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/14.jpg)
Process Integration
• Development (Build + Test) frequently / periodically
• Pull Request Builds (Build + Test + Ship private) device test, look and feel
• PO / QA Builds (Build + Ship internal) nightly, takes longer
• Quality Builds (Build + Test + Analyze) nightly, takes longer
• Release Builds (Build + Test + Ship public)
![Page 15: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/15.jpg)
Jenkins CLI
• Executes Commands e.g. restart / build
• Add SSH KeyJenkins / People / Configure
• Run Commands> java -jar jenkins-cli.jar -s http://localhost:8080/ build CocoaHeadsiOS9
> curl -X POST -u <user>:<token> http://localhost:8080/job/<JobName>/build
or use curl like:
![Page 16: iOS - Continuous Integration · > brew install Caskroom/cask/oclint > brew install sloccount brew install pmd Alternatively to Fastlane use : xcodebuild + oclint-xcodebuild 10 Generate](https://reader035.fdocuments.us/reader035/viewer/2022062317/5edcf35ead6a402d6667da6e/html5/thumbnails/16.jpg)
Alternatives
https://www.jetbrains.com/teamcity/
Hosted Platforms