윈도우 프로젝트 필수 유틸리티 Subversion, Trac, CruiseControl.NET

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.



윈도우 프로젝트 필수 유틸리티 Subversion, Trac, CruiseControl.NET 책의 원고를 모두 공개합니다.

Part 1 유틸리티 기본 사용 방법

Part 1은 통합 개발 환경을 구축하는데 필수적인 기본 개념과 사용 벙법을 익히는 부분입니다. 먼저 버전 관리 시스템, 이슈 관리 시스템, 빌드 자동화 시스템의 종류와 기본 개념에 대해 알아보고, Subversion 설치 및 기본 사용 방법과 소스 코드를 관리하는 방법, 그리고 PowerShell의 사용 방법과 기본 문법을 학습하겠습니다. 또한 Debugging Tools for Windows를 사용하여 심볼 파일(PDB)를 연동하는 방법을 알아보겠습니다. 마지막으로 빌드 자동화 시스템인 CruiseControl.NET 빌드 스크립트 문법과 실제 사용 방법을 설명하겠습니다.

  • 1장 - 소프트웨어 개발 자동화
    • 일하기 편한 환경 만들기
    • 버전 관리 시스템
      • 버전 관리 시스템의 필요성
      • 버전 관리 시스템의 유형
      • CVS vs. Subversion
      • CVS와 비교한 Subversion의 장점들
      • 주요 버전 관리 시스템들
      • 버전 관리 시스템의 용어들
      • Subversion 저장소에 대한 이해
      • Subversion 저장소의 디렉터리 배치
    • 이슈 관리 시스템
      • 이슈 관리 시스템의 필요성
      • 이슈 관리 시스템의 종류
    • 빌드 자동화 시스템
      • 빌드 자동화 시스템의 필요성
      • 빌드 자동화 시스템의 종류
  • 2장 - Subversion으로 소스코드 관리하기
    • Subversion 설치
      • Subversion 다운로드
      • Subversion 설치
      • TortoiseSVN 설치
        • TortoiseSVN 언어팩 설치하기
        • TortoiseSVN 언어팩 사용하기
    • 저장소 만들기
      • 저장소 만들기
      • 저장소 설정
    • Subversion 서버 사용하기
      • 일반 모드로 사용하기
      • 서비스 모드로 사용하기
    • Subversion 명령 사용 방법
      • 기본 에디터 지정하기
      • 기본 디렉터리 생성
      • 프로젝트에 파일 추가하기(Import)
      • 저장소에서 소스 가져오기(Checkout)
      • 프로젝트에 파일 추가하기(Add)
      • 변경사항을 저장소에 반영하기(Commit)
      • 최신 소스 받아오기(Update)
      • 로그 보기(Log)
      • 수정된 부분 확인하기(Diff)
      • 수정된 것 되돌리기(Revert)
      • 수정한 사람 보기(Blame)
      • 파일, 디렉터리 잠그기(Lock), 잠금 풀기(Unlock)
      • 파일, 디렉터리 이름 바꾸기(Rename)
      • 소스만 가져오기(Export)
      • 브랜치(Branch)와 태그(Tag)
        • 브랜치(Branch)와 태그(Tag) 전환하기(Switch)
      • 관리도구
        • 저장소를 파일로 백업하기(Dump)
        • 파일을 저장소로 복원하기(Load)
  • 3장 - PowerShell로 자동화하기
    • PowerShell이란?
      • PowerSHell의 주요 특징
      • PowerShell로 작성하는 주요 스크립트
    • PowerShell 설치
      • .NET Framework 설치
      • PowerShell 설치
    • 기본 문법
      • PowerShell의 기본 기능과 주요 cmdlet의 사용 방법
      • PowerShell 스크립트 문법
  • 4장 - Subversion과 Symbol 파일 연동
    • 들어가기
    • Debugging Tools for Windows 설치
    • ActivePerl 설치
    • Subversion Symbol Indexing 사용
      • exampe 저장소 만들기
      • trunk, branchses, tags 디렉터리 만들기
      • example 프로젝트 체크아웃하기
      • 프로젝트를 저장소에 추가하기
      • svnindex.cmd
      • Subversion 저장소 정보를 인덱싱하기
        • Subversion 저장소 정보 인덱싱에 실패한 경우
      • srctool
  • 5장 - CruiseControl.NET으로 빌드 자동화하기
    • CruiseControl.NET 기본 개념과 설치
      • CruiseControl.NET 다운로드
      • Windows XP에 IIS 설치
      • Windows Server 2003에 IIS 설치하기
      • CruiseControl.NET 설치
      • CCTray 설치
    • CruiseControl.NET 빌드 스크립트 익히기
      • Labeller로 빌드 넘버 표시하기
      • Source Control
      • Task
        • Visual Studio
        • VCBuild
        • MSBuild
        • Executable
        • Build Publisher
        • Trigger
    • 빌드 자동화 실습
      • example 프로젝트 체크아웃하기
      • ccnet.config 파일 수정하기
      • ccnet.exe 실행
      • cctray.exe 실행
      • Force Build 버튼으로 강제 빌드

Part 2 통합 개발 환경의 구축

지금까지는 각 도구의 사용법에 대해서 알아보았습니다. Part 2에서는 Trac, Subversion, CruiseControl.NET, Symbol Server, Subversion Symbol Indexing을 연동한 통합 개발 환경을 구축해보겠습니다.

통합 개발 서버에서 제공할 기능들은 다음과 같습니다.

  • 이슈 관리 시스템인 Trac을 설치하여 요구사항, 버그 등의 이슈를 처리할 수 있도록 합니다.

  • Trac의 티켓 변경 사항을 이메일로 받아 볼 수 있습니다.

  • http, https 프로토콜로 Subversion을 사용할 수 있습니다.

  • Subverion 커밋 내용을 이메일로 받아 볼 수 있습니다.

  • CruiseControl.NET으로 빌드를 자동화합니다.

  • CruiseControl.NET과 Trac을 연동하여 반복적인 작업을 주여줍니다.

  • 자동 버전 업데이트 스크립트를 사용하여 빌드된 파일의 버전 관리를 자동화합니다.

  • Symbol Server와 Subversion Symbol Indexing을 사용하여 편리한 디버깅 환경을 제공합니다.

  • 다양한 형태의 Release Server로 빌드된 파일 보관과 배포를 손쉽게 할 수 있습니다.

  • 자동화된 백업으로 사고에 대비합니다.

  • 6장 - Apache와 Subversion 연동

    • Apache 설치 및 기본 설정
      • Apache 설치
      • Apache와 IIS 동시에 사용하기
    • Subversion 설치 및 기본 설정
    • Apache와 Subversion 연동 설정
      • 사용자 ID, 패스워드 설정 및 권한 관리
      • http
      • https
  • 7장 - Trac

    • 설치 및 설정
      • Python
      • svn-python
      • Genshi
      • setuptools
      • mod_python
      • pysqlite
      • enscript
      • Trac
        • http 프로토콜을 사용하려고 할 경우
        • https 프로토콜을 사용하려고 할 경우
    • 플러그인 설치 및 설정
      • Ini Admin Plugin
      • Account Manager Plugin
    • Trac 사용 전 기본 설정
    • Subversion Hook Script 활용
      • Hook 스크립트의 종류
      • Hook 스크립트로 메일 전송하기
        • IIS SMTP 서버로 메일 보내기
        • Windows XP에 SMTP 서버 설치하기
        • Windows Server 2003에 SMTP 서버 설치하기
        • IIS SMTP 서버 설정
        • Gmail 계정 연동
      • 로그 수정 사항을 메일로 보내기
      • 커밋 로그와 티켓 연동
    • 티켓 변경 사항을 이메일로 통보받기
      • IIS SMTP 서버를 사용할 때
      • Gmail 계정을 사용할 때
    • Trac 관리 스크립트
      • 프로젝트 생성 스크립트
      • 권한 설정 스크립트
      • 전체 프로젝트 권한 설정 스크립트
      • Subversion 저장소 - Trac 동기화 스크립트
    • RSS Reader 활용
  • 8장 - CruiseControl.NET

    • 들어가기
    • 기본 프로젝트 설정
    • 프로젝트에 버전 리소스 추가하기
      • 프로젝트의 저장소 주소 설정하기
      • 자동 버전 업데이트 스크립트
    • Trac에 버전을 자동으로 등록하기
      • Symbol Server, Subversion Indexing 연동
  • 9장 - Release Server

    • 빌드 서버 설정
    • 웹을 통한 배포
    • FTP를 통한 배포
    • Trac을 통한 배포
  • 10장 - 백업

    • 운영 중인 Trac을 안전하게 백업하기
      • 운영 중인 Subversion 저장소를 안전하게 백업하기
    • 원격지의 Subversion 저장소 백업하기
  • 11장 - Subversion 관련 도구

    • VisualSVN (Visual Studio 플러그 인
    • SVNSERVE Manager로 svnserve.exe를 쉽게 사용하기
    • SVN Notifier으로 업데이트 상태를 실시간으로 확인하기
    • ViewVC로 Subversion 저장소를 웹에서 보기
    • WebSVN으로 Subversion 저장소를 웹에서 보기
      • PHP 설치
      • 설정
      • MultiViews 사용하기
  • 12장 - 문서화

    • Trac Wiki
      • 새 위키 페이지 만드는 방법
      • 위키 문법
    • Doxygen으로 소스 코드 문서화 하기
      • Doxygen 설치
      • Graphviz 설치
      • Doxygen으로 문서화하기
      • 기타 doxygen용 주석 작성 방식
    • 윈도우 도움말 파일(CHM) 만들기
    • HTML Help 파일 설치
      • index.chm 파일 생성

Part 3 통합 개발 환경의 실제 활용

Part 3에서는 지금까지 구축한 개발환경을 이용하여 Hello World를 출력하는 간단한 프로젝트를 진행해보겠습니다. 프로젝트 형태는 Visual C++로 개발하는 윈도우 응용프로그램으로 하고, 프로젝트 생성 및 설정, 커밋 방법, 티켓 사용 방법과 실전에서 발생하는 문제인 충돌 해결, 소스 코드 되돌리기 등을 설명하겠습니다.

  • 13장 - 프로젝트 준비
    • 개발 프로세스
    • 프로젝트 생성 및 설정
      • 프로젝트 생성
      • 프로젝트 기본 설정
        • 사용자 생성
        • 사용자별 권한 관리
        • 티켓 설정
        • 최초 소스 업로드
        • 빌드 스크립트 작성
  • 14장 - 프로젝트 진행
    • 들어가기
    • 기능 구현
    • 버그 보고 및 해결
    • Symbol Server의 활용
  • 15장 - 실전에서 발생하는 문제들
    • 충돌 해결
    • 커밋한 것 되돌리기
    • Trac 프로젝트, 저장소 이름 바꾸기
  • 부록
    • 날짜를 버전으로 사용하기
    • 다국어 리소스에서 자동 버전 업데이트 스크립트 사용
    • CC.NET에서 Subversion Indexing을 사용할 때 Exception 문제 해결
    • VisualSVN Server로 authz 설정하기
      • VisualSVN Server 설치
      • VisualSVN Server 사용 방법
    • ccnet.config를 Subversion으로 관리하기
    • Visual Studio 6.0을 사용하려면
    • Visual Studio 2008을 사용하려면
    • CruiseControl.NET으로 윈도우 드라이버 빌드하기
    • Trac 인덱스 페이지 꾸미기
    • 자동 빌드하지 않는 방법
    • Subversion 저장소 합치기
      • 내용이 다른 프로젝트
      • 내용이 이어지는 프로젝트
    • Subversion 저장소 나누기
      • trunk 디렉터리 아래에 각 프로젝트의 디렉터리가 위치할 때
      • 각 프로젝트의 디렉터리 저장소의 최상위 디렉터리로 위치할 때
    • Subversion에서 외부 저장소 연결하기
    • MS 오피스 파일과 TortoiseSVN
    • User Mode Process Dumper 사용하기
    • CVS에서 Subversion으로 이전하기
  • 자주하는 질문
  • 오탈자
  • 추가 팁

부록 CD

학습 로드맵

책 구입

이 책은 절판되었습니다.

기획의 말

윈도우 개발자를 위한 개발 환경 자동화의 꿈

소프트웨어 개발 환경은 빠르게 변화했습니다. 웹 분야는 현기증이 날 만큼 빠르게 변화했고, 열혈 개발자들은 그러한 변화를 즐기기까지 했습니다. 개발 환경의 변화는 주로 웹과 자바 개발자들에게 맞춰져 있었습니다. 그러다보니 윈도우 개발자들은 개발 환경 자동화에 관심이 있지만 쉽게 접근하지 못했습니다.

"개발 소스 코드를 모두 날려먹었어요!"라는 미담(?)이 개발자들 사이에 전해지고, 출시일이 1개월 남았던 프로그램은 하드디스크 고장으로 1년이나 출시가 연기되기도 합니다. 모든 것을 날리고, 처음부터 새로 시작하니 더 안정된 디자인과 개발이 가능하다는 아름다운(?) 후일담을 남기며 날림의 미학을 전달하던 시기도 있었습니다. "매일 CD-ROM으로 백업해요!"라고 얘기하던 시절도 있었습니다. 소스 버전 관리 도구인 CVS가 처음 등장해서 큰 인기를 끌었지만 불편한 인터페이스에 사람들은 질려버렸고, Subversion이라는 멋진 도구가 등장했습니다.

요즘에는 Subversion, Trac, CruiseControl과 같은 도구를 함께 사용하는 것이 표준처럼 되어버렸습니다. 불행히도 이런 종류의 책들은 대부분 자바나 웹 개발자를 위한 것입니다.

윈도우 응용프로그램 개발자는 이런 도구를 사용할 수 없을까?
VC++6, VS2005/2008과 같은 개발도구를 사용하고, C/C++을 사용하는 사람들은 사용할 수 없을까?
C#/.NET 프로젝트는 사용할 수 없을까?
윈도우에서 이런 환경을 구성하면 안 되나?
왜 모든 책은 리눅스일까?

이런 의문에서 시작했습니다. 시중에는 정말 멋진 프로젝트 개발이나 지속적인 통합(Continuous Integration)에 대한 책이 있습니다. 그리고 그런 책을 본 시스템 프로그래머는 이런 의문을 남기며 회의적이 됩니다.

"책을 보면 정말 멋집니다. 그런데 이런 환경을 윈도우 디바이스 드라이버에 적용할 수 있을까요? 실천에 옮기고 싶지만 디바이스 드라이버 개발에는 적용할 수 없을 것 같아요."

그러나 현실에서는 윈도우 디바이스 드라이버 개발에 이런 환경을 구성하고, 지속적인 통합을 실천하고 있습니다. 그런 환경에서 일하는 분이 책의 저자입니다.

프로그램에 문제가 발생했을 때 역어셈된 어셈블리 코드를 보며 디버깅하지 않습니다. 우린 심볼 서버와 소스 버전 저장소(Subversion)를 연동해서 어떤 소스 파일의 몇 번째 줄이 문제인지 바로 찾아갈 것입니다. 사용자가 사용한 버전에 맞는 소스 코드 트리를 정확하게 찾아내고, 버그를 수정하고, 바로 전체 트리에 반영할 것입니다. 버그가 수정된 새로운 프로그램은 빌드 서버에 의해 빌드되고, 배포 서버를 통해 배포됩니다.

자동화된 환경은 많은 이점을 제공합니다. 일일 업무의 많은 부분을 자동화된 환경에 덜어내고, 개발자는 개발에 자신의 역량을 집중할 수 있습니다. 그 결과 소프트웨어 품질은 높아지고, 버그는 줄이면서 개발자가 일하기 편한 환경이 됩니다. 사람 냄새 나지 않는 자동화된 환경은 사람 냄새 나는 개발자가 중심이 되는 환경을 만들어줍니다. 이 책을 읽는 독자도 개발 환경 자동화가 제공하는 장점을 누렸으면 하는 바람입니다.

저자 서문

통합 개발 환경의 도입을 위해...

요즘 우리나라에서 버전 관리 시스템과 프로젝트 관리에 대한 관심이 많이 높아진 것을 실감할 수 있습니다. 몇 년전까지만 하더라도 버전 관리 시스템이라는 도구 자체가 많이 쓰이지 않았고, CVS나 Sourcesafe를 일부 사용하는 정도였습니다. 그리고 이슈 관리 시스템이나, 자동 빌드 시스템을 활용하는 곳도 많지 않았습니다. 최근 들어 CVS의 단점을 극복하려는 노력으로 Subversion이 탄생하게 되었고, 중소형 개발사뿐만 아니라 대기업에서도 Subversion을 적극적으로 활용하는 모습을 보이고 있습니다. 또한 Subversion과 연동할 수 있는 Trac도 여러 곳에서 활발히 사용되고 있습니다.

한 가지 안타까운 점이 있다면, 아직도 국내 소프트웨어 개발사에서는 버전 관리 시스템과 프로젝트 관리 도구의 사용을 주저하고 있다는 것입니다. 관리자 계층에서 이러한 시스템의 필요성을 느끼지 못하여 도입이 되지 않는 경우가 많습니다. 그래도 막상 사용을 하자니 누군가가 나서서 시스템을 구축해야 하는데, 시스템을 구축할 인력 및 능력이 부족한 경우가 대부분이고, 인터넷 상에 소개된 버전 관리 시스템, 이슈 관리 시스템의 설치 문서들은 대부분 유닉스, 리눅스 기반으로 작성되어 있고, 외국 문서들이 대부분이라 개발자들이 쉽게 접근하기 힘든 것도 사실입니다.

현재 나와 있는 버전 관리 시스템을 비롯한 프로젝트 관리 도구들은 값비싼 상용 도구들이 많습니다. 중소 업체에서는 이러한 비싼 도구를 도입하는 것이 현실적으로 어렵습니다. 그래서 오픈소스인 Subversion이 비용을 줄이는 데 큰 역할을 하고 있습니다. 하지만 Subversion은 버전 관리 시스템일 뿐 상용 도구들처럼 이슈 관리 시스템, 자동 빌드 시스템, 기타 프로젝트 관리 도구들이 포함되어 있지 않습니다.

이 책에서는 Subversion과 연동할 수 있는 이슈 관리 시스템인 Trac과 자동 빌드 시스템인 CruiseControl.NET을 다루었습니다. 그리고 유닉스, 리눅스 보다는 접근하기가 쉽고, 국내에서 많이 사용하고 있는 윈도우를 기반으로 설치 및 활용 방법을 설명을 하였습니다. 또한 윈도우에 특화된 기능들인 심볼 서버 구축, 심볼 파일에 Subversion을 정보를 기록하는 방법 그리고 이것을 자동 빌드 시스템과 연동하는 방법을 설명하였습니다.

부록에서는 응용프로그램 프로젝트 이외에 윈도우 디바이스 드라이버 프로젝트를 구축한 시스템에 연동하는 방법과 실전에서 발생하는 문제들에 대한 해결책, 그리고 각종 팁들을 수록하였습니다.

아무쪼록 이 책을 통하여 적은 비용으로 훌륭한 통합 개발 환경을 도입하는데 도움이 되었으면 합니다.

처음 책을 집필하면서 책이란 저자만의 것이 아니라는 것을 느끼게 되었습니다. 한 권의 책이 만들어지기까지 많은 분들의 노력이 있었고, 책은 저자와 기획자, 편집자, 디자이너, 출판사, 그리고 모든 관계자 여러분들의 것입니다. 해박한 지식으로 원고에 대해 날카로운 지적을 해주신 한동훈님을 비롯해서 한빛미디어 가족 여러분들께 감사의 말씀을 드립니다. 마지막으로 언제나 저를 걱정해주시는 어머님께 감사드립니다.

2008년 4월 이재홍


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.