SlideShare ist ein Scribd-Unternehmen logo
1 von 36
작성자 : SMILECAT
작성일 : 2 0 1 5 - 0 6 - 0 5
블 로 그 : E G A O N E K O . G I T H U B . I O
Continuous Integration
1. CI의 정의
CI (지속적인 통합)이란?
 지속적으로 퀄리티 컨트롤(품질 관리)을
적용하는 프로세스를 실행
 모든 개발을 완료한 뒤에 퀄리티 컨트롤을 적용하는
고전적인 방법을 대체하는 방법으로서
소프트웨어의 질적 향상과 소프트웨어를
배포하는데 걸리는 시간을 줄이는데 초점
 초기에 그리고 자주 통합해서 통합의 지옥의 함정을
피하는 것을 내포
출처 : 위키백과 - CI
CI의 역사
‘익스트림 프로그래밍(Extreme Proramming)’
커뮤니티에서 나왔으며, XP 방법론의 지지자인 마틴
파울러(Martin Fowler) 와 켄트 벡(Kent Beck)이
1999년 경 처음으로 지속적 통합에 대해 글을 작성
출처 : slideshare – Sunny Kwak 지속적인 통합
CI 시스템을 구축하지 않은 경우 CI 시스템을 구축한 경우
CI 시스템
• 코드를 형상관리 서버에
커밋하면서 품질관리를 없이 통합을
하여 테스트를 진행
• 품질관리를 수행하지 않았기
때문에 잘못된 코드가 반영되면
개발 후반에 모두 장애로 발견
• 형상관리 서버에 Commit된 코드를
주기적으로 폴링하여 컴파일,
단위테스트, 코드 인스펙션 등의
과정을 수행
• 신규 또는 수정된 코드가 결함이
있는지의 여부를 지속적으로 검증
출처 : happystory님의 블로그
CI의 장점
 위험을 줄여준다.
 반복적인 수작업을 줄여준다.
 언제 어느 때라도 배포할 수 있는 소프트웨어를
생성해낸다.
 프로젝트 가시성을 좋게한다.
 소프트웨어 제품에 대한 보다 큰 자신감을 갖게 해준다.
출처 : slideshare – Yoonki Chang 허드슨을 이용한 지속적 통합
2. CI의 구성요소
CI의 구성 요소
CI Server
SCM
Build Tool
Test Tool
Test
Coverage
Tool
Inspection
Tool
CI SERVER
2. CI의 구성요소
CI Server
출처 : http://java.dzone.com/node/28241/results
CI Server
 빌드 프로세스를 관리하는 서버
 Jenkins, Hudson, CruiseControl.Net, TeamCity 등
 다양한 CI 도구들이 사용되고 있지만, 무료임에도
안정적이고, 다양한 플러그인을 사용할 수 있기
때문에 젠킨스와 허드슨이 많이 사용
출처 : happystory님의 블로그, slideshare – Yoonki Chang 허드슨을 이용한 지속적 통합
Jenkins VS Hudson
 Hudson
 썬에서 근무하던 고스케 가와구치가 개발
 썬에서 관리하던 java.net에서 관리되는 오픈소스 CI툴
 저작권은 오라클 사에 귀속되어 있는 상태
 Jenkins
 java.net의 관리 방식에 변화가 생김
 java.net에서 github로 옮기고 Jenkins로 이름 변경
출처 : hotdogya님의 블로그, 참조 : okjsp 블로그, okjsp 블로그
Jenkins 란?
 open source CI (= Continuous Integration) Tool이다.
 더 쉽게 말하자면 하나의 프로젝트를 여러 명으로 구성된
한 팀이 작업을 할 때 프로젝트를 리드하는 매니저가 일을
여러 가지로 나눠 팀 멤버들한테 분배하고 팀 멤버들은
각각 할당된 부분을 작업 하게 된다.
 팀 멤버들은 자신이 담당하고 있는 부분의 소스코드를
정기적으로 SVN과 같은 Version Control System에
Submit하는데 이 각각의 팀 멤버들로부터 Submit된 소스
코드들을 정기적으로 통합하는 것을 CI라고 하고 이것을
시행해주는 프로그램을 CI Tool이라고 한다.
출처 : Software Engineering 블로그
Jenkins의 기능
 빌드 호출(trigger)
 소스 저장소에서 소스 받아오기
 자동화된 빌드 및 테스트
 리포트 생성 및 통보
 배포
출처 : slideshare – Sunny Kwak 지속적인 통합
Jenkins의 요구사항
 WAS 서버(Apache Tomcat, WebLogic 등)
 빌드 도구(Maven, Ant 등)
 소스 저장소 도구(Git, SVN, CVS 등)
 설치 방법은 링크 참조(젠킨스 설치 및 설정)
출처 : slideshare – Sunny Kwak 지속적인 통합
SCM
2. CI의 구성요소
SCM
 소스코드 형상관리 시스템(Source Code Management)
 소스코드의 개정과 백업 절차를 자동화하여 오류 수정
과정을 도와줄 수 있는 시스템
 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한
부분을 팀원 전체가 자동으로 동기화할 수 있는 시스템
 Subversion, Git, Mercurial 등
출처 : happystory님의 블로그
SCM
 SVN과 Git이 가장 널리 사용
 SVN(Subversion)
 자유 소프트웨어 버전 관리 시스템
 제한이 있던 CVS를 대체하기 위해 개발
 현재는 아파치 최상위 프로젝트
 Git
 분산 버전 관리 시스템
 최초에는 리누스 토르발스가 리눅스 커널 개발에 이용하려고
개발하였으며, 현재는 다른 곳에도 널리 사용
 Github
출처 : 위키백과 – 서브버전, 깃
BUILD TOOL
2. CI의 구성요소
Build Tool
 컴파일, 테스트, 정적분석 등을 실시해 동작 가능한
소프트웨어를 생성
 Ant, Maven, Gradle, MSBuild, Make
 빌드
 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로
변환하는 과정을 말하거나 그에 대한 결과물을 일컫는 것
 가장 중요한 단계는 소스코드 파일이 실행코드로 변환되는 컴파일 과정
 참고
 빌드의 중요성(http://softwaredev.tistory.com/10)
 빌드와 컴파일의 차이(http://allofsoftware.net/19)
출처 : happystory님의 블로그
Build Tool
 Ant(Apache Ant)
 자바 프로그래밍 언어에서 사용하는 자동화된 소프트웨어 빌드
도구
 유닉스나 리눅스에서 사용되는 make와 비슷하나 자바언어로
구현되어 있어 자바 실행환경이 필요하며 자바 프로젝트를
빌드하는데 표준으로 사용
 XML을 사용하여 환경구성
 Maven(Apache Maven)
 자바용 프로젝트 관리 도구
 Apache Ant의 대안으로 만들어짐
 아파치 라이선스로 배포되는 오픈 소스 소프트웨어
출처 : 위키백과 – 아파치 앤트, 아파치 메이븐
Build Tool
 Gradle
 지금까지 자바 진영에서 많이 사용해온 Ant 빌드 툴과 Maven
빌드 툴의 단점은 버리고, 장점은 취한 빌드 툴
 Ant와 Maven 빌드 툴의 기능을 모두 포함
 Ant의 자유도와 Maven의 관례의 장점을 모두 흡수
 Ant와 Maven 빌드 툴 모두 가지고 있었던 가장 큰 단점인
XML에 대한 이슈를 Groovy라는 언어를 사용해 해결
출처 : SLiPP – Gradle 설정 파일 및 기본 개념
TEST TOOL
2. CI의 구성요소
Test Tool
 작성된 테스트 코드에 따라 자동으로 테스트를
수행해주는 도구로, 빌드 툴의 스크립트에서 실행
 JUnit, CppUnit, CppTest, MSTest, Selenium
 단위 테스트
 테스트 대상이 되는 코드 기능의 아주 작은 특정 영역을 실행해
보는 것으로, 개발자가 작성한 테스트 코드로 특정 메소드를
실험해보는 것이 일반적
출처 : happystory님의 블로그
Test Tool
 JUnit
 단위 테스트 도구
 외부 테스트 프로그램(케이스)을 작성하여 System.out으로 번거롭게
디버깅하지 않아도 되게 해줌
 프로그램 테스트 시 걸릴 시간도 관리할 수 있게 해주며 오픈소스이며,
플러그인 형태로 Eclipse에 포함
 하나의 jar 파일로 구성되어 있으며, 사용법이 간단
 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위
테스트를 쉽게 해주는 테스트용 Framework
 JDK 1.4에서 추가된 assertXXX를 사용하여 Test를 진행
 테스트 결과를 확인하는 것 이외에 최적화된 코드를 유추해내는
기능도 제공
 테스트 결과를 단순한 텍스트로 남기는 것이 아니라, Test클래스로
남김
 테스트 방법 및 클래스의 Histroy를 넘겨줄 수 있음
출처 : NEXTREE
TEST COVERAGE TOOL
2. CI의 구성요소
Test Coverage Tool
 테스트 코드가 대상 소스 코드에 대해 어느정도
커버하는지 분석하는 도구
 개발자가 작성한 테스트코드가 테스트 대상
소스코드에 대해서 어느정도 테스트를 수행하는지를
코드 라인과 백분율을 통해 리포팅하는 것으로
단위테스트 수행 시 테스트 커버리지를 분석하기
위해여 부가적으로 사용하는 툴
 Emma, Cobertura, TestCocoon
출처 : happystory님의 블로그
Test Coverage Tool
출처 : https://www.playframework.com/documentation/1.0.1/cobertura
INSPECTION TOOL
2. CI의 구성요소
Inspection Tool
 프로그램을 실행하지 않고, 소스코드 자체로 품질을
판단할 수 있는 정적분석 도구
 코딩 표준 준수 검사, 코드 메트릭 측정, 중복코드 검사,
코드 인스펙션 검사 등이 있음
 CheckStyle, FindBugs, Cppcheck, Valgrind
출처 : happystory님의 블로그
Inspection Tool
3. 빌드 도구, 개발 환경
구축하기
1. CI Server
Jenkins 설치
설치 방법
• 젠킨스 홈페이지에서
WAR 파일 다운로드
• 톰캣 등의 WAS에
설치 및 실행(1)
• 젠킨스 WAR 파일을
직접 실행(2)
• (1), (2) 중 선호는
방식으로 실행
출처 : slideshare – Sunny Kwak 젠킨스 설치 및 설정
2. IDE + Build
Tool + SCM
• IDE를 선정
• Build Tool 선정
• SCM 선정 선정
 IDE
 Eclipse
 IntelliJ
 Build Tool
 Ant
 Maven
 Gradle
 SCM
 SVN
 Git
3. Test Tool
• 테스트 코드를 작성
• Build Tool의
스크립트에서 실행
 Maven
 Gradle
thank you

Weitere ähnliche Inhalte

Was ist angesagt?

필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화none
 
[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개Brian HAN 한진규
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포KwangSeob Jeong
 
임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기OnGameServer
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정중선 곽
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구Lim SungHyun
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼Kenu, GwangNam Heo
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)DONGSU KIM
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기Soojin Ro
 
swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑NAVER D2
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체Mickey SJ Lee
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재NAVER D2
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in FlittoYongjun Kim
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현NAVER Engineering
 
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규ChangKyu Song
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기DomainDriven DomainDriven
 

Was ist angesagt? (20)

필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
 
[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
 
임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
 
swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
 
Jenkins
JenkinsJenkins
Jenkins
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
 
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기
 
Dev team chronicles
Dev team chroniclesDev team chronicles
Dev team chronicles
 

Andere mochten auch

C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
Continuous Integration & Collaboration
Continuous Integration & CollaborationContinuous Integration & Collaboration
Continuous Integration & CollaborationKi Bae Kim
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기XpressEngine
 
[D2대학생세미나] frontend개발자가 들려주는 개발 이야기
[D2대학생세미나] frontend개발자가 들려주는 개발 이야기[D2대학생세미나] frontend개발자가 들려주는 개발 이야기
[D2대학생세미나] frontend개발자가 들려주는 개발 이야기NAVER D2
 
E1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ciE1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ciNAVER D2
 
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기소리 강
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Park JoongSoo
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)MinGeun Park
 
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개태준 문
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 

Andere mochten auch (13)

C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
Test and ci
Test and ciTest and ci
Test and ci
 
Continuous Integration & Collaboration
Continuous Integration & CollaborationContinuous Integration & Collaboration
Continuous Integration & Collaboration
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
 
[D2대학생세미나] frontend개발자가 들려주는 개발 이야기
[D2대학생세미나] frontend개발자가 들려주는 개발 이야기[D2대학생세미나] frontend개발자가 들려주는 개발 이야기
[D2대학생세미나] frontend개발자가 들려주는 개발 이야기
 
E1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ciE1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ci
 
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
 
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 

Ähnlich wie Continuous Integration

AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
Azure DevOps를 활용한 CI, CD 구축
Azure DevOps를 활용한 CI, CD 구축Azure DevOps를 활용한 CI, CD 구축
Azure DevOps를 활용한 CI, CD 구축Taeyoung Kim
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017Amazon Web Services Korea
 
주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기InfraEngineer
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsTaeyoung Kim
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴Ian Choi
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
프로젝트 에코시스템(개발환경의 효율적 개선)
프로젝트 에코시스템(개발환경의 효율적 개선)프로젝트 에코시스템(개발환경의 효율적 개선)
프로젝트 에코시스템(개발환경의 효율적 개선)Daekwon Kang
 
regular.express 발표자료
regular.express 발표자료regular.express 발표자료
regular.express 발표자료bdh92123
 
DevOps and Azure Devops 소개, 동향, 그리고 기대효과
DevOps and Azure Devops 소개, 동향, 그리고 기대효과DevOps and Azure Devops 소개, 동향, 그리고 기대효과
DevOps and Azure Devops 소개, 동향, 그리고 기대효과명신 김
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdfssuserb942d2
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화KTH, 케이티하이텔
 
DevOps best friend AWS
DevOps best friend AWSDevOps best friend AWS
DevOps best friend AWS세연 김
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기인수 장
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드Justin Park
 

Ähnlich wie Continuous Integration (20)

AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
DevOps Study
DevOps StudyDevOps Study
DevOps Study
 
Azure DevOps를 활용한 CI, CD 구축
Azure DevOps를 활용한 CI, CD 구축Azure DevOps를 활용한 CI, CD 구축
Azure DevOps를 활용한 CI, CD 구축
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
 
주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기
 
Dev ops with msp
Dev ops with mspDev ops with msp
Dev ops with msp
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOps
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
프로젝트 에코시스템(개발환경의 효율적 개선)
프로젝트 에코시스템(개발환경의 효율적 개선)프로젝트 에코시스템(개발환경의 효율적 개선)
프로젝트 에코시스템(개발환경의 효율적 개선)
 
regular.express 발표자료
regular.express 발표자료regular.express 발표자료
regular.express 발표자료
 
DevOps and Azure Devops 소개, 동향, 그리고 기대효과
DevOps and Azure Devops 소개, 동향, 그리고 기대효과DevOps and Azure Devops 소개, 동향, 그리고 기대효과
DevOps and Azure Devops 소개, 동향, 그리고 기대효과
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
 
DevOps best friend AWS
DevOps best friend AWSDevOps best friend AWS
DevOps best friend AWS
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
 
2015.07.01
2015.07.012015.07.01
2015.07.01
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드
 

Kürzlich hochgeladen

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 

Kürzlich hochgeladen (6)

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

Continuous Integration

  • 1. 작성자 : SMILECAT 작성일 : 2 0 1 5 - 0 6 - 0 5 블 로 그 : E G A O N E K O . G I T H U B . I O Continuous Integration
  • 3. CI (지속적인 통합)이란?  지속적으로 퀄리티 컨트롤(품질 관리)을 적용하는 프로세스를 실행  모든 개발을 완료한 뒤에 퀄리티 컨트롤을 적용하는 고전적인 방법을 대체하는 방법으로서 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점  초기에 그리고 자주 통합해서 통합의 지옥의 함정을 피하는 것을 내포 출처 : 위키백과 - CI
  • 4. CI의 역사 ‘익스트림 프로그래밍(Extreme Proramming)’ 커뮤니티에서 나왔으며, XP 방법론의 지지자인 마틴 파울러(Martin Fowler) 와 켄트 벡(Kent Beck)이 1999년 경 처음으로 지속적 통합에 대해 글을 작성 출처 : slideshare – Sunny Kwak 지속적인 통합
  • 5. CI 시스템을 구축하지 않은 경우 CI 시스템을 구축한 경우 CI 시스템 • 코드를 형상관리 서버에 커밋하면서 품질관리를 없이 통합을 하여 테스트를 진행 • 품질관리를 수행하지 않았기 때문에 잘못된 코드가 반영되면 개발 후반에 모두 장애로 발견 • 형상관리 서버에 Commit된 코드를 주기적으로 폴링하여 컴파일, 단위테스트, 코드 인스펙션 등의 과정을 수행 • 신규 또는 수정된 코드가 결함이 있는지의 여부를 지속적으로 검증 출처 : happystory님의 블로그
  • 6. CI의 장점  위험을 줄여준다.  반복적인 수작업을 줄여준다.  언제 어느 때라도 배포할 수 있는 소프트웨어를 생성해낸다.  프로젝트 가시성을 좋게한다.  소프트웨어 제품에 대한 보다 큰 자신감을 갖게 해준다. 출처 : slideshare – Yoonki Chang 허드슨을 이용한 지속적 통합
  • 8. CI의 구성 요소 CI Server SCM Build Tool Test Tool Test Coverage Tool Inspection Tool
  • 9. CI SERVER 2. CI의 구성요소
  • 10. CI Server 출처 : http://java.dzone.com/node/28241/results
  • 11. CI Server  빌드 프로세스를 관리하는 서버  Jenkins, Hudson, CruiseControl.Net, TeamCity 등  다양한 CI 도구들이 사용되고 있지만, 무료임에도 안정적이고, 다양한 플러그인을 사용할 수 있기 때문에 젠킨스와 허드슨이 많이 사용 출처 : happystory님의 블로그, slideshare – Yoonki Chang 허드슨을 이용한 지속적 통합
  • 12. Jenkins VS Hudson  Hudson  썬에서 근무하던 고스케 가와구치가 개발  썬에서 관리하던 java.net에서 관리되는 오픈소스 CI툴  저작권은 오라클 사에 귀속되어 있는 상태  Jenkins  java.net의 관리 방식에 변화가 생김  java.net에서 github로 옮기고 Jenkins로 이름 변경 출처 : hotdogya님의 블로그, 참조 : okjsp 블로그, okjsp 블로그
  • 13. Jenkins 란?  open source CI (= Continuous Integration) Tool이다.  더 쉽게 말하자면 하나의 프로젝트를 여러 명으로 구성된 한 팀이 작업을 할 때 프로젝트를 리드하는 매니저가 일을 여러 가지로 나눠 팀 멤버들한테 분배하고 팀 멤버들은 각각 할당된 부분을 작업 하게 된다.  팀 멤버들은 자신이 담당하고 있는 부분의 소스코드를 정기적으로 SVN과 같은 Version Control System에 Submit하는데 이 각각의 팀 멤버들로부터 Submit된 소스 코드들을 정기적으로 통합하는 것을 CI라고 하고 이것을 시행해주는 프로그램을 CI Tool이라고 한다. 출처 : Software Engineering 블로그
  • 14. Jenkins의 기능  빌드 호출(trigger)  소스 저장소에서 소스 받아오기  자동화된 빌드 및 테스트  리포트 생성 및 통보  배포 출처 : slideshare – Sunny Kwak 지속적인 통합
  • 15. Jenkins의 요구사항  WAS 서버(Apache Tomcat, WebLogic 등)  빌드 도구(Maven, Ant 등)  소스 저장소 도구(Git, SVN, CVS 등)  설치 방법은 링크 참조(젠킨스 설치 및 설정) 출처 : slideshare – Sunny Kwak 지속적인 통합
  • 17. SCM  소스코드 형상관리 시스템(Source Code Management)  소스코드의 개정과 백업 절차를 자동화하여 오류 수정 과정을 도와줄 수 있는 시스템  여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 자동으로 동기화할 수 있는 시스템  Subversion, Git, Mercurial 등 출처 : happystory님의 블로그
  • 18. SCM  SVN과 Git이 가장 널리 사용  SVN(Subversion)  자유 소프트웨어 버전 관리 시스템  제한이 있던 CVS를 대체하기 위해 개발  현재는 아파치 최상위 프로젝트  Git  분산 버전 관리 시스템  최초에는 리누스 토르발스가 리눅스 커널 개발에 이용하려고 개발하였으며, 현재는 다른 곳에도 널리 사용  Github 출처 : 위키백과 – 서브버전, 깃
  • 19. BUILD TOOL 2. CI의 구성요소
  • 20. Build Tool  컴파일, 테스트, 정적분석 등을 실시해 동작 가능한 소프트웨어를 생성  Ant, Maven, Gradle, MSBuild, Make  빌드  소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정을 말하거나 그에 대한 결과물을 일컫는 것  가장 중요한 단계는 소스코드 파일이 실행코드로 변환되는 컴파일 과정  참고  빌드의 중요성(http://softwaredev.tistory.com/10)  빌드와 컴파일의 차이(http://allofsoftware.net/19) 출처 : happystory님의 블로그
  • 21. Build Tool  Ant(Apache Ant)  자바 프로그래밍 언어에서 사용하는 자동화된 소프트웨어 빌드 도구  유닉스나 리눅스에서 사용되는 make와 비슷하나 자바언어로 구현되어 있어 자바 실행환경이 필요하며 자바 프로젝트를 빌드하는데 표준으로 사용  XML을 사용하여 환경구성  Maven(Apache Maven)  자바용 프로젝트 관리 도구  Apache Ant의 대안으로 만들어짐  아파치 라이선스로 배포되는 오픈 소스 소프트웨어 출처 : 위키백과 – 아파치 앤트, 아파치 메이븐
  • 22. Build Tool  Gradle  지금까지 자바 진영에서 많이 사용해온 Ant 빌드 툴과 Maven 빌드 툴의 단점은 버리고, 장점은 취한 빌드 툴  Ant와 Maven 빌드 툴의 기능을 모두 포함  Ant의 자유도와 Maven의 관례의 장점을 모두 흡수  Ant와 Maven 빌드 툴 모두 가지고 있었던 가장 큰 단점인 XML에 대한 이슈를 Groovy라는 언어를 사용해 해결 출처 : SLiPP – Gradle 설정 파일 및 기본 개념
  • 23. TEST TOOL 2. CI의 구성요소
  • 24. Test Tool  작성된 테스트 코드에 따라 자동으로 테스트를 수행해주는 도구로, 빌드 툴의 스크립트에서 실행  JUnit, CppUnit, CppTest, MSTest, Selenium  단위 테스트  테스트 대상이 되는 코드 기능의 아주 작은 특정 영역을 실행해 보는 것으로, 개발자가 작성한 테스트 코드로 특정 메소드를 실험해보는 것이 일반적 출처 : happystory님의 블로그
  • 25. Test Tool  JUnit  단위 테스트 도구  외부 테스트 프로그램(케이스)을 작성하여 System.out으로 번거롭게 디버깅하지 않아도 되게 해줌  프로그램 테스트 시 걸릴 시간도 관리할 수 있게 해주며 오픈소스이며, 플러그인 형태로 Eclipse에 포함  하나의 jar 파일로 구성되어 있으며, 사용법이 간단  보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트용 Framework  JDK 1.4에서 추가된 assertXXX를 사용하여 Test를 진행  테스트 결과를 확인하는 것 이외에 최적화된 코드를 유추해내는 기능도 제공  테스트 결과를 단순한 텍스트로 남기는 것이 아니라, Test클래스로 남김  테스트 방법 및 클래스의 Histroy를 넘겨줄 수 있음 출처 : NEXTREE
  • 26. TEST COVERAGE TOOL 2. CI의 구성요소
  • 27. Test Coverage Tool  테스트 코드가 대상 소스 코드에 대해 어느정도 커버하는지 분석하는 도구  개발자가 작성한 테스트코드가 테스트 대상 소스코드에 대해서 어느정도 테스트를 수행하는지를 코드 라인과 백분율을 통해 리포팅하는 것으로 단위테스트 수행 시 테스트 커버리지를 분석하기 위해여 부가적으로 사용하는 툴  Emma, Cobertura, TestCocoon 출처 : happystory님의 블로그
  • 28. Test Coverage Tool 출처 : https://www.playframework.com/documentation/1.0.1/cobertura
  • 29. INSPECTION TOOL 2. CI의 구성요소
  • 30. Inspection Tool  프로그램을 실행하지 않고, 소스코드 자체로 품질을 판단할 수 있는 정적분석 도구  코딩 표준 준수 검사, 코드 메트릭 측정, 중복코드 검사, 코드 인스펙션 검사 등이 있음  CheckStyle, FindBugs, Cppcheck, Valgrind 출처 : happystory님의 블로그
  • 32. 3. 빌드 도구, 개발 환경 구축하기
  • 33. 1. CI Server Jenkins 설치 설치 방법 • 젠킨스 홈페이지에서 WAR 파일 다운로드 • 톰캣 등의 WAS에 설치 및 실행(1) • 젠킨스 WAR 파일을 직접 실행(2) • (1), (2) 중 선호는 방식으로 실행 출처 : slideshare – Sunny Kwak 젠킨스 설치 및 설정
  • 34. 2. IDE + Build Tool + SCM • IDE를 선정 • Build Tool 선정 • SCM 선정 선정  IDE  Eclipse  IntelliJ  Build Tool  Ant  Maven  Gradle  SCM  SVN  Git
  • 35. 3. Test Tool • 테스트 코드를 작성 • Build Tool의 스크립트에서 실행  Maven  Gradle