Shashikant86.XcodeServer

Estado CI

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

Acerca del proyecto

Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server

Instalar
ansible-galaxy install Shashikant86.XcodeServer
Licencia
Unknown
Descargas
71
Propietario
Mobile DevOps, CI/CD, Mobile Build & Test Automation. Swift, Kotlin, XCTest, XCUITest, Xcode Server, Apple Developer tools, Flutter, Ruby, PHP etc