Shashikant86.XcodeServer
Servidor Xcode: Provisionamiento Ansible para Integración Continua de iOS
=========
Este rol se puede utilizar para configurar el Servicio de Integración Continua de iOS en macOS usando el propio servidor CI de Apple, también conocido como Servidor Xcode. Este rol también puede ser utilizado para configurar un entorno de desarrollo local para el Desarrollador de iOS. Tiene todas las herramientas necesarias para los Desarrolladores de iOS, como Xcode, Swift Fastlane, Carthage, Cocoapods y muchos paquetes de homebrew. Sin embargo, puedes tener control total para configurar tu propio entorno con variables. La instalación de Xcode requiere un archivo XIP predescargado.
Requisitos
- macOS High Sierra
- Xcode 9 +
Las versiones de Xcode anteriores a 9 no son compatibles con este rol.
Requisitos de Configuración de Xcode
Hay un par de maneras en las que este rol puede instalar Xcode, puedes elegir la que sea adecuada para ti.
- Xcode XIP en el directorio
files
del libro de jugadas
Deberías colocar un xip
en el directorio files/
de tu libro de jugadas o colocar el archivo XIP dentro del directorio $HOME ~/Xcode_9.1.xip
Menciona la variable xcode_src
con la versión de Xcode que deseas instalar.
xcode_src: Xcode_9.1.xip
Qué incluye este rol:
Este rol viene con los siguientes paquetes de software para provisionar el Servidor de Integración Continua de iOS.
- Instalación de Xcode 9+
- Servicio de Servidor Xcode
- Predeterminados de macOS: Controla los predeterminados y actualizaciones de software
- Homebrew: Gestor de paquetes para macOS para instalar paquetes como Carthage o aplicaciones cask (opcional)
- RVM y versiones de Ruby personalizadas para gemas preinstaladas como bundler, Fastlane, Cocoapods, Xcpretty (opcional)
Puedes personalizar tu propio libro de jugadas para sobrescribir los predeterminados y crear tu propio libro de jugadas.
Variables del Rol:
Este rol tiene muchas variables que se pueden utilizar para configurar tu propio libro de jugadas. Por favor, consulta defaults/main.yml
para la lista de todas las variables. Puedes sobrescribir las variables de defaults/main.yml
para configurar lo tuyo. Las principales variables que debes cambiar son:
xcode_src: Xcode_{tu_versión}.xip
xcode_server_user: {tu_usuario_xcodeserver}
ansible_ssh_user: {tu_usuario_ansible_ssh}
Cómo usar este Rol:
Imagina que tienes un Mac nuevo con macOS instalado. Puedes configurar todo tu Servidor Xcode para CI creando un libro de jugadas para este rol. Puedes configurar variables según tus necesidades.
Asumiendo que ya has instalado Ansible, podemos descargar el rol ejecutando el comando:
$ ansible-galaxy install Shashikant86.XcodeServer
Ahora que tenemos que crear nuestro propio libro de jugadas para este rol configurando variables, podemos usar el archivo defaults/main.yml
aquí. El libro de jugadas de ejemplo se ve así:
Ejemplo de Libro de Jugadas
Crea un nuevo directorio llamado XcodeServer
, también crea el directorio XcodeServer/files
y coloca el Xcode XIP dentro de la carpeta files
.
$ mkdir XcodeServer
$ mkdir XcodeServer/files
$ touch xcs_playbook.yml
Crea xcs_playbook.yml
dentro del directorio 'XcodeServer' con el siguiente contenido para ejecutar el libro de jugadas localmente. Puedes reemplazar localhost
por diferentes hosts.
---
- 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
Cambia ansible_ssh_user
y xcode_server_user
por tu nombre de usuario y siéntete libre de ajustar las variables según tus necesidades. Ahora ejecuta este libro de jugadas:
$ ansible-playbook xcs_playbook.yml
Observa cómo tus servidores Mac Mini se configuran para la Integración Continua de iOS.
Configurando Integración Continua con Travis
Podemos probar este rol en TravisCI deshabilitando la configuración de Xcode, ya que TravisCI tiene sus propias imágenes de Xcode. Podemos probar todas las demás cosas en TravisCI. Puedes ver la configuración de TravisCI en el archivo .travis.yml
y el libro de jugadas/configuración dentro del directorio tests
. Puedes ver la salida de TravisCI aquí
Dependencias
Ninguna
Licencia
MIT
Información del Autor
Shashikant Jagtap
Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server
ansible-galaxy install Shashikant86.XcodeServer