본문 바로가기

Better SW Development

[번역] 허드슨을 이용한 지속적인 통합(Continuous integration with Hudson) #3

자바월드(http://www.javaworld.com/)에 기고된 허드슨(Hudson) 글을 번역해서 올려 봅니다. 매우 상세하게 설명되어 있어서 CI 서버가 생소한 사람들도 어렵지 않게 따라갈 수 있도록 되어있습니다.

허드슨 CI 서버(Hudson CI server)에 대한 세 번째 번역분량입니다. 다음 번에는 마무리 될 것 같습니다. 해야 할 일이 많은데, 어쩌다가 허드슨에 빠져 버렸네요. :) 이번 분량은 '빌드 업무 실행과 지켜보기' 입니다. 이전과 마찬가지로 자세하게 다듬지 않아 내용이 어색할 수 도 있습니다만, 가급적 너그럽게 보시고, 혹시 의미를 곡해하는 부분이 있으면 알려주세요. 수정하도록 하겠습니다.

원문은 http://www.javaworld.com/javaworld/jw-12-2008/jw-12-hudson-ci.html 에서 살펴보실 수 있습니다.

--------- started here ------------

빌드 업무 실행과 지켜보기 Running and watching a job

최근에 만든 빌드 업무의 첫 번재 빌드를 실행하기 위해서, http://localhost:8080/hudson 에 있는 허드슨 대시보드로 이동한다. 그림 20은 내 우분투 서버에 본인이 구축한 새로운 허드슨 인스턴스의 브랜드를 보여주고 있다.

The Hudson dashboard

그림20. 허드슨 대시보드(Hudson dashboard)

내가 정의해 놓은 HeliosJMXTrunk 빌드 업무가 화면 중앙에 보인다. 이 화면에서 주목할 만한 몇 가지 항목은 다음과 같다.

  • 회색의 원형 아이콘은 빌드 업무의 상태를 나타낸다. 본 예제에서는, 한 번도 빌드가 일어난 적이 없기 때문에 회색이다.
  • 왼쪽에 빌드 큐(Build Queue)라고 라벨이 붙여져 있는 테이블은, 현재 실행중이거나 실행하기 위해서 대기열에 들어있는 빌드 업무를 보여준다. 빌드 수행 상태(Build Executor Status)라고 라벨이 붙은 테이블은 할당된 빌드 쓰레드의 상태를 보고한다. 기본값으로, 허드슨은 두 개의 빌드 쓰레드를 할당하며, 이것은 허드슨이 동시에 두 개까지 빌드 업무를 수행할 수 있음을 의미한다. 이 숫자를 수정하려면, Manage Hudson 을 클릭한 다음 Confifure Executors를 클릭한다. 소프트웨어 빌드는 꽤나 자원 집약적인 경향이 있는 관계로, 쓰레드 숫자는 조심스럽게 설정해야 한다. 동시 빌드를 너무 많이 지정하면 허드슨 서버에 적당하지 않은 수준의 부하를 주게 될 것이고, 결과적으로 당신의 빌드 업무를 느리게 만들 것이다.
  • RSS 피드(feed) 아이콘을 주목하여라. 허드슨은 이벤트 공지 방법 중 하나로 RSS 피드를 제공한다. 그리고 이 피드에는 전반적인 시스템용 피드와 각각의 개별적인 빌드 업무 보고용 피드가 있다.
    • 성공적인 빌드
    • 불안정한 빌드
    • 깨진 빌드
    • SCM 변경

빌드를 요청하기 위해서는, 빌드 업무 리스트 테이블의 오른쪽 끝에 있는 빌드 아이콘을 클릭하면 된다. 혹은, 빌드 업무 이름을 클릭해서 빌드 업무 홈페이지로 이동한 다음, Build Now 라고 이름 붙은 아이콘 링크를 클릭할 수도 있다.

한번 빌드 업무가 실행되면, 실행중인 빌드 업무 리스트를 대시보드나 빌드 업무 홈 페이지에 있는 대기열(Queue)에서 볼 수 있다. 이들 두 개의 뷰는 그림 21에서 볼 수 있다.

그림 21. 실행중인 빌드 업무에 대한 두 개의 서로 다른 뷰

전형적인 형태로, 어떤 시점에서 당신은 현재 실행중인 빌드 업무의 결과물을 봄으로써 빌드 업무의 진척상황을 보길 원할 것이다. 그렇게 하려면, 빌드 업무 홈페이지로 이동해서 Console Output 을 클릭하여라. 만일 빌드 업무가 끝나면, 빌드 스크립트에 의해 생성된 정적인 결과물을 보여줄 것이다. 하지만 만약 빌드 업무가 여전히 실행 중이라면, 허드슨은 계속해서 페이지의 내용을 갱신해서 현재 발생하는 결과물들을 볼 수 있게 해줄 것이다. 그림 22는 매우 유용한 해당 기능에 대해 보여주고 있다.

그림22. 실행중인 빌드 업무의 결과물을 보여주는 라이브 콘솔

빌드가 한 번 완료되고 나면, 세 곳에서 빌드 업무 완료가 보여질 것이다.

  • 그림 23처럼, 허드슨 대시보드에서 해당 내용을 볼 수 있다.
  • 그림24처럼, 빌드 업무 홈 페이지에서 해당 내용을 볼 수 있다.
  • 빌드 이력에 있는 특정 빌드 링크를 클릭해서, 허드슨이 빌드 인스턴스용으로 특별해 생성한 해당 빌드의 홈 페이지로 이동할 수 있다. 이 내용은 그림 25에서 보여주고 있다.

The Hudson dashboard, showing the completed job

그림23. 완료된 빌드 업무를 보여주고 있는 허드슨 대시보드

대시보드에 있는 심볼들의 의미는 "빌드 업무 상태(Job state)"라고 이름 붙은 아래의 섹션에 요약되어 있다. 간략하게 말하자면, 노란 원은 빌드가 성공은 했지만 불안정하다는 것을 나타낸다. W 컬럼에 있는 작은 태양 아이콘은 "날씨"를 나타내는데, 빌드가 성공했고 후속 작업 플러그인들이 허드슨에게 문제사항이 없다고 보고했기 때문에 해당 날씨는 "햇볕 쨍쨍"이다. 여기에서 또 하나 주목할 내용은 마지막 빌드의 지속 시간이 15분이었다는 점이다. 그렇게 된 이유는 의도적으로 오래 실행되게 스케줄 잡혀있는 컴포넌트용 단위 테스트가 내 테스트 스위트 내에 들어 있기 때문이다. 이 업무는 빌드와 테스트를 나누어 놓은 좋은 예가 될 수 있을 것이다.

그림 24. 완료된 빌드 업무를 보여주는 빌드 업무 홈 페이지

빌드 업무 홈 페이지는 몇몇 흥미로운 항목을 포함한다. 왼편에 있는 링크들은 (New Job 에서 정의한 것을 수정하기 위해서) 해당 빌드 업무 설정용 명령어와 빌드 업무를 삭제하고, 해당 빌드 업무를 실행하기 위한 명령어들이다. 오른편에 있는 것들은 가장 최근의 프로젝트와 아티팩트들에 대한 링크들이다.

그림25. 완료된 빌드를 보여주는 빌드 홈 페이지 Figure 25. The build home page for the completed build

빌드 홈 페이지는 해당 빌드 인스턴스를 지정한다. 허드슨이 내부적인 빌드 넘버를 할당한다는 점에 주목하여라. 이 빌드 넘버는 분산된 빌드들을 추척하는 데에 유용하다. 이 페이지는 실패한 세 개의 JUnit 단위 테스트 케이스뿐 아니라 서브버전에서 발견된 리비전들(revisions)도 목록으로 보여준다. (이번 빌드에서 리비전 변경은 없었다). 여기에서 이 들 세 개의 실패가 허드슨이 해당 빌드를 '불안정상태(unstable)'로 표시하게 된 원인이다. 불안정 상태란 해당 소프트웨어가 에러 없이 빌드는 되었으나, 단위 테스트는 에러가 있음을 의미한다. 그림26은 단위 테스트에 에러가 없고, 그래서 안정된 빌드(stable build)로 지정된, 새로운 빌드가 끝난 후의 대시보드와 프로젝트 페이지의 섹션들을 보여준다.

The dashboard and job home page after build #2

그림 26. #2 빌드 후의 대시보드와 빌드 업무 홈 페이지

나는 이제 빌드 업무를 설정하고 빌드 트리거를 지정하고 애드 혹(ad hoc) 빌드를 요청하기 위해 필요한 모든 단계들을 아우를 수 있게 되었다. 남은 것은 허드슨이 빌드 업무의 상태를 표시하기 위해 사용하는 스키마에 대해 짧게 논의해 보는 것이 남았다.

빌드 업무 상태(Job states)

위에 보이는 스크린샷에서, 빌드 업무의 현재 상태를 나타내는 두개의 아이콘을 보았을 것이다. 허드슨은 빌드 업무의 전체적인 현황을 나타내기 위해서 두 개의 개념을 사용한다.

  • 빌드 업무 상태(Job state): 그림 27은 가장 최근에 수행된 빌드 업무가 가질 수 있는 네 개의 상태 심볼을 요약해 보여준다.
    • 성공(Successful): 빌드가 완료되었고 안정적으로 간주됨
    • 불안정(Unstable): 빌드가 완료되었고 불안정한 것으로 간주됨
    • 실패(Failed): 빌드가 실패함
    • 사용불가(Disabled)빌드 업무가 사용불가임
  • 빌드 업무 안정도(Job stability): 빌드 업무가 완료되고 이슈없이 대상 아티팩트를 생성할지라도, 허드슨은 플러그인 형태로 구현된, 그러니까 암묵적으로 안정도를 평가하기 위해 만들어 놓은 후속 작업들에 기반하여 해당 빌드에 (0~100 사이의) 안정도 점수를 부여할 것이다. 이 암묵적인 작업들이란 단위 테스트들(JUnit), 커버리지(Cobertura), 정적 코드 분석(FindBugs)을 포함한다. 해당 점수가 높으면 높을 수록 빌드는 더 안정적이다. 그림28은 안정도 점수 범위에 따른 심볼들을 요약해서 보여준다.

Job states

그림27. 빌드 업무 상태(Job states)

Job stability

그림28. 빌드 업무 안정도(Job stability)

빌드 트랙들 Build tracks

에 대해서는 다음에 이어서 계속하겠습니다.