2012-03-28 3 views
8

저는 Qt/C++ 개발자입니다.Qt 연속 빌드 시스템

  • 리눅스
  • OS X
  • 는 Win32 : 나는 설정에 소스 코드를 커밋 한 후, 그것이 내가 사용하고 3 개 플랫폼에 대한 코드를 빌드 빌드 프로세스를 트리거함으로써 연속 통합 환경을 싶습니다

가능한 경우 어떻게 이러한 환경을 설정해야합니까? 모든 힌트 또는 링크를 환영합니다. 젠킨스에 대해 읽은 적이 있지만 좋은 튜토리얼을 찾을 수 없습니다.

+0

소스 코드를 커밋하는 SVN 시스템에 커밋과 같은 이벤트를 캡처하는 데 사용할 수있는 API가있을 수 있습니까? – badmaash

+2

이것은 프로그래밍 질문이 아닙니다. 아마도 http://programmers.stackexchange.com/에 속해 있습니다. – Gray

답변

0

물론 가능합니다. 대부분의 버전 제어 시스템은 서버 측에서 사용자 정의 스크립트를 실행할 수 있습니다. 그들 중 일부는 (예를 들어, 자식), 로컬로 동일한 달성하기 위해 갈고리 있습니다. git's post-commit hook을보십시오.

크로스 플랫폼 빌드를 트리거하는 스크립트를 작성하면됩니다.

0

대부분의 버전 제어 시스템에서는 빌드와 같은 이벤트를 시작할 수 있도록 커밋 후크를 허용합니다. 또는 빌드 시스템은 정기적으로 소스 제어 저장소를 폴링하고 자체 빌드 스케줄링을 관리하도록 구성 할 수 있습니다 (Jenkins를 사용하는 방법입니다).

플랫폼간에 완벽한 빌드를 수행하는 데 걸리는 시간과 해당 간격의 일반적인 체크인 수를 기억하십시오. 공정한 규모의 팀 또는 제한된 빌드 서버 리소스가있는 경우 일괄 체크인에서 연속 통합 빌드를 수행하는 더 좋은 방법을 찾을 수 있습니다. 그렇지 않으면 빌드 시스템이 빠르게 따라 잡을 수 있습니다.

모든 대상 플랫폼에서 빌드 할 수 있는지 여부는 도구 체인에 따라 다릅니다. 내 마음에 오는

2

두 솔루션 :

BuildBot

BuildBot는 파이썬으로 작성된 매우 최적화 된 지속적인 통합 시스템입니다. 마스터 구성 요소는 빌드를 모니터하고 트리거하는 멋진 웹 기반 GUI를 제공합니다. 슬레이브 구성 요소는 대상 시스템 (일반적으로 가상 시스템이지만 개발자 중 한 명인 Mac 랩톱 일 수 있음)에 배치됩니다. 문서 도구는 기본 시스템을 구축하기에 충분하지만 맞춤 설정은 약간 까다 롭습니다 (적어도 나에게 유용했습니다). VC 시스템에서 제공하는 커밋/푸시 후크를 사용하면 쉽게 슬레이브에서 마스터 및 트리거 빌드를 활성화 할 수 있습니다. 또한 증분 빌드를 지원합니다 (프로젝트 규모가 큰 경우 필수). CMake의 저자에 의해 개발 CDash

CDash는 웹 응용 프로그램의 수집은 당신이 물어 보지 정확히, 네트워크를 통해에서 오는 빌드하지만 난 그것을 시도 가치가 있다고 생각합니다. 자신의 컴퓨터에서 빌드 결과를 서버에 지속적으로 제출할 수있는 개발자 팀이있는 경우 매우 강력합니다 (CMake를 사용하는 경우 거의 투명합니다). Buildbot과 같이 서버에서 빌드를 트리거 할 수는 없지만 변경 사항을 확인하고 빌드를 수행하고 결과를 CDash로 전송하는 크론으로 VM을 설정할 수 있습니다.

+0

당신은 BuildBot을 의미합니까? 유닉스와 맥에서 g ++로 프로젝트를 만들어야하지만 MSVC2008을 사용하여 Windows에서 컴파일 할 것입니다. BuildBot은 비 유닉스 시스템을 어떻게 처리 할 수 ​​있습니까? Windows에서 빌드 할 준비가 된 가상 머신을 준비했습니다. 그러나이 방법은 에러가 발생하기 쉽고 그리 자동적이지 않습니다. – linello

+0

저는 qmake를 사용하여 Windows에서 빌드 할 때 MinGW 툴체인을 사용하지만, 우리는 CMake로 마이그레이션 할 계획입니다. VS 프로젝트를 처리 할 수 ​​있습니다. 두 경우 모두 BuildBot 슬레이브가 빌드를 수행 할 수 있습니다. – Masci

+0

우리는 크로스 플랫폼 Qt 개발 (Mac, Windows, Linux)을 위해 buildbot CI를 사용하고 SVN 및 git 저장소와 잘 작동합니다. 다른 git 브랜치를 빌드하기위한 지원은 더 나을 수도 있습니다. –

4

은 또한 여러 가지 이유로 젠킨스을 제안 : 그것은 당신이 나열된 모든 플랫폼에서 실행됩니다

  • .
  • 리포지토리가 업데이트 될 때 빌드를 시작하도록 구성 할 수 있습니다 (힌트 : "폴링 SCM"으로 작업을 구성하면 SCM 도구로 젠킨스가 빌드를 시작하도록 알릴 수 있습니다).
  • 단위 테스트를위한 좋은 지원을 제공합니다 (주로 플러그인을 통해). [당신이 바로 프로젝트는 단위 테스트를하고있어?]
  • 가격은 더 큰 문제가있는 것입니다 바로

입니다 AFAIK, Qt는 정말 다른 플랫폼에서 크로스 컴파일하지 않는 것입니다 . Jenkins (및 적절한 플러그인)를 사용하면이 문제를 해결할 수 있습니다.

마음에 빨리 떠오르는 한 가지 방법은 각 플랫폼에 젠킨스 (Jenkins) 인스턴스를 설치하는 것입니다. 각 인스턴스는 자체 플랫폼 용 버전을 빌드해야합니다. 빌드가 끝나면 생성 된 아티팩트는 모두 공통 공유 위치에 배치됩니다.

+5

> [각 플랫폼의 Jenkins 인스턴스] - 젠킨스 슬레이브가 각 플랫폼에 더 좋을 것입니다. 하나의 중앙 컨트롤이 있고, 각 인스턴스를 업데이트 할 필요가 없으며, 아티팩트가 마스터 등에 저장되어 있습니다. –