Concord Pro와 Git 서버 간의 자동 미러링

Ari Mahpour
|  작성 날짜: 구월 18, 2020  |  업데이트 날짜: 구월 19, 2020
Concord Pro와 Git 서버 간의 자동 미러링

Altium Concord Pro™ 단독 제품 및 브랜드 이름은 단종되었으며, 그 기능은 이제 Altium 엔터프라이즈 솔루션의 일부로 제공됩니다. 자세한 내용은 여기에서 알아보세요.

Altium Concord Pro를 사용하여 Git 서버와 관리되는 프로젝트 연결에서는 Altium Concord Pro™ 서버에서 선호하는 Git 서버(예: Github, Bitbucket, Gitlab 등)로 Git 저장소를 미러링하는 방법을 검토했습니다. 이 글에서는 Git 서버 미러 생성을 자동화하고 포괄적인 로깅을 포함하는 접근 방식을 검토할 것입니다. 여기서 설정하는 것은 Altium Concord Pro 서버에서 Windows 서비스로 실행될 수 있습니다.

개요

Altium Concord Pro는 내부 Git 서버를 사용하여 관리되는 프로젝트를 저장합니다. 이 글을 쓰는 시점에서 Concord Pro는 모든 관리되는 프로젝트를 외부 Git 서버에 기본적으로 저장할 방법이 없습니다. Concord Pro 서버의 모든 관리되는 프로젝트를 다른 Git 서버로 미러링하는 과정을 자동화하는 예제 스크립트와 아키텍처를 살펴볼 것입니다. 자신만의 Git 서버 미러를 생성하고 코드를 얻으려면 이 Gitlab 저장소에서 다운로드할 수 있습니다.

왜 Git 서버 미러를 사용해야 할까요? 외부 Git 서버에 디자인을 저장하고자 하는 이유는 다양할 수 있습니다. 그 중 가장 주된 이유는 종합적인 리비전 이력 백업을 유지하기 위해서입니다. 여러분은 자체 Concord Pro 서버에서 프로젝트를 관리하는 간단한 방법을 원할 수 있습니다. 프로젝트가 Concord Pro 서버에서 삭제되더라도, Git 서버 미러에는 보존될 수 있습니다. 이것은 단순히 프로젝트 파일을 미러링하는 것 이상의 기능을 하며, 커밋, 브랜치 등의 이력도 저장합니다.

Git 서버 미러 아키텍처

이 서비스를 구성하는 몇 가지 핵심 구성 요소는 다음과 같습니다:

  1. Watchdog Python 라이브러리: 이것은 Concord Pro 서버의 Git 저장소 폴더를 모니터링하고 파일이 변경될 때 이벤트를 트리거합니다
  2. Windows Server 라이브러리, pywin32를 활용: 이것은 기본 Python 스크립트를 Windows 서비스로 변환하여 Windows Server에서 중단 없이 실행할 수 있게 합니다.
  3. FirebirdSQL 파이썬 라이브러리: 이를 통해 Concord Pro의 Firebird 데이터베이스에 접근하여 관리되는 프로젝트에 대한 정보를 추출할 수 있습니다.
  4. 선호하는 Git 서버의 API: 이 예에서는 Atlassian (Bitbucket) 파이썬 라이브러리가 사용되어 Bitbucket 저장소를 열거하고 필요할 때 새로운 저장소를 생성합니다.

코드는 두 부분으로 나뉩니다: 조회 테이블과 동기화기입니다. 조회 테이블(코드에서 "repo dictionary"로도 알려져 있음)은 각 Concord Pro 관리 프로젝트 저장소와 대상/원격 저장소 사이의 연결자 역할을 합니다. Concord Pro가 GUID를 사용하기 때문에, 저장소 이름/설명은 Firebird 데이터베이스 내에 있습니다. 이 예에서, 조회 테이블, 또는 dict는 GUID를 키로 사용하고 원격 저장소(원격 Git 서버상의)를 값으로 사용합니다. 동기화기 부분은 Watchdog 라이브러리를 사용하여 Concord Pro 설치 폴더 내의 Git 폴더를 재귀적으로 모니터링하여 파일 변경 이벤트를 감지합니다. 어떤 폴더(즉, 저장소)의 마스터 파일이 변경되면, Git HEAD가 새로운 해시로 이동했다고 가정하는 것이 상대적으로 안전합니다. 이는 본질적으로 저장소가 업데이트되었다는 것을 의미합니다. 이는 동기화기에게 Concord Pro 서버의 GUID 저장소를 원격 Git 서버의 원격 저장소로 미러링하도록 지시하는 이벤트를 생성합니다(조회 테이블 repo dictionary를 사용하여). git 미러링이 일어나면, 거래가 완료되고, 큐에 다음 이벤트가 있을 경우(존재한다면) 과정이 반복됩니다.

다음은 두 부분으로 구성된 블록 다이어그램을 Python 스크립트로 나타낸 것입니다:

  1. Git-to-Git 교차 참조: 이것은 한 스크립트에서 생성된 조회 테이블입니다
  2. Watchdog Python 라이브러리: 이것은 메인 스크립트에서 실행되는 동기화기입니다
Block Diagram of the Script’s Services
Figure 1: 스크립트 서비스의 블록 다이어그램

조회 테이블

Concord Pro 관리 프로젝트를 원격 Git 서버의 저장소에 연결하는 조회 테이블을 생성하는 방법은 여러 가지가 있습니다. 매우 단순한 방법 중 하나는 원격 저장소를 수동으로 생성한 다음 텍스트 파일을 동기화 스크립트에 입력하는 것입니다. 이 스크립트는 사전 객체를 생성하는데, 이 객체는 동기화기에 어떤 관리 프로젝트가 어떤 원격 Git 저장소에 해당하는지 지시합니다. 이 예에서, 원격 Git 서버는 Bitbucket에 의해 관리되고 있습니다. 따라서, Atlassian (Bitbucket) API가 기존 저장소를 검증하고 필요할 때 새로운 저장소를 생성하는 데 사용되었습니다.

위에서 언급했듯이, 관리되는 프로젝트가 저장소 명명 규칙으로 GUID를 사용하기 때문에, "진짜" 관리 프로젝트의 이름을 얻기 위해 Firebird 데이터베이스에서 조회 기능을 수행해야 합니다. 프로젝트의 이름을 검색한 후, 이를 사용하여 원격 서버에 저장소를 생성할 수 있습니다. 예를 들어, 저장소 GUID가 "E9B1952E-BAFE-4A79-801B-76C0F750A8D7"이고 관리 프로젝트의 이름이 "My Repo"라면, 처음에는 원격 서버에 해당 저장소가 존재하지 않으므로, 일반적인 규칙을 생성해야 할 수도 있습니다: 모든 공백은 대시로 대체되고, 모든 문자는 소문자로 변환됩니다. 이렇게 하면 원격 저장소 이름이 "my-repo"가 됩니다. 저장소를 생성하기 위해 API 호출을 발행한 다음, 이를 사전 테이블/파일에 저장합니다. 이 조회 테이블 초기화가 완료되면(원격 서버에 아직 존재하지 않는 저장소 생성 포함), 동기화기를 시작할 준비가 된 것입니다.

동기화기

위에서 논의한 바와 같이, 동기화기는 Concord Pro 관리 프로젝트 폴더에서 파일 변경 사항을 찾습니다. 그런 다음 리포지토리 사전 스크립트에서 제공하는 조회 테이블을 사용하여 원격 서버에 이를 미러링합니다. 종합적인 로깅과 Windows 서비스 관리와 같은 보조 기능이 백그라운드에서 발생하지만, 이러한 기능들은 스크립트의 핵심 기능에는 포함되어 있지 않습니다. 이 스크립트는 완벽하거나 결함이 없는 것은 아니지만, Concord Pro와 원격 Git 서버 미러 사이에 자동 미러링 서비스를 생성하는 방법을 잘 보여주는 좋은 예시입니다.

결론

이 글에서는 Altium Concord Pro 인스턴스에서 관리 프로젝트를 사용하여 Git 서버 미러를 자동으로 생성하고 채우는 방법에 대한 예시를 검토하고 제공했습니다. Github, Gitlab, 또는 Bitbucket과 같은 원격 Git 서버를 사용하여 Altium Concord Pro 프로젝트를 저장할 수 있는 Git 서버 미러로 사용할 수 있습니다. 이 솔루션을 구성하기 위해 필요한 아키텍처와 서비스를 살펴보고 이들이 어떻게 함께 작동하는지 설명했습니다.

이 예제는 모든 예외 상황을 다루지 않습니다. 그러나, Altium Concord Pro를 호스팅하는 Windows 서버에서 이러한 유형의 미러링을 서비스로 구현하기는 쉽습니다. 우리는 Atlassian(Bitbucket) 서버의 API를 그들의 Python 라이브러리를 통해 활용했지만, API 접근이 가능하다면 다른 Git 서버에서도 이를 구현할 수 있습니다. 자체적인 커스텀 서버에서 작업 중이라면, 여러분의 코드를 사용하여 여러분의 Altium Concord Pro 프로젝트의 Git 서버 미러를 생성하기 위해 이와 같은 단계를 따를 수 있습니다.

오늘 Altium 전문가와 상담하세요더 알아보기 위해.

작성자 정보

작성자 정보

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.

관련 자료

관련 기술 문서

홈으로 돌아가기
Thank you, you are now subscribed to updates.