Shashikant86.iOS-Dev

Status CI

Provisionowanie Ansible dla Rozwoju iOS i Ciągłej Integracji

Ta rola może być używana do konfigurowania usługi ciągłej integracji iOS na systemie macOS. Może być również używana do ustawienia lokalnego środowiska deweloperskiego dla programistów iOS. Zawiera wszystkie narzędzia potrzebne programistom iOS, takie jak Xcode, Swift, Fastlane, Carthage, Cocoapods oraz wiele pakietów Homebrew. Możesz jednak w pełni dostosować swoje środowisko za pomocą zmiennych. Instalacja Xcode wymaga pobranego wcześniej pliku XIP, ale instalacja emulatorów i narzędzi wiersza poleceń została zautomatyzowana przez tę rolę. Ta rola została w pełni przetestowana dla

  • macOS Sierra
  • Xcode 8.0.2
  • Xcode 8.3 beta xip

Powinno to działać od Xcode 8, ponieważ format xip jest wspierany od Xcode 8.

Wymagania

  • Zainstaluj Ansible za pomocą pip Ansible to biblioteka Pythona, więc możemy ją zainstalować za pomocą pip

         $ easy_install pip
         $ pip install ansible
    

Wymagania dotyczące konfiguracji Xcode

Istnieje kilka sposobów, w jakie ta rola może zainstalować Xcode, możesz wybrać ten, który jest dla Ciebie odpowiedni

  • Xcode XIP/DMG w katalogu files playbooka

Powinieneś umieścić plik dmg lub xip w katalogu files/ swojego playbooka, aby ta rola mogła go przejąć i przekopiować. Musisz ustawić zmienną configure_xcode_playbook_files na yes, aby włączyć ten tryb. Możemy użyć kilku zmiennych, aby wykorzystać to podejście. Możemy użyć xcode_major_version, aby określić dokładną wersję Xcode, której używamy oraz xcode_src, aby podać nazwę pliku DMG/XIP Xcode do skopiowania na inne maszyny. Przykład wygląda tak:

configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip

To pozwala nam zainstalować konkretną wersję (dobre dla stabilności CI) i unika problemów z uwierzytelnianiem w Portalu Dewelopera Apple.

  • Pobierz Xcode ze sklepu Apple App Store używając MAS CLI

To podejście wymaga Twojego identyfikatora Apple Developer ID i hasła w pliku konfiguracyjnym/zmiennych. To pobierze Xcode ze sklepu macOS Apple Store, co może zająć dużo czasu. Zmienne, które możemy ustawić, to:

use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
  - { id: 497799835, name: "Xcode (8.1)" }

mas_upgrade_all_apps: no

Możesz wybrać jedno z powyższych podejść do instalacji Xcode, ale zaleca się użycie pierwszego podejścia 'Xcode XIP/DMG w katalogu files playbooka'.

Co zawiera ta rola:

Ta rola zawiera następujące pakiety oprogramowania do provisionowania serwera ciągłej integracji iOS.

  • Instalacja Xcode
  • Swiftenv: Menedżer wersji dla Swifta
  • Narzędzia do zarządzania zależnościami iOS, takie jak Carthage, Cocoapods i Swift Package Manager
  • Narzędzia do ciągłej dostawy iOS, tj. narzędzia Fastlane
  • Ustawienia domyślne macOS: Kontrola ustawień domyślnych i aktualizacji oprogramowania
  • Homebrew: Menedżer pakietów dla macOS
  • Pakiety Homebrew, takie jak git, carthage, swiftlint, mas, cmake, RVM, curl, wget itd.
  • Pakiety Homebrew Cask
  • RVM i dostosowane wersje Ruby
  • Wstępnie zainstalowane gemsy, takie jak bundler, Fastlane, Cocoapods, Xcpretty
  • Xcode 8
  • Instalacja narzędzi wiersza poleceń dla Xcode
  • Instalacja emulatora Xcode (9.2, ale możesz to zmienić w dowolnym momencie)

Możesz dostosować własny playbook, aby nadpisać domyślne ustawienia i stworzyć swój własny playbook.

Zmienne Roli:

Ta rola ma wiele zmiennych, które mogą być używane do konfigurowania własnego playbooka. Proszę zapoznać się z defaults/main.yml, aby uzyskać listę wszystkich zmiennych. Możesz nadpisać zmienne z defaults/main.yml, aby skonfigurować własne. Główne zmienne to:

Zmienne związane z Xcode

  • configure_xcode_documents_dir Możesz pominąć konfigurację Xcode, ustawiając je na no, wtedy nie będzie instalować Xcode, narzędzi wiersza poleceń Xcode i emulatorów. Możesz włączyć instalację Xcode, umieszczając plik XIP Xcode w katalogu ~/Documents/ i ustawiając zmienną na yes.

  • configure_xcode_playbook_files Możesz umieścić Xcode XIP/DMG w katalogu files playbooka i użyć wymienionych poniżej zmiennych do zainstalowania Xcode

configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
  • Xcode z Mac App Store i MAS CLI Możesz pobrać Xcode z Mac App Store, ale wymaga to danych uwierzytelniających Apple Developer, więc bądź ostrożny! Zmienna do ustawienia:
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
  - { id: 497799835, name: "Xcode (8.1)" }

mas_upgrade_all_apps: no

Zmienne Menedżera Wersji Swifta i Ruby

  • configure_custom_swift Xcode 8 korzysta z domyślnego Swifta, jednak możemy używać innej wersji narzędzia Swift. Możesz ustawić na yes, a następnie musisz skonfigurować zmienną swift_version_custom z wartością wersji Swifta, której chcesz użyć, np. 3.0.1

  • configure_ruby_rvm macOS ma domyślną wersję Ruby 2.0.0, ale trudno zarządzać gemami Rubiego, korzystając z systemowego Rubiego. Możemy skorzystać z narzędzi do zarządzania wersjami, takich jak RVM, ustawiając zmienną configure_ruby_rvm na yes i ustawiając wartość ruby-version na wersję Rubiego, którą chcemy, np. 2.4.0

Zmienne związane z domyślnymi ustawieniami macOS i aktualizacjami oprogramowania

Możesz włączyć ON lub OFF domyślne ustawienia macOS, umieszczając polecenia w zmiennych macos_sleep_options, macos_animation_options i macos_software_autoupdates, np.

macos_sleep_options:
  - systemsetup -setsleep Never
  - systemsetup -setharddisksleep Never

Zmienne związane z Homebrew

Możesz dostosować ścieżkę instalacji Homebrew za pomocą homebrew_install_path oraz listę pakietów używając zmiennej homebrew_installed_packages oraz aplikacji Homebrew Cask za pomocą zmiennej homebrew_cask_apps. Możesz również wylistować tapy Homebrew za pomocą zmiennej homebrew_taps.

Jak używać tej roli:

Wyobraź sobie, że masz nowego Maca z nowo zainstalowanym macOS. Możesz skonfigurować całe swoje środowisko rozwoju iOS, tworząc playbook dla tej roli. Możesz ustawić zmienne według swoich potrzeb.

Zakładając, że zainstalowałeś Ansible, możemy pobrać rolę, uruchamiając polecenie

       $ ansible-galaxy install Shashikant86.iOS-Dev

Teraz musimy stworzyć własny playbook dla tej roli, ustawiając zmienne. Możemy użyć pliku defaults/main.yml tutaj. Przykładowy playbook wygląda następująco:

Przykładowy Playbook

Możemy stworzyć playbook.yml w taki sposób:

---
- 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

Proszę zapoznać się z plikiem playbook/config w katalogu tests jako przykładem.

Ustawienie ciągłej integracji z Travis

Możemy przetestować tę rolę w TravisCI, wyłączając konfigurację Xcode, ponieważ TravisCI ma swoje własne obrazy Xcode. Możemy przetestować inne rzeczy w TravisCI. Możesz zobaczyć konfigurację TravisCI w .travis.yml oraz playbook/config w katalogu tests. Możesz zobaczyć wyniki TravisCI tutaj

Zależności

Brak

Licencja

MIT

Informacje o autorze

Shashikant Jagtap

O projekcie

Fully automated and customised macOS setup for iOS development & CI

Zainstaluj
ansible-galaxy install Shashikant86.iOS-Dev
Licencja
Unknown
Pobrania
315
Właściciel
Mobile DevOps, CI/CD, Mobile Build & Test Automation. Swift, Kotlin, XCTest, XCUITest, Xcode Server, Apple Developer tools, Flutter, Ruby, PHP etc