Overview
Muchos desarrolladores utilizan canales de integración, entrega e implementación continuos Para probar y publicar automáticamente sus aplicaciones cada vez que realizan cambios. Esto es más común y útil para aplicaciones grandes donde varias personas trabajan en el código base en paralelo mediante un sistema de control de versiones compartido como Git.
Esta guía abarca las etapas generales comunes a la mayoría de los pipelines de CI/CD y describe qué puede hacer en cada etapa. Además, incluye una lista de tareas y acciones comunes que puede realizar en sus pipelines para configurar y probar sus aplicaciones de Atlas App Services.
Tip
See a real example with GitHub Actions
Si desea ver un ejemplo de canalización de CI/CD que administra pruebas, implementaciones y otras tareas para una aplicación real, consulte el artículo Cómo crear canalizaciones de CI/CD para aplicaciones de App Services usando acciones de GitHub en MongoDB Developer Hub.
Etapas del pipeline
A un alto nivel, la mayoría de los oleoductos y tuberías comparten un patrón común: pasar por múltiples etapas, cada una de las cuales aborda diferentes cuestiones.
Desarrollo
La etapa de desarrollo es el primer paso para crear nuevas funciones y corregir errores en una aplicación. En esta etapa, se trabaja con los archivos de configuración y el código fuente de la aplicación para implementar los cambios deseados.
Para desarrollar nuevas funciones para una aplicación existente:
Fork the main app and deploy a new development copy. This instance will have a different App ID than your production app. You can also use environment value templates to use development data sources and other services that are not linked to production.
Desarrolla tu aplicación. Esto podría implicar actualizar o agregar una pantalla de aplicación cliente, agregar un nuevo activador de base de datos o cualquier otra funcionalidad de aplicación. Puedes usar modo de desarrollo si necesitas hacer cambios en tu esquema de objeto de Realm sincronizado.
Ejecuta pruebas automatizadas localmente para asegurarte de que tu código no introduzca nuevos errores. Las pruebas que se aprueban localmente no garantizan que tu aplicación carezca de errores de integración, pero aumentan la confianza de que tus cambios no incluyan regresiones ni comportamientos involuntarios.
Staging
La etapa de staging, también conocida como QA (Control de Calidad), Pruebas o Preproducción, simula los cambios de desarrollo en un entorno lo más similar posible a la producción. Esto proporciona una versión utilizable de la aplicación para su revisión y puede ayudar a detectar errores de integración con servicios en vivo sin afectar los datos de producción.
Los detalles de la implementación de su entorno de pruebas dependen de las necesidades de su aplicación. Sin embargo, puede usar el siguiente procedimiento general para configurarla:
Configure su entorno de pruebas. Utilice servicios y fuentes de datos independientes, que no sean de producción, con configuraciones que reflejen la producción lo más fielmente posible. Por ejemplo, podría usar un clúster Atlas llamado
stagingque, de lo contrario, tenga la misma configuración que su clústerproduction. Según su caso de uso, puede tener una aplicación consistente que reutilice para todas las compilaciones de prueba o puede crear una nueva aplicación para cada compilación de prueba.Create or use an existing staging build. You can automatically create a staging build as part of your CI/CD process, such as when you create a new new pull request. You can use a new app for each staging build or you can reuse a prebuilt environment that you share across builds.
Verify that your app behaves as expected. This might involve running an automated test suite against your staging environment, manually checking behavior, or getting approval through a user-acceptance test.
Producción
La etapa de producción es el último paso de implementación, donde la aplicación modificada se implementa en el entorno de producción. Idealmente, en esta etapa ya ha probado los cambios localmente y en el entorno de pruebas para confirmar que es seguro implementarlos. Puede implementar en producción manualmente o automáticamente como parte de su flujo de trabajo de CI/CD actualizando su aplicación de producción.
Tareas de compilación
Esta sección describe las tareas comunes que realizará en su pipeline CI/CD. Es posible que no siempre haga todas estas tareas dependiendo de su caso de uso y etapa de canalización, pero en general la mayoría de las canalizaciones realizarán todas estas al menos una vez.
Configure the Environment
La configuración y el código de tu aplicación deberían ser generalmente similares entre las etapas de desarrollo. Sin embargo, querrás cambiar el valor de ciertas opciones de configuración dependiendo del entorno.
Determine en qué etapa se encuentra la compilación y configure los valores adecuados. Por ejemplo, puede configurar la aplicación con el ID de una aplicación nueva en la etapa de Desarrollo o usar el ID de la aplicación de producción en la etapa de Producción.
# Use the production App ID for the main branch export REALM_APP_ID="myapp-abcde" # Use a staging App ID for the QA branch export REALM_APP_ID="myapp-staging-fghij" # Use a new App ID for development branches - you'll need to create the app first! export REALM_APP_ID="myapp-dev-zyxwv"
Tip
Encuentra el ID de tu aplicación
Es posible que no siempre puedas codificar el ID de tu aplicación. Puedes buscar un ID de aplicación específico con la CLI de App Services. Para ver un ejemplo, consulta "Crear una aplicación".
Configurar la CLI de App Services
La CLI de App Services es la forma más sencilla de crear, configurar y gestionar Atlas Apps de forma programática. Debería instalar y usar la última versión en sus scripts de despliegue.
La CLI de App Services está disponible npm en. Para instalarla en su sistema, asegúrese de tener instalado Node.js y ejecute el siguiente comando en su shell:
npm install -g atlas-app-services-cli
También necesitará un par de claves API pública/privada de MongoDB Atlas para autenticarse y usar la CLI. Para obtener más información y una guía sobre cómo obtener una clave API, consulte Claves API programáticas.
Para iniciar sesión, guarda tus claves API en una nueva configuración de perfil con nombre y luego inicia sesión con ese perfil:
<Profile Name>: public_api_key: "<MongoDB Atlas Public API Key>" private_api_key: "<MongoDB Atlas Private API Key>" atlas_base_url: "https://cloud.mongodb.com" realm_base_url: "https://services.cloud.mongodb.com" telemetry_mode: ""
appservices login --profile="<Profile Name>"
Tip
Make sure to use the --profile flag in all of your commands, otherwise App Services CLI won't recognize that you're logged in.
Crear una aplicación
Puedes usar la CLI de App Services para crear nuevas aplicaciones y usarlas en desarrollo y pruebas. Si tu pipeline se encuentra en la fase de desarrollo o de prueba, deberías implementar y probar los cambios con una aplicación distinta a la de producción.
To use a new app for your development or staging branch:
Crear una Nueva aplicación
Push a new app based on your branch of the app's configuration files:
cd path/to/realmApp appservices push -y --project="<MongoDB Atlas Project ID>" # e.g. --project="609ea544934fe445460219a2" Guardar el ID de la aplicación
La nueva aplicación tiene un valor de ID de aplicación único que deberá identificar más adelante en su canalización y en su aplicación cliente. Debe guardar el valor en una variable de entorno, un archivo u otra ubicación.
# Save to an environment variable output=$(appservices app describe) app_id=$(echo $output | sed 's/^.*client_app_id": "\([^"]*\).*/\1/') export REALM_APP_ID=app_id # Save to a file echo $REALM_APP_ID > ./clients/ios/realm-app-id.txt
Actualizar una aplicación
You can use App Services CLI to update an existing app, like a shared staging app or your production deployment. The app already exists, so you should be able to look up its App ID.
Para actualizar una aplicación existente, especifique su ID de aplicación en el indicador --remote:
appservices push --remote=$REALM_APP_ID -y
Ejecutar pruebas contra la aplicación
Tu aplicación debe incluir suites automatizadas de pruebas unitarias e integradas que puedas ejecutar para verificar que todo funciona correctamente. Las especificaciones de tu configuración de pruebas variarán según tu aplicación, pero es posible que debas ejecutar pruebas en varias plataformas utilizando una variedad de simuladores.
Si tienes pruebas de integración, podrías comprobar versiones anteriores y ejecutar tus pruebas de integración con la versión actual de la aplicación para asegurar la compatibilidad con versiones anteriores.
Limpiar el trabajo
Al final de una etapa o canalización de CI/CD, es posible que desee limpiar los recursos creados específicamente para esa prueba. Por ejemplo, si crea una nueva aplicación de desarrollo o de prueba, puede eliminar las aplicaciones y las bases de datos asociadas una vez fusionados los cambios. Por otro lado, no conviene limpiar su aplicación de producción ni una aplicación de prueba persistente, si la utiliza.
Antes de limpiar, considere qué recursos podrían ser útiles en el futuro. Por ejemplo, podría optar por omitir la eliminación de aplicaciones y sus bases de datos si las pruebas fallan. De esta manera, podrá investigar el problema manualmente y encontrar cualquier configuración o dato de la aplicación que haya causado el fallo.