Hola, les saluda Luis y aquà les traigo un post.
Índice
Aprenda a usar la canalización de Azure
para crear e implementar aplicaciones de iOS
¿Cómo trabaja un gran equipo de iOS para producir una aplicación grande y compleja? ¿Cómo trabajan varios desarrolladores juntos en la misma base de código? sin anular y destruir el código de cada uno y cómo un desarrollador agrega su código sin destruir accidentalmente alguna funcionalidad en la aplicación.
- Pregunta: ¿cómo trabajan varios desarrolladores juntos en el mismo proyecto?
- Respuesta: Control de fuente.
- Pregunta : ¿cómo se asegura un desarrollador de que su código no interrumpa el proyecto?
- Respuesta : Prueba unitaria.
- Pregunta: ¿cómo varios desarrolladores siguen el mismo estilo de codificación y mantienen un estilo de codificación coherente?
- Respuesta: usando la herramienta Lint.
- Pregunta: ¿Quién es responsable de cargar la compilación?
- Extraiga el código más reciente y combine los cambios.
- Descargue las dependencias y asegúrese de que todas estén actualizadas.
- Ejecute todas las pruebas unitarias y asegúrese de que todas pasen.
- Ejecute las herramientas de pelusa y corrija cualquier código que no siga la guÃa de estilo.
- Descarga el certificado
p12
. - Descargue y combine el perfil de aprovisionamiento.
- Construya, limpie, archive.
- EnvÃe el archivo IPA y adjunte una nota informativa.
bueno, afortunadamente, no necesitamos a nadie para hacer esto, y aquà es donde algo llamado CI / CD
.
Antes de profundizar más, permÃtanme presentarles algunos términos comunes:
- DevOps : enfoque de desarrollo de software que implica desarrollo continuo, pruebas continuas, implementación continua, monitoreo continuo durante todo el ciclo de vida del desarrollo.
- Integración continua (CI): compilación, validación, revisión de código, pruebas unitarias, pruebas de integración.
- Entrega continua (CD): implementación de la aplicación de compilación para probar el servidor y realizar
UAT
. - Implementación continua (CD): implementación de la aplicación probada en el servidor de producción para su lanzamiento.
Después de que cargué el proyecto en Azure Source Controller
y habilité la canalización, les mostraré cómo practicar todo lo que hemos hablado.
Activadores de CI
Especifique los eventos cuando desee ejecutar la canalización. Las canalizaciones YAML están configuradas de forma predeterminada con un disparador de CI en su rama predeterminada (que generalmente es maestra).
Puede configurar activadores para ramas especÃficas o para la validación de solicitudes de extracción. Para un activador de validación de solicitud de extracción, simplemente reemplace el activador: paso con pr: como se muestra en los dos ejemplos siguientes.
Aquà voy a activar cualquier rama que comience con lanzamientos.
trigger: - releases/*
Agentes alojados
Para crear su código o implementar su software con Azure Pipelines
, necesita al menos un agente. A medida que agregue más código y personas, eventualmente necesitará más.
Aquà voy a utilizar un agente de macOS
autohospedado
sin ninguna personalización, puede utilizar el agente de Linux, el agente de Windows, el agente de Docker.
pool: vmImage: 'macos-latest'
Instalar certificados y perfil de aprovisionamiento
Para firmar su aplicación, deberá instalar el certificado y el perfil de aprovisionamiento que ya hemos importado al panel de Azure como un Archivos seguros.
- task: InstallAppleCertificate@2 inputs: # Select the certificate (.p12) that was uploaded to Secure Files to install on the macOS agent. certSecureFile: 'Certificate.p12' # Password to the Apple certificate (.p12). Use a new build variable with its lock enabled on the Variables tab to encrypt this value. certPwd: '$(P12password)' # Select the keychain in which to install the Apple certificate. You can choose to install the certificate in a temporary keychain (default), the default keychain or a custom keychain. A temporary keychain will always be deleted after the build or release is complete. keychain: 'temp' # Select to delete the certificate from the keychain after the build or release is complete. This option is visible when custom keychain or default keychain are selected. deleteCert: true - task: InstallAppleProvisioningProfile@1 inputs: # Select the location of the provisioning profile to install. The provisioning profile can be uploaded to Secure Files or stored in your source repository or a local path on the agent. provProfileSecureFile: 'my-provisioning-profile.mobileprovision'
Luego, después de haber firmado, debe excluir el archivo de pod de la firma de código agregando este código al final de su archivo de pod en caso de que tenga alguna dependencia en su proyecto:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = "" config.build_settings['CODE_SIGNING_REQUIRED'] = "NO" config.build_settings['CODE_SIGNING_ALLOWED'] = "NO" end end end
Antes de ejecutar si tiene dependencias, asegúrese de descargarlo antes de llegar a la etapa de compilación.
Tarea CocoaPods
Esta tarea se ejecuta opcionalmente pod repo update
y luego corre pod install
.
- task: CocoaPods@0 inputs: #(Required) Selecting this option will force running 'pod repo update' before install. Default value: false forceRepoUpdate: true # (Optional) Optionally specify the path to the root of the project directory. If left empty, the project specified in the Podfile will be used. If no project is specified, then a search for an Xcode project will be made. If more than one Xcode project is found, an error will occur. projectDirectory: 'TestPip'
Construye un ambiente
Puede usar Azure Pipelines
para crear sus aplicaciones con Xcode
sin necesidad de configurar su propia infraestructura. Xcode está preinstalado en Agentes macOS alojados en Microsoft en Azure Pipelines
.
Puede utilizar los agentes de macOS para ejecutar sus compilaciones.
Aquà está el fragmento de código YAML para una compilación limpia, analiza la aplicación y el empaque.
- task: Xcode@5 displayName: 'Build the app using Xcode' inputs: #(Required) Enter a space-delimited list of actions. Valid options are build, clean, test, analyze, and archive. For example, clean build will run a clean build. See Apple: Building from the command line with Xcode FAQ. Default value: build actions: 'clean build test analyze' #(Optional) Specify an SDK to use when building the Xcode project or workspace. From the macOS Terminal application, run xcodebuild -showsdks to display the valid list of SDKs. The default value of this field is the variable $(SDK). When using a variable, make sure to specify a value (for example, iphonesimulator) on the Variables tab. Default value: $(SDK) sdk: 'iphoneos' #(Optional) Enter a scheme name defined in Xcode. It must be a shared scheme, with its Shared checkbox enabled under Managed Schemes in Xcode. If you specify a Workspace or project path above without specifying a scheme, and the workspace has a single shared scheme, it will be automatically used. scheme: 'TestPip' #(Optional) Enter the Xcode project or workspace configuration to be built. The default value of this field is the variable $(Configuration). When using a variable, make sure to specify a value (for example, Release) on the Variables tab. Default value: $(Configuration) configuration: 'Debug' #(Optional) Enter a relative path from the root of the repository to the Xcode workspace or project. For example, MyApp/MyApp.xcworkspace or MyApp/MyApp.xcodeproj. Default value: **/*.xcodeproj/project.xcworkspace xcWorkspacePath: 'TestPip/TestPip.xcworkspace' #(Optional) Specify whether to use xcpretty to format xcodebuild output and generate JUnit test results. Enabling this requires xcpretty to be installed on the agent machine. It is preinstalled on Microsoft-hosted build agents. See xcpretty on GitHub. Default value: true useXcpretty: false #Indicate whether an IPA app package file should be generated as a part of the build. Default value: false packageApp: true #'nosign' # Optional. Options: nosign, default, manual, auto signingOption: 'manual' #(Optional) Enter a signing identity override with which to sign the build. This may require unlocking the default keychain on the agent machine. signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)' #(Optional) Enter the UUID of an installed provisioning profile to be used for this build. Use separate build tasks with different schemes or targets to specify separate provisioning profiles by target in a single workspace (iOS, tvOS, watchOS). provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
Tarea Copiar archivos
Utilice esta tarea para copiar archivos de una carpeta de origen a una carpeta de destino utilizando patrones de coincidencia.
- task: CopyFiles@2 inputs: # (Required) File paths to include as part of the copy. contents: '**/*.ipa' #(Required) Target folder or UNC path files will copy to. You can use variables.Example: $(build.artifactstagingdirectory) targetFolder: '$(build.artifactStagingDirectory)' #(Optional) Replace existing files in target folder Default value: false overWrite: true #(Optional) Flatten the folder structure and copy all files into the specified target folder Default value: false flattenFolders: true
Tarea Publicar Construir artefactos
Use esta tarea en una canalización de compilación para publicar artefactos de compilación en Azure Pipelines, TFS o un recurso compartido de archivos.
- task: PublishBuildArtifacts@1 inputs: #The folder or file path to publish. This can be a fully-qualified path or a path relative to the root of the repository. Wildcards are not supported. pathtoPublish: '$(build.artifactStagingDirectory)' #Specify the name of the artifact that you want to create. It can be whatever you want. For example: drop artifactName: 'drop' #Choose whether to store the artifact in Azure Pipelines (Container), or to copy it to a file share (FilePath) that must be accessible from the build agent. publishLocation: 'Container'
Entonces, ahora que el archivo IPA adjunto al archivo Artifacts
y está listo para publicar, puede usar herramientas de distribución como:
- Vuelo de prueba
- Tienda de aplicaciones
- Centro de Aplicaciones
- Tela
- hockeyApp
y más …
Voy a usar AppCenter
para publicar el archivo IPA
.
Tarea Distribuir de App Center
App Center Distribute
es una herramienta para que los desarrolladores lancen rápidamente compilaciones en los dispositivos de los usuarios finales.
Distribute admite aplicaciones de Android, iOS, macOS, UWP, WPF y WinForms, lo que le permite administrar la distribución de aplicaciones en múltiples plataformas, todo en un solo lugar.
Con un completo instalar la experiencia del portal, Distribute no solo es una solución poderosa para la distribución de probadores de aplicaciones beta, sino también una alternativa conveniente a la distribución a través de las tiendas de aplicaciones públicas.
Automatice su flujo de trabajo de distribución aún más con nuestro Compilación del App Center y integraciones de tiendas de aplicaciones públicas.
Al completar una compilación exitosa, envÃe automáticamente la versión de su aplicación a TestFlight, Apple App Store, Google Play.
Utilice esta tarea para distribuir compilaciones de aplicaciones a evaluadores y usuarios a través de App Center.
- task: AppCenterDistribute@3 displayName: 'App Center' inputs: #(Required) Select the service connection for App Center. Create a new App Center service connection in Azure DevOps project settings. serverEndpoint: Test # (Required) The app slug is in the format of {username}/{app_identifier}. To locate {username} and {app_identifier} for an app, click on its name from https://appcenter.ms/apps, and the resulting URL is in the format of https://appcenter.ms/users/{username}/apps/{app_identifier}. If you are using orgs, the app slug is of the format {orgname}/{app_identifier}. appSlug: 'alsofiahmad/TestApp' # (Required) Relative path from the repo root to the APK or IPA file you want to publish appFile: '$(build.artifactstagingdirectory)/**/*.ipa' # (Required) Release notes for this version. releaseNotesInput: 'this to inform you that....etc'
Asà que conozca el archivo IPA publicado con éxito por App Center y todos los probadores notificados con la nota de lanzamiento que ha ingresado.
Integrar con ganchos de servicio
Los enlaces de servicio le permiten ejecutar tareas en otros servicios cuando ocurren eventos en sus proyectos de Azure DevOps. Por ejemplo, cree una tarjeta en Trello cuando se cree un elemento de trabajo o envÃe una notificación automática a los dispositivos móviles de su equipo cuando falle una compilación.
También puede usar enlaces de servicio en aplicaciones y servicios personalizados como una forma más eficiente de impulsar actividades cuando ocurren eventos en sus proyectos.
¿Qué es un gancho de servicio?
Los editores de enlaces de servicio definen un conjunto de eventos. Las suscripciones escuchan los eventos y definen las acciones a realizar en función del evento.
Las suscripciones también se dirigen a los consumidores, que son servicios externos que pueden ejecutar sus propias acciones, cuando ocurre un evento.
Me voy a integrar con el equipo de Microsoft, para obtener más detalles sobre cómo configurar su gancho de servicio.
steps: - task: YodLabs.O365PostMessage.O365PostMessageBuild.O365PostMessageBuild@0 displayName: 'Post message using microsoft team' inputs: # The webhook url (if you have chosen Service Endpoint in the Messsage type) url: 'webhook URL' title: 'his to inform you that.... etc' summary: summary text: text # Should a link to the build detail be automatically added to the message includeLink: false #The theme's color. HTML code or HTML hexadecimal code themeColor: '#7E1A05'
¡Eso es! Después de ahora, centrémonos en el código 📈 💻 y dejemos que CI / CD
haga todo 🚀.
- Documentación técnica, API y ejemplos de código.
- Creación de aplicaciones iOS en Azure Pipelines.
- Integración de Microsoft Teams | Obtenga una URL de WebHook | Sistema de reserva de habitaciones MIDAS.
- Grupos de Office 365 y mensaje de publicación de Microsoft Teams – Visual Studio Marketplace.
Gracias por leer este post.
Añadir comentario