Shashikant86.XcodeServer

Status CI

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

O projekcie

Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server

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