Shashikant86.iOS-Dev
Provisionamiento de Ansible para Desarrollo de iOS y Integración Continua
Este rol se puede usar para configurar un Servicio de Integración Continua de iOS en macOS. También se puede utilizar para preparar 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, tienes el control total para configurar tu propio entorno con variables. La instalación de Xcode necesita un archivo XIP predescargado, pero la instalación de simuladores y herramientas de línea de comandos ha sido automatizada por este rol. Este rol ha sido probado en
- macOS Sierra
- Xcode 8.0.2
- Xcode 8.3 beta xip
Esto debería funcionar desde Xcode 8 en adelante, ya que el formato xip
es compatible desde Xcode 8.
Requisitos
Instalar Ansible usando pip Ansible es una biblioteca de Python, por lo que se puede instalar usando pip.
$ easy_install pip $ pip install ansible
Requisitos de Configuración de Xcode
Hay un par de formas en que este rol puede instalar Xcode, puedes elegir la que más te convenga:
- Xcode XIP/DMG en el directorio
files
del playbook
Debes colocar un dmg
o xip
en el directorio files/
de tu playbook para que este rol lo recoja y lo transfiera. Debes configurar las variables configure_xcode_playbook_files
a yes
para habilitar este modo. Hay varias variables que podemos utilizar para este enfoque. Podemos usar xcode_major_version
para especificar la versión exacta de Xcode que estamos utilizando y xcode_src
, el nombre del archivo DMG/XIP de Xcode para copiar a otras máquinas. El ejemplo se vería así:
configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
Esto nos permite instalar una versión específica (bueno para la estabilidad de CI) y evita que el rol tenga que autenticar con el Portal de Desarrolladores de Apple.
- Descargar Xcode desde la App Store de Apple usando MAS CLI
Este enfoque requiere tu ID y contraseña de desarrollador de Apple para ser configurados en el archivo de variables/configuración. Esto descargará Xcode de la App Store de macOS, lo cual toma mucho tiempo. Las variables que podemos configurar son las siguientes, ¡puedes poner tu app_id y credenciales ahí!
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
- { id: 497799835, name: "Xcode (8.1)" }
mas_upgrade_all_apps: no
Puedes elegir uno de los enfoques anteriores para instalar Xcode, pero se recomienda usar el primer enfoque 'Xcode XIP/DMG en el directorio files
del playbook'.
¿Qué incluye este rol?
Este rol viene con los siguientes paquetes de software para aprovisionar un servidor de Integración Continua de iOS.
- Instalación de Xcode
- Swiftenv: Gestor de versiones para Swift
- Herramientas de gestión de dependencias de iOS como Carthage, Cocoapods y Swift Package Manager.
- Herramientas de entrega continua de iOS, es decir, herramientas Fastlane
- Configuraciones predeterminadas de macOS: Controla configuraciones predeterminadas y actualizaciones de software
- Homebrew: Gestor de paquetes para macOS
- Paquetes de Homebrew como git, carthage, swiftlint, mas, cmake, RVM, curl, wget, etc.
- Paquetes de Homebrew Cask
- RVM y versiones personalizadas de Ruby
- Gems preinstaladas como bundler, Fastlane, Cocoapods, Xcpretty
- Xcode 8
- Instalación de herramientas de línea de comandos para Xcode
- Instalación del simulador de Xcode (9.2, pero puedes cambiarlo en cualquier momento)
Puedes personalizar tu propio playbook para sobrescribir los valores predeterminados y crear tu propio playbook.
Variables del rol:
Este rol tiene muchas variables que se pueden usar para configurar tu propio playbook. Por favor, consulta defaults/main.yml
para ver la lista de todas las variables. Puedes sobrescribir las variables de defaults/main.yml
para configurar tu propio. Las principales variables son:
Variables Relacionadas con Xcode
configure_xcode_documents_dir
Puedes omitir la configuración de Xcode configurándolo ano
, entonces no instalará Xcode, las herramientas de línea de comandos de Xcode y los simuladores. Puedes habilitar la instalación de Xcode colocando el XIP de Xcode en el directorio~/Documents/
y configurando la variable ayes
.configure_xcode_playbook_files
Puedes poner el XIP/DMG de Xcode dentro del directoriofiles
del playbook y usar las variables mencionadas a continuación para instalar Xcode.
configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
- Xcode usando la Mac App Store y MAS CLI Puedes obtener Xcode de la Mac App Store, pero requiere tus credenciales de desarrollador de Apple, ¡así que ten cuidado! Las variables a establecer son:
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
- { id: 497799835, name: "Xcode (8.1)" }
mas_upgrade_all_apps: no
Variables de Gestor de Versiones Personalizados para Swift y Ruby
configure_custom_swift
Xcode 8 viene con Swift por defecto, sin embargo, podemos usar una cadena de herramientas de Swift diferente. Puedes configurarlo comoyes
, luego debes configurar la variableswift_version_custom
con el valor de la versión de Swift que deseas, por ejemplo,3.0.1
.configure_ruby_rvm
macOS viene con Ruby por defecto2.0.0
, pero es difícil gestionar Rubygems usando el Ruby del sistema. Podemos usar herramientas de gestión de versiones como RVM configurando la variableconfigure_ruby_rvm
ayes
y estableciendo el valor deruby-version
a la versión de Ruby que queremos, por ejemplo,2.4.0
.
Variables Relacionadas con Configuraciones Predeterminadas de macOS y Actualizaciones de Software
Puedes activar ON o OFF las configuraciones predeterminadas de macOS colocando comandos dentro de las variables macos_sleep_options
, macos_animation_options
y macos_software_autoupdates
, por ejemplo:
macos_sleep_options:
- systemsetup -setsleep Never
- systemsetup -setharddisksleep Never
Variables Relacionadas con Homebrew
Puedes personalizar la ruta de instalación de Homebrew usando homebrew_install_path
y la lista de paquetes usando homebrew_installed_packages
y las aplicaciones de Homebrew Cask usando la variable homebrew_cask_apps
. También puedes listar los taps de Homebrew usando la variable homebrew_taps
.
Cómo usar este rol:
Imagina que tienes una Mac nueva con un macOS recién instalado. Puedes configurar todo tu entorno de desarrollo de iOS creando un Playbook para este rol. Puedes configurar variables según tus necesidades.
Suponiendo que ya has instalado Ansible, podemos descargar el rol ejecutando el comando:
$ ansible-galaxy install Shashikant86.iOS-Dev
Ahora que tenemos que crear nuestro propio playbook para este rol configurando variables, podemos usar el archivo defaults/main.yml
aquí. El ejemplo de playbook se vería así:
Ejemplo de Playbook
Podemos crear playbook.yml
de esta manera:
---
- 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
Por favor consulta el config de playbook dentro del directorio tests
como ejemplo.
Puedes crear config.yml
y llamarlo desde el archivo del playbook si deseas mantener las variables fuera del archivo del playbook.
Configurando la Integración Continua con Travis
Podemos probar este rol en TravisCI desactivando 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 .travis.yml
y el config de playbook dentro del directorio tests
. Puedes ver la salida de TravisCI aquí.
Dependencias
Ninguna
Licencia
MIT
Información del Autor
Shashikant Jagtap
Fully automated and customised macOS setup for iOS development & CI
ansible-galaxy install Shashikant86.iOS-Dev