Shashikant86.XcodeServer

État CI

Serveur Xcode : Provisionnement Ansible pour l'intégration continue iOS

=========

Ce rôle peut être utilisé pour configurer le service d'intégration continue iOS sur macOS en utilisant le serveur CI d'Apple, connu sous le nom de Serveur Xcode. Ce rôle peut également être utilisé pour établir 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 la liberté de configurer votre propre environnement avec des variables. L'installation de Xcode nécessite un fichier XIP pré-téléchargé.

Exigences

  • macOS High Sierra
  • Xcode 9 +

Les versions de Xcode antérieures à la version 9 ne sont pas prises en charge par ce rôle.

Exigences pour l'installation de Xcode

Il existe plusieurs façons d'installer Xcode avec ce rôle, choisissez celle qui vous convient

  • Xcode XIP dans le répertoire files du playbook

Vous devez placer un fichier xip dans le répertoire files/ de votre playbook ou placer le fichier XIP dans le répertoire $HOME ~/Xcode_9.1.xip. Mentionnez la variable xcode_src avec la version de Xcode que vous souhaitez installer.

xcode_src: Xcode_9.1.xip

Ce que contient ce rôle :

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

  • Installation de Xcode 9+
  • Service de Serveur Xcode
  • Paramètres par défaut macOS : Contrôle des paramètres par défaut et des mises à jour logicielles
  • Homebrew : Gestionnaire de paquets pour macOS pour installer des paquets comme Carthage ou applications Cask (optionnel)
  • RVM et versions Ruby personnalisées pour des gems pré-installés comme bundler, Fastlane, Cocoapods, Xcpretty (optionnel)

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 possède de nombreuses variables qui peuvent être utilisées pour configurer votre propre playbook. Veuillez vous référer à defaults/main.yml pour la liste de toutes les variables. Vous pouvez remplacer les variables de defaults/main.yml pour configurer votre propre. Les principales variables que vous devez changer sont :

xcode_src: Xcode_{votre_version}.xip

xcode_server_user: {votre_utilisateur_xcodeserver}
ansible_ssh_user: {votre_utilisateur_ansible_ssh}

Comment utiliser ce rôle :

Imaginez que vous avez un Mac flambant neuf avec macOS fraîchement installé. Vous pouvez configurer tout votre serveur Xcode pour l'intégration continue en créant un playbook pour ce rôle. Vous pouvez configurer les variables selon vos besoins.

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

       $ ansible-galaxy install Shashikant86.XcodeServer

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

Exemple de Playbook

Créez un nouveau répertoire appelé XcodeServer et également un répertoire XcodeServer/files, puis placez le fichier Xcode XIP à l'intérieur de ce répertoire.

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

Créez xcs_playbook.yml comme ceci à l'intérieur du répertoire 'XcodeServer' avec le contenu suivant pour exécuter le playbook localement. Vous pouvez remplacer localhost par d'autres hôtes.

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

Changez ansible_ssh_user et xcode_server_user par votre nom d'utilisateur et n'hésitez pas à définir les variables selon vos besoins. Maintenant, exécutez ce playbook :

  $ ansible-playbook xcs_playbook.yml

Regardez vos serveurs Mac Mini se configurer pour l'intégration continue iOS.

Configuration de l'intégration continue avec Travis

Nous pouvons tester ce rôle sur TravisCI en désactivant la configuration Xcode, car TravisCI dispose de ses propres images Xcode. Nous pouvons tester tout le reste 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

Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server

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