Shashikant86.XcodeServer
Xcode Server: Provisioning Ansible dla iOS Continuous Integration
=========
Ten skrypt można użyć do skonfigurowania serwisu ciągłej integracji iOS na macOS przy użyciu serwera CI firmy Apple, znanego jako Xcode Server. Skrypt ten można również wykorzystać do utworzenia lokalnego środowiska deweloperskiego dla programisty iOS. Zawiera wszystkie niezbędne narzędzia dla programistów iOS, takie jak Xcode, Swift Fastlane, Carthage, Cocoapods oraz wiele pakietów Homebrew. Masz pełną kontrolę nad konfiguracją swojego środowiska za pomocą zmiennych. Instalacja Xcode wymaga uprzednio pobranego pliku XIP.
Wymagania
- macOS High Sierra
- Xcode 9 +
Wersje Xcode przed 9 nie są obsługiwane przez ten skrypt.
Wymagania dotyczące instalacji Xcode
Istnieje kilka sposobów, aby ten skrypt zainstalował Xcode, możesz wybrać ten, który jest dla Ciebie odpowiedni:
- Xcode XIP w katalogu
files
w playbooku
Powinieneś umieścić plik xip
w katalogu files/
swojego playbooka lub umieścić plik XIP w katalogu $HOME, ~/Xcode_9.1.xip
. Podaj zmienną xcode_src
z wersją Xcode, którą chcesz zainstalować.
xcode_src: Xcode_9.1.xip
Co zawiera ten skrypt:
Ten skrypt zawiera następujące pakiety oprogramowania do skonfigurowania serwera CI dla iOS:
- Instalacja Xcode 9+
- Serwis Xcode Server
- Ustawienia macOS: kontrole ustawień domyślnych i aktualizacji oprogramowania
- Homebrew: Menedżer pakietów dla macOS do instalacji pakietów, takich jak Carthage lub aplikacje typu cask (opcjonalnie)
- RVM i niestandardowe wersje Ruby dla wstępnie zainstalowanych gemów, takich jak bundler, Fastlane, Cocoapods, Xcpretty (opcjonalnie)
Możesz dostosować swój własny playbook, aby nadpisać domyślne ustawienia i stworzyć własny playbook.
Zmienne skryptu:
Ten skrypt ma wiele zmiennych, które można użyć do skonfigurowania własnego playbooka. Proszę odwołać się do defaults/main.yml
, aby zobaczyć listę wszystkich zmiennych. Możesz nadpisać zmienne w defaults/main.yml
, aby dostosować własną konfigurację. Główne zmienne, które powinieneś zmienić, to:
xcode_src: Xcode_{twoja_wersja}.xip
xcode_server_user: {użytkownik_xcodeserver}
ansible_ssh_user: {użytkownik_ansible_ssh}
Jak korzystać z tego skryptu:
Załóżmy, że masz nowego Maca z nowo zainstalowanym macOS. Możesz skonfigurować cały Xcode Server dla CI, tworząc playbook dla tego skryptu. Możesz skustomizować zmienne konfiguracyjne według swoich potrzeb.
Zakładając, że zainstalowałeś Ansible, możemy zainstalować skrypt, wykonując polecenie:
$ ansible-galaxy install Shashikant86.XcodeServer
Teraz musimy stworzyć swój własny playbook dla tego skryptu, ustawiając zmienne. Możemy użyć pliku defaults/main.yml
tutaj. Przykładowy playbook wygląda tak:
Przykładowy playbook
Utwórz nowy katalog o nazwie XcodeServer
, a także utwórz katalog XcodeServer/files
i umieść plik Xcode XIP w katalogu files
.
$ mkdir XcodeServer
$ mkdir XcodeServer/files
$ touch xcs_playbook.yml
Utwórz plik xcs_playbook.yml
w katalogu XcodeServer
z następującą zawartością, aby uruchomić playbook lokalnie. Możesz zastąpić localhost
innymi hostami.
---
- 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
Zmień ansible_ssh_user
i xcode_server_user
na swoją nazwę użytkownika i dostosuj zmienne według swoich potrzeb. Teraz uruchom playbook:
$ ansible-playbook xcs_playbook.yml
Obserwuj, jak Twoje serwery Mac Mini są przygotowywane do ciągłej integracji iOS.
Konfiguracja ciągłej integracji z Travis
Możemy przetestować ten skrypt na TravisCI, wyłączając konfigurację Xcode, ponieważ TravisCI ma własne obrazy Xcode. Możemy przetestować wszystkie inne elementy na TravisCI. Możesz zobaczyć konfigurację TravisCI w pliku .travis.yml
i playbook/config w katalogu tests
. Możesz zobaczyć wyniki TravisCI tutaj.
Zależności
Brak
Licencja
MIT
Informacje o autorze
Shashikant Jagtap
Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server
ansible-galaxy install Shashikant86.XcodeServer