C++ 프로젝트에 가장 적합한 지속적 통합 도구는 무엇입니까?[닫은]
-
02-07-2019 - |
문제
Cruisecontrol과 Hudson은 널리 사용되는 두 가지 지속적 통합 시스템입니다.두 시스템 모두 자동화된 연속 빌드를 훌륭하게 수행할 수 있지만 배치 또는 bash 빌드 스크립트를 만든 다음 Windows 스케줄러 또는 cron을 사용하여 빌드를 예약하는 것이 훨씬 쉬워 보입니다.
C++ 프로젝트에 사용할 수 있는 더 나은 지속적 통합 시스템이 있습니까?아니면 스크립트와 스케줄러를 사용하는 것이 더 간단한 방법입니까?
해결책
우리는 사용하고 있습니다 크루즈 컨트롤 C ++ 프로젝트의 CI의 경우. 그것이 우리가 ANT를 사용하는 유일한 것이지만, cruisecontrol 용 ANT 빌드 스크립트는 일반 빌드 스크립트를 시작하므로 매우 간단하며 오랫동안 업데이트 할 필요는 없었습니다. 그러므로 Crusiecontrol이 Java 기반이라는 사실은 실제로 우리에게 전혀 문제가되지 않았습니다.
크루즈 컨트롤과 같은 것을 사용하는 주요 이점은
- 빌드 상태를 보여주는 멋진 웹 페이지
- 각 빌드 후 또는 실패한 빌드 후 이메일
- 소스 제어 시스템에 대한 커밋 후 자동 구축
- 빌드 상태를 모니터링하는 Firefox 플러그인
- 빌드 오류에 대한 출력을 보여줍니다.
- 마지막 빌드 이후 어떤 파일이 변경되었는지 보여줍니다 (어떤 개발자가 Buid를 파괴했는지 확인하는 데 좋습니다)
물론 당신은이 모든 일을하는 대본을 직접 쓸 수 있지만 왜 모든 것이 작동합니까? 장기적으로 Cruisecontrol (또는 유사한 것)을 설정하는 초기 비용은 사용자 정의 CI 빌드 스크립트를 유지하고 업데이트하는 비용보다 훨씬 적을 것입니다.
만약 당신이 필요한 모든 것이 매일 빌드를 시작하고 Cron에 의해 시작된 간단한 스크립트가 당신의 요구에 충분하다면, 반드시 그렇게하십시오. 그러나 CI의 장점 중 하나는 모든 체크인 후 빌드 상태 보고서를 얻는 것입니다. 더 많은 작업이 필요하고 Cruisecontrol이 이미 수행 할 수있는 대본을 작성하는 것입니다.
다른 팁
I've been using Buildbot for the Spring RTS engine project succesfully.
You can also try JetBrains' TeamCity. It's a commercial product but it gives a free license for up to 20 build configurations.
One of the nice features of a continuous integration (CI) tool is that a build gets triggered every time something is checked into your source control repository.
If that is not something you need then you are probably better of using the windows task scheduler or cron jobs.
In addition CI tools also come with a (web) dashboard and advanced logging capabilities.
Your question seems to me more "why would I use a CI tool" then "which CI tool should I use". If a batch script serves your needs, please use that. (Re)creating a build environment only becomes easier if you do not need a CI tool as an additional component. If you want source control triggered build, a dashboard, storage of old build results or other logging, use a CI tool and avoid developing all such functions in batch or shell scripts.