Shashikant86.iOS-Dev
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 aufno
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 aufyes
setzen.configure_xcode_playbook_files
Sie können Xcode XIP/DMG imfiles
-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 aufyes
setzen und dann die Variableswift_version_custom
mit der gewünschten Swift-Version z.B.3.0.1
konfigurieren.configure_ruby_rvm
macOS kommt mit dem Standard-Ruby2.0.0
, aber es ist schwierig, Rubygems mit dem System-Ruby zu verwalten. Wir können Versionsverwaltungstools wie RVM verwenden, indem wir die Variableconfigure_ruby_rvm
aufyes
setzen und den Wertruby-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
Fully automated and customised macOS setup for iOS development & CI
ansible-galaxy install Shashikant86.iOS-Dev