iOS-Dev
Provisioning Ansible для разработки iOS и непрерывной интеграции
Эта роль может использоваться для настройки службы непрерывной интеграции iOS на macOS. Также она может быть использована для настройки локальной среды разработки для разработчика iOS. В ней есть все необходимые инструменты для разработчиков iOS, такие как Xcode, Swift Fastlane, Carthage, Cocoapods и множество пакетов Homebrew. Кроме того, у вас будет полный контроль для настройки вашей собственной среды с помощью переменных. Установка Xcode требует заранее загруженного файла XIP, но установка эмуляторов и инструментов командной строки автоматизирована этой ролью. Эта роль полностью протестирована для
- macOS Sierra
- Xcode 8.0.2
- Xcode 8.3 beta xip
Это должно работать с Xcode 8 и выше, так как формат xip
поддерживается с Xcode 8.
Требования
- Установите Ansible с помощью pip.
Ansible - это библиотека Python, так что мы можем установить её через pip:
$ easy_install pip
$ pip install ansible
Требования для настройки Xcode
Существует несколько способов установить Xcode с помощью этой роли, вы можете выбрать подходящий для вас:
- Xcode XIP/DMG в директории
files
вашего плейбука
Вам нужно положить dmg
или xip
в директорию files/
вашего плейбука, чтобы эта роль могла его использовать и передать. Вам нужно установить переменные configure_xcode_playbook_files
в yes
, чтобы включить этот режим. Мы можем использовать переменные xcode_major_version
для указания точной версии Xcode, которую мы используем, и xcode_src
для названия файла Xcode DMG/XIP, который нужно скопировать на другие машины. Пример может выглядеть так:
configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
Это позволяет установить конкретную версию (что полезно для стабильности CI) и избегать необходимости авторизоваться на портале разработчиков Apple.
- Загрузка Xcode из Apple App Store с использованием MAS CLI
Этот подход требует вашего Apple ID и пароля, которые нужно указать в файле конфигурации/переменных. Это будет загружать Xcode из Mac App Store, что займет много времени. Переменные, которые мы можем установить, такие:
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
- { id: 497799835, name: "Xcode (8.1)" }
mas_upgrade_all_apps: no
Вы можете выбрать один из вышеуказанных способов установки Xcode, но рекомендуется использовать первый подход – 'Xcode XIP/DMG в директории files
вашего плейбука'.
Что входит в эту роль:
Эта роль поставляется с набором программного обеспечения для provision сервера непрерывной интеграции iOS.
- Установка Xcode
- Swiftenv: менеджер версий для Swift
- Инструменты управления зависимостями для iOS, такие как Carthage, Cocoapods и Swift Package Manager.
- Инструменты для непрерывной поставки iOS, т.е. инструменты Fastlane
- Настройки macOS: управление настройками и обновлениями программного обеспечения
- Homebrew: менеджер пакетов для macOS
- Пакеты Homebrew, такие как git, carthage, swiftlint, mas, cmake, RVM, curl, wget и т.д.
- Пакеты Homebrew Cask
- RVM и настроенные версии Ruby
- Предустановленные библиотеки, такие как bundler, Fastlane, Cocoapods, Xcpretty
- Xcode 8
- Установка командных инструментов для Xcode
- Установка эмулятора Xcode (9.2, но вы можете изменить это в любое время)
Вы можете настроить свой собственный плейбук для изменения значений по умолчанию и создания собственного плейбука.
Переменные роли:
Эта роль имеет множество переменных, которые можно использовать для настройки вашего собственного плейбука. Пожалуйста, обратитесь к defaults/main.yml
для списка всех переменных. Вы можете переопределить переменные из defaults/main.yml
, чтобы настроить свой собственный плейбук. Основные переменные:
Переменные, связанные с Xcode
configure_xcode_documents_dir
Вы можете пропустить конфигурацию Xcode, установив это значение вno
. В этом случае Xcode, инструменты командной строки и эмуляторы не будут установлены. Вы можете включить установку Xcode, поместив Xcode XIP в директорию~/Documents/
и установив переменную вyes
.configure_xcode_playbook_files
Вы можете поместить Xcode XIP/DMG в директориюfiles
вашего плейбука и использовать нижеуказанные переменные для установки Xcode:
configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
- Установка Xcode через Магазин приложений Mac и MAS CLI Вы можете получить Xcode из Магазина приложений Mac, но для этого требуются ваши учетные данные разработчика Apple, так что будьте осторожны! Переменные, которые нужно установить:
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
- { id: 497799835, name: "Xcode (8.1)" }
mas_upgrade_all_apps: no
Переменные для менеджера версий Swift и Ruby
configure_custom_swift
Xcode 8 поставляется с стандартной версией Swift, однако мы можем использовать другую компиляцию Swift. Установите это значение вyes
, затем вам нужно будет настроить переменнуюswift_version_custom
с нужной версией Swift, например,3.0.1
.configure_ruby_rvm
macOS поставляется с Ruby2.0.0
, но с ним сложно управлять Rubygems. Мы можем использовать инструменты управления версиями, такие как RVM, установив переменнуюconfigure_ruby_rvm
вyes
и установив значениеruby-version
на нужную вам версию Ruby, например,2.4.0
.
Переменные, связанные с настройками macOS и обновлениями программного обеспечения
Вы можете включить или отключить настройки macOS, поместив команды в переменные macos_sleep_options
, macos_animation_options
и macos_software_autoupdates
, например:
macos_sleep_options:
- systemsetup -setsleep Never
- systemsetup -setharddisksleep Never
Переменные, связанные с Homebrew
Вы можете настроить путь установки Homebrew с помощью homebrew_install_path
и список пакетов с помощью homebrew_installed_packages
, а также приложения Homebrew Cask с помощью переменной homebrew_cask_apps
. Вы также можете перечислить Homebrew taps с помощью переменной homebrew_taps
.
Как использовать эту роль:
Представьте, что у вас есть новый Mac с установленной macOS. Вы можете настроить всю вашу среду разработки iOS, создав плейбук для этой роли. Вы можете настроить переменные конфигурации по мере необходимости.
Предполагая, что вы установили Ansible, мы можем загрузить эту роль, выполнив команду:
$ ansible-galaxy install Shashikant86.iOS-Dev
Теперь, когда мы создали свой собственный плейбук для этой роли, задав переменные, мы можем использовать файл defaults/main.yml
здесь. Пример плейбука может выглядеть так:
Пример плейбука
Мы можем создать playbook.yml
следующим образом:
---
- hosts: localhost
connection: local
remote_user: root
vars:
configure_xcode: no
configure_custom_swift: yes
configure_macos_defaults: no
configure_ruby_rvm: yes
homebrew_upgrade_all_packages: no
use_mac_store: no
xcode_src: Xcode_8.2.1.xip
ruby_version: 2.4.0
rubygems_packages_to_install:
- bundler
- xcpretty
swift_version_custom: 3.0.1
homebrew_installed_packages:
- autoconf
- bash-completion
- git
- carthage
- gpg
- boost
- cmake
- ssh-copy-id
- openssl
- wget
- curl
- argon/mas/mas
- kylef/formulae/swiftenv
homebrew_taps:
- homebrew/core
- caskroom/cask
- homebrew/binary
- homebrew/dupes
- homebrew/versions
homebrew_cask_apps:
- java
roles:
- Shashikant86.iOS-Dev
Пожалуйста, обратитесь к содержимому playbook/config
в директории tests
в качестве примера.
Вы можете создать config.yml
и вызвать его из файла плейбука, если хотите вынести переменные из файла плейбука.
Настройка непрерывной интеграции с Travis
Мы можем протестировать эту роль на TravisCI, отключив конфигурацию Xcode, так как TravisCI имеет свои собственные образы Xcode. Мы можем протестировать все другие элементы на TravisCI. Вы можете увидеть конфигурацию TravisCI в .travis.yml
и playbook/config
в директории tests
. Вы можете увидеть вывод TravisCI здесь.
Зависимости
Нет
Лицензия
MIT
Информация об авторе
Шашикант Джагап
ansible-galaxy install Shashikant86/iOS-Dev-Ansible