Shashikant86.iOS-Dev
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 nano
, 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ą nayes
.configure_xcode_playbook_files
Możesz umieścić Xcode XIP/DMG w katalogufiles
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ć nayes
, 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ę Ruby2.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
nayes
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
ansible-galaxy install Shashikant86.iOS-Dev