Compilación, prueba e implementación de aplicaciones Xcode
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017
Aprenda a compilar e implementar proyectos de Xcode con Azure Pipelines.
Requisitos previos
- Un proyecto Xcode 9+ en un GitHub de datos. Si no tiene un proyecto, consulte Creating an Xcode Project for an App (Creación de un Project Xcode para una aplicación).
Creación de la canalización
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Vaya a Pipelinesy, a continuación, seleccione Nueva canalización.
Siga los pasos del asistente y seleccione primero GitHub como ubicación del código fuente.
Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub.
Cuando aparezca la lista de repositorios, seleccione el que corresponda.
Es posible que se le redirija a GitHub para instalar la aplicación Azure Pipelines. Si es así, seleccione Aprobar instalación.
Cuando aparezca la pestaña Configurar, seleccione Xcode.
Cuando aparezca la nueva canalización, echa un vistazo a YAML para ver lo que hace. Cuando esté listo, seleccione Guardar y ejecute.

Se le pedirá que confirme un nuevo archivo azure-pipelines.yml en el repositorio. Una vez satisfecho con el mensaje, seleccione Guardar y ejecutar de nuevo.
Si desea ver la canalización en acción, seleccione el trabajo de compilación.
Acaba de crear y ejecutó una canalización que creamos automáticamente, porque el código parece ser una buena coincidencia para la plantilla de Xcode.
Ahora tiene una canalización YAML en funcionamiento ( ) en el repositorio que está lista
azure-pipelines.ymlpara personalizar.Cuando esté listo para realizar cambios en la canalización, selecciónelo en la Pipelines y, a continuación, edite el archivo.
Consulte las secciones siguientes para obtener información sobre algunas de las formas más comunes de personalizar la canalización.
Sugerencia
Para realizar cambios en el archivo YAML como se describe en este tema, seleccione la canalización en la página Pipelines y, a continuación, seleccione Editar para abrir un editor para el archivo.
Entorno de compilación
Puede usar Azure Pipelines para compilar sus aplicaciones con Xcode sin necesidad de configurar ninguna infraestructura propia. Xcode está preinstalado en agentes macOS hospedados por Microsoft en Azure Pipelines. Puede usar los agentes de macOS para ejecutar las compilaciones.
Para ver las versiones exactas de Xcode preinstaladas, consulte Agentes hospedados por Microsoft.
Cree un archivo denominado azure-pipelines.yml en la raíz del repositorio. A continuación, agregue el siguiente fragmento de código azure-pipelines.yml al archivo para seleccionar el grupo de agentes adecuado:
# https://docs.microsoft.com/azure/devops/pipelines/ecosystems/xcode
pool:
vmImage: 'macOS-latest'
Compilación de una aplicación con Xcode
Para compilar una aplicación con Xcode, agregue el siguiente fragmento de código al azure-pipelines.yml archivo. Se trata de un fragmento de código mínimo para compilar un proyecto de iOS con su esquema predeterminado, para el simulador y sin empaquetar. Cambie los valores para que coincidan con la configuración del proyecto. Consulte la tarea Xcode para obtener más información sobre estas opciones.
pool:
vmImage: 'macos-latest'
steps:
- task: Xcode@5
inputs:
actions: 'build'
scheme: ''
sdk: 'iphoneos'
configuration: 'Release'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
xcodeVersion: 'default' # Options: 8, 9, 10, 11, 12, default, specifyPath
Firma y aprovisionamiento
Una aplicación Xcode debe estar firmada y aprovisionada para ejecutarse en un dispositivo o publicarse en el App Store. El proceso de firma y aprovisionamiento necesita acceso al certificado de firma P12 y a uno o varios perfiles de aprovisionamiento. Las tareas Instalar certificado de Apple e Instalar perfil de aprovisionamiento de Apple hacen que estén disponibles para Xcode durante una compilación.
Consulte Sign your mobile app (Firmar la aplicación móvil) para obtener más información.
Carthage
Si el proyecto usa Carthage con un repositorio privado de Carthage, puede configurar la autenticación estableciendo una variable de entorno denominada con un valor de un token que tenga acceso al GITHUB_ACCESS_TOKEN repositorio.
Carthage detectará y usará automáticamente esta variable de entorno.
No agregue el token secreto directamente a la canalización YAML. En su lugar, cree una nueva variable de canalización con su bloqueo habilitado en el panel Variables para cifrar este valor. Vea las variables secretas.
Este es un ejemplo que usa una variable secreta myGitHubAccessToken denominada para el valor de la variable de GITHUB_ACCESS_TOKEN entorno.
- script: carthage update --platform iOS
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
Pruebas en dispositivos hospedados en Azure
Agregue la App Center Prueba para probar la aplicación en un laboratorio hospedado de dispositivos iOS y Android. Se App Center una evaluación gratuita que se debe convertir posteriormente en de pago.
Regístrese con App Center primero.
# App Center test
# Test app packages with Visual Studio App Center
- task: AppCenterTest@1
inputs:
appFile:
#artifactsDirectory: '$(Build.ArtifactStagingDirectory)/AppCenterTest'
#prepareTests: true # Optional
#frameworkOption: 'appium' # Required when prepareTests == True# Options: appium, espresso, calabash, uitest, xcuitest
#appiumBuildDirectory: # Required when prepareTests == True && Framework == Appium
#espressoBuildDirectory: # Optional
#espressoTestApkFile: # Optional
#calabashProjectDirectory: # Required when prepareTests == True && Framework == Calabash
#calabashConfigFile: # Optional
#calabashProfile: # Optional
#calabashSkipConfigCheck: # Optional
#uiTestBuildDirectory: # Required when prepareTests == True && Framework == Uitest
#uitestStorePath: # Optional
#uiTestStorePassword: # Optional
#uitestKeyAlias: # Optional
#uiTestKeyPassword: # Optional
#uiTestToolsDirectory: # Optional
#signInfo: # Optional
#xcUITestBuildDirectory: # Optional
#xcUITestIpaFile: # Optional
#prepareOptions: # Optional
#runTests: true # Optional
#credentialsOption: 'serviceEndpoint' # Required when runTests == True# Options: serviceEndpoint, inputs
#serverEndpoint: # Required when runTests == True && CredsType == ServiceEndpoint
#username: # Required when runTests == True && CredsType == Inputs
#password: # Required when runTests == True && CredsType == Inputs
#appSlug: # Required when runTests == True
#devices: # Required when runTests == True
#series: 'master' # Optional
#dsymDirectory: # Optional
#localeOption: 'en_US' # Required when runTests == True# Options: da_DK, nl_NL, en_GB, en_US, fr_FR, de_DE, ja_JP, ru_RU, es_MX, es_ES, user
#userDefinedLocale: # Optional
#loginOptions: # Optional
#runOptions: # Optional
#skipWaitingForResults: # Optional
#cliFile: # Optional
#showDebugOutput: # Optional
Conservar artefactos con el registro de compilación
Agregue las tareas Copiar archivos y Publicar Artifacts compilación para almacenar el IPA con el registro de compilación o la prueba e implementarlo en canalizaciones posteriores. Vea Artifacts.
- task: CopyFiles@2
inputs:
contents: '**/*.ipa'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Implementar
App Center
Agregue la App Center Distribuir para distribuir una aplicación a un grupo de evaluadores o usuarios beta, o bien promueva la aplicación a Intune o apple App Store. Se requiere App Center cuenta gratuita (no es necesario realizar ningún pago).
# App Center distribute
# Distribute app builds to testers and users via Visual Studio App Center
- task: AppCenterDistribute@1
inputs:
serverEndpoint:
appSlug:
appFile:
#symbolsOption: 'Apple' # Optional. Options: apple
#symbolsPath: # Optional
#symbolsPdbFiles: '**/*.pdb' # Optional
#symbolsDsymFiles: # Optional
#symbolsMappingTxtFile: # Optional
#symbolsIncludeParentDirectory: # Optional
#releaseNotesOption: 'input' # Options: input, file
#releaseNotesInput: # Required when releaseNotesOption == Input
#releaseNotesFile: # Required when releaseNotesOption == File
#isMandatory: false # Optional
#distributionGroupId: # Optional
App Store de Apple
Instale la extensión App Store Apple y use las siguientes tareas para automatizar la interacción con el App Store. De forma predeterminada, estas tareas se autentican en Apple mediante una conexión de servicio que configure.
Release
Agregue la App Store release para automatizar el lanzamiento de actualizaciones en aplicaciones beta de iOS TestFlight existentes o aplicaciones de producción en el App Store.
Consulte las limitaciones de uso de esta tarea con la autenticación en dos fases de Apple, ya que 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 deben volver a crear y volver a configurar.
- task: AppStoreRelease@1
displayName: 'Publish to the App Store TestFlight track'
inputs:
serviceEndpoint: 'My Apple App Store service connection' # This service connection must be added by you
appIdentifier: com.yourorganization.testapplication.etc
ipaPath: '$(build.artifactstagingdirectory)/**/*.ipa'
shouldSkipWaitingForProcessing: true
shouldSkipSubmission: true
Promoción
Agregue la App Store Promover para automatizar la promoción de una aplicación enviada previamente desde iTunes Conectar a la App Store.
- task: AppStorePromote@1
displayName: 'Submit to the App Store for review'
inputs:
serviceEndpoint: 'My Apple App Store service connection' # This service connection must be added by you
appIdentifier: com.yourorganization.testapplication.etc
shouldAutoRelease: false
Extensiones relacionadas
- Apple App Store (Microsoft)
- Seguridad codificada (seguridad codificada)
- MacinCloud (Moboware Inc.)
- Tareas de aplicaciones móviles para iOS y Android (James Montemagno)
- Laboratorio de pruebas móviles (Perfecto Mobile)
- Raygun (Raygun)
- React Native (Microsoft)
- Version Setter (TomDorader)