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.
- En el proyecto de Azure DevOps, seleccione Canalizaciones>Nueva canalización o Crear canalización si esta canalización es la primera del proyecto.
- Seleccione GitHub como la ubicación del código fuente.
- En la pantalla Seleccionar un repositorio, seleccione el repositorio para su proyecto de Xcode.
- 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.
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
Extensiones relacionadas
- Apple App Store de Microsoft
- Codified Security de Codified Security
- MacinCloud de Moboware Inc.
- Mobile App Tasks for iOS and Android de James Montemagno
- Mobile Testing Lab de Perfecto Mobile
- Raygun de Raygun
- React Native de Microsoft
- Version Setter de Tom Gilder