XcodeServer

Статус CI

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
Лицензия
Unknown
Загрузки
62
Владелец
Mobile DevOps, CI/CD, Mobile Build & Test Automation. Swift, Kotlin, XCTest, XCUITest, Xcode Server, Apple Developer tools, Flutter, Ruby, PHP etc