슬라이드 1

Similar documents
슬라이드 1

Social Media and Social Computing

슬라이드 1

PowerPoint 프레젠테이션

문서의 제목 나눔고딕B, 54pt

Apache Ivy

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

Software Requirements Specification Template

Introduction to CTIP

Software Requirements Specification Template

슬라이드 1

PowerPoint Presentation

슬라이드 1

Software Requirements Specification Template

슬라이드 1

Microsoft PowerPoint - jfeature장범석서재원박동현.pptm

Microsoft PowerPoint - 2번째발표(최종).pptx

파워포인트

Intro to Servlet, EJB, JSP, WS

소프트웨어 검증 및 설계

Spring Boot

Microsoft PowerPoint - chap01-C언어개요.pptx

PowerPoint 프레젠테이션

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

ISP and CodeVisionAVR C Compiler.hwp

슬라이드 1

문서의 제목 나눔고딕B, 54pt

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

문서의 제목 나눔명조R, 40pt

[ 스프링부트, 그래들, HelloWorld]STS,Gradle 설치및 WEB MVC 심플예제 간단히 STS 및 Gradle Support Plugin 을설치하여간단히 Spring Boot, Gradle Web 응용프로그램을작성해보자. 0. STS 및 Gradle Su

Syslog 서버개발예제 1. New project new.bat 파일을 d:\kraken\examples 에복사하고명령프롬프트에서다음과같이실행 new [artifact id] [package]..or.. mvn archetype:generate -DarchetypeG

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

PowerPoint 프레젠테이션

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

개발환경 교육교재

Software Requirements Specification Template

슬라이드 1

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Interstage5 SOAP서비스 설정 가이드

Software Requirements Specification Template

JFeature & ANT Tools Summary

서현수

슬라이드 1

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

Software Verification Team 오준 임국현 주영진 김슬기

PowerPoint Presentation

슬라이드 1

Secure Programming Lecture1 : Introduction

Microsoft Word - src.doc

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

PowerPoint Presentation

슬라이드 1

개발환경 교육교재

consulting

슬라이드 1

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

<B1D4B0DDBCAD202D20C4DAB5E520B1E2B9DD2E687770>

문서의 제목 나눔고딕B, 54pt

untitled

gnu-lee-oop-kor-lec06-3-chap7

PowerPoint 프레젠테이션

Microsoft Word - CPL-TR OM2M.doc

*2008년1월호진짜

목차 I. CI 정의 II. CI 필요성 III. CI 기능및특징 IV. CI 제품 V. Hudson VI. 적용방안 VII. 결론 - 1 -

슬라이드 1

목차 Ⅰ. 개요 Ⅱ. 추진배경 Ⅲ. 개발환경구축 ( 도구연계 ) Ⅳ. 도구연계성과 page 2

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri

TTA Journal No.157_서체변경.indd

표준 소개 자료

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

<FEFF E002D B E E FC816B CBDFC1B558B202E6559E830EB C28D9>

Install stm32cubemx and st-link utility

PowerBuilder 2017 New Features 1. Updated software requirements OS Windows XP, Vista 더이상지원하지않음 Windows or 64-bit with SP1 Windows 8.1 Windows Se

블로그_별책부록

JUnit & Eclipse

텀블러514

Windows 8에서 BioStar 1 설치하기

Intellij spring(mvc) + maven 환경구축 New Project에서좌측 template 유형에서 Maven을선택합니다. 오른쪽상단에 Project SDK는 java SDK가설치된폴더를선택하면됩니다. 오른쪽에 Create from archetyhpe을체

2. 기능요약 Parallel 빌드지원등빌드자동화기능을지원하며다양한도구 ( 형상관리도구, Issue Tracker, Test 도구, IDE) 와의연동을지원함. 주요기능 Parallel 빌드지원 ( 다수프로젝트동시빌드 ) 분산빌드웹기반관리 알림형상관리도구지원


Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

PowerPoint Presentation

git CLI 로간단하게조작하기! by 윤선지

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사

쿠폰형_상품소개서

vRealize Automation용 VMware Remote Console - VMware

鍮뚮┰硫붾돱??李⑤낯

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

Mango220 Android How to compile and Transfer image to Target

DE1-SoC Board

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Microsoft Word - Armjtag_문서1.doc

Microsoft PowerPoint App Fundamentals[Part1].pptx

저장소 (Repository) 의디렉토리배치 저장소에바로소스를넣어프로젝트를진행할수있으나, 버전관리시스템에서권 장하는디렉토리배치방법이있다. sample branches dav-mirror --- src --- doc +--- Makefile

Transcription:

Continuous Integration 변경될때마다소프트웨어를빌드하기 조영호카페PJT팀 2008.09.08 youngho.cho@nhncorp.com

목차 1. 빌드자동화 2. Maven 3. 빌드유형과메커니즘 4. 빌드시간을짧게만들기

1. 빌드자동화

빌드자동화 소프트웨어의개발은복잡할지몰라도소프트웨어의전달 (Delivery) 은버튼하나만누르면되는일이되어야합니다 4 / 문서의제목

빌드프로세스 빌드스크립트 문서 제품코드 스크립트 / 실행파일 테스트코드 벤더라이브러리 빌드프로세스 사용자정의라이브러리 문서 5 / 문서의제목 벤더라이브러리

자동화된통합빌드 소스코드컴파일하기 테스트돌리기 통합하기 검사수행하기 데이터베이스통합하기 소프트웨어배포하기 피드백주기 소프트웨어품질을향상시키고위험을줄이기 P ㅖㅔ { [ } ] \ \? / Integrate? / shift 6 / 문서의제목

파삭파삭 (CRISP) 한빌드 완전한 Complete 빌드조리법에지정된재료만으로빌드가능 자급자족하는빌드 반복가능한 Repeatable 빌드파일과빌드입력을버전관리저장소에보관 예전릴리즈를쉽게재생성 정보를주는 Informative 소프트웨어의상태를알수있는정보제공 피드백메커니즘 예약가능한 Schedulable 완전 (Complete) 하고반복가능 (Repeatable) 한빌드는예약가능 특정시간, 일정한시간간격, 이벤트발생시 이식가능한 Portable 어디에서도소프트웨어빌드가가능 빌드가특정 IDE, 기기의 IP 주소, 실행디렉토리에독립 7 / 문서의제목

빌드스크립트를구성하는프로세스 정리 (Clean) 하기 빌드스크립트 소스코드컴파일하기 데이터베이스통합하기 테스트돌리기 P ㅖㅔ { [ } ] \ \ 검사돌리기? / Integrate? / 8 / 문서의제목 shift 소프트웨어배포하기

명령어하나로빌드를수행하기 IDE 에독립된빌드 빌드에필요한모든재료를버전관리저장소에저장 수많은도구중에어느걸골라서사용할것이냐가중요한것이아니라, 손수솔루션을만들지않고만들어져있는빌드도구를잘사용하는것이중요합니다. 9 / 문서의제목

빌드스크립트를 IDE 에서떼어내기 개발자마다 IDE 의차이문제를해결하기어려울수도있기때문 CI 를통한자동화빌드를실행시키기위해 NO 의존 의존 빌드스크립트 10 / 문서의제목

빌드스크립트를 IDE 에서떼어내기 개발자마다 IDE 의차이문제를해결하기어려울수도있기때문 CI 를통한자동화빌드를실행시키기위해 OK 의존 의존 빌드스크립트 11 / 문서의제목

소프트웨어자산을중앙집중화하기 버전관리저장소에모든파일을보관 소스파일이나라이브러리파일과같은컴포넌트 JAR, 라이브러리, DLL과같은외부컴포넌트설정파일어플리케이션초기화데이터파일빌드스크립트와빌드환경설정일부컴포넌트를설치하는스크립트 하지만내컴퓨터에서는잘되는데요 12 / 문서의제목

빌드를빨리실패하게만들기 실패하는법을아는빌드가좋은빌드실패할가능성이높을수록먼저실행빨리실패할수록실행시간감소실패원인을찾기위한시간감소 Feedback 13 / 문서의제목

어떤환경에서라도빌드하기 다양한환경에맞는설정파일들을저장소에보관 로깅정도어플리케이션서버정보데이터베이스연결정보프레임워크설정 빌드스크립트매개변수사용 mvn P junit_alpha clean install war:inplace 설정파일사용 빌드스크립트 local.properties integration.properties qa.properties production. Properties 14 / 문서의제목

전용통합빌드머신사용하기 환경과설정에대한가정감소 내컴퓨터에선작동하는데요 문제방지 빌드를함께할사람구함 저는단일프로세서를가진, 조금오래된컴퓨터인데, 변화를수용할수있고, 지속적인통합서버 통합빌드머신 데이터를꾸준히제공할수있는사람과오랜관계를맺고싶습니다. 버전관리시스템저장소에접근할수있기때문에친구들은제가아주능력있다고합니다. 거만한노트북들과는달리저는하루종일사무실에대기하는것을즐깁니다. 제가마지막으로재부팅된것은 7일하고도더전이었습니다. 게다가곧바로회복되었습니다. 당신을직접만나길기대합니다. 아니면저의수많은원격인터페이스를통해채팅할수도있을겁니다. 15 / 문서의제목

2. Maven 16 / 문서의제목

Maven Convention over Configuration not How but What 17 / 문서의제목

Ant 와 Maven not How but What Declarative Execution POM Model DEMO 18 / 문서의제목

Super POM Convention over Configuration Every POM Inherits Super POM http://maven.apache.org/guides/introduction/introduction-to-the-pom.html 19 / 문서의제목

기본디렉토리레이아웃 project/ src/ main/ java/ test/ java/ Convention over target/ classes/ Configuration pom.xml test-classes/ Surefire-reports/ 20 / 문서의제목

의존성관리 pom.xml <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.2</version> </dependency> </dependencies> 라이브러리를어디에서찾는가? 라이브러리는어디에위치하는가? 21 / 문서의제목

Repository Remote Repository 다양한프로토콜 (file://, http://...) 을사용하여접속중앙저장소는 http://repo1.maven.org http://mvnrepository.com을통해쉽게검색가능 Local Repository 다운로드받은 artifact와최신빌드 artifact 캐시 ${user.home}/.m2/repository 22 / 문서의제목

Phase and Goal Build Lifecycle 은 Phase 의집합 Phase 들은정해진순서에따라순차적으로실행 Phase 는하나이상의 Goal 수행 clean compile test package install deploy 23 / 문서의제목

Phase Clean pre-clean clean post-clean Default validate generate-sources process-sources generate-resources process-resources compile process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources test-compile test prepare-packaging package pre-integration-test integration-test post-integration-test verify install deploy Site pre-site Site post-site site-deploy 24 / 문서의제목

P ㅖ ㅔ? /? / { [ } ] s h if t In t egrate \ \ Phase and Plugin Phase 는작업을완료하기위해연관된 Plugin 호출 mvn compile generate-sources compile test-compile archetype compiler mvn test test package pom.xml surefire mvn install integration-test jar install deploy install 25 / 문서의제목 Lifecycle Phases Plugins

Phase, Plugin, and Goal Plugin은공통목표를가진 Goal들의집합 Goal은하나의태스크 하나이상의 Phase 에바인딩 Phase 에바인딩되지않은 Goal 은 Maven 실행시독립적으로실행가능 Plugin Phase goal goal Phase 실행시자동실행 Plugin goal Maven 실행시파라미터로명시 mvn clean package cobertura:cobertura 26 / 문서의제목

Maven Plugins Maven 은빌드생명주기내에서 Plugin 을실행하는플랫폼 Phase Mojo Plugins process-resources resource maven-resources-plugin compile compile maven-compiler-plugin process-test-resources testresources maven-resources-plugin test-compile testcompile maven-compiler-plpugin test test maven-surefire-plugin package jar maven-jar-plugin install install maven-install-plugin deploy deploy maven-deploy-plugin 27 / 문서의제목

Packaging 형태에따른 Phase-Goal 매핑 Packaging 형태에따른 Default Lifecycle Binding Clean Lifecycle Binding clean clean:clean ejb, ejb3, jar, par, rar, war process-resources compile process-test-resources test-compile test package install deploy resouces:resources compiler:compile resources:testresource compier:testcompile surefire:test jar:jar or war:war etc... install:install deploy:deploy mvn clean package 28 / 문서의제목

Packaging 형태에따른 Phase-Goal 매핑 Packaging 형태에따른 Default Lifecycle Binding ear generate-resources process-resources package install deploy ear:generateapplicationxml resources:resources ear:ear install:install deply:deploy pom package site:attach-descriptor process-resources resources:resources deploy deploy:deploy 29 / 문서의제목

Plugin 을통한 Plugin-Goal 실행 pom.xml 에 plugin 추가후 Maven 실행시파라미터로 plugin:goal 명시 pom.xml <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>cobertura-maven-plugin</artifactid> <version>2.2</version> <configuration> <formats> <format>xml</format> <format>html</format> </formats> <instrumentation> <excludes> <exclude>**/*unittestsuite.class</exclude> </excludes> </instrumentation> </configuration> </plugin> mvn cobertura:cobertura 30 / 문서의제목

실행순서는? jar packaging mvn clean package cobertura:cobertura 31 / 문서의제목

3. 빌드유형과메커니즘

빌드유형 개인빌드 Private Build 통합빌드 Integration Build 릴리즈빌드 Release Build 33 / 문서의제목

빌드유형 개인빌드 Private Build 개발자빌드 소스코드커밋전실행 버전관리저장소의최신변경사항과수정한코드통합 통합빌드 Integration Build 빌드스크립트 4 로컬에서 통합빌드 를돌린다 1 저장소에서코드를체크아웃한다 릴리즈빌드 Release Build 3 저장소에서변경사항을가져온다 개발자 2 소스코드를변경한다 5 코드를저장소에커밋한다 버전관리저장소 34 / 문서의제목

빌드유형 개인빌드 Private Build 통합빌드 Integration Build 릴리즈빌드 Release Build 팀이저장소에커밋한변경사항과주흐름통합 별도의전용컴퓨터에서실행 Commit Build 10분이내의가장빠른통합빌드컴파일과단위테스트 Secondary Build 속도가느린컴포넌트, 시스템, 성능테스트포함코딩표준준수, 코드복잡도검사와같은자동화된검사포함 35 / 문서의제목

빌드유형 개인빌드 Private Build 통합빌드 Integration Build 릴리즈빌드 Release Build 사용자에게출시할제품준비 한주기나이정표milestone 끝무렵실행 더많은성능및부하테스트포함 인수테스트는반드시포함 사용자의환경에서실행가능한설치매체생성 품질보증팀이사용하는것도가능 36 / 문서의제목

빌드메커니즘 예약자동화 (Scheduled Automation) 유발자동화 (Triggered Automation) 지시자동화 (Command Automation) 37 / 문서의제목

빌드메커니즘 예약자동화 (Scheduled Automation) 유발자동화 (Triggered Automation) 주문형지시자동화 (Command Automation) 38 / 문서의제목

빌드메커니즘 일정기반, 변경사항폴링예약자동화 (Scheduled Automation) 유발자동화 (Triggered Automation) 주문형지시자동화 (Command Automation) 39 / 문서의제목

빌드메커니즘 일정기반, 변경사항폴링예약자동화 (Scheduled Automation) 이벤트주도유발자동화 (Triggered Automation) 주문형지시자동화 (Command Automation) 40 / 문서의제목

빌드유형에따른메커니즘 개인빌드 Private Build 주문형 통합빌드 Integration Build 릴리즈빌드 Release Build 41 / 문서의제목

빌드유형에따른메커니즘 개인빌드 Private Build 주문형 통합빌드 Integration Build 주문형 이벤트주도 일정기반 변경사항폴링 릴리즈빌드 Release Build 42 / 문서의제목

빌드유형에따른메커니즘 개인빌드 Private Build 주문형 통합빌드 Integration Build 주문형 이벤트주도 일정기반 변경사항폴링 릴리즈빌드 Release Build 주문형 일정기반 43 / 문서의제목

4. 빌드시간을짧게만들기

통합빌드지속시간개선방안 확장성, 성능, 난이도에미치는영향 높음중간낮음 개선방안전술우선순위확장성성능난이도 전용통합빌드머신사용하기 1 통합빌드머신의하드웨어사양늘리기 2 테스트성능을개선하기 3 통합빌드를효율적으로만들기 4 하부구조를최적화하기 5 빌드프로세스를최적화하기 6 시스템컴포넌트를따로빌드하기 7 소프트웨어검사성능을개선하기 8 분산된통합빌드를수행하기 9 45 / 문서의제목

테스트성능을개선하기 자동화된빌드를여러범주로나누고다른시간대에테스트실행 단위, 컴포넌트, 시스템테스트 테스트리팩토링 Mock/Stub 사용 단위테스트환경에서사용하기복잡한컴포넌트일경우 오래걸리는통합테스트를별도의테스트스윗으로분리병렬로테스트실행빌드유형에따라테스트를나누어서실행 커밋빌드, 2 차빌드, 전체통합빌드, 릴리즈빌드 네트워크케이블을빼고데이터베이스를종료시키고나서도돌아 가는테스트가진짜단위테스트입니다 46 / 문서의제목

빌드를여러단계로나누기 피드백 피드백생성하기 개발자 피드백메커니즘 변경사항커밋하기 폴링 개발자 서브버전 버전관리저장소 지속적인통합서버 통합빌드머신 빌드스크립트 소스코드컴파일하기, 데이터베이스통합하기, 테스트돌리기, 검사돌리기, 소프트웨어배포하기 개발자 47 / 문서의제목

빌드를여러단계로나누기 개발자 피드백 피드백메커니즘 피드백생성하기 Commit Build ( 가벼운빌드 ) 소스코드컴파일하기, 데이터베이스통합하기, 테스트돌리기, 검사돌리기, 소프트웨어배포하기 변경사항커밋하기 폴링 개발자 서브버전 버전관리저장소 지속적인통합서버 통합빌드머신 개발자 48 / 문서의제목

빌드를여러단계로나누기 개발자 피드백 피드백메커니즘 피드백생성하기 Commit Build ( 가벼운빌드 ) 소스코드컴파일하기, 데이터베이스통합하기, 테스트돌리기, 검사돌리기, 소프트웨어배포하기 변경사항커밋하기 폴링 Commit Build 가 성공하면 개발자 개발자 서브버전 버전관리저장소 지속적인통합서버 통합빌드머신 Secondary Build ( 무거운빌드 ) 더오래걸리는테스트 ( 컴포넌트, 시스템, 기능, 성능 ), 코드적용범위 49 / 문서의제목

빌드를여러단계로나누기 개발자 피드백 변경사항커밋하기 피드백메커니즘 폴링 피드백생성하기 기벼운빌드를먼저실행시키고무거운빌드를나중에실행 빌드시간단축 Commit Build 가 성공하면 Commit Build ( 가벼운빌드 ) 소스코드컴파일하기, 데이터베이스통합하기, 테스트돌리기, 검사돌리기, 소프트웨어배포하기 개발자 개발자 서브버전 버전관리저장소 지속적인통합서버 통합빌드머신 Secondary Build ( 무거운빌드 ) 더오래걸리는테스트 ( 컴포넌트, 시스템, 기능, 성능 ), 코드적용범위 50 / 문서의제목

시스템컴포넌트를따로빌드하기 소프트웨어를더작은하위시스템으로분리개별적인하위시스템을따로빌드하위시스템을별도의프로젝트로구성 하위시스템중하나를마스터프로젝트로설정빌드의존성을설정마스터프로젝트변경시다른프로젝트자동빌드 51 / 문서의제목

Thank you.

Question.