SlideShare a Scribd company logo
Building an iOS Build Server
Part I
Who Am I?
• Attila Tamás Zimler
• Senior .NET Software Developer
• LinkedIn: https://linkedin.com/in/atzimler
• Blog: http://highvaluecode.com.au
Agenda
• The goal
• Components
• Building it up
• Tips and tricks
The System
The End Goal
Components
macOS
• For building iOS app, macOS required
• Simple installation
• Tipps on building it later
Jenkins
• Automating build pipeline
• https://jenkins.io
• JDK is needed
• Jenkins seems to have problem with JDK version 9
• https://www.oracle.com/technetwork/java/
javase/downloads/index.html
• Both JDK and Jenkins is installable from
install packages
Xcode
• Visual Studio components uses it
• MacPorts needs console tools from it
• Installation is from app store
• sudo xcodebuild –license
• sudo xcode-select –install
MacPorts
• For using shell scripts
• Can be installed from package
• Then as root update the package list
(port –v selfupdate)
• Installation of packages: port install <package>
Visual Studio / Xamarin
• Installing the .NET development environment
• Downloadable from
https://www.visualstudio.com/vs/visual_studio_mac
• Takes long time to install
• If Intel HAXM fails with download error,
try again
NAnt
• Scripting build processes
• MacPorts contains a mono environment, which is
unable to build for iOS
• MacPorts contains a NAnt, but because the mono,
we have to install from source
• If you have problems with resgen,
try to compile with different PATH
environment
NAnt
• http://nant.sourceforge.net/
• For the Xamarin environment, small modifications
are needed
• https://github.com/atzimler/Patches/blob/master/
NAnt/xamarin.patch
• If you have problems with resgen,
try to compile with different PATH
environment
NAnt
• Download the source code
• Unpack it
• Patch it
• make install prefix=/opt/local
• Remember – if having compilation problem,
try as non-root to compile then
install as root
• make prefix=/opt/local
NAntContrib
• Helpful tools: NAntContrib
• http://nantcontrib.sourceforge.net/
• Technically, you can download the binaries and drop
them into the NAnt installation folder after unzipping
(/opt/local/share/NAnt)
• Installation from source is failing,
working on it
Installing Fastlane
• This component allows you to install signing
certificates easily into the Visual Studio ecosystem
• https://download.fastlane.tools
• Unzip it and Control + Click on install – because it is
from an unindentified developer
Testing compilation
• https://github.com/atzimler/JenkinsHelloWorld.iOS
• Some small corrections needed
• Once it is building under VS, try it on console:
msbuild /p:Configuration=Ad-Hoc
/p:Platform=iPhone
Jenkins Plugins
• Locale Plugin
• MSBuild Plugin
• Git Plugin
• In Global Tool Configuration, add MSBuild
• Path:
/Library/Frameworks/Mono.framework/Versions/
Current/Commands/msbuild
And then
• After this it is relatively easy to configure the new
project
• MSBuild params: /p:Configuration=Ad-Hoc
/p:Platform=iPhone
• And the build is going to fail, because the project has
no signing identity configured
TIPS AND TRICKS
Tips and Tricks
Tips and tricks
• Creating a USB installer
• Creating a test system
• Dealing with unpartionable new external HDDs
• Creating images
• Being careful
Creating a USB installer
• Download the macOS installer
• Attach USB drive with 8GB
• Make sure the partition table is GUID
• From Disk Utility erase and rename the partition of the
USB drive
• As root:
​/Applications/Install macOS High
Sierra.app/Contents/Resources/createinstallmedia
--volume /Volumes/Untitled
--applicationpath
/Applications/Install macOS High Sierra.app
--nointeraction
Creating a Test System
• Problems with Virtual Machines
• Easiest solution is to use a Mac
– With external drive
– macOS installed on the external drive
What to do with unpartitionable new external
HDDs
• New External HDDs might show up as grayed out,
no partitioning allowed
• diskutil erasedisk hfs+ External GPT /dev/disk2
• You can find your device with
diskutil list
Creating Images
• When you partition your external HDD create a
partition for storing images
• There are plenty of good apps for creating disk
images:
– SuperDuper!
– DropDMG
– Carbon Copy Cloner
Creating Images
• From console as root:
– hdiutil create x.dmg –srcdevice /dev/disk2s4
• APFS is a problem at the moment for most GUI apps
• With APFS try to image the container, not the volume
Final tip
• If you decide to rearrange your desk during the
experiment, do not connect external HDD power
adapter to external USB Hub
Possible next parts
• Publishing to test systems
• Publishing for AppStore
Questions & Answers
• Attila Tamás Zimler
• https://linkedin.com/in/atzimler
• http://highvaluecode.com.au
• @atzimler
• https://github.com/atzimler
• https://www.nuget.org/packages?q=ATZ

More Related Content

What's hot

ColdFusion builder plugins
ColdFusion builder pluginsColdFusion builder plugins
ColdFusion builder plugins
ColdFusionConference
 
Packer, Terraform, Ansible avec Azure
Packer, Terraform, Ansible avec AzurePacker, Terraform, Ansible avec Azure
Packer, Terraform, Ansible avec Azure
AZUG FR
 
SharePoint 2010 Development for ASP.NET Developers - Tyson Devcon 2010
SharePoint 2010 Development for ASP.NET Developers - Tyson Devcon 2010SharePoint 2010 Development for ASP.NET Developers - Tyson Devcon 2010
SharePoint 2010 Development for ASP.NET Developers - Tyson Devcon 2010
Corey Roth
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
ColdFusionConference
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
ColdFusionConference
 
Tech talk live alfresco add ons
Tech talk live alfresco add onsTech talk live alfresco add ons
Tech talk live alfresco add ons
Alfresco Software
 
Keep Applications Online
Keep Applications OnlineKeep Applications Online
Keep Applications Online
ColdFusionConference
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
Ulrich Krause
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntf
Ulrich Krause
 
CodeIgniter For Project : Lesson 103 - Introduction to Codeigniter
CodeIgniter For Project : Lesson 103 - Introduction to CodeigniterCodeIgniter For Project : Lesson 103 - Introduction to Codeigniter
CodeIgniter For Project : Lesson 103 - Introduction to Codeigniter
Weerayut Hongsa
 
XPages -Beyond the Basics
XPages -Beyond the BasicsXPages -Beyond the Basics
XPages -Beyond the Basics
Ulrich Krause
 
Holberton JAMF Software - Intro
Holberton JAMF Software - IntroHolberton JAMF Software - Intro
Holberton JAMF Software - Intro
Daniel Alzugaray
 
Alfresco Boxes.pdf
Alfresco Boxes.pdfAlfresco Boxes.pdf
Alfresco Boxes.pdf
edmsdelta
 
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) HackableCollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
Darren Duke
 
Mastering composer
Mastering composerMastering composer
Mastering composer
Adán Lobato Lorenzo
 
Developing web apps
Developing web appsDeveloping web apps
Developing web apps
Michael Dyrynda
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansible
Krish
 
Git and Github - a 90 Minute interactive workshop
Git and Github - a 90 Minute interactive workshopGit and Github - a 90 Minute interactive workshop
Git and Github - a 90 Minute interactive workshop
Bram Luyten
 
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & MigrationNo More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
podsframework
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
Ulrich Krause
 

What's hot (20)

ColdFusion builder plugins
ColdFusion builder pluginsColdFusion builder plugins
ColdFusion builder plugins
 
Packer, Terraform, Ansible avec Azure
Packer, Terraform, Ansible avec AzurePacker, Terraform, Ansible avec Azure
Packer, Terraform, Ansible avec Azure
 
SharePoint 2010 Development for ASP.NET Developers - Tyson Devcon 2010
SharePoint 2010 Development for ASP.NET Developers - Tyson Devcon 2010SharePoint 2010 Development for ASP.NET Developers - Tyson Devcon 2010
SharePoint 2010 Development for ASP.NET Developers - Tyson Devcon 2010
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
 
Tech talk live alfresco add ons
Tech talk live alfresco add onsTech talk live alfresco add ons
Tech talk live alfresco add ons
 
Keep Applications Online
Keep Applications OnlineKeep Applications Online
Keep Applications Online
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntf
 
CodeIgniter For Project : Lesson 103 - Introduction to Codeigniter
CodeIgniter For Project : Lesson 103 - Introduction to CodeigniterCodeIgniter For Project : Lesson 103 - Introduction to Codeigniter
CodeIgniter For Project : Lesson 103 - Introduction to Codeigniter
 
XPages -Beyond the Basics
XPages -Beyond the BasicsXPages -Beyond the Basics
XPages -Beyond the Basics
 
Holberton JAMF Software - Intro
Holberton JAMF Software - IntroHolberton JAMF Software - Intro
Holberton JAMF Software - Intro
 
Alfresco Boxes.pdf
Alfresco Boxes.pdfAlfresco Boxes.pdf
Alfresco Boxes.pdf
 
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) HackableCollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
 
Mastering composer
Mastering composerMastering composer
Mastering composer
 
Developing web apps
Developing web appsDeveloping web apps
Developing web apps
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansible
 
Git and Github - a 90 Minute interactive workshop
Git and Github - a 90 Minute interactive workshopGit and Github - a 90 Minute interactive workshop
Git and Github - a 90 Minute interactive workshop
 
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & MigrationNo More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 

Similar to Building an iOS Build Server

Android build on windows
Android build on windowsAndroid build on windows
Android build on windows
Addweup
 
FOSS_GNU/Linux
FOSS_GNU/LinuxFOSS_GNU/Linux
FOSS_GNU/Linux
Yogesh Ks
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 
Software Distribution
Software DistributionSoftware Distribution
Software Distribution
Dell World
 
Deep Dive into the AOSP
Deep Dive into the AOSPDeep Dive into the AOSP
Deep Dive into the AOSP
Dr. Ketan Parmar
 
Adobe premiere pro cs4 read me
Adobe premiere pro cs4 read meAdobe premiere pro cs4 read me
Adobe premiere pro cs4 read me
Liliana Og
 
Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...
Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...
Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...
linuxlab_conf
 
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini
 
Kinect Workshop Part 1/2
Kinect Workshop Part 1/2Kinect Workshop Part 1/2
Kinect Workshop Part 1/2
Seiya Konno
 
Deliver Python Apps with Docker
Deliver Python Apps with DockerDeliver Python Apps with Docker
Deliver Python Apps with Docker
Anton Egorov
 
Lezione 02 React and React Native installation and Configuration
Lezione 02   React and  React Native installation and ConfigurationLezione 02   React and  React Native installation and Configuration
Lezione 02 React and React Native installation and Configuration
University of Catania
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
Dave Ward
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy Virin
CocoaHeads France
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
Computational Materials Science Initiative
 
The development environment
The development environmentThe development environment
The development environment
Lee Pelser
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Marco Cavallini
 
Docker With Asp.net Core
Docker With Asp.net CoreDocker With Asp.net Core
Docker With Asp.net Core
Fatih Şimşek
 
Gnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-semGnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-sem
Sagun Baijal
 
Gnubs pres-foss-cdac-sem
Gnubs pres-foss-cdac-semGnubs pres-foss-cdac-sem
Gnubs pres-foss-cdac-sem
Sagun Baijal
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
Yen-Chin Lee
 

Similar to Building an iOS Build Server (20)

Android build on windows
Android build on windowsAndroid build on windows
Android build on windows
 
FOSS_GNU/Linux
FOSS_GNU/LinuxFOSS_GNU/Linux
FOSS_GNU/Linux
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Software Distribution
Software DistributionSoftware Distribution
Software Distribution
 
Deep Dive into the AOSP
Deep Dive into the AOSPDeep Dive into the AOSP
Deep Dive into the AOSP
 
Adobe premiere pro cs4 read me
Adobe premiere pro cs4 read meAdobe premiere pro cs4 read me
Adobe premiere pro cs4 read me
 
Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...
Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...
Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...
 
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
 
Kinect Workshop Part 1/2
Kinect Workshop Part 1/2Kinect Workshop Part 1/2
Kinect Workshop Part 1/2
 
Deliver Python Apps with Docker
Deliver Python Apps with DockerDeliver Python Apps with Docker
Deliver Python Apps with Docker
 
Lezione 02 React and React Native installation and Configuration
Lezione 02   React and  React Native installation and ConfigurationLezione 02   React and  React Native installation and Configuration
Lezione 02 React and React Native installation and Configuration
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy Virin
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
The development environment
The development environmentThe development environment
The development environment
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
 
Docker With Asp.net Core
Docker With Asp.net CoreDocker With Asp.net Core
Docker With Asp.net Core
 
Gnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-semGnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-sem
 
Gnubs pres-foss-cdac-sem
Gnubs pres-foss-cdac-semGnubs pres-foss-cdac-sem
Gnubs pres-foss-cdac-sem
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 

Recently uploaded

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
 
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
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
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
 
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
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
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
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 

Recently uploaded (20)

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
 
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
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
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
 
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?
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
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
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 

Building an iOS Build Server

  • 1. Building an iOS Build Server Part I
  • 2. Who Am I? • Attila Tamás Zimler • Senior .NET Software Developer • LinkedIn: https://linkedin.com/in/atzimler • Blog: http://highvaluecode.com.au
  • 3. Agenda • The goal • Components • Building it up • Tips and tricks
  • 7. macOS • For building iOS app, macOS required • Simple installation • Tipps on building it later
  • 8. Jenkins • Automating build pipeline • https://jenkins.io • JDK is needed • Jenkins seems to have problem with JDK version 9 • https://www.oracle.com/technetwork/java/ javase/downloads/index.html • Both JDK and Jenkins is installable from install packages
  • 9. Xcode • Visual Studio components uses it • MacPorts needs console tools from it • Installation is from app store • sudo xcodebuild –license • sudo xcode-select –install
  • 10. MacPorts • For using shell scripts • Can be installed from package • Then as root update the package list (port –v selfupdate) • Installation of packages: port install <package>
  • 11. Visual Studio / Xamarin • Installing the .NET development environment • Downloadable from https://www.visualstudio.com/vs/visual_studio_mac • Takes long time to install • If Intel HAXM fails with download error, try again
  • 12. NAnt • Scripting build processes • MacPorts contains a mono environment, which is unable to build for iOS • MacPorts contains a NAnt, but because the mono, we have to install from source • If you have problems with resgen, try to compile with different PATH environment
  • 13. NAnt • http://nant.sourceforge.net/ • For the Xamarin environment, small modifications are needed • https://github.com/atzimler/Patches/blob/master/ NAnt/xamarin.patch • If you have problems with resgen, try to compile with different PATH environment
  • 14. NAnt • Download the source code • Unpack it • Patch it • make install prefix=/opt/local • Remember – if having compilation problem, try as non-root to compile then install as root • make prefix=/opt/local
  • 15. NAntContrib • Helpful tools: NAntContrib • http://nantcontrib.sourceforge.net/ • Technically, you can download the binaries and drop them into the NAnt installation folder after unzipping (/opt/local/share/NAnt) • Installation from source is failing, working on it
  • 16. Installing Fastlane • This component allows you to install signing certificates easily into the Visual Studio ecosystem • https://download.fastlane.tools • Unzip it and Control + Click on install – because it is from an unindentified developer
  • 17. Testing compilation • https://github.com/atzimler/JenkinsHelloWorld.iOS • Some small corrections needed • Once it is building under VS, try it on console: msbuild /p:Configuration=Ad-Hoc /p:Platform=iPhone
  • 18. Jenkins Plugins • Locale Plugin • MSBuild Plugin • Git Plugin • In Global Tool Configuration, add MSBuild • Path: /Library/Frameworks/Mono.framework/Versions/ Current/Commands/msbuild
  • 19. And then • After this it is relatively easy to configure the new project • MSBuild params: /p:Configuration=Ad-Hoc /p:Platform=iPhone • And the build is going to fail, because the project has no signing identity configured
  • 20. TIPS AND TRICKS Tips and Tricks
  • 21. Tips and tricks • Creating a USB installer • Creating a test system • Dealing with unpartionable new external HDDs • Creating images • Being careful
  • 22. Creating a USB installer • Download the macOS installer • Attach USB drive with 8GB • Make sure the partition table is GUID • From Disk Utility erase and rename the partition of the USB drive • As root: ​/Applications/Install macOS High Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install macOS High Sierra.app --nointeraction
  • 23. Creating a Test System • Problems with Virtual Machines • Easiest solution is to use a Mac – With external drive – macOS installed on the external drive
  • 24. What to do with unpartitionable new external HDDs • New External HDDs might show up as grayed out, no partitioning allowed • diskutil erasedisk hfs+ External GPT /dev/disk2 • You can find your device with diskutil list
  • 25. Creating Images • When you partition your external HDD create a partition for storing images • There are plenty of good apps for creating disk images: – SuperDuper! – DropDMG – Carbon Copy Cloner
  • 26. Creating Images • From console as root: – hdiutil create x.dmg –srcdevice /dev/disk2s4 • APFS is a problem at the moment for most GUI apps • With APFS try to image the container, not the volume
  • 27. Final tip • If you decide to rearrange your desk during the experiment, do not connect external HDD power adapter to external USB Hub
  • 28. Possible next parts • Publishing to test systems • Publishing for AppStore
  • 29. Questions & Answers • Attila Tamás Zimler • https://linkedin.com/in/atzimler • http://highvaluecode.com.au • @atzimler • https://github.com/atzimler • https://www.nuget.org/packages?q=ATZ

Editor's Notes

  1. Mostly .NET these days, though I know more than 30 languages I really enjoy area of: Mathematical proofing Continuous Integration/Deployment Quality assurance, Unit, Integration and other automated tests
  2. Components and how they fit together
  3. cd /tmp wget https://downloads.sourceforge.net/project/nant/nant/0.92/nant-0.92-src.tar.gz wget https://raw.githubusercontent.com/atzimler/Patches/master/NAnt/xamarin.patch tar -xvvzf nant-0.92-src.tar.gz cd nant-0.92 patch -p1 <../xamarin.patch export PATH=/Library/Frameworks/Mono.framework/Versions/Current/bin:$PATH make install prefix=/opt/local
  4. More at: https://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/provisioning/fastlane/#Installation
  5. Small corrections: You will need to add your signing identity in the iOS Signing options