Shashikant86.iOS-Dev

CI Status

Ansible Bereitstellung für iOS-Entwicklung und kontinuierliche Integration

Diese Rolle kann verwendet werden, um einen iOS-Kontinuierliche Integrationsdienst auf macOS einzurichten. Diese Rolle kann auch für das Einrichten einer lokalen Entwicklungsumgebung für iOS-Entwickler verwendet werden. Sie enthält alle benötigten Werkzeuge für iOS-Entwickler wie Xcode, Swift Fastlane, Carthage, Cocoapods und viele Homebrew-Pakete. Sie haben jedoch die volle Kontrolle über die Konfiguration Ihrer eigenen Umgebung mit Variablen. Die Installation von Xcode erfordert eine vorab heruntergeladene XIP-Datei, aber die Installation von Simulatoren und Befehlszeilentools wurde durch diese Rolle automatisiert. Diese Rolle wurde vollständig getestet für

  • macOS Sierra
  • Xcode 8.0.2
  • Xcode 8.3 Beta XIP

Dies sollte ab Xcode 8 funktionieren, da das xip-Format ab Xcode 8 unterstützt wird.

Anforderungen

  • Ansible mit pip installieren Ansible ist eine Python-Bibliothek, die wir mit pip installieren können.

         $ easy_install pip
         $ pip install ansible
    

Anforderungen für die Xcode-Einrichtung

Es gibt mehrere Möglichkeiten, wie diese Rolle Xcode installieren kann. Sie können die für Sie passende auswählen:

  • Xcode XIP/DMG im files-Verzeichnis des Playbooks

Sie sollten eine dmg- oder xip-Datei in das files/-Verzeichnis Ihres Playbooks legen, damit diese Rolle sie aufnimmt und überträgt. Sie müssen die Variablen configure_xcode_playbook_files auf yes setzen, um diesen Modus zu aktivieren. Es gibt einige Variablen, die wir verwenden können, um diesen Ansatz zu nutzen. Wir können xcode_major_version verwenden, um die genaue Version von Xcode anzugeben, die wir verwenden, und xcode_src für den Dateinamen der Xcode DMG/XIP, die auf andere Maschinen kopiert werden soll. Das Beispiel sieht wie folgt aus:

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

Dies ermöglicht es uns, eine bestimmte Version zu installieren (gut für die Stabilität der CI) und vermeidet, dass die Rolle mit der Authentifizierung beim Apple Developer Portal umgehen muss.

  • Xcode aus dem Apple App Store mit MAS CLI herunterladen

Dieser Ansatz benötigt Ihre Apple Developer-ID und das Passwort, die in die Konfigurations-/Variablen-Datei eingegeben werden müssen. Damit wird Xcode aus dem Apple Store für macOS heruntergeladen, was viel Zeit in Anspruch nimmt. Die Variablen, die wir setzen können, sind wie folgt:

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

mas_upgrade_all_apps: no

Sie können einen der obigen Ansätze zur Installation von Xcode wählen, aber es wird empfohlen, den ersten Ansatz "Xcode XIP/DMG im files-Verzeichnis des Playbooks" zu verwenden.

Was in dieser Rolle enthalten ist:

Diese Rolle enthält die folgenden Softwarepakete zur Bereitstellung eines iOS-Kontinuierliche Integrationsservers.

  • Xcode-Installation
  • Swiftenv: Versionsmanager für Swift
  • iOS-Abhängigkeitsverwaltungswerkzeuge wie Carthage, Cocoapods und Swift Package Manager.
  • iOS Continuous Delivery-Tools, d.h. Fastlane-Tools
  • macOS-Voreinstellungen: Steuert die Voreinstellungen und Software-Updates
  • Homebrew: Paketmanager für macOS
  • Homebrew-Pakete wie git, carthage, swiftlint, mas, cmake, RVM, curl, wget usw.
  • Homebrew Cask-Pakete
  • RVM und angepasste Ruby-Versionen
  • Vorinstallierte Gems wie bundler, Fastlane, Cocoapods, Xcpretty
  • Xcode 8
  • Installation von Befehlszeilentools für Xcode
  • Installation von Xcode-Simulatoren (9.2, kann jedoch jederzeit geändert werden)

Sie können Ihr eigenes Playbook anpassen, um Standardwerte 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 eine Liste aller Variablen. Sie können defaults/main.yml-Variablen überschreiben, um Ihre eigene Konfiguration vorzunehmen. Die Hauptvariablen sind:

Xcode-bezogene Variablen

  • configure_xcode_documents_dir Sie können die Xcode-Konfiguration überspringen, indem Sie dies auf no setzen. Dann wird Xcode, Xcode-Befehlszeilentools und Simulatoren nicht installiert. Sie können die Installation von Xcode aktivieren, indem Sie die Xcode XIP in das ~/Documents/-Verzeichnis legen und die Variable auf yes setzen.

  • configure_xcode_playbook_files Sie können Xcode XIP/DMG im files-Verzeichnis des Playbooks ablegen und die nachfolgend genannten Variablen zur Installation von Xcode nutzen.

configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
  • Xcode über den Mac App Store und MAS CLI Sie können Xcode aus dem Mac App Store beziehen, benötigen jedoch Ihre Apple Developer-Anmeldeinformationen, seien Sie vorsichtig! Zu setzende Variablen sind:
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
  - { id: 497799835, name: "Xcode (8.1)" }

mas_upgrade_all_apps: no

Benutzerdefinierte Swift- und Ruby-Version-Manager-Variablen

  • configure_custom_swift Xcode 8 wird mit dem Standard-Swift geliefert, jedoch können wir eine andere Swift-Toolchain verwenden. Sie können dies auf yes setzen und dann die Variable swift_version_custom mit der gewünschten Swift-Version z.B. 3.0.1 konfigurieren.

  • configure_ruby_rvm macOS kommt mit dem Standard-Ruby 2.0.0, aber es ist schwierig, Rubygems mit dem System-Ruby zu verwalten. Wir können Versionsverwaltungstools wie RVM verwenden, indem wir die Variable configure_ruby_rvm auf yes setzen und den Wert ruby-version auf die gewünschte Ruby-Version z.B. 2.4.0 setzen.

macOS-Voreinstellungen und Software-Updates verwandte Variablen

Sie können die macOS-Standardeinstellungen aktivieren oder deaktivieren, indem Sie Befehle in die Variablen macos_sleep_options, macos_animation_options und macos_software_autoupdates einfügen, z.B.

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

Homebrew verwandte Variablen

Sie können den Installationspfad von Homebrew mit homebrew_install_path anpassen und eine Liste von Paketen mit homebrew_installed_packages sowie Homebrew Cask-Anwendungen mit homebrew_cask_apps Variablen auflisten. Sie können auch die Homebrew-Taps mit der Variablen homebrew_taps auflisten.

Wie man diese Rolle verwendet:

Stellen Sie sich vor, Sie haben einen neuen Mac mit frischem macOS installiert. Sie können Ihre gesamte iOS-Entwicklungsumgebung einrichten, indem Sie ein Playbook für diese Rolle erstellen. Sie können die Konfigurationsvariablen nach Bedarf einstellen.

Vorausgesetzt, Sie haben Ansible installiert, können wir die Rolle durch den Befehl herunterladen:

       $ ansible-galaxy install Shashikant86.iOS-Dev

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

Beispiel Playbook

Wir können playbook.yml so erstellen:

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

Bitte beziehen Sie sich auf playbook/config im tests-Verzeichnis als Beispiel.

Einrichtung von kontinuierlicher 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 Funktionen auf TravisCI testen. Sie können die TravisCI-Konfiguration in der .travis.yml und playbook/config im tests-Verzeichnis sehen. Sie können die TravisCI-Ausgabe hier sehen.

Abhängigkeiten

Keine

Lizenz

MIT

Autoreninformation

Shashikant Jagtap

Über das Projekt

Fully automated and customised macOS setup for iOS development & CI

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