2014 소프트웨어검증 CTIP 환경구축 T1 200911381 김진현 200911417 정명권 200911418 정세진
1. CTIP 2. SUBVERSION 3. MANTIS 4. Fail & solution INDEX 2014 Softaware Verfication T1 2
Continuous Test & Integration Platform CTIP 2014 Softaware Verfication T1 3
What is CTIP? CTIP(Continuous Test & Integration Platform) 지속적인테스팅과그에따른통합환경을제공하는개발지원플랫폼 CI 서버를통한지속적인통합환경과빌드자동화를기반으로함 품질도구들을통하여코드를평가하고검토할수있음 빌드및테스팅결과를관련자에게배포 2014 Softaware Verfication T1 4
Process of CTIP CTIP 의수행과정 2014 Softaware Verfication T1 5
Process of CTIP CTIP 의수행과정 개발자가소스저장소로부터최신소스를내려받음 (Check out) 코드작성뒤자체적으로검사후소스저장소에올림 (Check in) 관리자또는자동화시스템에서방금올라온코드가반영된전체코드에대한빌드를수행 (Build) 빌드실패시원인분석 / 문제해결 (Feedback) 2014 Softaware Verfication T1 6
Advantage of CTIP 장점 코드관리에있어서발생할수있는위험이획기적으로감소 수동으로수행해야하는반복작업감소 시간 / 장소관계없이배포가능한소프트웨어제작가능 프로젝트에대한더나은가시성제공 개발팀에게소프트웨어제품에대한자신감부여 2014 Softaware Verfication T1 7
Condition of CTIP 성공적인수행을위한요건 단일소스저장소 (Repository) 유지 빌드자동화 / 자체테스트가능한빌드 빠른빌드수행 운영환경과최대한비슷한환경구성 최신결과물및현재빌드상황에쉽게모니터링 2014 Softaware Verfication T1 8
Composition of CTIP CTIP 의구성 소스코드버전관리영역 빌드및배포관리영역 코드품질관리영역 대상서버군 2014 Softaware Verfication T1 9
Composition of CTIP 소스코드버전관리영역 CVS, SVN 등의소스코드버전관리시스템을이용 프로젝트전체소스코드의일관성유지 Repository 로부터최신소스를 Check out / 작업내용을 Check in 2014 Softaware Verfication T1 10
Composition of CTIP 빌드및배포관리영역 CI 서버를통해지속적으로빌드를수행 대상서버에대한배포작업수행 정해진시점이나 Repository 에변경이있을시즉시수행가능 소스코드버전관리시스템으로부터최신소스를받아옴 코드품질관리도구실행 빌드결과를개발자에게통보 서버에빌드된 Application 배포 2014 Softaware Verfication T1 11
Composition of CTIP 코드품질관리영역 오픈소스코드검토도구를활용하여코드품질을확인 결과를개발자들에게통보 서버군운영 운영서버및배포를위한스테이징서버 테스트실행을위한테스트서버 2014 Softaware Verfication T1 12
Software Version Management Tool SUBVERSION 2014 Softaware Verfication T1 13
What is Subversion? REF1 Subversion (SVN) 소프트웨어버전관리시스템 장점 소스의변경사항이력관리가가능 변경사항에대해서현재작업중인파일에대한비교, 조합 (Merge) 가능 변경사항에대해서다른개발방향으로분기 (Branch) 가가능 2014 Softaware Verfication T1 14
Integration with Eclipse [1/6] Svn client 설치 Help-> Eclipse Marketplace -> svn 검색 Subversive 설치 2014 Softaware Verfication T1 15
Integration with Eclipse [2/6] 필요한모듈을선택하여설치 2014 Softaware Verfication T1 16
Integration with Eclipse [3/6] Subversive 설치후이클립스재시작 자동으로실행되는메뉴를통해 Svn 커넥터를설치 2014 Softaware Verfication T1 17
Integration with Eclipse [4/6] Subversive 설치후이클립스재시작 자동으로실행되는메뉴를통해 Svn 커넥터를설치 2014 Softaware Verfication T1 18
Integration with Eclipse [5/6] 저장소생성 New repository 선택 URL 과사용자계정정보를입력 2014 Softaware Verfication T1 19
Integration with Eclipse [6/6] 저장소생성완료 2014 Softaware Verfication T1 20
Share Project [1/3] Team -> 메뉴에서프로젝트관리 -> Share project 프로젝트를 svn 서버에업로드 2014 Softaware Verfication T1 21
Share Project [2/3] 저장소선택 사용했던저장소는아래와같이선택가능 새로운저장소는주소를입력하여연결할수있음 2014 Softaware Verfication T1 22
Share Project [3/3] 공유완료 2014 Softaware Verfication T1 23
Commit & Update [1/2] Commit 서버에현재작업중인소스를업로드 현재버전이최신이어야할수있음 2014 Softaware Verfication T1 24
Commit & Update [2/2] Update 서버에서프로젝트, 소스, 라이브러리등을다운로드 업데이트과정에서 Conflict 가발생할수있음 2014 Softaware Verfication T1 25
Conflict 발생원인 여러명이같은부분을작업할때수정한내용이다를경우발생 해결방법 mine : 내코드.r40 : 서버의코드 필요없는코드를삭제한후 Conflict 파일을삭제하고 Commit 을시도 2014 Softaware Verfication T1 26
History History 를통해서소스변경내역확인이가능하고이전버전의소스로복구시활용 2014 Softaware Verfication T1 27
Branch & Merge [1/7] REF3 Trunk 프로젝트에서가장중심이되는디렉토리 개발과배포, 테스트및중추적인역할을하는소스 Branch trunk 에서뻗어나온가지 trunk 의디렉토리에서또다른작은부류로빼서따로개발시사용 Trunk 의소스를건드리지않고개발할경우에사용 Tag 프로그램을개발하면서릴리즈버전별로소스를보관하는디렉토리 새기능을추가할때 Branch 를만들어서작업을한후문제가발생하지않으면 Trunk 에반영하는방식이효과적임 Trunk 는수정되지않기때문에잘못될경우복구가가능 2014 Softaware Verfication T1 28
Branch & Merge [2/7] REF3 Team-> branch 클릭 2014 Softaware Verfication T1 29
Branch & Merge [3/7] REF3 Revision 이나현재프로젝트의복사본등으로생성가능 2014 Softaware Verfication T1 30
Branch & Merge [4/7] REF3 Revision 이용한 Branch 생성 2014 Softaware Verfication T1 31
Branch & Merge [5/7] REF3 Branch 를생성한후해당프로젝트를다시 Check out 해서진행 작업을완료한후 Branch 를 Trunk 와 Merge 2014 Softaware Verfication T1 32
Branch & Merge [6/7] REF3 Trunk 를 Check out 한후 Team -> Merge 메뉴실행 Browse 버튼을눌러브랜치서택하고 Revision 항목을 all 2014 Softaware Verfication T1 33
Branch & Merge [7/7] REF3 Remote File 을참고하여 Local File 을수정 local file : 결과 remote file : 원본 (trunk) Conflict 발생할수있음 2014 Softaware Verfication T1 34
Bug & Issue Tracker MANTIS 2014 Softaware Verfication T1 35
Mantis [1/2] What is the Mantis? Bug Tracking System 의한종류 APM 환경 (Apache, MySQL, PHP) 에서동작 개발일정관리가능 프로젝트단위로 Issue 를관리 팀원들에게 Issue 변경등의사항을공지 Mantis 의장점 이슈를해결까지지속적으로추적및관리 각종보고서를자동으로작성할수있음 무료, 한글화 2014 Softaware Verfication T1 36
Mantis [2/2] 2014 Softaware Verfication T1 37
Apmsetup7 [1/1] REF1 Apmsetup7 Apache Tomcat, Php, MySql 을설치하고설정해주는프로그램패키지 다운로드후설치만하면간단하게사용가능 2014 Softaware Verfication T1 38
Mantis BT [1/11] REF1 Mantis 공식홈페이지에서다운로드가능 2014 Softaware Verfication T1 39
Mantis BT [2/11] Mantis Apmsetup 에서지정한 Document Root 에복사하면접속가능 2014 Softaware Verfication T1 40
Mantis BT [3/11] Mantis 웹브라우저로 http://localhost/mantis/admin/install.php 에접속 DB 생성을위해 MySql 의 Admin 계정과암호를입력하고설치시작 2014 Softaware Verfication T1 41
Mantis BT [4/11] Mantis 정상적으로설치가완료되었다면 http://localhost/mantis 접속시아래와같은화면이출력 추가설정을위해관리자계정으로접속 ( administator / root ) 2014 Softaware Verfication T1 42
Mantis BT [5/11] Mantis 관리자계정로그인까지완료된모습 2014 Softaware Verfication T1 43
Mantis BT [6/11] 관리자계정으로로그인하여관리가가능 프로젝트생성 Manage -> manage project 메뉴에서프로젝트를생성하거나삭제가 2014 Softaware Verfication T1 44
Mantis BT [7/11] 프로젝트생성화면 2014 Softaware Verfication T1 45
Mantis BT [8/11] 프로젝트생성후초기화면 Unassigned 아직할당되지않은이슈 Resolved 해결된이슈 Monitored by me 내가확인한이슈 Reported by me 내가보고한이슈 Recently modified 최근수정된이슈 2014 Softaware Verfication T1 46
Mantis BT [9/11] Report issue 버튼을통해이슈보고가능 Category 프로젝트선택 Severity 이슈의심각성선택 Priority 이슈의중요도선택 중요도나심각성을통해이이슈가얼마나빨리해결되어야하는지표현가능 2014 Softaware Verfication T1 47
Mantis BT [10/11] Assign to 를통해특정사용자에할당가능 2014 Softaware Verfication T1 48
Mantis BT [11/11] 새이슈생성화면 이슈의상태를색으로관리 파일업로드도가능 Change status to 에서이슈의상태를변경가능 2014 Softaware Verfication T1 49
Integration with SVN [1/17] Mantis BT Plugins Source Integration 다운로드 2014 Softaware Verfication T1 50
Integration with SVN [2/17] Mantis BT Plugins Plugins 복사및설치 2014 Softaware Verfication T1 51
Integration with SVN [3/17] Source Control Integration Configuration 사용할기능및정규식설정 2014 Softaware Verfication T1 52
Integration with SVN [4/17] Source Control Integration Configuration Commit 시 SVN 정보갱신을위한 API Key 설정 2014 Softaware Verfication T1 53
Integration with SVN [5/17] Source Control Integration Configuration SVN 접근을위한 Path 및설정 2014 Softaware Verfication T1 54
Integration with SVN [6/17] Subversion Configuration 연동할저장소를새로생성 2014 Softaware Verfication T1 55
Integration with SVN [7/17] Subversion Configuration Commit 후 Mantis 에갱신요청을보내기위해 Hook 설정 2014 Softaware Verfication T1 56
Integration with SVN [8/17] Subversion Configuration SET REPOS= TestForMantis - 저장소이름 SET REV=%2 - 버전번호, 매개변수를통해획득 SET CURL="D:\CI_2014\VisualSVN Server\curl.exe - CURL 실행파일위치 SET LOG=D:\CI_2014\log\svn_%REV%_log.txt - 저장할로그파일위치, log 폴더는수동으로생성해야함 SET CHECKINURL=http://localhost/mantisbt- 1.2.17/plugin.php?page=Source/checkin - 명령을보낼대상주소 %CURL% -d "repo_name=%repos%" -d "data=%rev%" -d "api_key=17" %CHECKINURL% > %LOG% - CURL 로저장소이름, 버전번호등의정보를대상주소로전송 - 출력되는로그는로그파일위치에생성 2014 Softaware Verfication T1 57
Integration with SVN [9/17] Subversion Configuration CURL : 커맨드라인에서웹주소로데이터를전송하기위한도구 OpenSSL : 네트워크프로토콜 TLS, SSL 의오픈소스라이브러리 CURL 의실행을위해필요 2014 Softaware Verfication T1 58
Integration with SVN [10/17] Mantis Repository Creation 새로생성된 Repositories 메뉴에서새저장소생성 2014 Softaware Verfication T1 59
Integration with SVN [11/17] Mantis Repository Creation Visual SVN 에서새로생성한저장소주소와등록된사용자정보를입력 2014 Softaware Verfication T1 60
Integration with SVN [12/17] Mantis Repository Creation Browse 를통해갱신이력을확인할수있음 2014 Softaware Verfication T1 61
Integration with SVN [13/17] Eclipse Project Sharing Visual SVN 에서새로생성한저장소주소와등록된사용자정보를통해관리할프로젝트를공유 2014 Softaware Verfication T1 62
Integration with SVN [14/17] Eclipse Project Sharing Post-commit hook 을통해내역이맨티스에자동으로갱신 2014 Softaware Verfication T1 63
Integration with SVN [15/17] Linking to Issue 맨티스에서이슈를확인 2014 Softaware Verfication T1 64
Integration with SVN [16/17] Linking to Issue 관련작업후 Commit 을할때설정한정규표현에맞추어 Comment 를작성 2014 Softaware Verfication T1 65
Integration with SVN [17/17] Linking to Issue 해당이슈와연결이된것을확인할수있음 이슈에서도관련된 Commit 내역을확인할수있음 2014 Softaware Verfication T1 66
Why doesn t it work???????????????????? FAIL & SOLUTION 2014 Softaware Verfication T1 67
Fail & Solution [1/11] 커넥터를바로설치하지않은경우 다음의주소에서플러그인을설치할수있다. 2014 Softaware Verfication T1 68
Fail & Solution [2/11] Attemption to connect to database as admin Fail Mantis 설치중또는 DB 접근시 localhost 가정의되지않아실패할경우 2014 Softaware Verfication T1 69
Fail & Solution [3/11] Attemption to connect to database as admin Fail 아래폴더로접근하여 localhost 항목추가 2014 Softaware Verfication T1 70
Fail & Solution [4/11] Checking ability to SELECT Fail Mantis 설치시 DB 접근권한이없어서실패할경우 2014 Softaware Verfication T1 71
Fail & Solution [5/11] Checking ability to SELECT Fail MyPhpAdmin 에서 DB 접근권한을변경 2014 Softaware Verfication T1 72
Fail & Solution [6/11] Login Fail 관리자계정암호를모를경우 ( 사실초기암호는 root ) 2014 Softaware Verfication T1 73
Fail & Solution [7/11] Login Fail DB 에서 password 를 MD5 함수를이용하여직접설정 2014 Softaware Verfication T1 74
Fail & Solution [8/11] URL was not found Fail CURL 로그에서페이지를찾을수없다고할경우 2014 Softaware Verfication T1 75
Fail & Solution [9/11] URL was not found Fail Post-commit hook 에올바른 URL 을입력 2014 Softaware Verfication T1 76
Fail & Solution [10/11] Invalid repository name Fail CURL 로그에서저장소이름이틀리다고나올경우 2014 Softaware Verfication T1 77
Fail & Solution [11/11] Invalid repository name Fail Post-commit hook 에서매개변수를사용하지않고저장소이름을직접입력 2014 Softaware Verfication T1 78
Google & StackOverflow Google Searching! 2014 Softaware Verfication T1 79
Google & StackOverflow See best answer of StackOverflow! 2014 Softaware Verfication T1 80
REFERENCES 1. 서브버전, http://ko.wikipedia.org/wiki/ 서브버전 2. 맨티스, http://www.mantisbt.org 3. APMSETUP, http://www.apmsetup.com/ 4. CURL, http://curl.haxx.se/ 5. OpenSSL, http://www.openssl.org/ 2014 Softaware Verfication T1 81
Q & A E N D 2014 Softaware Verfication T1 82