Compilación, prueba e implementación de aplicaciones Xcode

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

En este inicio rápido se muestra cómo compilar e implementar proyectos de Xcode con canalizaciones de YAML en Azure Pipelines.

Requisitos previos

  • Una organización y un proyecto de Azure DevOps donde tiene permiso para crear canalizaciones e implementar aplicaciones.
  • Un proyecto y una aplicación de Xcode 9+ en un repositorio de GitHub. Para obtener más información, consulte Creación de un proyecto de Xcode para una aplicación.

Creación de la canalización

Importante

Durante los procedimientos de GitHub, es posible que se le pida que cree una conexión de servicio de GitHub o que se redirija a GitHub para iniciar sesión, instalar Azure Pipelines o autorizar Azure Pipelines. Siga las instrucciones que aparecen en pantalla para completar el proceso. Para más información, consulte Acceso a repositorios de GitHub.

  1. En el proyecto de Azure DevOps, seleccione Canalizaciones>Nueva canalización o Crear canalización si esta canalización es la primera del proyecto.
  2. Seleccione GitHub como la ubicación del código fuente.
  3. En la pantalla Seleccionar un repositorio, seleccione el repositorio para su proyecto de Xcode.
  4. En la pantalla Configurar su canalización, seleccione Xcode.

Azure Pipelines proporciona una canalización de inicio basada en la plantilla de Xcode. Revise el código en azure-pipelines.yml.

Entorno de compilación

Xcode está preinstalado en los agentes macOS hospedados por Microsoft en Azure Pipelines, por lo que no es necesario configurar ninguna infraestructura. Para conocer las versiones exactas de Xcode que están preinstaladas, consulte el software de Agentes hospedados por Microsoft.

El nodo pool de la parte superior del archivo azure-pipelines.yml selecciona el grupo de agentes adecuado.

pool:
  vmImage: 'macOS-latest'

Tarea de compilación de Xcode

La tarea de Xcode crea, prueba o archiva un área de trabajo de Xcode en macOS y, opcionalmente, puede empaquetar una aplicación. El paso Xcode del archivo de inicio azure-pipelines.yml compila el proyecto de iOS con su esquema predeterminado, para el Simulador y sin empaquetar. Puede cambiar valores y agregar parámetros para que coincidan con la configuración del proyecto.

steps:
- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: ''
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
    xcodeVersion: 'default' # Options: 10, 11, 12, 13, 14, default, specifyPath

Guardar y ejecutar la canalización

Cuando termine de revisar el código en azure-pipelines.yml, seleccione Guardar y ejecutar.

Captura de pantalla del botón Guardar y ejecutar en una nueva canalización de YAML.

Opcionalmente, edite el mensaje Confirmar y proporcione una descripción. A continuación, seleccione Guardar y ejecutar de nuevo para confirmar el archivo azure-pipelines.yml en el repositorio e iniciar una compilación.

En la página de ejecución de compilación se muestran los detalles y el progreso de la compilación. Si desea ver la canalización en acción, seleccione Trabajo en la parte inferior de la página.

Ahora ya tiene una canalización YAML en funcionamiento, azure-pipelines.yml, en el repositorio que está lista para que la personalice.

Personalización de la canalización

Para realizar cambios en la canalización, seleccione Editar en la página de la canalización. En las secciones siguientes se describen algunas formas comunes de personalizar la canalización de Xcode.

Agregar tareas de firma y aprovisionamiento

Una aplicación de Xcode debe estar firmada y aprovisionada para poder ejecutarse en un dispositivo o publicarse en App Store. El proceso de firma y aprovisionamiento debe tener acceso al certificado de firma P12 y a uno o varios perfiles de aprovisionamiento. Para más información, consulte la Firma de la aplicación móvil.

Para que el certificado y el perfil estén disponibles para Xcode durante una compilación, agregue las tareas Instalar certificado de Apple e Instalar perfil de aprovisionamiento de Apple a la canalización.

Uso de una variable de entorno de Carthage

Si el proyecto usa Carthage con un repositorio privado de Carthage, puede configurar la autenticación mediante la variable de entorno GITHUB_ACCESS_TOKEN con un valor de un token que tenga acceso al repositorio. Carthage detecta y utiliza automáticamente esta variable de entorno.

No agregue el token de secreto directamente a la canalización YAML. En su lugar, seleccione Variables en la página de canalización para abrir el panel Variables y crear una variable para este token. Asegúrese de habilitar el icono de bloqueo para cifrar el valor de la variable. Para más información, consulte Configurar variables de entorno.

El código de canalización siguiente usa una variable secreta denominada myGitHubAccessToken para el valor de la variable de entorno GITHUB_ACCESS_TOKEN.

- script: carthage update --platform iOS
  env:
    GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)

Prueba en dispositivos hospedados en Azure

Para probar la aplicación en un laboratorio hospedado de dispositivos iOS en Visual Studio App Center, agregue la tarea Prueba de App Center a la canalización.

Esta tarea requiere una cuenta de evaluación gratuita de App Center, que debe convertirse en de pago después de 30 días para seguir usando el laboratorio de pruebas. Regístrese para obtener una cuenta de App Center antes de usar esta tarea.

En el ejemplo siguiente se ejecuta un conjunto de pruebas de App Center. La tarea usa una conexión de servicio que debe configurar.

Para obtener la sintaxis y la referencia de tareas completas, consulte Tarea de prueba de App Center. Para más información, consulte Uso de Azure DevOps para pruebas de interfaz de usuario.

- task: AppCenterTest@1
  inputs:
    appFile: path/myapp.ipa
    artifactsDirectory: '$(Build.ArtifactStagingDirectory)/AppCenterTest'
    frameworkOption: 'appium'
    appiumBuildDirectory: test/upload
    serverEndpoint: 'My App Center service connection'
    appSlug: username/appIdentifier
    devices: 'devicelist'

Retención de artefactos con el registro de compilación

Para almacenar el archivo del paquete de la AppStore (IPA) de iOS con el registro de compilación o la prueba e implementarlo en canalizaciones posteriores, agregue las tareas Copiar archivos y Publicar artefactos de compilación a la canalización. Para obtener más información, consulte Publicación y descarga de artefactos de canalización.

- task: CopyFiles@2
  inputs:
    contents: '**/*.ipa'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

Implementación en App Center

Para distribuir una aplicación a un grupo de evaluadores o usuarios beta, o promover la aplicación a Intune o a App Store de Apple, agregue la tarea Distribución de App Center. La tarea requiere una cuenta gratuita de App Center que se mantiene gratuita.

En el ejemplo siguiente se distribuye una aplicación a los usuarios. Para obtener la sintaxis y la referencia de tareas completas, consulte Distribución de App Center. Para más información, consulte Implementación de compilaciones de Azure DevOps con App Center.

- task: AppCenterDistribute@3
  inputs:
    serverEndpoint: 'AppCenter'
    appSlug: '$(APP_CENTER_SLUG)'
    appFile: '$(APP_FILE)' # Relative path from the repo root to the IPA file you want to publish
    symbolsOption: 'Apple'
    releaseNotesOption: 'input'
    releaseNotesInput: 'Here are the release notes for this version.'
    destinationType: 'groups'

Instalación de la extensión de App Store de Apple e implementación en App Store de Apple

Para automatizar la interacción con App Store de Apple, instale la extensión App Store de Apple y, a continuación, use las siguientes tareas en la canalización. De forma predeterminada, estas tareas se autentican en Apple mediante una conexión de servicio que debe configurar.

Para automatizar el lanzamiento de actualizaciones en las aplicaciones beta TestFlight de iOS existentes o las aplicaciones de producción de App Store., agregue la tarea Lanzamiento de App Store.

Hay limitaciones para usar esta tarea con la autenticación en dos fases de Apple. La autenticación de Apple es específica de la región y los tokens de sesión de fastlane expiran rápidamente y se debe volver a crear y configurar.

- task: AppStoreRelease@1
  displayName: 'Publish to the App Store TestFlight track'
  inputs:
    serviceEndpoint: 'My Apple App Store service connection' 
    appIdentifier: com.yourorganization.testapplication.etc
    ipaPath: '$(build.artifactstagingdirectory)/**/*.ipa'
    shouldSkipWaitingForProcessing: true
    shouldSkipSubmission: true

Para automatizar la promoción de una aplicación enviada previamente de iTunes Connect a App Store, agregue la tarea Promoción de App Store.

- task: AppStorePromote@1
  displayName: 'Submit to the App Store for review'
  inputs:
    serviceEndpoint: 'My Apple App Store service connection'
    appIdentifier: com.yourorganization.testapplication.etc
    shouldAutoRelease: false