nick_fields.osx_ci
Ansible Role: OSX-CI
This role sets up and configures the necessary software to build and deploy OSX/iOS applications. You can use the configured Mac as a Jenkins agent.
It creates a user called ci user
to run builds on the Mac. This user is set up to allow remote access via ssh. The role also installs:
- Homebrew
- Node.js 10 LTS
- Java 8 - required by Jenkins, enabling the Mac to act as a Jenkins agent.
- fastlane
- CocoaPods
Requirements
You need to have Xcode Command Line Tools installed on the target machine. Available versions can be found on the Apple Downloads Page. You can also install it via terminal using:
xcode-select --install
Keep in mind that this command needs user input, so it cannot be run remotely (via ssh).
Since the role needs to set up an authorized ssh key for the ci user for remote login, you must create and provide a public ssh key beforehand. The public ssh key should be on the machine running the role.
Role Variables
Here are the role variables and their default values. You can see all defaults in defaults/main.yml
:
ci_user: ci_user
ci_user_uid: 5013
ci_user_group: ci_user
These define the name, UID, and group of the ci user.
ci_user_public_key_location:
This is the path to the ssh public key that will be added to the authorized keys for remote login.
ci_user_default_keychain: login.keychain
ci_user_default_keychain_password:
These set the name and password for the default keychain created for the ci user.
cask_packages: ['java8']
These are the brew cask packages that will be installed.
ruby_gems: ['fastlane']
These are the ruby gems that will be installed globally.
homebrew_packages:
This is a list of additional brew
packages to be installed.
Dependencies
None.
Example Playbook
Here’s an example of how to use this role:
- hosts: localhost
vars:
homebrew_packages: ['git']
ci_user_public_key_location: '/path/to/public_key'
ci_user_default_keychain_password: 'keychain_pass'
roles:
- osx-ci
License
Author Information
This role was created in 2019 by MacStadium, Inc.
Maintainer(s)
Forked Ansible role that installs common CI tools on OSX with arm64/M1 support
ansible-galaxy install nick_fields.osx_ci