Talk about provisioning iOS CI mac mini servers using Ansible.
These are the slides for my presentation for Ansible London Meetup. https://www.meetup.com/Ansible-London/events/241643732/
1. Building iOS CI
Servers with Ansible
London Ansible Meetup
Shashikant Jagtap
Twitter: Shashikant86
Github: Shashikant86
Blog: http://shashikantjagtap.net/
10. Setting up iOS CI Server
✤ Xcode & Command Line Tools
✤ Ruby for Cocoapods and Fastlane
✤ Homebrew packages
✤ macOS Defaults
✤ CI Server Specific tasks (Jenkins, Xcode Server,
TeamCity)
12. Why Provisioning ?
✤ Avoid repeating manual work
✤ Say No to “Works on My Machine”
✤ Infrastructure As Code
✤ Ability to reset and reconfigure CI infrastructure
15. Challenges
✤ It’s not Linux
✤ Proprietary Softwares from Apple
✤ Not much Ansible roles for macOS
✤ Not much Ansible modules supporting macOS
packages
22. Example Playbook
- hosts: localhost
connection: local
xcode_src: Xcode_8.3.xip
ruby_version: ruby-2.3.0
zlib_directory: /usr/local/Cellar/zlib/1.2.11
rubygems_packages_to_install:
- bundler
teamcity_agent_install_dir: ~/TeamCity/buildAgent
teamcity_agent_server_url: https://our_teamcity_server.com
teamcity_agent_name: Our_iOS_Agent
macos_sleep_options:
- systemsetup -setsleep Never
- systemsetup -setharddisksleep Never
- systemsetup -setcomputersleep Never
macos_software_autoupdates:
- softwareupdate --schedule off
homebrew_installed_packages:
- autoconf
- openssl
- wget
homebrew_taps:
- homebrew/core
- caskroom/cask
tasks:
- include: tasks/ios_ansible.yml
23. Ansible Role on Galaxy : ansible-
ios-ci
✤ https://galaxy.ansible.com/Shashikant86/ansible-ios-
ci/
24. Source Code on GitHub: ansible-
ios-ci
✤ https://github.com/Shashikant86/ansible-ios-ci
25. Benefits
✤ Quick Setup of new CI Server Machine
✤ Ability to Switch between Xcode Version
✤ Ability to reset and rebuild CI Sever Machines
✤ Streamline configuration of local machine and CI
server
26. Blog Posts
✤ iOS CD with Fastlane and Ansible : Part 1
✤ http://shashikantjagtap.net/ios-continuous-
deployment-fastlane-ansible-part-1/
✤ iOS CD with Fastlane and Ansible: Part 2
✤ http://shashikantjagtap.net/ios-continuous-delivery-
fastlane-ansible-part-2/