페이지

2011년 1월 25일 화요일

Quickbuild proof build

Quickbuild 3.0 대에 보면 proof build라는 기능이 있다. 변경된 코드를 체크인 하기전에 build grid에서 빌드해서 일정 조건-빌드 성공 혹은 테스트까지 성공-을 만족하면 서브밋되게 하는 기능이 되겠다.

빌드에러는 작은 규모의 프로젝트에서는 뭐 그리 문제가 될게 있나 쉽겠지만 큰 규모의 소프트웨어를 개발할때는 충분히 문제가 될 수 있다. 몇백명의 개발자들이 하루에 한번 이상 체크인을 한다고 하면 여러 디펜던시 혹은 실수로 빌드에러를 유발할 수 있기 때문이다. 그래서 CI에서 계속 빌드에러가 나는 현상이 반복되고 장기화 될때 proof build를 적용하는 것도 한 방법이 될 수 있다.

실제 우리팀의 경우도 빌드에러가 좀처럼 잡기 힘든 것이 되어버려서 이번에 이것을 도입하게 되었다.

how to 는 이미 user guide에 잘 나와 있으니 여기서 별도로 설명은 안해도 될것 같고 어떻게 proof build가 이루어지는 그 흐름을 보면 도움이 된다.

  1. 로컬에서 변경한 파일(델타)들을 build agent로 전달. 개발자가 설치한 User Agent가 이기능을 한다.

  2. build agent에서는 latest sync후 델타를 적용 빌드를 한후 그 결과를 User Agent에게 전달한다.

  3. 성공이면 user agent에서 델타를 submit한다.

  4. 실패면 피드백을 준후 submit하지 않는다.

2011년 1월 5일 수요일

emacs server mode in Windows

Emacs wiki에는 복잡하게 설명되어 있지만 실제로 최신버전의 이맥스-GNU Emacs 23.2.1-에서는 server mode는 별도의 해킹없이 동작한다. 그러니 괜히 시간 낭비 하지 마시라고..
server mode란 것은 하나의 emacs 프로그램이 오직 하나의 instance만 뜨게 제한 하는 방법이다. server mode가 아닐때는 모두 각각의 instance로 실행이 된다.
실제로 파일 하나 오픈했는데 새로운 emacs window가 떠버리면 더 불편할다. 초기화 하는데 시간이 걸리고 버퍼등이 공유가 되지 않기때문이다. 그래서 대부분  server mode를 default로 사용한다.
.emacs에
(server-start)
를 추가해 주고 최초 실행시는 runemacs.exe를 사용하고 이후에는 emacsclientw.exe FILE_NAME 이런식으로 실행하면 된다.
또 emacsclientw.exe로 오픈된 버퍼는 C-c #으로 종료하면 된다. 물론 C-x k 로 해도 되지만 client를 죽일 것인지 한번더 물어본다. 나의 경우는 이 컨펌 메세지를 없애기 위해서 (server-start) 의 아래 줄에,꼭 아래 줄이어야 함, 아래 lisp코드를 적어주면 그냥 깨끗하게 죽는다.
(remove-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)