Shashikant86.iOS-Dev

État CI

Provisionnement Ansible pour le développement iOS et l'intégration continue

Ce rôle peut être utilisé pour mettre en place un service d'intégration continue iOS sur macOS. Ce rôle peut également être utilisé pour configurer un environnement de développement local pour les développeurs iOS. Il contient tous les outils nécessaires pour les développeurs iOS, tels que Xcode, Swift Fastlane, Carthage, Cocoapods et de nombreux packages Homebrew. Cependant, vous avez un contrôle complet pour configurer votre propre environnement avec des variables. L'installation de Xcode nécessite un fichier XIP pré-téléchargé, mais l'installation des simulateurs et des outils en ligne de commande a été automatisée par ce rôle. Ce rôle a été entièrement testé pour

  • macOS Sierra
  • Xcode 8.0.2
  • Xcode 8.3 beta xip

Cela devrait fonctionner à partir de Xcode 8, car le format xip est pris en charge depuis Xcode 8.

Conditions

  • Installer Ansible avec pip Ansible est une bibliothèque Python, donc nous pouvons l'installer avec pip

         $ easy_install pip
         $ pip install ansible
    

Exigences pour la configuration de Xcode

Il existe plusieurs manières pour que ce rôle installe Xcode, vous pouvez choisir celle qui vous convient le mieux :

  • Xcode XIP/DMG dans le répertoire files du playbook

Vous devez placer un fichier dmg ou xip dans le répertoire files/ de votre playbook pour que ce rôle puisse le récupérer et le transférer. Vous devez définir la variable configure_xcode_playbook_files sur yes pour activer ce mode. Il y a plusieurs variables que nous pouvons utiliser pour cette méthode. Nous pouvons utiliser xcode_major_version pour spécifier la version exacte de Xcode que nous utilisons et xcode_src pour le nom du fichier DMG/XIP de Xcode à copier sur d'autres machines. L'exemple ressemblera à ceci :

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

Cela nous permet d'installer une version spécifique (ce qui est bon pour la stabilité de CI) et évite que le rôle gère l'authentification avec le portail développeur Apple.

  • Télécharger Xcode depuis l'Apple App Store en utilisant MAS CLI

Cette méthode nécessite votre identifiant et votre mot de passe Apple Developer à définir dans le fichier de configuration/variables. Cela téléchargera Xcode depuis l'Apple Store de macOS, ce qui prend beaucoup de temps. Les variables que nous pouvons définir sont les suivantes, vous pouvez y mettre votre app_id et vos identifiants !!

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

mas_upgrade_all_apps: no

Vous pouvez choisir l'une des méthodes ci-dessus pour installer Xcode, mais il est recommandé d'utiliser la première méthode "Xcode XIP/DMG dans le répertoire files du playbook".

Contenu de ce rôle :

Ce rôle inclut les packages logiciels suivants pour provisionner un serveur d'intégration continue iOS.

  • Installation de Xcode
  • Swiftenv : Gestionnaire de version pour Swift
  • Outils de gestion des dépendances iOS comme Carthage, Cocoapods et Swift Package Manager.
  • Outils de livraison continue iOS, c'est-à-dire les outils Fastlane
  • Défauts macOS : Contrôle des paramètres par défaut et des mises à jour logicielles
  • Homebrew : Gestionnaire de paquets pour macOS
  • Packages Homebrew comme git, carthage, swiftlint, mas, cmake, RVM, curl, wget, etc.
  • Packages Homebrew Cask
  • RVM et versions personnalisées de Ruby
  • Gems pré-installés comme bundler, Fastlane, Cocoapods, Xcpretty
  • Xcode 8
  • Installer les outils en ligne de commande pour Xcode
  • Installer le simulateur Xcode (9.2 mais vous pouvez le changer à tout moment)

Vous pouvez personnaliser votre propre playbook pour remplacer les valeurs par défaut et créer votre propre playbook.

Variables du rôle :

Ce rôle contient de nombreuses variables qui peuvent être utilisées pour configurer votre propre playbook. Veuillez consulter defaults/main.yml pour la liste de toutes les variables. Vous pouvez remplacer les variables de defaults/main.yml pour configurer le vôtre. Les variables principales sont :

Variables liées à Xcode

  • configure_xcode_documents_dir Vous pouvez ignorer la configuration de Xcode en définissant cela sur no, alors il n'installera pas Xcode, les outils en ligne de commande Xcode et les simulateurs. Vous pouvez activer l'installation de Xcode en plaçant le fichier XIP de Xcode dans le répertoire ~/Documents/ et en définissant la variable sur yes.

  • configure_xcode_playbook_files Vous pouvez mettre Xcode XIP/DMG dans le répertoire files du playbook et utiliser les variables mentionnées ci-dessous pour installer Xcode

configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
  • Xcode utilisant le Mac App Store et MAS CLI Vous pouvez obtenir Xcode depuis le Mac App Store, mais cela nécessite vos identifiants de développeur Apple, alors soyez prudent ! Les variables à définir sont :
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
  - { id: 497799835, name: "Xcode (8.1)" }

mas_upgrade_all_apps: no

Variables de gestion personnalisée des versions de Swift et Ruby

  • configure_custom_swift Xcode 8 est livré avec Swift par défaut, mais nous pouvons utiliser une autre version de l'outil Swift. Vous pouvez le définir sur yes et vous avez besoin de configurer swift_version_custom avec la valeur de la version Swift que vous souhaitez, par exemple 3.0.1.

  • configure_ruby_rvm macOS fournit Ruby par défaut 2.0.0, mais il est difficile de gérer les Rubygems avec le Ruby système. Nous pouvons utiliser un outil de gestion des versions comme RVM en définissant la variable configure_ruby_rvm sur yes et en définissant la valeur ruby-version sur la version Ruby souhaitée, par exemple 2.4.0.

Variables liées aux défauts macOS et aux mises à jour logicielles

Vous pouvez activer OU désactiver les paramètres par défaut de macOS en mettant des commandes dans les variables macos_sleep_options, macos_animation_options et macos_software_autoupdates, par exemple :

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

Variables liées à Homebrew

Vous pouvez personnaliser le chemin d'installation de Homebrew avec homebrew_install_path et la liste des packages avec homebrew_installed_packages et les applications Homebrew Cask avec homebrew_cask_apps. Vous pouvez également lister les taps Homebrew avec les variables homebrew_taps.

Comment utiliser ce rôle :

Imaginez que vous avez un Mac fraîchement installé avec macOS. Vous pouvez configurer tout votre environnement de développement iOS en créant un playbook pour ce rôle. Vous pouvez configurer les variables selon vos besoins.

En supposant que vous ayez installé Ansible, nous pouvons télécharger le rôle en exécutant la commande :

       $ ansible-galaxy install Shashikant86.iOS-Dev

Maintenant que nous devons créer notre propre playbook pour ce rôle en définissant les variables, nous pouvons utiliser le fichier defaults/main.tml ici. L'exemple de playbook ressemble à ceci :

Exemple de playbook

Nous pouvons créer un playbook.yml comme ceci :

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

Veuillez consulter le playbook/config à l'intérieur du répertoire tests comme exemple.

Vous pouvez créer config.yml et l'appeler depuis le fichier playbook si vous souhaitez garder les variables en dehors du fichier playbook.

Configurer l'intégration continue avec Travis

Nous pouvons tester ce rôle sur TravisCI en désactivant la configuration de Xcode, car TravisCI a ses propres images Xcode. Nous pouvons tester toutes les autres choses sur TravisCI. Vous pouvez voir la configuration TravisCI dans le fichier .travis.yml et le playbook/config dans le répertoire tests. Vous pouvez voir la sortie de TravisCI ici.

Dépendances

Aucune

Licence

MIT

Informations sur l'auteur

Shashikant Jagtap

À propos du projet

Fully automated and customised macOS setup for iOS development & CI

Installer
ansible-galaxy install Shashikant86.iOS-Dev
Licence
Unknown
Téléchargements
315
Propriétaire
Mobile DevOps, CI/CD, Mobile Build & Test Automation. Swift, Kotlin, XCTest, XCUITest, Xcode Server, Apple Developer tools, Flutter, Ruby, PHP etc