'trac'에 해당되는 글 3건

  1. 2008/11/07 Hudson을 이용한 자동빌드 환경 구축(2) (2)
  2. 2008/11/02 Hudson을 이용한 자동빌드 환경 구축(1) (1)
  3. 2008/10/17 trac 백업하기 (2)
Hudson을 이용한 자동빌드 환경 구축(1)

저번에 이어서 이번에는 trac과 언어설정 플러그인과 기타 몇가지 유용한 플러그인 사용법을 설명하겠다.

4. trac 연동

trac과 Hudson을 연동하는건 간단하다. trac측에 Hudson플러그인을 깔아주면 끝이다. :)
원리는 Hudson이 빌드가 끝나면 그 결과를 rss로 내려준다.

이 rss주소를 trac에서 Hudson플러그인에 등록해주면 이를 읽어서 trac의 Timeline에 자동으로 등록해준다.

일단 trac에 Hudson플러그인을 설치해보자.

플러그인을 설치하기 전에 trac이 설치되어있는 서버에 python-feedparser를 설치해야 한다.
위에서 설명 했듯이 플러그인에서 rss를 읽어와서 등록을 해주기 때문에 rss를 파싱할 수 있는 라이브러리를 Hudson플러그인에서 사용한다. 설치후에는 trac을 재시작 해줘야한다.

위의 라이브러리가 설치되있거나 설치가 완료되면 이곳을 통해서 플러그인을 다운로드 한다.

trac에 플러그인을 설치하기 위해서는 egg라는 형태로 패키징을 해야하는데 이 방법은 여기서 설명하지 않겠다. 이곳을 참고해서 egg파일로 만든 다음 trac에 관리자로 로그인 후Admin->Plugins 메뉴에서 방금 만든 파일을 업로드 하면 설치가 완료된다.

설치가 완료되면 플러그인 프로퍼티에 Hudson의 rss주소 등록 및 다른 몇가지 프로퍼티를 세팅 해주어야 한다.

trac.ini파일을 열고 [hudson]을 찾는다. 만약에 없다면 만들어준다. 그리고 그 하위로 아래와 같이 프로퍼티를 생성하고 세팅해준다.

[hudson]
# trac에 Hudson링크 추가여부
display_in_new_tab = true

# 플러그인에서 읽어올 rss주소. 대부분 Hudson의 대시보드 하단에 있는 for all을 사용한다.
feed_url = http://dev.dalmuri.net:8093/rssAll

# Hudson의 메인페이지 주소
main_page = http://dev.dalmuri.net:8093


이와같이 설정하고 저장후에 trac을 재시작 해준다. 만약에 이렇게 수정하는게 귀찮다면 이곳에서 IniAdminPlugin을 설치하면 trac에서 바로 trac.ini를 수정, 적용할 수 있다.:)

여기까지 완료하면 Hudson에서 빌드결과가 rss로 내려오면 trac에서 자동으로 Timeline에 추가 시켜 줄 것이다.

5. 언어 설정 플러그인

기본적으로 Hudson을 설치후 실행하면 Hudson접속시 자동으로 브라우저의 Locale을 읽어서 적절한 언어로 출력해주는 기능이 있나보다.

그런데 다른 언어는 모르겠지만 한글의 경우에는 번역이 참으로 .... 스럽고 전체 번역이 되어있는것도 아니라서 미관상 참으로 안좋다.

사용자 삽입 이미지

일본어를 번역했나.. 뭥미..



따라서 Locale을 강제로 영어로 설정하도록 하는게 차라리 낫다.

Locale을 강제 설정하기 위해서는 Locale이라는 플러그인을 설치해야한다. 이는 Hudson측 플러그인이다.

Locale을 설치하기 위해서는 Manage Hudson(Hudson의 관리) > Manage Plugins > Available에서 Locale을 찾아 체크 해준 후 맨 하단 오른쪽의 Install 버튼을 클릭후 설치가 Success됬다는 메시지가 나올때 까지 기다리자. 설치가 완료되면 Hudson을 재시작 한다.

재시작후 Manage Hudson(Hudson의 관리) > Configure System에서 Locale 항목을 찾아서 설정할 Locale을 입력(en_us)한 후 Ignore browser preference and force this language to all users를 체크후 Save를 한다.

그러면 메뉴가 웃긴 한글번역이 아닌 영문으로 나타나는 것을 볼수 있다. 만약에 다른 언어로 설정을 하고 싶다면 "언어_국가"형태로 언더바로 구분하여 입력해주면 된다. 언어와 국가는 각각 이곳이곳을 참고로 조합하면 된다.

6. 디스크 사용량 표시 플러그인

Hudson을 이용한 자동빌드 환경 구축(3)에서 설명할 Job을 생성 후 빌드를 수행하면 Hudson은 자동으로 SCM에서 소스를 체크아웃 하고 빌드를 수행한다. 이때 workspace라는 디렉토리를 만들고 이곳에 소스를 체크아웃 후 빌드를 한다.
이 플러그인은 workspace의 디스크 사용량을 계산하여 보여주는 플러그인이다.
그리고 Job을 생성 할 때 빌드 결과물을 따로 보관 하는 옵션을 설정하는 부분이 있다. 이 부분을 설정 해주면 이 플러그인은 결과물을 build라고 하여 디스크 사용량을 같이 보여준다.

설치 방법은 위에서 설명한 Locale 플러그인과 동일한 방식으로 설치를 한다. 물론 설치후 Hudson을 재시작하는건 잊지 말자.

설치가 완료되면 Manage HudsonDisk usage라는 메뉴가 추가가 되어있다.

이 플러그인은 자동으로 한시간마다 디스크 사용량을 재계산하도록 되어있지만 지금 바로 재계산을 하고 싶다면 Manage Hudson > Disk usage에 들어가서 Record Disk Usage를 클릭해주면 된다.

계산이 완료 되면 추후에 설명할 Build에서 과거 빌드후 디스크 사용량 추이와 특정 Build의 디스크 사용량을 볼 수 있다.

사용자 삽입 이미지사용자 삽입 이미지

7. trac 링크 플러그인

이 플러그인은 4.에서 설명한 플러그인하고 다른 플러그인이다. 이 플러그인은 Job을 생성시 프로젝트의 trac주소를 입력해주면 Job에 그 링크를 단순히 출력해주는 플러그인이다.

설치방법은 위에서 설명한 플러그인과 동일하며 설정은 Job을 생성시 Trac website 항목에 설정해주면 된다.

다음 글에서는 Job을 추가하고 세팅 하는 법에 대해서 알아보겠다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/11/07 14:45 2008/11/07 14:45
공개 CI툴인 Hudson을 이용하여 DCGUI의 자동빌드 환경을 구축을 해 봤다.

Hudson설치부터 trac과의 연동까지 구축을 하여 이곳에 방법을 자세히 설명 할려고 한다.

꽤나 길어질 예정이므로 몇회로 나누어서 설명하겠다.

1. Hudson 설치

Hudson을 설치하는 방법은 간단하다. 이곳에서 Hudson을 다운로드 한 후 임의의 디렉토리에 복사해 넣으면 끝이다.
자바를 해본 사람은 알겠지만 확장자가 war이다. 이는 tomcat과 같은 WAS에 deploy하여 연동을 할 수도 있다.

물론 Hudson안에 자체 servlet container가 들어있으므로 따로 WAS를 설치할 필요는 없다.

여기서는 WAS를 설치하지 않고 Windows에서 Hudson안에 들어있는 servlet container를 이용하여 자체 실행하는 방법으로 설명을 하겠다.

Hudson을 임의의 디렉토리에 복사해 넣은 후 Hudson을 실행하는 방법은 간단하다. 아래와 같은 방법으로 실행하면 된다.

java -jar hudson.war --httpPort=8093

물론 Hudson은 java로 만들어진 툴이므로 jre가 설치되어 있어야 한다.
만약에 jre가 설치되어있지 않다면 여기에서 jre를 설치한다.

여기서 옵션으로 주어지는 --httpPort는 Hudson을 실행할 포트를 지정해준다. 만약에 이옵션이 없으면 8080으로 실행한다. ssl을 사용한다면 --httpsPort를 이용하여 포트를 지정해준다.

위와같이 실행 하면 war파일에서 자동으로 압축을 풀어 ~(사용자)/.hudson 디렉토리에 저장을 한다. 이곳에 또한 Hudson이 실행중에 저장하는 각종 데이터도 저장을 한다. 만약에 이 디렉토리를 다른곳에 바꾸고 싶다면 실행시 HUDSON_HOME 를 환경변수로 지정해주면 된다.

환경변수를 설정하는 방법에는 3가지가 있는데 자세한건 이곳을 참고하고 간단하게 실행시 지정해주는 방법을 사용해도 된다.

따라서 아래와 같이 실행을 하면 Hudson의 실행 디렉토리를 지정할 수 있다.

java -DHUDSON_HOME=hudson_home -jar hudson.war --httpPort=8093

2. Hudson 설정

정상적으로 Hudson이 실행되면 기본적인 설정을 해주어야한다. 그냥 사용해도 상관 없지만 몇가지 옵션을 세팅 해주면 편하게 사용 할 수 있다.

SCM은 svn을 사용하는 것을 기준으로 설명하겠다.

Hudson에 들어간 후에 Manage Hudson(Hudson의 관리) > Configure System를 들어가면 여러가지 세팅 하는 부분이 있지만 다 넘어가고 여기서는 java프로젝트가 아닌 Visual Studio를 이용한 프로젝트를 구성할 예정이므로 E-mail Notification 부분만 설명을 하겠다.

이곳을 세팅 해주면 빌드가 실패시 그리고 실패된 빌드가 다시 정상으로 돌아왔을 때 안내 이메일을 받을 수 있다.

Gmail을 기준으로 설명을 하겠다.

1. SMTP server 에는 Gmail smtp서버인 smtp.gmail.com을 입력해준다.
2. System Admin E-mail Address 에는 메일을 보내는 사람에 들어갈 이메일을 입력해준다.
3. Hudson URL 에는 Hudson의 접근 URL을 입력해준다. 기본적으로 입력이 되어있는데 잘못된 주소이면 수정해준다

여기까지 해준 다음에 Gmail은 인증이 필요하므로 Advanced 버튼을 눌러 추가 설정부분을 열어준다.

1. Use SMTP Authentication를 체크해준다.
2. User Name에 Gmail 계정 아이디를 입력해준다.
3. Password에는 Gmail 계정 비밀번호를 입력해준다.
4. Use SSL를 체크해준다.
5. SMTP Port는 비워두면 기본 포트를 사용하므로 굳이 입력할 필요는 없다.

여기까지 세팅을 한다음에 정상적으로 세팅이 되었는지 테스트 하기전에 맨 아래의 Save를 누른다. 저장을 하지 않고 테스트를 하면 제대로 테스트가 되지 않고 페이지가 이동해버려 다시 입력해야하므로 주의한다.

저장후에 다시 설정 페이지로 돌아가서 Test configuration by sending e-mail to System Admin Address를 눌러서 정상적으로 발송이 완료되는지 확인한다.

여기까지 완료를 하면 기본적으로 Hudson을 사용할 준비는 완료가 됬다.

3. Hudson 보안 설정

Hudson 메인 화면에 가면 아무런 로그인도 안했는데 Hudson의 설정을 변경하거나 Job을 생성 할 수 있도록 되어있다. 내부적으로만 사용하고 공개를 안한다면 모르겠지만 외부로 공개가 된다면 보안상 큰 문제가 된다.

보안설정을 하기 위해서는 첫번째로 관리자로 쓸 계정을 등록 하는 것이다.

Hudson의 상단 오른쪽에 있는 sign up으로 이동하여 정보를 입력후 등록한다.

그리고나서..

1. Manage Hudson > Configure System으로 가서 Enable security를 체크해준다.
2. Security Realm에서 Hudson's own user database를 체크 해준다.
3. Authorization에서 Matrix-based security를 체크 한 후 Anonymous는 Overall에서 Read만 체크해준다.
4. User/group to add에 아까 등록한 계정 아이디를 입력해준 후 Add를 눌러 추가한다.

추가가 되면 해당 계정에 모든 권한을 체크해주고 하단의 Save를 눌러 저장을 한다.

주의할 것은 반드시 계정을 등록 후에 권한을 체크해줘야한다는 것이다. 권한 체크시 실제 등록되어있는 계정이 아니더라도 체크가 되어버리니 잘못하여
Anonymous를 Read만 둔 상태에서 저장하면 어떠한 관리가 불가능하다.

다음 글에서 trac과 연동이 가능한 플러그인 및 언어 설정 플러그인 설치 및 설정 법과 Job을 추가하는 방법을 알아보겠다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/11/02 18:18 2008/11/02 18:18

trac 백업하기

프로그래밍 : 2008/10/17 17:10
예전에 svn 저장소를 지메일에 백업을 응용하여 이번에는 trac을 gmail에 백업을 하도록 구성했다.

그런데 svn하고는 다르게 trac은 hotcopy를 이용해서 백업을 하면 저장소를 통채로 복사를 한다.

그래서 이걸 파일 하나로 묶기위해서 zip으로 압축레벨 0으로 묶은 다음에 중복검사를 위해서 md5해시를 계산했다.

그런데 이상하게 변경된게 없는데도 자꾸 해시값이 틀려지는 것이다..

쩝...

별삽질을 다 하면서 hex diff tool까지 동원해가며 압축파일을 비교해보니 디렉토리 부분이 달랐다.

보니까 대략 디렉토리의 생성 일자 부분인것 같은데 trac의 hotcopy는 디렉토리의 날짜까지 복사해주지는 않았다.

그러다보니 hotcopy를 이용해서 저장소를 복사할 때 마다 하위 디렉토리의 생성일자가 변하는게 원인이었다.

그런데 별수 있나.. hotcopy에서 디렉토리 날짜까지 일치시켜주지 않으니 그냥 무조건 메일로 발송하고 중간중간 손으로 오래된건 삭제 하도록 해야겠다.

나중에 시간 나면 원본과 대상의 디렉토리의 날짜를 그대로 복사해주는 툴을 만들어서 적용해야겠다.

ps. 특정 디렉토리 하위의 모든 파일및 디렉토리를 하나로 묶어주면서 날짜를 저장해주지 않는 압축 프로그램이나 이런 기능을 하는 프로그램 어디 없나요?
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/10/17 17:10 2008/10/17 17:10