Espelhamento Automatizado Entre o Concord Pro e o Seu Servidor Git

Ari Mahpour
|  Criada: Setembro 18, 2020  |  Atualizada: Setembro 19, 2020
Espelhamento Automatizado Entre o Concord Pro e o Seu Servidor Git

O Altium Concord Pro™ como um produto e marca autônoma foi descontinuado, e as capacidades agora estão disponíveis como parte das nossas soluções empresariais Altium. Saiba mais aqui.

Em Conectando Projetos Gerenciados com seu Servidor Git usando o Altium Concord Pro, revisamos como espelhar repositórios Git do seu servidor Altium Concord Pro™ para o seu servidor Git favorito (ou seja, Github, Bitbucket, Gitlab, etc.). Neste artigo, vamos revisar uma abordagem que automatiza a criação de um espelho de servidor Git e inclui registro abrangente. O que configuraremos aqui pode ser executado como um serviço do Windows no seu servidor Altium Concord Pro.

Visão Geral

O Altium Concord Pro utiliza um servidor Git interno para armazenar Projetos Gerenciados. No momento da escrita deste artigo, o Concord Pro não tem como armazenar todos os Projetos Gerenciados em um servidor Git externo nativamente. Vamos passar por um exemplo de script e arquitetura que automatiza o processo de espelhamento de todos os Projetos Gerenciados em um servidor Concord Pro para outro servidor Git. Para obter o código e criar seu próprio espelho de servidor Git, você pode baixá-lo deste repositório Gitlab.

Por que devemos usar um espelho de servidor Git? Pode haver inúmeras razões pelas quais alguém gostaria de armazenar seus projetos em um servidor Git externo versus o Concord Pro. A principal razão é manter um backup abrangente do histórico de revisões. Você pode querer uma maneira simples de gerenciar projetos a partir do seu servidor Concord Pro local. Se um projeto for excluído do servidor Concord Pro, ele pode ser retido no espelho do servidor Git. Isso faz mais do que apenas espelhar arquivos de projeto, também armazena um histórico de commits, branches, etc.

Arquitetura do Espelho de Servidor Git

Existem alguns componentes chave que compõem este serviço:

  1. A Biblioteca Python Watchdog: Esta monitora as pastas do repositório Git no servidor Concord Pro e dispara um evento quando qualquer arquivo é alterado
  2. Biblioteca do Windows Server utilizando pywin32: Isso transforma um script Python básico em um serviço do Windows para que possa ser executado no seu Windows Server sem interrupção.
  3. A Biblioteca Python FirebirdSQL: Isso nos permite acessar o banco de dados Firebird do Concord Pro e extrair informações sobre os Projetos Gerenciados
  4. API do seu servidor Git favorito: Neste exemplo, a Biblioteca Python da Atlassian (Bitbucket) é usada para enumerar repositórios Bitbucket e criar novos quando necessário.

O código é dividido em duas partes: a tabela de consulta e o sincronizador. A tabela de consulta (também conhecida como "dicionário do repositório" no código) serve como um elo entre cada repositório do Projeto Gerenciado Concord Pro e seu repositório alvo/remoto. Como o Concord Pro utiliza GUIDs, o nome/descrição do repositório fica dentro do banco de dados Firebird. Neste exemplo, a tabela de consulta, ou dict, usa o GUID como chave e o repositório remoto (no seu servidor Git remoto) como valor. A parte do sincronizador usa a biblioteca Watchdog para monitorar recursivamente a pasta Git na pasta de instalação do Concord Pro para qualquer evento de mudança de arquivo. Quando o arquivo mestre de qualquer pasta (ou seja, repositório) muda, é relativamente seguro assumir que o HEAD do Git foi movido para um novo hash. Isso, essencialmente, significa que o repositório foi atualizado. Isso dispara um evento que informa o sincronizador para espelhar o repositório do GUID do servidor Concord Pro para o repositório remoto no servidor Git remoto (usando a tabela de consulta do dicionário do repositório). Uma vez que a espelhamento git ocorre, a transação é completada, e o próximo evento na fila (caso exista) repete o processo.

O seguinte é um diagrama de blocos que retrata as duas partes como scripts Python:

  1. Referência Cruzada Git-para-Git: Esta é a tabela de consulta que é gerada em um script
  2. Biblioteca Python Watchdog: Este é o sincronizador que roda no script principal
Block Diagram of the Script’s Services
Figure 1: Diagrama de blocos dos serviços do script

A Tabela de Consulta

Existem muitas maneiras de gerar a tabela de consulta que liga os Projetos Gerenciados Concord Pro aos repositórios do servidor Git remoto. Uma maneira muito trivial seria criar manualmente o repositório remoto e depois alimentar um arquivo de texto no script Sincronizador. Este script gera um objeto dicionário, que instrui o sincronizador sobre qual Projeto Gerenciado espelha qual repositório Git remoto. Neste exemplo, o servidor Git remoto está sendo gerenciado pelo Bitbucket. Portanto, a API da Atlassian (Bitbucket) foi usada para validar repositórios existentes e criar novos quando necessário.

Como mencionado acima, uma vez que os Projetos Gerenciados usam GUID para o esquema de nomeação de seu repositório, é necessário realizar uma função de busca no banco de dados Firebird para obter o nome “verdadeiro” do Projeto Gerenciado. Após recuperar o nome do projeto, isso pode ser usado para criar o repositório no servidor remoto. Por exemplo, um GUID de repositório pode ser “E9B1952E-BAFE-4A79-801B-76C0F750A8D7” com o nome do Projeto Gerenciado como “Meu Repo”. Esse repositório inicialmente não existirá no servidor remoto, e você pode precisar criar uma regra genérica: todos os espaços são substituídos por um traço, e todos os caracteres são convertidos para minúsculas. Isso resultará no nome do seu repositório remoto se tornando “meu-repo”. Você emite uma chamada de API para criar o repositório e então armazena isso na sua tabela/arquivo de dicionário. Uma vez que essa inicialização da tabela de busca tenha sido completada (incluindo a criação de repositórios que ainda não existem no servidor remoto), você está pronto para iniciar o sincronizador.

O Sincronizador

Conforme discutido acima, o sincronizador procura por alterações de arquivos na pasta de Projetos Gerenciados do Concord Pro. Em seguida, ele espelha para o servidor remoto usando a tabela de consulta fornecida pelo script do dicionário de repositório. Existem funções auxiliares, como registro abrangente e gerenciamento de serviço do Windows, que ocorrem em segundo plano, mas não fazem parte da funcionalidade principal do script. Embora este script não seja exaustivo e infalível, é uma boa demonstração de como se pode criar um serviço de espelhamento automatizado entre o Concord Pro e um espelho de servidor Git remoto.

Conclusão

Neste artigo, revisamos e fornecemos um exemplo de como criar automaticamente um espelho de servidor Git e povoá-lo com os Projetos Gerenciados na sua instância do Altium Concord Pro. Você pode usar um servidor Git remoto, como Github, Gitlab ou Bitbucket, como seu espelho de servidor Git para armazenar seus projetos do Altium Concord Pro. Examinamos a arquitetura e os serviços necessários para montar essa solução e, em seguida, explicamos como todos eles se encaixam.

Este exemplo não cobre todos os casos específicos. No entanto, este tipo de espelhamento é fácil de implementar como um serviço em um servidor Windows que hospeda o Altium Concord Pro. Aproveitamos a API em um servidor Atlassian (Bitbucket) através de sua biblioteca Python, mas você também pode implementar isso em outro servidor Git, desde que tenha acesso à API. Se você está trabalhando em seu próprio servidor personalizado, pode seguir os mesmos passos com seu próprio código para criar um espelho de servidor Git de seus projetos Altium Concord Pro.

Fale com um especialista da Altium hoje para saber mais.

Sobre o autor

Sobre o autor

Ari is an engineer with broad experience in designing, manufacturing, testing, and integrating electrical, mechanical, and software systems. He is passionate about bringing design, verification, and test engineers together to work as a cohesive unit.

Recursos relacionados

Documentação técnica relacionada

Retornar a página inicial
Thank you, you are now subscribed to updates.