Ansible Playbook for iOS Build-Server
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
group_vars
ios-build-server
roles
.gitignore
LICENSE.md
Makefile
README.md
ansible.cfg
hosts
site.yml

README.md

Ansible iOS Build Server Provisioning

Status: in progress

The repository provides an Ansible Playbook for automated provisioning of macOS systems with Xcode, Homebrew and Ruby. Such a provisioned system can be used to build iOS apps via Jenkins Pipelines or GitLab CI/CD.

Configuration steps

Execution

ansible-playbook -i hosts site.yml

What is Ansible?

Ansible is a software for the centralized management and administration of distributed servers. It helps to simplify the administration of servers and to automate their configuration processes. Instead of logging on to multiple macOS systems and manually installing the latest Xcode version, you can describe the execution steps in a YAML syntax and execute them remotely on various systems in parallel via SSH. The execution can always be repeated and still leads to the same result.

Ansible comes as a command line tool. This CLI will be executed on a controlling machine and sends shell commands to nodes via SSH. The controlling machine could be your computer (or a CI Runner), and the nodes are the macOS build servers.

On your computer, you execute via Ansible CLI predefined execution steps with a host file, which contains the hostname / IP addresses and individual SSH login information for the nodes. For each node, a connection is established between your computer and the node. On the node, the Ansible CLI is executing shell commands to install and configure the need components to get the desired configuration state. The results are the automated provisioned systems.

To get deeper into this topic have a look at the Get Started guide of Ansible.

If you have a collection of different commands and expected configuration states, you will create an Ansible Playbook of it.

Required components on an iOS build server

An iOS build often consists of several steps. You install your dependencies with Cocoapods or Carthage, analyze the code with e.g. Swiftlint, build the app with fastlane and want to distribute the app via HockeyApp, Beta by Crashlytics or the App Store. Of course, you have to have Xcode installed on the build server, but that's usually not enough. However, only a basic set of tools should be installed, and the iOS project should bring the rest itself. A solution can be seen in my GitHub project: Setup an iOS project environment - https://github.com/messeb/ios-project-env-setup

The basic tools are:

  • Xcode: Of course xcodebuild is needed to build an iOS app.

  • Homebrew: It is the missing package manager for macOS. This provides a basis for installing other packages within a project. For example, this could be SwiftLint or Carthage.

  • RVM: The Ruby Version Manager allows you to install and change a Ruby from the command line. Ruby is the base for many iOS tools, such as Cocoapods and fastlane.