Desarrollo de una ExApp¶
Resumen¶
Esta página repasa los pasos del desarrollo de una ExApp: preparar el entorno, partir de una plantilla, implementar los métodos del ciclo de vida, empaquetarla como imagen Docker, publicarla en la AppStore y probarla. Está dirigida a quienes desarrollan ExApps.
Fuente: documentación de Nextcloud, «developer_manual/exapp_development/development_overview/ExAppDevelopmentSteps», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
El proceso de desarrollo de una ExApp es similar al de una app normal de APS Conecta Gestión (PHP), y debe seguir las mismas pautas en cuanto a seguridad, diseño y estilo de código (ver Proceso de desarrollo para más detalles), conforme a los estándares del lenguaje de programación que se use.
Aunque una ExApp puede desarrollarse en cualquier lenguaje, se sigue recomendando comprender el ciclo de vida de las solicitudes en PHP de APS Conecta Gestión y otros conceptos básicos, ya que suelen ser similares en el backend de la ExApp con el que se comunica APS Conecta Gestión.
Cada ExApp puede entenderse como un microservicio (contenedor Docker) que se ejecuta por separado de APS Conecta Gestión en el daemon de despliegue, que puede ser remoto o local. La comunicación entre APS Conecta Gestión y la ExApp se realiza por red, protegida con AppAPIAuth.
A continuación se repasan brevemente los pasos del desarrollo de una ExApp.
0. Configuración del entorno de desarrollo¶
En primer lugar, se necesita una instalación de desarrollo de APS Conecta Gestión; consultar Configuración del entorno de desarrollo para más detalles.
1. Partir de una plantilla¶
Lo siguiente es preparar el esqueleto de la ExApp. Hay varios ejemplos de ExApps disponibles, que pueden revisarse y usarse como punto de partida. La plantilla y los ejemplos de ExApps:
[Python]Esqueleto de app[Python]Esqueleto de UI Example[Python]Ejemplo más complejo de interfaz de ExApp con un servicio de terceros[GoLang]Ejemplo de ExApp en Go Langetc.
Contienen la estructura básica de la ExApp, incluidos:
Dockerfile
Backend de la ExApp
Frontend de la ExApp
Configuración manual de las herramientas de traducción y un script de ejemplo para convertir los archivos de traducción al formato l10n de APS Conecta Gestión y al del lenguaje de programación que se use
Algunos flujos de trabajo de GitHub necesarios (p. ej., flujos de trabajo de compilación de imágenes Docker)
Hay más detalles en la sección Visión general de las ExApps.
3. Desarrollo¶
El proceso básico de desarrollo consta de los siguientes pasos:
Implementar los métodos del ciclo de vida ExApp <-> APS Conecta Gestión:
/heartbeat: método de latido (heartbeat) de la ExApp/init: método de inicialización de la ExApp/enabled: método de habilitación/deshabilitación de la ExApp
Implementar la API y la lógica del backend de la ExApp
Implementar el frontend de la ExApp (app Vue.js de APS Conecta Gestión) [opcional]
4. Empaquetado¶
El empaquetado de la ExApp puede hacerse manualmente o mediante GitHub Actions. Se recomienda usar GitHub Actions para el empaquetado, ya que automatiza el proceso de compilar la imagen Docker y subirla al registro de Docker. El flujo de trabajo de GitHub Actions para compilar imágenes Docker se encuentra en el ejemplo de servicio de terceros.
4.1 Aceleración por hardware¶
Si la ExApp trabaja con GPU, conviene considerar compilar imágenes Docker distintas para cada dispositivo de cómputo. Actualmente hay 3 dispositivos de cómputo principales a los que apuntar con imágenes Docker personalizadas:
CPU (predeterminado, sin etiqueta específica)
GPU: CUDA (NVIDIA) (
<image_name>:<version>-cuda)GPU: ROCm (AMD) (
<image_name>:<version>-rocm)
Nota
Si el daemon de despliegue está configurado con el dispositivo de cómputo GPU,
AppAPI intentará descargar primero la imagen Docker con soporte de GPU (<image_name>:<version>-<cuda|rocm>, PR de referencia).
Si no encuentra la imagen, AppAPI intentará descargar la imagen base (CPU) (<image_name>:<version>).
Dockerfile¶
El Dockerfile es necesario para compilar la imagen Docker de la ExApp. Las pautas para escribir el Dockerfile se encuentran en las buenas prácticas para Dockerfile.
Recomendaciones breves:
Mantener el Dockerfile lo más pequeño posible.
Usar imágenes base mínimas para que el tamaño de la imagen sea pequeño.
Colocar las instrucciones que cambian con poca frecuencia al principio del Dockerfile para aprovechar el mecanismo de caché de Docker.
Registros¶
Los registros del contenedor Docker se muestran en los flujos de salida estándar y de error estándar. Para que quien administra pueda ver los registros importantes del contenedor de la ExApp, conviene considerar redirigir los registros a los flujos de salida estándar y de error estándar. Para más información, ver la documentación oficial sobre registros.
5. Publicación en la AppStore¶
Una vez que la ExApp esté lista y la imagen Docker esté disponible en el registro de Docker,
se puede seguir el proceso de publicación en la AppStore.
Es el mismo que para una app normal de APS Conecta Gestión, pero con el requisito de los campos específicos de ExApp en el archivo appinfo/info.xml.
6. Pruebas¶
Es importante asegurarse de que la ExApp funcione como se espera.
Se recomienda tener distintos tipos de configuraciones de desarrollo para probarlas todas.
Aunque el desarrollo principal se hace en local mediante manual_install, también hay que asegurarse de que
la ExApp funcione correctamente en un contenedor Docker con Docker Socket Proxy (HTTP y HTTPS).