Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
허드슨을 이용한 지속적 통합 (Continuous Integration)
Next
Download to read offline and view in fullscreen.

8

Share

Download to read offline

Continuous Integration

Download to read offline

Continuous Integration

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Continuous Integration

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

    Sep. 25, 2019
  • BeyondTheDawn

    Apr. 3, 2018
  • netunity

    Dec. 6, 2017
  • kdw91

    Dec. 3, 2017
  • kanghokim5

    Jun. 2, 2016
  • ssuser0d8ba1

    Feb. 28, 2016
  • sono0

    Nov. 14, 2015
  • kangjinlee3720

    Jun. 24, 2015

Continuous Integration

Views

Total views

1,194

On Slideshare

0

From embeds

0

Number of embeds

119

Actions

Downloads

30

Shares

0

Comments

0

Likes

8

×