Mirroring automatico tra Concord Pro e il tuo server Git

Ari Mahpour
|  Creato: settembre 18, 2020  |  Aggiornato: settembre 19, 2020
Mirroring automatico tra Concord Pro e il tuo server Git

Altium Concord Pro™ come prodotto autonomo e nome del marchio è stato interrotto e le sue funzionalità sono ora disponibili come parte delle nostre soluzioni enterprise di Altium. Scopri di più qui.

In Collegare Progetti Gestiti con il tuo Server Git usando Altium Concord Pro, abbiamo esaminato come duplicare i repository Git dal tuo server Altium Concord Pro™ al tuo server Git preferito (ad esempio, Github, Bitbucket, Gitlab, ecc.). In questo articolo, esamineremo un approccio che automatizza la creazione di uno specchio del server Git e include una registrazione completa. Quello che configureremo qui può funzionare come un servizio Windows sul tuo server Altium Concord Pro.

Panoramica

Altium Concord Pro utilizza un server Git interno per memorizzare i Progetti Gestiti. Al momento della scrittura di questo articolo, Concord Pro non ha modo di memorizzare tutti i Progetti Gestiti su un server Git esterno nativamente. Cammineremo attraverso un esempio di script e architettura che automatizza il processo di duplicazione di tutti i Progetti Gestiti su un server Concord Pro su un altro server Git. Per ottenere il codice e creare il tuo specchio del server Git, puoi scaricarlo da questo repository Gitlab.

Perché dovremmo usare uno specchio del server Git? Ci possono essere miriadi di motivi per cui si vorrebbe conservare i propri progetti su un server Git esterno rispetto a Concord Pro. Il motivo principale è mantenere un backup completo della cronologia delle revisioni. Potresti volere un modo semplice per gestire i progetti dal tuo server Concord Pro locale. Se un progetto viene eliminato dal server Concord Pro, può essere conservato sullo specchio del server Git. Questo fa più che semplicemente specchiare i file del progetto, conserva anche una cronologia di commit, rami, ecc.

Architettura dello Specchio del Server Git

Ci sono alcuni componenti chiave che costituiscono questo servizio:

  1. La Libreria Python Watchdog: Questa monitora le cartelle del repository Git sul server Concord Pro e innesca un evento quando qualsiasi file cambia
  2. Libreria Windows Server che utilizza pywin32: Questo trasforma uno script Python di base in un servizio Windows in modo che possa essere eseguito sul tuo Windows Server senza interruzioni.
  3. La libreria Python FirebirdSQL: Questo ci permette di accedere al database Firebird di Concord Pro e estrarre informazioni sui Progetti Gestiti
  4. API del tuo server Git preferito: In questo esempio, viene utilizzata la libreria Python di Atlassian (Bitbucket) per enumerare i repository Bitbucket e crearne di nuovi quando necessario.

Il codice è suddiviso in due parti: la tabella di ricerca e il sincronizzatore. La tabella di ricerca (nota anche come "dizionario del repository" nel codice) funge da collegamento tra ogni repository del Progetto Gestito Concord Pro e il tuo repository target/remoto. Poiché Concord Pro utilizza GUID, il nome/descrizione del repository si trova all'interno del database Firebird. In questo esempio, la tabella di ricerca, o dict, utilizza il GUID come chiave e il repository remoto (sul tuo server Git remoto) come valore. La parte del sincronizzatore utilizza la libreria Watchdog per monitorare ricorsivamente la cartella Git nella cartella di installazione di Concord Pro per qualsiasi evento di modifica dei file. Quando il file principale per qualsiasi cartella (ovvero repository) cambia, è relativamente sicuro presumere che il HEAD di Git sia stato spostato su un nuovo hash. Questo, essenzialmente, significa che il repository è stato aggiornato. Questo genera un evento che indica al sincronizzatore di specchiare il repository del GUID dal server Concord Pro al repository remoto sul server Git remoto (utilizzando la tabella di ricerca del dizionario del repository). Una volta che avviene la specchiatura git, la transazione si completa e il prossimo evento in coda (se esiste) ripete il processo.

Il seguente è un diagramma a blocchi che rappresenta le due parti come script Python:

  1. Git-to-Git Cross Reference: Questa è la tabella di riferimento incrociato che viene generata in uno script
  2. Libreria Python Watchdog: Questo è il sincronizzatore che viene eseguito nello script principale
Block Diagram of the Script’s Services
Figure 1: Diagramma a blocchi dei servizi dello script

La Tabella di Riferimento

Ci sono molti modi per generare la tabella di riferimento che collega i Progetti Gestiti Concord Pro ai repository del server Git remoto. Un modo molto semplice potrebbe essere quello di creare manualmente il repository remoto e poi inserire un file di testo nello script Sincronizzatore. Questo script genera un oggetto dizionario, che istruisce il sincronizzatore su quale Progetto Gestito si specchia in quale repository Git remoto. In questo esempio, il server Git remoto è gestito da Bitbucket. Pertanto, è stata utilizzata l'API di Atlassian (Bitbucket) per validare i repository esistenti e crearne di nuovi quando necessario.

Come menzionato sopra, poiché i Progetti Gestiti utilizzano GUID per il loro schema di denominazione del repository, è necessario eseguire una funzione di ricerca nel database Firebird per ottenere il nome "vero" del Progetto Gestito. Dopo aver recuperato il nome del progetto, questo può essere utilizzato per creare il repository sul server remoto. Ad esempio, un GUID del repository potrebbe essere "E9B1952E-BAFE-4A79-801B-76C0F750A8D7" con il nome del Progetto Gestito come "My Repo". Tale repository inizialmente non esisterà sul server remoto, e potrebbe essere necessario creare una regola generica: tutti gli spazi vengono sostituiti con un trattino e tutti i caratteri vengono convertiti in minuscolo. Questo comporterà che il nome del tuo repository remoto diventi "my-repo". Si emette una chiamata API per creare il repository e poi lo si memorizza nella tua tabella/file di dizionario. Una volta completata l'inizializzazione della tabella di ricerca (inclusa la creazione di repository che non esistono ancora sul server remoto), sei pronto per avviare il sincronizzatore.

Il Sincronizzatore

Come discusso sopra, il sincronizzatore cerca modifiche ai file nella cartella dei Progetti Gestiti di Concord Pro. Successivamente, le replica sul server remoto utilizzando la tabella di ricerca fornita dallo script del dizionario del repository. Ci sono funzioni ausiliarie come la registrazione completa e la gestione dei servizi di Windows che avvengono in background, ma non fanno parte della funzionalità principale dello script. Sebbene questo script non sia esaustivo e infallibile, è una buona dimostrazione di come si possa creare un servizio di mirroring automatico tra Concord Pro e uno specchio di server Git remoto.

Conclusione

In questo articolo, abbiamo esaminato e fornito un esempio su come creare automaticamente uno specchio di server Git e popolarlo con i Progetti Gestiti nella tua istanza di Altium Concord Pro. Puoi utilizzare un server Git remoto come Github, Gitlab o Bitbucket come specchio del tuo server Git per archiviare i tuoi progetti di Altium Concord Pro. Abbiamo esaminato l'architettura e i servizi necessari per assemblare questa soluzione e poi spiegato come si integrano tutti insieme.

Questo esempio non copre ogni possibile caso particolare. Tuttavia, questo tipo di mirroring è facile da implementare come servizio su un server Windows che ospita Altium Concord Pro. Abbiamo sfruttato l'API su un server Atlassian (Bitbucket) tramite la loro libreria Python, ma potresti anche implementare questo su un altro server Git purché tu abbia accesso all'API. Se stai lavorando sul tuo server personalizzato, puoi seguire questi stessi passaggi con il tuo codice per creare uno specchio del server Git dei tuoi progetti Altium Concord Pro.

Parla oggi stesso con un esperto Altium per saperne di più.

Sull'Autore

Sull'Autore

Ari è un ingegnere con una solida esperienza nei campi di progettazione, produzione, collaudo e integrazione di sistemi elettrici, meccanici e software. Ama riunire gli ingegneri addetti alla progettazione, alla verifica e al collaudo e farli lavorare insieme come un'unità affiatata.

Risorse correlate

Documentazione Tecnica Correlata

Tornare alla Pagina Iniziale
Thank you, you are now subscribed to updates.