1 SOFTWARE VERIFICATION 2015.04.03 TEAM 4 [Redmine & SVN & Hudson] 컴퓨터공학부 Presenter 200911393 박현규 201010768 최정한 201111339 김민우 201211389 함진아
CONTENTS 2 PART 1 CTIP? 3 PART 2 PART 3 SVN Build Server 9 33 PART 4 Redmine 68 PART 5 CTIP Environment 106 References 107
3 PART 1 CTIP?
PART 1 CTIP? 4 What is CTIP? Continuous integration + Continuous Test = Continuous Test & Integration Platform CI CTIP
PART 1 CTIP? 5 What is CI? Continuous integration Purpose 프로젝트에참여중인개발자들의결과물을지속적으로통합하고, build 함으로써각자의저작물을통합할때생기는문제를예방하기위해도입됐다. 개발자들은문제점을빠른시점에알고고칠수있고, test code를한번작성해두면개발중해당부분에대한테스트는자동적으로진행된다. 자동화된단위테스트, 서버환경에서주기적으로혹은 commit 시 build, 정적 or 동적테스트성능측정, 소스코드로부터자동문서화작업등을거친다.
PART 1 CTIP? 6 CI CTIP CTIP ( 지난프로젝트에추가된점 ) 자동빌드서버를통해서지속적으로빌드하게된점 또한, 이를통해빌드관련이슈관찰이가능하게된점 svn 을통해버전관리, 코드공유가가능하게된점 redmine 을통해개발자들과이슈교류가가능하게된점
PART 1 CTIP? 7 Tools for Development 1. 웹기반프로젝트관리프로그램 프로젝트에서진행되는이슈사항들관리, 소스관리, 일정관리등프로젝트의전반적인진행상황을모니터링하고관리할수있는툴 Redmine, Trac, Jira 등 2. 자동빌드프로그램 환경파일의설정에따라전체프로젝트를쉽게빌드할수있는환경을제공해주는툴 Ant, Maven, Gradle 등 3. 버전관리프로그램 하나의프로그램이여러고객의필요를맞추려다보면다양한버전의프로그램으로변화될수있다. 효과적으로소스를관리할수있게도와주는툴이버전관리프로그램 SVN, CVS, GIT, Source Sfae 등 4. Continuous Integratoin (CI) 지속적인통합을위한툴 개발되어진소스에대해지속적으로컴파일, 테스트, 보고서작성등의작업을수행하고그에대한결과를개발자및관리자에게알려주고, 이러한작업이자동혹은반자동에의해일어난다. Hudson, Cruisecontrol 등
PART 1 CTIP? 8 How it works CTIP 의흐름
9 PART 2 SVN
PART 2 SVN 10 What is SVN? Subversion의줄임말 Open source 버전관리프로그램으로, 소스공유환경을제공한다. CVS의단점을보완하기위해등장했다. What is Version Control? 파일의변경이력을관리하는시스템으로소스코드나문서파일의수정이력을보관하고관리한다. 다른버전 (Branch) 으로개발된소스를현재소스와합치고, 변경이력에대해서도추적이가능하다.
PART 2 SVN 11 How to install SVN server 1. Visual SVN 다운로드 Visual SVN 홈페이지접속 : https://www.visualsvn.com/server/download/ 32-bit / 64-bit 선택해서다운로드 VisualSVN-Server-3.3.1-x64.msi 실행
PART 2 SVN 12 How to install SVN server 2. Visual SVN 설치 Next 체크박스선택 Next
PART 2 SVN 13 How to install SVN server 2. Visual SVN 설치 Standard Edition 설치경로및 Repository 경로, port 번호설정 Install 설치중 PC 이름오류가나는경우, 컴퓨터 속성 고급시스템설정 컴퓨터이름 변경 영문이나숫자로만이루어진이름으로바꾸고재부팅
PART 2 SVN 14 How to install SVN client 1. Subversive 설치 Eclipse Help Eclipse Market Place
PART 2 SVN 15 How to install SVN client 1. Subversive 설치 Find 에서 subversive 검색 Install Confirm Accept 체크후 finish
PART 2 SVN 16 How to install SVN client 2. SVN Connector 설치 Eclipse Window Show View Other SVN SVN Repositories
PART 2 SVN 17 How to install SVN client 2. SVN Connector 설치 Eclipse Window Show View Other SVN SVN Repositories 왼쪽과같은창이뜨면, SVN Kit 1.7.13 선택후 Finish 한번취소를누를경우다시뜨지않는다. 이경우해결방법은다음을참조 : http://www.cyworld.com/xognslek/3512231
PART 2 SVN 18 How to use SVN server 1. Visual SVN 실행
PART 2 SVN 19 How to use SVN server 2. User 등록 User 우클릭 Create User 이름및비밀번호설정후 OK User 등록
PART 2 SVN 20 How to use SVN server 3. Group 생성 Group 우클릭 Create Group 이름설정 Add User 추가 그룹생성
PART 2 SVN 21 How to use SVN server 4. Repository 생성 Repository 우클릭 Create New Repository Next 이름설정
PART 2 SVN 22 How to use SVN server 4. Repository 생성 Single-project repository : trunk, branches, tags 폴더생성
PART 2 SVN 23 How to use SVN server Repository 가무엇인가 1. Repository 진행되고있는프로젝트의파일이저장될곳이다. 여기에개발자들이네트워크를통해프로젝트를공유하거나접근하게된다.
PART 2 SVN 24 How to use SVN server Repository 가무엇인가 2. trunk 모두가공유하는작업공간. 3. branches 임시로격리된작업공간. 개발단계에서각자개발한소스가저장되는공간. 4. tags 릴리즈시릴리즈한파일을저장하는공간.
PART 2 SVN 25 How to use SVN server 4. Repository 생성 Customize permissions Custom Add Group 선택 Permissions 확인
PART 2 SVN 26 How to use SVN server 4. Repository 생성 생성완료. Repository 의 URL 주소생성
PART 2 SVN 27 How to use SVN server 5. Repository 서버 Browse 서버접속시 user 자격요구 로그인후 svn server 에접속가능하다는것확인
PART 2 SVN 28 How to use SVN client 1. Repository Location 추가 Eclipse SVN Repositories 우클릭 New Repository Location SVN server의 repository URL 입력 로그인 Trust Always
PART 2 SVN 29 How to use SVN client 2. 프로젝트공유 프로젝트우클릭 Team Share Project SVN repository 경로 Finish
PART 2 SVN 30 How to use SVN client 2. 프로젝트공유 프로젝트우클릭 Team Share Project SVN repository 경로 Finish Commit 할때남길 Comment (Commit 내용과관련된정보 ) 변경된내용 Server 에공유된거확인
PART 2 SVN 31 How to use SVN client 3. SVN 서버에서프로젝트가져오기 Repository 우클릭 Check Out
PART 2 SVN 32 How to use SVN client 4. SVN 서버에 Commit / 서버로부터 Update 공유프로젝트우클릭 Team Commit / Update Project 옆에 > 표시가있는경우서버와 Update한시점이후로부터변경사항이생겼다는의미이다.? 표시의경우새로생긴파일을뜻하며, 노란네모는기존파일을의미한다. 충돌이일어나는상황이많다. ( 여러사람이코드를수정해서서버에올리려고하는경우 ) 이럴경우를대비하기위해반드시코드를작성하기전에 Update를한번하는습관이중요하고, Commit 시충돌이날경우 Revert를이용하여이전상태로프로젝트를돌려놓거나, Merge를이용해서코드를합치는작업을거칠수있다.
33 PART 3 Build Server
PART 3 Build Server 34 What is Build Server? 서버를두고, 빌드를주기적으로하면서조금더개발자와검증팀의일을돕는역할. - svn 에서자동소스 export 한다. - 정해진시간마다빌드를한다. - 빌드한뒤, 결과를알려준다.
PART 3 Build Server 35 CruiseControl CruiseControl is both a continuous integration tool and an extensible framework for creating a custom continuous build process CI tool이고, 여러가지플러그인을제공한다. 대신 config.xml파일을통해서이를제어하는것이특징이다. CC를잘사용하려면, config.xml을잘조정하는것이중요하다. Hudson Hudson is a continuous integration tool written in Java, which runs in a servlet container, such as Apache Tomcat or the GlassFish application server. 인터페이스로편하게 CC에서사용하던부분을조절할수있다. 한마디로 config.xml을통한제어를인터페이스로제어할수있다는장점이있다.
PART 3 Build Server 36 How to install CruiseControl 1. CruiseControl 다운로드 ( 이하 CC) CC 홈페이지접속 : http://cruisecontrol.sourceforge.net/
PART 3 Build Server 37 How to install CruiseControl 2. CruiseControl 압축해제 빌드서버환경설정을위한 config.xml 수정 & 빌드설정을위한 build.xml 수정
PART 3 Build Server 38 CC : config.xml URL : http://cruisecontrol.sourceforge.net/main/plugins.html/ 1. <bootstrappers>
PART 3 Build Server 39 CC : config.xml 1. <bootstrappers> bootstrappers 내부의태그 : <svnbootstrapper>, <antbootsrapper>
PART 3 Build Server 40 CC : config.xml 1. <bootstrappers> <antboostrapper> : 빌드하기전에 ant 의위치를미리알아오고, build file 을지정해준다.
PART 3 Build Server 41 CC : config.xml 1. <bootstrappers> <svnbootstrapper> : svn 서버로부터해당 repository 의 build.xml 을가져온다.
PART 3 Build Server 42 CC : config.xml 2. <modificationset>
PART 3 Build Server 43 CC : config.xml 2. <modificationset> <svn> : 여러가지 attribute 설정을통해서원하는기능을사용할수있다. RepositoryLocation : svn 의 repository 경로 localworkingcopy : svn 과비교할 local repository 경로
PART 3 Build Server 44 CC : config.xml 2. <modificationset> Subversion 과 localrepository 의변경사항을 check 하기위해사용.
PART 3 Build Server 45 CC : config.xml 3. <composite> <exec>
PART 3 Build Server 46 CC : config.xml 3. <composite> <exec> <composite> 내부에서 <exec> 을이용해서 command 명령실행가능. svn 명령어로 project update <ant> build.xml 을이용하여빌드를실행하게된다.
PART 3 Build Server 47 CC : Repository 구성 1. svn co URL 초기에한번 CheckOut 을통해서 svn 의 Repository 를가져와야한다. 자동빌드작업전반드시한번거쳐야하는과정.
PART 3 Build Server 48 CC : Repository 구성 2. build.xml & repository Basedir : 이부분만해당 Repository 구성에맞게변경해주면 Okay.
PART 3 Build Server 49 CC : exec CruiseControl 1. CruiseControl 실행./cruisecontrol.sh 이나 cruisecontrol.bat 서버를 open CC 는 local 로열고, svn 을연동, 빌드시새로운코드가져옴. 5 분마다자동빌드설정.
PART 3 Build Server 50 CC : exec CruiseControl 2. 자동빌드대기상태
PART 3 Build Server 51 CC : DashBoard 1. dashboard 개요
PART 3 Build Server 52 CC : DashBoard 2. dashboard / build 해당프로젝트명을눌러서여러가지항목을조회가능.
PART 3 Build Server 53 CC : DashBoard 3. dashboard / build / modification 변경사항은 Modification 에서확인가능하다.
PART 3 Build Server 54 CC : DashBoard 4. dashboard / build / error, warning 에러메세지도확인가능.
PART 3 Build Server 55 CC : DashBoard 4. dashboard / build / latest build list 최근빌드확인가능.
PART 3 Build Server 56 How to install Hudson 1. Hudson 다운로드 Hudson 홈페이지접속 : http://www.hudson-ci.org/ Download Hudson.war
PART 3 Build Server 57 How to install Hudson 2. Hudson 서버실행 hudson-3.2.2.war 다운 설치경로에서 java jar hudson-3.2.2.war 서버실행 http://localhost:8080
PART 3 Build Server 58 How to install Hudson 3. Hudson 초기화설정 hudson 에필요한플러그인선택 맨아래 Install Finish
PART 3 Build Server 59 How to use Hudson 1. Hudson 권한설정 Hudson 관리 Configure Security Enable Security 체크박스
PART 3 Build Server 60 How to use Hudson 1. Hudson 권한설정 Hudson s own user database & Anyone can do anything Save 권한을둘것이라면 Team based Authorization Strategy 를선택해야한다고생각하겠지만, 아직아이디를생성하지않았기때문에로그인할아이디가없어서 Hudson 을밀고다시설치해야된다. 우선관리자권한을만든뒤에다시 Team 을위한 Authorization 설정을할것이다.
PART 3 Build Server 61 How to use Hudson 1. Hudson 권한설정 왼쪽상단의가입 Sign up Configure Security 로돌아와서 Team based Authorization Strategy 선택 add sys admin 생성한아이디등록
PART 3 Build Server 62 How to use Hudson 2. 팀생성 Manage Teams Add New Team Add New Member 멤버권한설정
PART 3 Build Server 63 How to use Hudson 3. Job 등록 새작업 작업명 & 팀이름 Build a free-style software job Ok Save
PART 3 Build Server 64 Hudson with SVN SVN plugin 연동 Hudson 관리 Manage Plugins using Classic Plugin Manager 설치가능 Hudson Subversion Plug-in 체크 맨아래설치 Hudson 재실행 Job Configure Subversion svn Repository URL Update credentials 권한인증
PART 3 Build Server 65 Hudson with Ant Ant 연동 Hudson 관리 Configure System Add Ant 이름설정 Save Job Configure Build Add build step Invoke Ant version 선택
PART 3 Build Server 66 How to use Hudson 4. Build 하기 1) 바로빌드하기 : Job Build Now
PART 3 Build Server 67 How to use Hudson 4. Build 하기 2) 빌드 trigger 설정 : Job Configure Build Triggers 원하는방식선택 Schedule 에자기가원하는설정을넣음 분시일월요일 : 총 5 칸으로표현 해당칸에숫자이외에 * 를쓰게되면, 전부라는의미 Build after other jobs are built : 다른 build 를끝내고 build Trigger build remotely : 특정값이입력되면 build build periodically : 조건에관계없이무조건일정한시간간격으로 build poll SCM : 일정한시간간격으로 job 을검사하여변화가감지되면 build 분 시 일 월 0 ~ 59 사이의값 0 ~ 23 사이의값 1 ~ 31 사이의값 1 ~ 12 사이의값 요일 0 ~ 7 사이의값 (0 과 7 은일요일 )
68 PART 4 Redmine
PART 4 Redmine 69 What is Issue Tracker? 이슈관리시스템은버그, 요구사항, 작업내용등이있을때해당시스템에게시물형 태로올리고개발자, 테스터들이작업진행상황을기록하는시스템 일반적으로인터넷상의게시판과비슷한형태이며, 해당이슈 ( 버그, 요구하상, 작업내 용등 ) 에대한제목에, 이슈형태, 담당자, 프로그램버전, 우선순위등의속성을지정하고 내용을올릴수있다. 이슈관리시스템은대부분버그관리시스템 (Bug Tracking System, BTS) 에서출발하였으 나, 단순히버그뿐아니라, 다양한이슈를관리할수있도록의미가확장되고되었다.
PART 4 Redmine 70 What is Redmine? 레드마인 (Redmine) 은오픈소스프로그램으로웹기반의프로젝트관리와버그추적기능을제공하는도구이다. 화면기반의프로젝트관리에도움이되도록달력과간트차트를제공하고일정관리기능을제공한다. 레드마인은통합된프로젝트관리기능과이슈추적, 여러가지형상관리기능을제공한다. 레드마인의디자인은비슷한기능을가지는오픈소스프로그램인 Trac 에영향을많이 받았으며루비온레일즈에기반하여작성되었고멀티플랫폼을지원하며여러가지종 류의데이터베이스를지원한다.
PART 4 Redmine 71 How to install Redmine 1. Redmine 설치 1) Ruby Install 2) bundler 설치 3) Redmine Download 4) devkit 설치 5) gem 설치 6) Mysql database & user 생성 7) libmysql.dll 8) database.yml 9) session 생성 10) DB migrate 실행 11) 기본데이터입력 12) 서버가동 (test) 13) localhost:3000에서확인 14) 서버가동 (real)... 참고사이트 http://snazzy79.blog.me/220167082813 http://www.redmine.org/projects/redmine/wiki/redmineinstall http://www.redmine.or.kr/projects/community/wiki/%eb%a0%88% EB%93%9C%EB%A7%88%EC%9D%B8_%EC%84%A4%EC%B9%98( Windows)
PART 4 Redmine 72 How to install Redmine 1. Redmine 설치 설치과정수행중에러.
PART 4 Redmine 73 How to install Redmine 2. Bitnami 설치 Bitnami 홈페이지접속 : https://bitnami.com Download bitnami-redmine-
PART 4 Redmine 74 How to install Redmine 2. Bitnami 설치 No thanks, just take me to the download
PART 4 Redmine 75 How to install Redmine 2. Bitnami 설치 Ok Next 경로설정
PART 4 Redmine 76 How to install Redmine 2. Bitnami 설치 계정설정 언어설정 Install
PART 4 Redmine 77 How to install Redmine 2. Bitnami 설치 Manage Servers 탭을통해설치한프로그램들제어 (start, stop, restart) Go to Application 선택시 redmine 접속가능
PART 4 Redmine 78 How to install Redmine 2. Bitnami 설치 local 서버접속 Access Bitnami Redmine Stack Redmine 화면이뜨면완료
PART 4 Redmine 79 How to use Redmine 1. 계정등록 오른쪽상단등록 계정등록 로그인
PART 4 Redmine 80 How to use Redmine 2. 프로젝트생성 왼쪽상단프로젝트 새프로젝트
PART 4 Redmine 81 How to use Redmine 3. 프로젝트관리 개요 : 전체적인프로젝트의진행상황을확인할수있는 dashboard 형태 작업내역 : 일정범위의날짜안에이루어진작업목록 ( 현재비어있음 )
PART 4 Redmine 82 How to use Redmine 3. 프로젝트관리 새일감만들기 : 새로운일감등록 / 담당자, 중요도, 날짜등을지정할수있다.
PART 4 Redmine 83 How to use Redmine 3. 프로젝트관리 등록된일감의정보를일감 / 개요 / 작업내역탭에서확인가능
PART 4 Redmine 84 How to use Redmine 3. 프로젝트관리 차트 / 달력형태로진행상황파악가능
PART 4 Redmine 85 How to use Redmine 3. 프로젝트관리 차트 / 달력형태로진행상황파악가능
PART 4 Redmine 86 How to use Redmine 4. 사용자및그룹관리 왼쪽상단관리 사용자 활성화 / 삭제 : 서버에가입한사용자를승인할수있다. 그룹 새그룹 만들기 그룹에포함할새사용자 / Add projects
PART 4 Redmine 87 Redmine with SVN 1. SVN 연동 관리 설정 저장소 저장소추가 url & svn 서버에등록된로그인정보입력
PART 4 Redmine 88 Redmine with SVN 1. SVN 연동 등록된저장소확인 프로젝트 저장소?????? 저장소인식불가
PART 4 Redmine 89 Redmine with SVN 2. 저장소오류해결 1) 저장소의 url https 설정 {Bitnami 내 redmine 경로 }\apps\redmine\htdocs\lib\redmine\scm\adapters subversion_adapter.rb 편집
PART 4 Redmine 90 Redmine with SVN 2. 저장소오류해결 1) 저장소의 url https 설정내부해당코드에 trust-server-cert 추가 bitnami redmine stack 이용해서 Restart
PART 4 Redmine 91 Redmine with SVN 2. 저장소오류해결 1) 저장소의 url https 설정여전히해결이안될수있다..
PART 4 Redmine 92 Redmine with SVN 2. 저장소오류해결 2) scm_subversion_command 명령지정 git 설정에대한블로그글중, scm 명령어설정하는부분을보고참고
PART 4 Redmine 93 Redmine with SVN 2. 저장소오류해결 2) scm_subversion_command 명령지정 {Bitnami 내 redmine 경로 }\apps\redmine\htdocs\config configuratioin.yml 수정 : 내부해당코드에 svn 추가 Restart all
PART 4 Redmine 94 Redmine with SVN 2. 저장소오류해결 3) 로컬 IP 주소입력앞의두방법을시도했는데도성공하지못할경우, svn url을수정
PART 4 Redmine 95 Redmine with SVN 2. 저장소오류해결 4) 저장소확인 repository 정보와 commit 정보가잘뜨면성공!
PART 4 Redmine 96 Redmine with SVN 3. commit 정보연동 1) client 에서 commit
PART 4 Redmine 97 Redmine with SVN 3. commit 정보연동 2) redmine 작업내역및저장소에 commit 내용즉시 update
PART 4 Redmine 98 Redmine with SVN 3. commit 정보연동 3) commit한버전들간의비교가능최근개정판에서원하는두개의버전을아무쌍으로나선택한후 ( 왼쪽에선택하는게더높은버전이어야한다.) 차이점보기
PART 4 Redmine 99 Redmine with SVN 3. commit 정보연동 3) commit 한버전들간의비교가능
PART 4 Redmine 100 Redmine with SVN 3. commit 정보연동 4) svn 의 commit 과 Hudson 과의연동도확인가능 commit 완료후, 5분내로 hudson이변화를감지하여자동으로 build를진행한다는것을확인할수있다. ( 자동빌드 )
PART 4 Redmine 101 Redmine with Hudson 1. Hudson plugin 설치 1) plugin 다운로드 https://bitbucket.org/nobiinu_and/redmine_hudson/downloads
PART 4 Redmine 102 Redmine with Hudson 1. Hudson plugin 설치 2) plugin 압축해제 redmine 설치경로내 plugin 폴더에압축해제 [bundle exec rake redmine:plugins:migrate RAILS_ENV=production] 설치까지는성공했으나, 실제플러그인적용시 redmine 작업내역및일감을 확인할수없는에러가발생!
PART 4 Redmine 103 Redmine with Hudson 1. Hudson plugin 설치 3) 문제점 hudson이랑 redmine의버전업속도를 plugin 버전업속도가따라오지못함.
PART 4 Redmine 104 Redmine with Hudson 2. Hudson plugin 설치시
105 PART 5 CTIP Environment
PART 5 CTIP Environment 106 CTIP Environment 이름 버전 운영체제 Windows 7 (64bit) JAVA JDK 1.8.0_40 개발도구 Eclipse 4.4.2 (Luna) 유닛테스트도구 Junit 4.0 빌드도구 Ant 1.9.2 빌드서버 Hudson 3.2.2 버전관리 Visual SVN Server Apache Subversion 3.3.1 1.8.13 이슈트래커 Redmine 3.0.1
References 107 Downloads https://www.visualsvn.com/server/download/ : Visual SVN 다운로드 http://cruisecontrol.sourceforge.net/ : CruiseControl 다운로드 http://www.hudson-ci.org/ : Hudson 다운로드 https://bitnami.com : Bitnami 다운로드 References Introduction to CTIP-15SV.pdf http://whatwant.tistory.com/450 http://www.jenkins.or.kr/boards/6/topics/20-url-https http://techie-notebook.blogspot.kr/2007/08/cruise-control-with-svn-automated-build.html http://tingcobell.tistory.com/m/post/279 http://blog.naver.com/kittenjun/10124938891 http://blog.naver.com/platinasnow/220063955230
108 THANK YOU ANY QUESTIONS?