Shashikant86.XcodeServer
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
Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server
ansible-galaxy install Shashikant86.XcodeServer