XcodeServer
Xcode Server: Настройка Ansible для непрерывной интеграции iOS
=========
Эта роль может использоваться для настройки службы непрерывной интеграции iOS на macOS с помощью собственного сервера CI от Apple, известного как Xcode Server. Эта роль также может использоваться для настройки локальной среды разработки для разработчиков iOS. Она включает все необходимые инструменты для разработчиков iOS, такие как Xcode, Swift Fastlane, Carthage, Cocoapods и множество пакетов Homebrew. Однако вы имеете полный контроль для настройки своей среды с помощью переменных. Установка Xcode требует предварительно загруженного файла XIP.
Требования
- macOS High Sierra
- Xcode 9 и выше
Версии Xcode ниже 9 не поддерживаются этой ролью.
Требования для установки Xcode
Существует несколько способов установки Xcode с помощью этой роли, вы можете выбрать тот, который вам удобнее.
- Xcode XIP в директории
files
плейбука
Вы должны поместить xip
в директорию files/
вашего плейбука или разместить файл XIP в домашней директории $HOME
~/Xcode_9.1.xip
. Укажите переменную xcode_src
с версией Xcode, которую вы хотите установить.
xcode_src: Xcode_9.1.xip
Что включено в эту роль:
Эта роль включает в себя следующие пакеты программного обеспечения для настройки сервера непрерывной интеграции iOS.
- Установка Xcode 9 и выше
- Служба Xcode Server
- Настройки macOS: Управление параметрами по умолчанию и обновлениями программного обеспечения
- Homebrew: Менеджер пакетов для macOS для установки пакетов, таких как Carthage или cask приложения (по желанию)
- RVM и настроенные версии Ruby для предустановленных гемов, таких как bundler, Fastlane, Cocoapods, Xcpretty (по желанию)
Вы можете настроить свой собственный плейбук, чтобы переопределить параметры по умолчанию и создать свой собственный плейбук.
Переменные роли:
Эта роль имеет множество переменных, которые можно использовать для настройки собственного плейбука. Пожалуйста, смотрите defaults/main.yml
для списка всех переменных. Вы можете переопределить переменные из defaults/main.yml
, чтобы настроить свою собственную версию. Основные переменные, которые вы должны изменить, это:
xcode_src: Xcode_{ваша_версия}.xip
xcode_server_user: {ваш_пользователь_xcodeserver}
ansible_ssh_user: {ваш_пользователь_ansible_ssh}
Как использовать эту роль:
Представьте, что у вас новый Mac с установленной macOS. Вы можете настроить весь ваш Xcode Server для CI, создав плейбук для этой роли. Вы можете настроить переменные конфигурации в зависимости от ваших нужд.
Предполагая, что вы установили Ansible, мы можем установить роль, выполнив команду:
$ ansible-galaxy install Shashikant86.XcodeServer
Теперь, когда мы создали свой собственный плейбук для этой роли, установив переменные, мы можем использовать файл defaults/main.yml
здесь. Пример плейбука выглядит так:
Пример плейбука
Создайте новый каталог под названием XcodeServer
, также создайте директорию XcodeServer/files
и поместите Xcode XIP в директорию files
.
$ mkdir xcode_server
$ mkdir XcodeServer/files
$ touch xcs_playbook.yml
Создайте файл xcs_playbook.yml
в директории 'XcodeServerсо следующим содержанием, чтобы запустить плейбук локально. Вы можете заменить
localhost` на другие хосты.
---
- hosts: localhost
connection: local
vars:
clean_xcode: yes
clean_rvm: yes
clean_homebrew: yes
configure_xcode: yes
configure_xcodeserver: yes
configure_macos_defaults: yes
configure_ruby_rvm: yes
configure_homebrew: yes
xcode_src: Xcode_9.1.xip
xcode_server_user: shashi
ansible_ssh_user: shashi
ruby_version: 2.4.0
rubygems_packages_to_install:
- bundler
- xcpretty
macos_sleep_options:
- systemsetup -setsleep Never
- systemsetup -setharddisksleep Never
- systemsetup -setcomputersleep Never
macos_animation_options:
- defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false
- defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
- defaults write com.apple.dock expose-animation-duration -int 0
- defaults write com.apple.dock launchanim -bool false
macos_software_autoupdates:
- softwareupdate --schedule off
homebrew_use_brewfile: true
homebrew_brewfile_dir: '~'
homebrew_repo: https://github.com/Homebrew/brew
homebrew_prefix: /usr/local
homebrew_install_path: "{{ homebrew_prefix }}/Homebrew"
homebrew_brew_bin_path: /usr/local/bin
homebrew_upgrade_all_packages: no
homebrew_installed_packages:
- autoconf
- bash-completion
- git
- carthage
- gpg
- boost
- cmake
- ssh-copy-id
- openssl
- wget
- curl
homebrew_taps:
- homebrew/core
- caskroom/cask
- homebrew/binary
- homebrew/dupes
- homebrew/versions
homebrew_cask_apps:
- postman
roles:
- Shashikant86.XcodeServer
Измените ansible_ssh_user
и xcode_server_user
на ваше имя пользователя и смело настраивайте переменные на свой вкус. Теперь выполните этот плейбук:
$ ansible-playbook xcs_playbook.yml
Следите, как на ваших mac Mini серверах настраивается непрерывная интеграция для iOS.
Настройка непрерывной интеграции с Travis
Мы можем протестировать эту роль на TravisCI, отключив конфигурацию Xcode, так как TravisCI имеет свои собственные образы Xcode. Мы можем протестировать все остальные вещи на TravisCI. Конфигурацию TravisCI можно увидеть в файле .travis.yml
, а плейбук/конфигурацию внутри директории tests
. Вы можете увидеть вывод TravisCI здесь.
Зависимости
Нет
Лицензия
MIT
Информация об авторе
Шашикант Джагап
Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server
ansible-galaxy install Shashikant86/XcodeServer