Shashikant86.XcodeServer

CI-Status

Xcode-Server: Ansible-Bereitstellung für iOS Continuous Integration

=========

Diese Rolle kann verwendet werden, um den iOS Continuous Integration Service auf macOS mit Apples eigenem CI-Server, auch bekannt als Xcode Server, einzurichten. Diese Rolle kann auch für die Einrichtung einer lokalen Entwicklungsumgebung für iOS-Entwickler verwendet werden. Sie enthält alle erforderlichen Tools für iOS-Entwickler wie Xcode, Swift Fastlane, Carthage, Cocoapods und viele Homebrew-Pakete. Außerdem haben Sie die volle Kontrolle über die Konfiguration Ihrer Umgebung mit Variablen. Die Xcode-Installation benötigt eine vorher heruntergeladene XIP-Datei.

Anforderungen

  • macOS High Sierra
  • Xcode 9 +

Xcode-Versionen vor 9 werden von dieser Rolle nicht unterstützt.

Xcode-Installationsanforderungen

Es gibt mehrere Möglichkeiten, wie diese Rolle Xcode installieren kann. Wählen Sie die, die für Sie geeignet ist:

  • Xcode XIP im files-Verzeichnis des Playbooks

Sie sollten eine xip-Datei im files/-Verzeichnis Ihres Playbooks ablegen oder die XIP-Datei in das $HOME-Verzeichnis ~/Xcode_9.1.xip legen. Geben Sie die Variable xcode_src mit der Version von Xcode an, die Sie installieren möchten.

xcode_src: Xcode_9.1.xip

Was in dieser Rolle enthalten ist:

Diese Rolle enthält folgende Softwarepakete zur Bereitstellung des iOS Continuous Integration Servers:

  • Xcode 9+ Installation
  • Xcode Server-Dienst
  • macOS-Standardeinstellungen: Steuert Standardeinstellungen und Softwareupdates
  • Homebrew: Paketmanager für macOS zur Installation von Paketen wie Carthage oder Cask-Anwendungen (optional)
  • RVM und angepasste Ruby-Versionen für vorinstallierte Gems wie Bundler, Fastlane, Cocoapods, Xcpretty (optional)

Sie können Ihr eigenes Playbook anpassen, um die Standards zu überschreiben und Ihr eigenes Playbook zu erstellen.

Rollenvariablen:

Diese Rolle hat viele Variablen, die zur Konfiguration Ihres eigenen Playbooks verwendet werden können. Bitte beziehen Sie sich auf defaults/main.yml für die Liste aller Variablen. Sie können die Variablen in defaults/main.yml überschreiben, um Ihre eigene Konfiguration vorzunehmen. Die Hauptvariablen, die Sie ändern sollten, sind:

xcode_src: Xcode_{Ihre_Version}.xip

xcode_server_user: {Ihr_XcodeServer_Benutzer}
ansible_ssh_user: {Ihr_ansible_ssh_Benutzer}

So verwenden Sie diese Rolle:

Stellen Sie sich vor, Sie haben einen neuen Mac mit einem neuen macOS. Sie können alle Xcode-Server für CI einrichten, indem Sie ein Playbook für diese Rolle erstellen. Sie können die Konfigurationsvariablen nach Ihren Bedürfnissen einrichten.

Angenommen, Sie haben Ansible installiert, können wir die Rolle mit folgendem Befehl herunterladen:

       $ ansible-galaxy install Shashikant86.XcodeServer

Nun müssen wir unser eigenes Playbook für diese Rolle erstellen, indem wir Variablen festlegen. Wir können die Datei defaults/main.yml hier verwenden. Das Beispiel-Playbook sieht wie folgt aus:

Beispiel-Playbook

Erstellen Sie ein neues Verzeichnis namens XcodeServer, erstellen Sie auch das Verzeichnis XcodeServer/files und legen Sie die Xcode XIP-Datei im files-Verzeichnis ab.

           $ mkdir xcode_server
           $ mkdir XcodeServer/files
           $ touch xcs_playbook.yml

Erstellen Sie die xcs_playbook.yml wie folgt im Verzeichnis 'XcodeServer' mit folgendem Inhalt, um das Playbook lokal auszuführen. Sie können localhost durch andere Hosts ersetzen.

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

Ändern Sie ansible_ssh_user und xcode_server_user mit Ihrem Benutzernamen und passen Sie die Variablen nach Ihren Bedürfnissen an. Führen Sie nun dieses Playbook aus:

  $ ansible-playbook xcs_playbook.yml

Beobachten Sie, wie Ihre Mac Mini-Server für iOS Continuous Integration eingerichtet werden.

Einrichtung von Continuous Integration mit Travis

Wir können diese Rolle auf TravisCI testen, indem wir die Xcode-Konfiguration deaktivieren, da TravisCI eigene Xcode-Images hat. Wir können alle anderen Dinge auf TravisCI testen. Sie können die TravisCI-Konfiguration in der .travis.yml und das Playbook/Config im tests-Verzeichnis sehen. Sie können die TravisCI-Ausgaben hier ansehen.

Abhängigkeiten

Keine

Lizenz

MIT

Autoreninformation

Shashikant Jagtap

Über das Projekt

Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server

Installieren
ansible-galaxy install Shashikant86.XcodeServer
GitHub Repository
Lizenz
Unknown
Downloads
71
Besitzer
Mobile DevOps, CI/CD, Mobile Build & Test Automation. Swift, Kotlin, XCTest, XCUITest, Xcode Server, Apple Developer tools, Flutter, Ruby, PHP etc