iOS-Dev

CI Status

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 поставляется с Ruby 2.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

Информация об авторе

Шашикант Джагап

О проекте

Fully automated and customised macOS setup for iOS development & CI

Установить
ansible-galaxy install Shashikant86/iOS-Dev-Ansible
Лицензия
Unknown
Загрузки
306
Владелец
Mobile DevOps, CI/CD, Mobile Build & Test Automation. Swift, Kotlin, XCTest, XCUITest, Xcode Server, Apple Developer tools, Flutter, Ruby, PHP etc