Espejado Automático Entre Concord Pro y Tu Servidor Git

Ari Mahpour
|  Creado: Septiembre 18, 2020  |  Actualizado: Septiembre 19, 2020
Espejado Automático Entre Concord Pro y Tu Servidor Git

Altium Concord Pro™ como producto y marca independiente ha sido descontinuado y sus capacidades ahora están disponibles como parte de nuestras soluciones empresariales de Altium. Aprende más aquí.

En Vinculando Proyectos Gestionados con tu Servidor Git usando Altium Concord Pro, revisamos cómo espejar repositorios Git desde tu servidor Altium Concord Pro™ a tu servidor Git favorito (es decir, Github, Bitbucket, Gitlab, etc.). En este artículo, revisaremos un enfoque que automatiza la creación de un espejo del servidor Git e incluye un registro completo. Lo que configuraremos aquí puede ejecutarse como un servicio de Windows en tu servidor Altium Concord Pro.

Visión general

Altium Concord Pro utiliza un servidor Git interno para almacenar Proyectos Gestionados. Al momento de escribir este artículo, Concord Pro no tiene forma de almacenar todos los Proyectos Gestionados en un servidor Git externo de manera nativa. Vamos a pasar por un ejemplo de script y arquitectura que automatiza el proceso de espejar todos los Proyectos Gestionados en un servidor Concord Pro a otro servidor Git. Para obtener el código y crear tu propio espejo del servidor Git, puedes descargarlo de este repositorio de Gitlab.

¿Por qué deberíamos usar un espejo de servidor Git? Podría haber una miríada de razones por las cuales uno querría almacenar sus diseños en un servidor Git externo versus Concord Pro. La razón principal es mantener un respaldo completo del historial de revisiones. Puede que desees una forma sencilla de gestionar proyectos desde tu servidor Concord Pro local. Si un proyecto se elimina del servidor Concord Pro, puede ser retenido en el espejo del servidor Git. Esto hace más que simplemente duplicar los archivos del proyecto, también almacena un historial de commits, ramas, etc.

Arquitectura del Espejo del Servidor Git

Hay algunos componentes clave que conforman este servicio:

  1. La Biblioteca Python Watchdog: Esta monitorea las carpetas del repositorio Git en el servidor Concord Pro y desencadena un evento cuando cualquier archivo cambia
  2. Biblioteca de Windows Server utilizando pywin32: Esto convierte un script de Python básico en un servicio de Windows para que pueda ejecutarse en tu Windows Server sin interrupciones.
  3. La Librería Python de FirebirdSQL: Esto nos permite acceder a la base de datos Firebird de Concord Pro y extraer información sobre los Proyectos Gestionados
  4. Tu API de servidor Git favorito: En este ejemplo, se utiliza la Librería Python de Atlassian (Bitbucket) para enumerar los repositorios de Bitbucket y crear nuevos cuando sea necesario.

El código se divide en dos partes: la tabla de búsqueda y el sincronizador. La tabla de búsqueda (también conocida como el "diccionario del repositorio" en el código) actúa como un enlace entre cada repositorio de Proyecto Gestionado de Concord Pro y su repositorio objetivo/remoto. Dado que Concord Pro utiliza GUIDs, el nombre/descripción del repositorio se encuentra dentro de la base de datos Firebird. En este ejemplo, la tabla de búsqueda, o dict, utiliza el GUID como clave y el repositorio remoto (en su servidor Git remoto) como valor. La pieza del sincronizador utiliza la biblioteca Watchdog para monitorear recursivamente la carpeta Git en la carpeta de instalación de Concord Pro para cualquier evento de cambio de archivo. Cuando el archivo maestro de cualquier carpeta (es decir, repositorio) cambia, es relativamente seguro asumir que el HEAD de Git se ha movido a un nuevo hash. Esto, esencialmente, significa que el repositorio ha sido actualizado. Esto desencadena un evento que le indica al sincronizador que refleje el repositorio del GUID desde el servidor de Concord Pro al repositorio remoto en el servidor Git remoto (usando la tabla de búsqueda del diccionario del repositorio). Una vez que ocurre la duplicación git, la transacción se completa, y el próximo evento en la cola (si existe) repite el proceso.

El siguiente es un diagrama de bloques que muestra las dos partes como scripts de Python:

  1. Referencia Cruzada Git-a-Git: Esta es la tabla de búsqueda que se genera en un script
  2. Biblioteca Python Watchdog: Este es el sincronizador que se ejecuta en el script principal
Block Diagram of the Script’s Services
Figure 1: Diagrama de bloques de los servicios del script

La Tabla de Búsqueda

Hay muchas maneras de generar la tabla de búsqueda que enlaza los Proyectos Gestionados de Concord Pro con los repositorios del servidor Git remoto. Una manera muy trivial sería crear manualmente el repositorio remoto y luego introducir un archivo de texto en el script Sincronizador. Este script genera un objeto de diccionario, que instruye al sincronizador sobre qué Proyecto Gestionado se refleja en qué repositorio remoto Git. En este ejemplo, el servidor Git remoto está siendo gestionado por Bitbucket. Por lo tanto, se ha utilizado la API de Atlassian (Bitbucket) para validar los repositorios existentes y crear nuevos cuando sea necesario.

Como se mencionó anteriormente, dado que los Proyectos Gestionados utilizan GUID para su esquema de nomenclatura de repositorios, es necesario realizar una función de búsqueda en la base de datos Firebird para obtener el nombre "real" del Proyecto Gestionado. Después de recuperar el nombre del proyecto, esto se puede usar para crear el repositorio en el servidor remoto. Por ejemplo, un GUID de repositorio podría ser "E9B1952E-BAFE-4A79-801B-76C0F750A8D7" con el nombre del Proyecto Gestionado como "My Repo". Ese repositorio inicialmente no existirá en el servidor remoto, y puede que necesites crear una regla genérica: todos los espacios se reemplazan por un guion, y todos los caracteres se convierten en minúsculas. Esto resultará en que el nombre de tu repositorio remoto se convierta en "my-repo". Emites una llamada API para crear el repositorio y luego lo almacenas en tu tabla/archivo de diccionario. Una vez que esta inicialización de la tabla de búsqueda se ha completado (incluyendo la creación de repositorios que aún no existen en el servidor remoto), estás listo para iniciar el sincronizador.

El Sincronizador

Como se discutió anteriormente, el sincronizador busca cambios de archivos en la carpeta de Proyectos Gestionados de Concord Pro. Luego, lo replica en el servidor remoto utilizando la tabla de búsqueda proporcionada por el script del diccionario del repositorio. Hay funciones auxiliares como el registro exhaustivo y la gestión de servicios de Windows que ocurren en segundo plano, pero no son parte de la funcionalidad principal del script. Aunque este script no es exhaustivo ni infalible, es una buena demostración de cómo uno puede crear un servicio de espejo automatizado entre Concord Pro y un espejo de servidor Git remoto.

Conclusión

En este artículo, revisamos y proporcionamos un ejemplo sobre cómo crear automáticamente un espejo de servidor Git y poblarlo con los Proyectos Gestionados en su instancia de Altium Concord Pro. Puede usar un servidor Git remoto como Github, Gitlab o Bitbucket como su espejo de servidor Git para almacenar sus proyectos de Altium Concord Pro. Examinamos la arquitectura y los servicios necesarios para armar esta solución y luego explicamos cómo encajan todos juntos.

Este ejemplo no cubre todos los casos posibles. Sin embargo, este tipo de espejado es fácil de implementar como un servicio en un servidor Windows que aloja Altium Concord Pro. Hemos aprovechado la API en un servidor de Atlassian (Bitbucket) a través de su biblioteca de Python, pero también podrías implementar esto en otro servidor Git siempre y cuando tengas acceso a la API. Si estás trabajando en tu propio servidor personalizado, puedes seguir estos mismos pasos con tu propio código para crear un espejo del servidor Git de tus proyectos de Altium Concord Pro.

Habla hoy con un experto de Altium para saber más.

Sobre el autor / Sobre la autora

Sobre el autor / Sobre la autora

Ari es un ingeniero con una amplia experiencia en diseño, fabricación, pruebas e integración de sistemas eléctricos, mecánicos y de software. Le apasiona integrar a los ingenieros de diseño, de verificación y de pruebas para que trabajen juntos como una unidad cohesiva.

Recursos Relacionados

Documentación técnica relacionada

Volver a la Pàgina de Inicio
Thank you, you are now subscribed to updates.