지속적인 통합을위한 CruiseControl [.Net] 대 TeamCity?


117

실제 경험을 바탕으로 어떤 자동화 된 빌드 환경이 더 나은지 물어보고 싶습니다. .Net과 Java 개발을 계획 중이므로이 두 플랫폼을 모두 지원하는 도구를 갖고 싶습니다.

저는 스택 오버플 로 개발에 사용되는 CruiseControl.NET 및 다양한 OS 플랫폼 및 다양한 프로그래밍 언어를 기반으로하는 빌드 에이전트를 지원하는 TeamCity 에 대해 읽고 알게되었습니다 . 두 가지 모두에 대한 실질적인 경험이 있다면 어떤 것을 선호하고 그 이유는 무엇입니까?

현재 저는 CC가 오픈 소스이고 TC가 실행해야 할 프로젝트가 많을 때 라이선스 대상이라는 사실보다는 도구의 사용 및 관리 용이성에 주로 관심이 있습니다. 소량의 프로젝트에 필요).

또한 위에서 언급 한 사항을 충족하는 다른 도구가 있고 권장할만한 가치가 있다고 생각하는 경우 토론에 포함 시키십시오.

답변:


111

Cruise Control (자바 버전)을 만든 이후로 지속적인 통합 도구를 사용하여 작업했습니다. 나는 거의 모든 것을 어느 시점에서 시도했습니다. TeamCity와 함께하는 것보다 더 행복했던 적이 없습니다. 설정이 매우 간단하고 여전히 많은 전력을 제공합니다. 빌드 시간, 단위 테스트 횟수, 통과율 등을 보여주는 빌드 통계 페이지는 매우 좋습니다. TeamCity의 프로젝트 홈 페이지도 매우 중요합니다. 간단한 .NET 프로젝트의 경우 TeamCity에 솔루션이있는 위치와 테스트가있는 어셈블리를 알려 주면됩니다 (소스 제어 위치 제외). 또한 복잡한 MSBuild 스크립트를 사용하고 빌드 체인을 수행했습니다. 또한 두 번의 TeamCity 업그레이드를 거쳤는데 고통이 없었습니다.

CruiseControl.NET도 잘 작동합니다. 설정하기가 까다 롭지 만 기록이 길기 때문에 웹에서 솔루션을 쉽게 찾을 수 있습니다. CruiseControl.NET은 오픈 소스이기 때문에 원하는 것을 추가하거나 변경할 수도 있습니다. 나는 출시 이후 CruiseControl.NET을 사용해 왔으며 cc.tray에 대한 초기 코드를 작성했습니다 (고맙게도 잘 아는 사람이 다시 작성했습니다).

ThoughtWorks의 Cruise도 꽤 좋아 보이지만 전환해야 할 설득력있는 이유가 보이지 않습니다. 새 프로젝트를 시작하는 경우 시도해 볼 수 있지만 TeamCity는 복잡한 것을 매우 고통스럽지 않게 만드는 동시에 단순한 일을 간단하게 만드는 훌륭한 작업을 수행했습니다.

편집 : 우리는 몇 주 전에 TeamCity 5.0으로 업그레이드했으며 또 다른 고통없는 업그레이드였습니다. 이를 통해 향상된 코드 커버리지 기능과 GIT 지원을 활용할 수 있습니다. 우리는 또한 한동안 사용 된 개인 빌드 및 사전 테스트 된 커밋 기능을 사용하고 있습니다. TeamCity가 계속 개선되고 있으며 여전히 사용하기 쉽다는 것을 나타 내기 위해 답변을 업데이트해야한다고 생각했습니다.


모든 경험을 바탕으로 간단한 .NET 프로젝트를 만드는 스크린 캐스트를 공유하고 TeamCity (JING (무료 스크린 캐스팅) 또는 기타 도구 사용)와 함께 작업하고 여기 또는 다른 곳에 링크를 게시 할 수 있는지 궁금합니다. 고군분투하는 우리 모두 좋은 스타트 업이 될 것입니다. :) 감사합니다.
balexandre

2
@balexandre-팀 시티 문서가 꽤 좋다는 것을 알았습니다. 그리고 @ BOJ의 answere 좋은 화면으로 링크가 여기 캐스트 제공 blog.wekeroad.com/kona/kona-2
마이크 두

CCNet이라는 이미지 때문에 항상 CI가 무서웠고, 지난주에 TeamCity 6.5를 사용해 보았는데 정말 기뻤습니다. 단일 xml / configuration 파일을 건드리지 않았습니다.
kay.one 2011-06-02

1
현재 CC.Net을 사용 중이고 Team City로 이동하려는 경우 고통 스럽습니까? TC는 MSI 파일을 어떻게 생성합니까?
Wes

@Wes, 이것이 여전히 당신과 관련이 있는지 모르겠지만 CC.Net에서 20 개 이상의 프로젝트를 실행하고 있지만 최근에 일부 Android 프로젝트에 TeamCity를 구현했습니다. 지금까지 가장 큰 고통은 Ant를 배우는 것이었지만 CC.Net에 프로젝트를 넣었 더라면 그렇게했을 것입니다. 주로 구성으로 인해 필요한 추가 빌드 구성에 대한 비용을 관리자가 지불하도록 설득 할 수 있다면 모든 프로젝트를 TeamCity로 옮길 수 있습니다. 그물.
johnc 2014 년

33

저는 CC.NET의 열렬한 팬이었습니다. 현재 CruiseControl에 5 개의 프로젝트가 있으며 훌륭하게 작동합니다. 손으로 구성 파일을 작성하는 것은 고통 스러울 수 있지만 괜찮습니다.

하지만 .

애프터 코나 : 지속적인 통합 및 더 나은 단위 테스트 스크린 캐스트 (인 TeamCity에 대한 첫 번째 1/3) 나도 인 TeamCity를 확인할 수 있습니다. 통합 단위 테스트 대시 보드와 구성 인터페이스가 마음에 듭니다.

내가 생각하는 모든 사람들이 CC.NET 또는 인 TeamCity을 선택하기 전에이 비디오를 시청해야한다.

추신 : 인터넷에도 가치있는 CC.NET 비디오가 있기를 바랍니다.


15

제가 가장 좋아하는 CI 서버는 Hudson입니다. 설정 및 유지 관리가 쉽고, 개발자와 비 개발자에게 추세를 보여주는 멋진 그래프가 많으며 무료입니다.

현재 프로젝트에서 TeamCity를 사용하고 있으며 일반적으로 만족 스럽지만 생성되는 많은 그래프는 특별히 유용하지 않으며 Hudson보다 구성하기가 더 복잡합니다.

즉, TeamCity는 강력하고 다양한 용도로 무료이며 하나의 킬러 기능인 원격 실행이 있습니다. IDEA 또는 Eclipse에서 직접 체크인을 "사전 커밋"하고 TeamCity 서버에서 하나 이상의 빌드 구성을 실행하고 빌드가 성공한 경우에만 변경 사항을 커밋 할 수 있습니다 (예 : 컴파일 및 모든 테스트 통과).

TeamCity와 Hudson을 모두 몇 시간 안에 가동하고 실행할 수 있다는 점을 감안할 때, 둘 다 잡고 생각할 수있는 다른 모든 것 (CruiseControl 등)과 함께 나란히 실행하는 것이 가치가있을 수 있습니다. CI 서버를 신속하게 설치하여 나란히 비교를 수행 할 수 없다면 최소한 설치 및 / 또는 구성이 쉬운 데이터 포인트가 있습니다.


6
허드슨은 +1. 참고 항목 : Hudson을 .NET 빌드 도구로 사용 : stackoverflow.com/questions/616149/… ; CruiseControl 대 Hudson : stackoverflow.com/questions/604385/…
Jonik

12

나는 두 가지 모두 다른 프로젝트에서 성공적으로 사용했습니다. 설정 및 관리 관점에서 Team City는 처리하기가 훨씬 쉽습니다. CC에서하는 것처럼 .config 파일을 해킹 할 필요가 없으며 설정도 간단합니다. 많은 프로젝트가 없기 때문에 Team City 비용이 $$라는 점에 도달 할 때까지 CC보다 Team City를 권장합니다.


12

CC.net과 TeamCity를 모두 사용했습니다. 내 조직 (5 명의 개발자)을 위해 TeamCity를 설정하고 설치하는 일을 맡고 있습니다. 우리 조직은 소스 제어를위한 Perforce 및 이기종 운영 체제에서 실행되는 여러 빌드 에이전트와 같은 몇 가지 흔하지 않은 관행과 도구 (적어도 우리 규모의 조직에 대해)를 사용하여 초기 설정 문제를 일으켰습니다. 그러나 이메일을 통한 지원은 모든 것을 설정하는 데있어 절대적으로 최고 수준이었습니다. 나는 말 그대로 몇 분 만에 멍청한 질문에 대한 답변을 받았습니다.

인터페이스는 직관적이고 반응이 좋으며 기능이 풍부합니다. 제품은 매우 비싸다고 느낍니다. 구성이 쉽고 웹 인터페이스는 에이전트 또는 서버 서비스를 다시 시작하거나 페이지를 새로 고치지 않고도 자체적으로 업데이트 할 수있을만큼 지능적입니다.

제품의 거의 모든 고급 기능을 사용하고 있으며 지금까지 버그를 전혀 발견하지 못한 것 같습니다. Ndepend 통합, 중첩 된 NAnt 스크립트, Perforce 버전 레이블링, 이름 지정, 우리가하고 있습니다.

지속적 통합 서버 또는 빌드 서버를 찾는 모든 사람에게 TeamCity를 적극 권장합니다.


Perforce는 uncommen 도구입니까? Perforce는 모든 규모의 팀에게 환상적입니다. 나는 :) 내 집 개발을 위해 나 자신을 사용
sonstabo

@sonstabo, 동의합니다. 대부분의 소규모 회사는 SVN 또는 GIT를 사용하고 Perforce는 대부분 대기업에서 사용됩니다. Perforce를 사용해 보았고 마음에 들었지만 사용했을 때는 1,000 개의 개발자 회사에있었습니다.
Samuel Neff

3

당신에게 대체 도구를 던지고 싶지 않고 :-)

Hudson은 훌륭한 오픈 소스 대안입니다. 저는 CC와 CC.net을 사용해 왔으며 이것이 환상적인 도구라고 생각합니다. 설정 및 유지 관리가 훨씬 쉬워 지므로 허드슨으로 전환하는 것을 고려하고 있습니다.

https://hudson.dev.java.net/


1
+1 아무도 Hudson for .Net CI에 대해 생각하지 않는 것 같습니다. 저는 Cruise Control, Team City 및 Bamboo를 사용해 왔으며 Hudson이 예산이 큰 문제인 대부분의 경우 작업에 가장 적합한 도구라는 것을 알았습니다.
Dan Rigby

3

결정한 시스템이 처리하는 데 필요한 프로젝트 수에 맞게 확장되는지 확인하십시오.

CruiseControl.Net을 사용하지만 많은 프로젝트를 빌드하는 데는 권장하지 않습니다. 응용 프로그램으로 구성하는 많은 C ++ 정적 라이브러리가있는 (약간 이상 할 수 있음) 배열이 있습니다. 각 라이브러리는 다른 라이브러리에 의존하며 앱은 일련의 라이브러리를 가져와 빌드합니다. 각 라이브러리에는 테스트 스위트가 있습니다. 각 앱에는 테스트 도구 모음이 있습니다. 5 개의 컴파일러와 다양한 (Windows) 플랫폼을 위해 빌드합니다.

내가 찾은 첫 번째 사실은 CC.Net의 프로젝트 트리거가 실제로 필요한 것이 아니며 다중 트리거가 프로젝트 트리거와 잘 작동하지 않는다는 것입니다. 프로젝트 트리거가 작동하는 방식 (리모팅을 사용하여 프로젝트가 저장된 서버에 연결 한 다음 (CC.Net의 동일한 인스턴스에서 관리하는 프로젝트 인 경우에도)) 해당 서버에서 모든 프로젝트를 가져와 순차적으로 목록을 검색합니다. 관심있는 프로젝트를 찾는 중 ...) 확장이 잘되지 않는다는 의미입니다. 특정 수의 프로젝트를 초과하면 CC.Net이 빌드 머신의 CPU 대부분을 차지하고 있음을 알 수 있습니다.

물론 오픈 소스이므로 고칠 수 있습니다. 그리고 소수의 비 상호 의존적 프로젝트에는 괜찮습니다.

내가 가진 문제와 CC.Net의 일부 패치에 대한 자세한 내용은 여기를 참조하십시오. http://www.lenholgate.com/archives/cat_ccnet.html


오 ...이 정보, 귀중한 게시물에 감사드립니다. 특히 TC는 간단한 설정이고 그 한계는 CC 및 CC.Net이 작동 할 수있는 프로젝트 수입니다. 하지만 당신이 말했듯이, 프로젝트 수가 증가하면 문제가 발생합니다 ... 다시 감사합니다
zappan

심하게 해킹 된 CC.Net 버전에서도 CC.Net은 스케줄링에 대한 프로젝트 별 스레드 접근 방식을 사용하기 때문에 문제가 있습니다.
Len Holgate

2

최근에 cc .net을 설정했습니다. 훌륭한 응용 프로그램이지만 약간의 인내가 필요합니다. 메모장에서 구성 파일을 많이 편집 할 것입니다. :)

오래 전부터 지원이 잘되었으며 일반적으로 이전에하고 싶은 일을 한 적이있는 사람을 찾을 수 있습니다. 웹 인터페이스는 .net이기도해서 우리가 Microsoft 상점이기 때문에 우리에게 플러스였습니다.

나는 TeamCity를 사용하지 않았지만 꽤 많은 권장 사항을 들었고 예쁘게 보입니다.


2

이전 회사에서 Linux에서 CruiseControl (Java 버전)을 설정하고 실행 한 경험이 있습니다. 대부분의 사람들이 제안한 것처럼 설정하는 것이 가장 사소한 것은 아닙니다. 실행 가능 / 관리 가능한 구성을 만들기 위해서는 프레임 워크를 이해해야합니다. 그러나 일단 그 고비를 통과하면 CruiseControl이 다양한 시나리오에 맞게 다양한 작업을 수행 할 수있을만큼 충분히 유연하다고 생각합니다.

게다가 CruiseControl 문서, 위키 페이지 에도 유용한 정보가 있습니다.

TeamCity에 대한 직접적인 경험이 없습니다. 사전 테스트 커밋 기능이 충분히 흥미로워 보이지만.

다른 CC 도구 는 Atlassian의 Bamboo 입니다. 설정하기가 훨씬 쉽고 인터페이스가 더 좋습니다. 그러나 CruiseControl이 제공하는 것만 큼 유연하지는 않습니다.


1

고려해야 할 세 번째 옵션은 Thoughtworks의 Cruise입니다. CruiseControl을 기반으로했지만 더 많은 기능, 간편한 설정 등을 제공합니다. 무료 (또는 오픈 소스)는 아닙니다.

http://studios.thoughtworks.com/cruise-continuous-integration


1
CI 시스템으로 설정하는 것과 관련하여 Cruise를 몇 번 살펴 보았습니다. 예를 들어 CC.NET보다 훨씬 간단하지 않습니다. 빌드 및 배포 흐름에 강점이 있지만 CI 도구로서 TeamCity가 훨씬 더 유능합니다
haqwin

Cruise / Go 비용을 지불하려는 경우 TeamCity를 무료로받을 수 있습니다.
Niall Connaughton 2012 년

0

저는 지난 1 년 반 동안 Teamcity를 사용해 왔으며 훌륭한 경험을 가지고 있습니다. 여러 .Net 및 Java 프로젝트를 통합하고 MSBuild, Maven 등과 같은 도구를 사용했습니다. Teamcity를 설정하고 사용하는 것이 매우 간단하다는 것을 알았습니다. 나는 다른 CI 도구로 더 나쁠 수있는 약간의 악몽이었던 일부 SQL 프로젝트에서도 CI를 실행할 수있었습니다.
최근 통증이없는 Teamcity 8.0.6으로 업그레이드되었습니다. 또한 Teamcity는 일부 시나리오에 매우 유용한 REST API 를 제공합니다 . 빌드 자동화를 위해 powershell을 사용하는 경우 GitHub 에서 여러 Psake / Teamcity 통합 스크립트를 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.