SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
애플리케이션 빌드 및 배포

Project Name:

Internal

Department:

Consulting Group

Focus Area:

Amazon Web Service

Product/Process:

애플리케이션 빌드 및 배포

Prepared By:
Document Owner(s)

Project/Organization Role

Sang-Cheon Park(nices96@osci.kr)

Technical Assistance

Ji-Woong Choi(jchoi@osci.kr)

Consulting Coach

Project Status Report Version Control
Version

Date

Author

Change Description

1.0

2014/02/11

Sang-Cheon Park

Document created

Confidential
[오픈소스컨설팅]애플리케이션 빌드 및 배포.docx
Last printed on 3/1/2014 9:21:00 AM
Configuration Report

TABLE OF CONTENTS
1

본 문서의 목적 ........................................................................................................................... 4

2

PYTHON 빌드/배포 시스템 ...................................................................................................... 4

3

JENKINS 빌드 시스템 구축 ....................................................................................................... 4
3.1

Jenkins 설치 .................................................................................................................. 5

3.2

보안 설정 ...................................................................................................................... 8

3.3

플러그인 설치 .............................................................................................................. 11

3.4

Jenkins 디렉토리 구조 ................................................................................................. 12

3.5

환경설정...................................................................................................................... 13

3.5.1

Maven 설정........................................................................................................... 13

3.5.2

Credentials ............................................................................................................ 14

3.6
4

View & Job(Item) ....................................................................................................... 15

애플리케이션 빌드 ................................................................................................................... 17
4.1

Job 생성 ...................................................................................................................... 17

4.2

빌드 수행 .................................................................................................................... 20

4.3

소스 Revision 태깅 ...................................................................................................... 21

4.3.1
4.3.2

revision.jsp 파일 생성 ............................................................................................ 22

4.3.3
5

pom.xml 수정 ....................................................................................................... 21

빌드 옵션 수정 ....................................................................................................... 23

애플리케이션 배포 ................................................................................................................... 25
5.1

Confidential

Plugin 설치.................................................................................................................. 25
Page 2

3/1/2014
Configuration Report

5.2

시스템설정 .................................................................................................................. 26

5.3

Job 수정 ...................................................................................................................... 27

5.3.1

Confidential

빌드 수행 ............................................................................................................... 28

Page 3

3/1/2014
1

본 문서의 목적
본 문서는 기존 Python 빌드/배포 시스템을 대체할 수 있는 Jenkins 빌드 시스템의 구축과 tag,
branch 등 형상별 애플리케이션 빌드, AWS(Amazon Web Service) EC2 인스턴스로의
애플리케이션 배포 방법에 대한 내용을 담고 있다.

2

Python 빌드/배포 시스템
기존 Fabric 기반에서 사용하고 있는 빌드/배포 시스템은 Python 으로 직접 구현된 것으로
SVN 의 특정 애플리케이션 Branch 버전을 입력 받아 해당 애플리케이션을 빌드하고, 배포
대상 타깃 시스템을 선택함으로써 해당 시스템으로 애플리케이션이 배포되는 형태이다.

비록 기능상의 간결함과 커스터마이징을 통해 원하는 대로 수정이 가능하다는 장점이 있지만
기능 수정에 추가 구현이 필요하며 다양한 플러그인의 부재 및 Web UI 가 풍부하지 못한
단점이 있다.

본 문서에서 소개하려는 대표적인 CI 툴인 Jenkins 는 기존 빌드/배포 요건을 충족할 수 있을
뿐만 아니라 다양한 빌드 옵션과 플러그인을 제공함으로써 여러가지 상황에서 유연하게 대처할
수 있다.

3

Jenkins 빌드 시스템 구축
Jenkins 는 애플리케이션 빌드를 자동화 함으로써 지속적인 통합을 가능하게 해주는 대표적인
툴로써 본래 Hudson 이라는 이름을 사용했지만 Oracle 에 흡수되면서 발생한 여러 가지
이슈들로 인해 2011 년 Jenkins 라는 이름의 별도 프로젝트로 분리되었다.
빌드 자동화를 위해 CVS 나 SVN 등의 형상관리 시스템에 접속이 가능해야 하며 따라서
대부분의 회사나 조직에서는 빌드 시스템을 형상관리 시스템과 마찬가지로 방화벽 안쪽에
위치시킨다.

Confidential
[오픈소스컨설팅]애플리케이션 빌드 및 배포.docx
Last printed on 3/1/2014 9:21:00 AM
Configuration Report

3.1

Jenkins 설치
Jenkins 는 war 형태로 다운로드 받아 java –jar Jenkins_x.x.war 형태로 실행이 가능하지만
실행 스크립트 작성 및 서비스 등록 등을 자동화 하기 위해 Red Hat/Fedora/CentOS 계열의
OS 에서는 yum 명령을 이용하여 자동 설치한다.


다음 명령을 이용하여 Jenkins 를 설치한다.
~]$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkinsci.org/redhat/jenkins.repo
--2014-02-11 16:14:07-- http://pkg.jenkins-ci.org/redhat/jenkins.repo
Resolving pkg.jenkins-ci.org... 199.193.196.24
Connecting to pkg.jenkins-ci.org|199.193.196.24|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 75 [text/plain]
Saving to: `/etc/yum.repos.d/jenkins.repo'

100%[=========================================================
==============================================================
=====================>] 75

--.-K/s in 0s

2014-02-11 16:14:08 (10.4 MB/s) - `/etc/yum.repos.d/jenkins.repo' saved [75/75]

~]$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
~]$ sudo yum install jenkins
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: centos.tt.co.kr
* extras: centos.tt.co.kr
* updates: centos.tt.co.kr
Setting up Install Process

Confidential

Page 5

3/1/2014
Configuration Report

Resolving Dependencies
--> Running transaction check
---> Package jenkins.noarch 0:1.550-1.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================
==============================================================
==========================================================
Package

Arch

Repository

Version

Size

==============================================================
==============================================================
==========================================================
Installing:
jenkins

noarch

jenkins

1.550-1.1

58 M

Transaction Summary
==============================================================
==============================================================
==========================================================
Install

1 Package(s)

Total download size: 58 M
Installed size: 64 M
Is this ok [y/N]: y
Downloading Packages:
jenkins-1.550-1.1.noarch.rpm
| 58 MB
Confidential

00:33
Page 6

3/1/2014
Configuration Report

Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : jenkins-1.550-1.1.noarch
1/1
warning: /etc/yum.repos.d/jenkins.repo created as /etc/yum.repos.d/jenkins.repo.rpmnew
Verifying : jenkins-1.550-1.1.noarch
1/1

Installed:
jenkins.noarch 0:1.550-1.1

Complete!



다음 명령을 이용하여 Jenkins 를 구동한다.
~]$ sudo service jenkins start
Starting Jenkins

[ OK ]

- Jenkins 는 기본적으로 8080 포트로 Listening 하며, 변경을 원할 경우
/etc/sysconfig/jenkins 파일의 JENKINS_PORT="8080" 부분을 수정한다.


다음 명령을 이용하여 부팅 시 Jenkins 가 자동으로 시작하도록 서비스 등록한다.
~]$ sudo chkconfig jenkins on
~]$ sudo chkconfig --list | grep jenkins
jenkins



0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제

브라우져를 통해 Jenkins 서버에 정상적으로 접근되는지 확인한다.

Confidential

Page 7

3/1/2014
Configuration Report

3.2

보안 설정
Jenkins 설치 후 기본적으로 Jenkins 접속이 가능한 사람은 로그인 과정 없이 모든 메뉴에 Full
Access 권한을 얻는다. 따라서 보안 설정을 통해 로그인 기능을 추가하고 각 사용자 별 접근
권한을 제어하도록 수정한다.

 좌측의 “Jenkins 관리” 메뉴를 클릭한다.

 “보안 설정” 버튼 또는 “Configure Global Security” 메뉴를 클릭한다.
- Enable Security 항목을 체크한다.
- Security Realm 항목에서 Jenkins’ own user database 를 선택한다.

Confidential

Page 8

3/1/2014
Configuration Report

- 사용자의 가입을 허용할 경우 임의의 사용자가 가입 후 로그인 할 수 있으며, 허용하지
않을 경우 Administrator 권한을 가진 사용자를 통해 계정을 생성할 수 있다. 관리적인
측면에서 사용자로부터 계정 생성 요청을 받고 관리자에 의한 계정 생성 절차를
수행하도록 권고한다.

 Save 버튼을 클릭 후 메인 페이지로 이동하면 초기 사용자 가입 화면이 표시된다.

Confidential

Page 9

3/1/2014
Configuration Report

 Sign Up 이후 Jenkins 관리 - Configure Global Security 메뉴를 선택하여 계정/그룹별
접근 권한을 재설정한다.

Confidential

Page 10

3/1/2014
Configuration Report

- Authorization 항목에서 Matrix-based security 를 체크한다.
- 관리자 계정을 추가하고 모든 권한을 추가 후 Save 버튼을 클릭한다.

 이후 Jenkins 관리 – Manage Users 메뉴에서 사용자를 추가/삭제할 수 있으며 위와 같이
각 사용자에 대한 권한을 관리할 수 있다.

3.3

플러그인 설치
Jenkins 는 3rd party plugin 을 통해 기능을 확장시킬 수 있다.

 Jenkins 관리 – 플러그인 관리 메뉴를 선택한다.

Confidential

Page 11

3/1/2014
Configuration Report

- 설치된 플러그인 목록 탭에서 현재 설치되어 있는 플러그인 목록을 확인한다.
- 설치 가능 탭에서 필요한 플러그인 목록을 탐색하여 설치할 수 있다.
- SVN, Maven 등 필수 플러그인은 기본으로 설치되어 있으며, 커버리지 분석 및 코드
인스펙션 등이 필요할 경우 해당 플러그인을 설치할 수 있다.

3.4

Jenkins 디렉토리 구조
Jenkins 는 빌드를 수행하고 archive 파일을 저장하기 위해 디스크 공간을 필요로 하며, 다음과
같은 구조를 가진다.
JENKINS_HOME

(/var/lib/jenkins)

+- config.xml

(jenkins 기본 설정 파일)

+- *.xml
+- userContent

(other site-wide configuration files)
(http://${server}:${port}/userContent/ 로 접속 가능한 컨텐츠)

+- fingerprints
+- plugins
+- jobs

(fingerprint records 가 저장되는 디렉토리)
(plugins 이 저장되는 디렉토리)

+- [JOBNAME]
+- config.xml
Confidential

(각 job 별 서브 디렉토리)
(job 설정파일)
Page 12

3/1/2014
Configuration Report

+- workspace
+- latest

(working directory)
(최근 성공적인 빌드에 대한 심볼릭 링크)

+- builds
+- [BUILD_ID]
+- build.xml

(각 빌드별 서브 디렉토리)
(빌드 결과 요약)

+- log
(로그 디렉토리)
+- changelog.xml (변경 로그)

3.5

환경설정
Jenkins 시스템 환경설정을 통해 Maven 실행 환경 및 SVN 접속을 위한 credential 설정을
수행한다.

3.5.1

Maven 설정
Jenkins 빌드 시스템에 Maven 이 설치되어 있지 않을 경우,
http://preilly.me/2013/05/10/how-to-install-maven-on-centos/ 를 참고하여 Maven 을
설치한다.


Jenkins 관리 – 시스템 설정 메뉴를 클릭한다.



Maven 항목에서 Maven installations 버튼을 클릭한다.

Confidential

Page 13

3/1/2014
Configuration Report



3.5.2

Name 및 maven 이 설치된 경로(MAVEN_HOME)을 입력하고 저장 버튼을 클릭한다.

Credentials
SVN 접속 정보를 저장하기 위한 Credential 을 추가한다.


좌측의 Credentials 메뉴를 클릭하고 Add domain 링크를 클릭한다.



Domain Name 에 SVN 서버의 호스트 IP 또는 호스트 명을 입력하고 저장 버튼을 클릭한다.



Add Credentials 화면으로 username 과 password 를 이용한 인증을 사용하기 때문에

Kind 에 Username with password 를 선택하고 접속 정보를 입력 후 OK 버튼을 클릭한다.

Confidential

Page 14

3/1/2014
Configuration Report

3.6

View & Job(Item)
View 와 Job 은 Jenkins 내에서 빌드 프로세스를 관리하기 위한 기본 개념으로 Job(Item)은
하나의 빌드 프로세스를 의미하고 View 는 여러 Job 의 집합을 의미한다.

Confidential

Page 15

3/1/2014
Configuration Report



View 는 최소 하나 이상의 Job(Item)을 생성 이후에 추가할 수 있으며, Job(Item)의 생성은

4. 애플리케이션 빌드에서 설명한다.

Confidential

Page 16

3/1/2014
4

애플리케이션 빌드
애플리케이션 빌드를 위한 Job 생성 및 설정 방법을 가이드하고 빌드를 수행한다.

4.1

Job 생성
빌드 작업을 위한 새로운 Job 을 생성하고 설정한다.

 새 작업 링크를 클릭하거나 좌측의 새로운 Item 메뉴를 클릭한다.

 Job(Item) 이름을 입력하고 Build a free-style software project 를 선택한다.

 Job 이 생성되고 나면 Job 구성 메뉴가 표시되며, 소스 코드 관리 항목에서 Subversion 을
선택하고 URL 정보를 입력하고 앞절에서 생성한 Credentials 정보를 선택한다.
Confidential
[오픈소스컨설팅]애플리케이션 빌드 및 배포.docx
Last printed on 3/1/2014 9:21:00 AM
Configuration Report

- Check-out Strategy: Use ‘svn update’ as much as possible 을 선택하면 처음에만 소스
코드를 전체 다운로드 받고, 두번째 부터는 변경된 소스 코드만 다운로드 받기 때문에 소스
코드를 다운 받는 시간을 많이 줄일 수 있다.
- tags 나 branch 를 사용하여 빌드할 경우 Repository URL 에 해당 tags 나 branch 의
URL 정보를 입력한다.

 Build 항목에서 Add build step 콤보박스를 선택하고 Invoke top-level Maven targets 를
선택 후 앞 절에서 설정한 Maven 실행 환경 및 Goals 를 입력한다.

Confidential

Page 18

3/1/2014
Configuration Report

그 밖에 Job 관리 항목으로 빌드 유발 및 빌드 후 조치 추가 항목이 있다.

 빌드 유발 : 빌드가 언제 수행되어야 하는지 설정하는 항목으로 다음 네 가지 옵션을 중복
선택할 수 있다.
- 다른 프로젝트가 빌드된 후 빌드함
- 빌드를 원격으로 유발 (예: 스크립트 사용)
- Build periodically : Cron Expression 을 사용하여 빌드 수행 주기를 지정할 수 있다.
- Poll SCM : 지정한 주기별로 소스 관리 시스템을 폴링(체크)하여 변경이 있을 경우에만
빌드를 수행한다.

 빌드 후 조치 추가 : 빌드가 완료된 이후의 작업을 설정하는 항목으로 다음 각각의 옵션을
중복하여 설정할 수 있다.
- Aggregate downstream test results
- Archive the artifacts
- Build other projects
- Publish JUnit test result report
- Public Javadoc
Confidential

Page 19

3/1/2014
Configuration Report

- Record fingerprints of files to track usage
- E-mail Notification

4.2

빌드 수행
추가된 Job 에 대한 수동 빌드를 수행한다.빌드를 수행하려는 Job 을 선택하고 좌측의 Build
Now 를 클릭하여 수동 빌드를 수행한다.

 빌드를 수행하려는 Job 을 선택하고 좌측의 Build Now 를 클릭한다.

Confidential

Page 20

3/1/2014
Configuration Report

4.3

소스 Revision 태깅
현재 동작중인 애플리케이션의 SVN Revision 번호와 빌드 날짜를 태깅함으로써 애플리케이션
변경 여부를 확인할 수 있다.

4.3.1

pom.xml 수정
빌드 시 SVN Revision 정보와 빌드 날짜를 태깅하기 위해 pom.xml 파일을 다음과 같이
수정한다.
…
<properties>
<maven.build.timestamp.format>YYYY.MM.dd. HH:mm:ss</maven.build.timestamp.format>
<buildNumber>${maven.build.timestamp}</buildNumber>
</properties>
…
<build>
<plugins>
…
<plugin>
<groupId>org.apache.maven.plugins</groupId>

Confidential

Page 21

3/1/2014
Configuration Report
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>Revision Tagging</id>
<phase>package</phase>
<configuration>
<target name="jar-checkversion">
<jar destfile="target/checkversion.jar">
<manifest>
<attribute name="Revision-Number" value="${SVN.Revision}" />
<attribute name="Build-Date" value="${maven.build.timestamp}" />
</manifest>
</jar>
<copy file="target/checkversion.jar" tofile="target/${project.artifactId}${project.version}/WEB-INF/lib/checkversion.jar" overwrite="true" failonerror="false" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

4.3.2

revision.jsp 파일 생성
SVN Revision 번호 및 빌드 실행 시간을 확인할 수 있는 JSP 페이지를 생성한다.
…

<%@ page import="java.util.*, java.io.*, java.util.jar.*" %>
<%!
public String [] checkVersion(String jarFileUrl) throws Exception {
JarFile jarFile = new JarFile(new File(jarFileUrl));
Manifest manifest = jarFile.getManifest();
Attributes attributes = (Attributes) manifest.getMainAttributes();
String buildDate = attributes.getValue("Build-Date");
String revision = attributes.getValue("Revision-Number");
return new String [] {buildDate, revision};
}
%>
Confidential

Page 22

3/1/2014
Configuration Report

<%
String portalJar = "/Development/project/peacock/workspace/springsample/chapter4/src/main/webapp/WEB-INF/lib/checkversion.jar";
String [] data = checkVersion(portalJar);
out.println("Revision<br>");
out.println("===============================<br>");
out.println("Build Date : " + data[0] + "<br>");
out.println("Revision : " + data[1] + "<br><p>");
%>

4.3.3

빌드 옵션 수정
Jenkins 를 통해 SVN.Revision 파라메타 값을 세팅하기 위해 빌드 옵션을 수정한다.



위와 같이 수정하고 빌드 후 배포하면 revision.jsp 파일을 통해 다음과 같이 SVN Revision

및 빌드 수행 시간을 확인할 수 있다.

Confidential

Page 23

3/1/2014
Configuration Report

Confidential

Page 24

3/1/2014
5

애플리케이션 배포
빌드 결과 패키징 파일에 대한 서버 배포 방법에는 다음과 같은 여러 가지 방법이 존재한다.


수동 배포
: Jenkins 빌드 시스템에 접속 후 스크립트 등을 이용하여 서버에 수동으로 배포한다.

 Maven 설정 파일 이용한 자동 배포
: war 패키징 파일을 WAS 로 배포하기 위해 사용할 수 있으며 pom.xml 파일에 각 WAS 별
plugin 을 이용하여 빌드 후 자동 배포를 수행한다.
: 버전에 따라 Tomcat Manager 가 필요할 수 있다.

 Deploy Plugin 이용한 자동 배포
: Deploy Jenkins Plugin 을 통해 war/ear 패키징 파일을 Tomcat 4.x/5.x/6.x/7.x, JBoss
3.x/4.x, Glassfish 2.x/3.x 서버로 자동 배포를 수행한다.

 Publish Over SSH Plugin 이용한 자동 배포
: Publish Over SSH Jenkins Plugin 을 통해 패키징 결과 파일을 SCP 또는 SFTP 를
이용하여 배포하고 별도의 command 를 실행시킬 수 있다.

 Publish Over FTP 이용한 자동 배포
: Publish Over FTP Jenkins Plugin 을 통해 패키징 결과 파일을 FTP 를 이용하여 배포할 수
있다.

본 문서에서는 패키징 파일의 유형에 관계없이 범용으로 사용할 수 있는 Publish Over SSH
Plugin 을 사용한 배포를 가이드한다.

5.1

Plugin 설치
Publish Over SSH Jenkins Plugin 을 다음과 같이 설치한다.

 Jenkins 관리 – 플러그인 관리 메뉴를 선택하고 설치 가능 탭에서 Publish Over SSH 를
검색한다.

Confidential
[오픈소스컨설팅]애플리케이션 빌드 및 배포.docx
Last printed on 3/1/2014 9:21:00 AM
Configuration Report

 플러그인 설치를 수행한다. (Jenkins 를 재시작 해야 적용됨)

5.2

시스템설정
SSH 접속 정보를 설정한다.


Jenkins 관리 – 시스템 설정 메뉴를 클릭하고 Publish over SSH 항목에서 서버 및 계정 등

SSH 접속 정보를 설정한다.

Confidential

Page 26

3/1/2014
Configuration Report

5.3

Job 수정
Job 구성 메뉴에서 빌드 후 조치 항목에 Send build artifacts over SSH 옵션이 포함되어 있는
것을 확인할 수 있으며 앞절에서 설정한 서버 정보를 이용한다.

Confidential

Page 27

3/1/2014
Configuration Report

 Source files : 배포 대상 패키징 파일
 Remove prefix : 배포 대상 패키징 파일이 위치한 workspace/job_name 하위의 경로(eg.
target)를 제거할 수 있다. 비어있거나 경로가 일치하지 않을 경우 Remote directory 하위에 동일
서브 디렉토리가 생성된다.

 Remote directory : 시스템 설정의 SSH Server 항목에서 설정한 Remote Directory 에서의
상대 경로

 Exec command : 패키징 파일 전송 후 실행될 명령 또는 스크립트
5.3.1

빌드 수행
설정이 정상적으로 적용되었는지 Build Now 를 클릭하여 빌드를 수행하고 관련 로그를
확인한다.

Confidential

Page 28

3/1/2014
Configuration Report

……

Confidential

Page 29

3/1/2014

Mais conteúdo relacionado

Mais procurados

[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by NetflixJi-Woong Choi
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1Ji-Woong Choi
 
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)Osc Osc
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure rockplace
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance TuningJi-Woong Choi
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)Ji-Woong Choi
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기Ji-Woong Choi
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody중선 곽
 
[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]초간단 Cubrid HA구성[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]초간단 Cubrid HA구성Ji-Woong Choi
 
[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)
[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)
[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)Ji-Woong Choi
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core Ji-Woong Choi
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL MonitoringJi-Woong Choi
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-toJi-Woong Choi
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우jieunsys
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble ShootingJi-Woong Choi
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 

Mais procurados (20)

[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
 
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
 
[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]초간단 Cubrid HA구성[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]초간단 Cubrid HA구성
 
[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)
[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)
[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 

Destaque

젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정중선 곽
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)MinGeun Park
 
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법MinGeun Park
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화none
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Park JoongSoo
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅Yoonsung Jung
 
페이스북 앱탭 만들기
페이스북 앱탭 만들기페이스북 앱탭 만들기
페이스북 앱탭 만들기Byeong Cheon Jeon
 
02 페이스북특강 (daum it pro bono) 130906
02 페이스북특강 (daum it pro bono) 13090602 페이스북특강 (daum it pro bono) 130906
02 페이스북특강 (daum it pro bono) 130906csr_hope
 
Advanced nGrinder
Advanced nGrinderAdvanced nGrinder
Advanced nGrinderJunHo Yoon
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기용호 최
 
E1_Deview nhn애자일개발 세션소개
E1_Deview nhn애자일개발 세션소개E1_Deview nhn애자일개발 세션소개
E1_Deview nhn애자일개발 세션소개NAVER D2
 
Redmine키노트
Redmine키노트Redmine키노트
Redmine키노트명규 장
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기Jaikwang Lee
 
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)KOS-ROBOT
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
Spring환경설정하기
Spring환경설정하기Spring환경설정하기
Spring환경설정하기ChangJoo Park
 
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930Jaikwang Lee
 

Destaque (20)

젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
 
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
 
페이스북 앱탭 만들기
페이스북 앱탭 만들기페이스북 앱탭 만들기
페이스북 앱탭 만들기
 
02 페이스북특강 (daum it pro bono) 130906
02 페이스북특강 (daum it pro bono) 13090602 페이스북특강 (daum it pro bono) 130906
02 페이스북특강 (daum it pro bono) 130906
 
페이스북 마케팅 사례조사 롯데제과이벤트
페이스북 마케팅 사례조사 롯데제과이벤트페이스북 마케팅 사례조사 롯데제과이벤트
페이스북 마케팅 사례조사 롯데제과이벤트
 
Advanced nGrinder
Advanced nGrinderAdvanced nGrinder
Advanced nGrinder
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기
 
Jenkins
JenkinsJenkins
Jenkins
 
E1_Deview nhn애자일개발 세션소개
E1_Deview nhn애자일개발 세션소개E1_Deview nhn애자일개발 세션소개
E1_Deview nhn애자일개발 세션소개
 
Redmine키노트
Redmine키노트Redmine키노트
Redmine키노트
 
Jenkins소개
Jenkins소개Jenkins소개
Jenkins소개
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기
 
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Spring환경설정하기
Spring환경설정하기Spring환경설정하기
Spring환경설정하기
 
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
 

Semelhante a [오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211

PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guideseungdon Choi
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱NAVER D2
 
빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for AndroidSangkyoon Nam
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개Tommy Lee
 
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415sprdd
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발Jinuk Kim
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Nanha Park
 
윈도우 파일서버기반 문서중앙화 솔루션
윈도우 파일서버기반 문서중앙화 솔루션윈도우 파일서버기반 문서중앙화 솔루션
윈도우 파일서버기반 문서중앙화 솔루션시온시큐리티
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호ETRIBE_STG
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationDonghyun Seo
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 Dong-Jin Park
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automationWooKyun Jeon
 

Semelhante a [오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211 (20)

PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guide
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android
 
Maven
MavenMaven
Maven
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
 
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
Oracle History #8
Oracle History #8Oracle History #8
Oracle History #8
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
 
Dev ops with msp
Dev ops with mspDev ops with msp
Dev ops with msp
 
윈도우 파일서버기반 문서중앙화 솔루션
윈도우 파일서버기반 문서중앙화 솔루션윈도우 파일서버기반 문서중앙화 솔루션
윈도우 파일서버기반 문서중앙화 솔루션
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호
 
2015.07.01
2015.07.012015.07.01
2015.07.01
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서
 
Internship backend
Internship backendInternship backend
Internship backend
 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automation
 

Mais de Ji-Woong Choi

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기Ji-Woong Choi
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육Ji-Woong Choi
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략Ji-Woong Choi
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기Ji-Woong Choi
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12Ji-Woong Choi
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong Choi
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기Ji-Woong Choi
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-RegionJi-Woong Choi
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocationJi-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick GuideJi-Woong Choi
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편Ji-Woong Choi
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
 
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1Ji-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep DiveJi-Woong Choi
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0Ji-Woong Choi
 

Mais de Ji-Woong Choi (20)

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocation
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 

[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211

  • 1. 애플리케이션 빌드 및 배포 Project Name: Internal Department: Consulting Group Focus Area: Amazon Web Service Product/Process: 애플리케이션 빌드 및 배포 Prepared By: Document Owner(s) Project/Organization Role Sang-Cheon Park(nices96@osci.kr) Technical Assistance Ji-Woong Choi(jchoi@osci.kr) Consulting Coach Project Status Report Version Control Version Date Author Change Description 1.0 2014/02/11 Sang-Cheon Park Document created Confidential [오픈소스컨설팅]애플리케이션 빌드 및 배포.docx Last printed on 3/1/2014 9:21:00 AM
  • 2. Configuration Report TABLE OF CONTENTS 1 본 문서의 목적 ........................................................................................................................... 4 2 PYTHON 빌드/배포 시스템 ...................................................................................................... 4 3 JENKINS 빌드 시스템 구축 ....................................................................................................... 4 3.1 Jenkins 설치 .................................................................................................................. 5 3.2 보안 설정 ...................................................................................................................... 8 3.3 플러그인 설치 .............................................................................................................. 11 3.4 Jenkins 디렉토리 구조 ................................................................................................. 12 3.5 환경설정...................................................................................................................... 13 3.5.1 Maven 설정........................................................................................................... 13 3.5.2 Credentials ............................................................................................................ 14 3.6 4 View & Job(Item) ....................................................................................................... 15 애플리케이션 빌드 ................................................................................................................... 17 4.1 Job 생성 ...................................................................................................................... 17 4.2 빌드 수행 .................................................................................................................... 20 4.3 소스 Revision 태깅 ...................................................................................................... 21 4.3.1 4.3.2 revision.jsp 파일 생성 ............................................................................................ 22 4.3.3 5 pom.xml 수정 ....................................................................................................... 21 빌드 옵션 수정 ....................................................................................................... 23 애플리케이션 배포 ................................................................................................................... 25 5.1 Confidential Plugin 설치.................................................................................................................. 25 Page 2 3/1/2014
  • 3. Configuration Report 5.2 시스템설정 .................................................................................................................. 26 5.3 Job 수정 ...................................................................................................................... 27 5.3.1 Confidential 빌드 수행 ............................................................................................................... 28 Page 3 3/1/2014
  • 4. 1 본 문서의 목적 본 문서는 기존 Python 빌드/배포 시스템을 대체할 수 있는 Jenkins 빌드 시스템의 구축과 tag, branch 등 형상별 애플리케이션 빌드, AWS(Amazon Web Service) EC2 인스턴스로의 애플리케이션 배포 방법에 대한 내용을 담고 있다. 2 Python 빌드/배포 시스템 기존 Fabric 기반에서 사용하고 있는 빌드/배포 시스템은 Python 으로 직접 구현된 것으로 SVN 의 특정 애플리케이션 Branch 버전을 입력 받아 해당 애플리케이션을 빌드하고, 배포 대상 타깃 시스템을 선택함으로써 해당 시스템으로 애플리케이션이 배포되는 형태이다. 비록 기능상의 간결함과 커스터마이징을 통해 원하는 대로 수정이 가능하다는 장점이 있지만 기능 수정에 추가 구현이 필요하며 다양한 플러그인의 부재 및 Web UI 가 풍부하지 못한 단점이 있다. 본 문서에서 소개하려는 대표적인 CI 툴인 Jenkins 는 기존 빌드/배포 요건을 충족할 수 있을 뿐만 아니라 다양한 빌드 옵션과 플러그인을 제공함으로써 여러가지 상황에서 유연하게 대처할 수 있다. 3 Jenkins 빌드 시스템 구축 Jenkins 는 애플리케이션 빌드를 자동화 함으로써 지속적인 통합을 가능하게 해주는 대표적인 툴로써 본래 Hudson 이라는 이름을 사용했지만 Oracle 에 흡수되면서 발생한 여러 가지 이슈들로 인해 2011 년 Jenkins 라는 이름의 별도 프로젝트로 분리되었다. 빌드 자동화를 위해 CVS 나 SVN 등의 형상관리 시스템에 접속이 가능해야 하며 따라서 대부분의 회사나 조직에서는 빌드 시스템을 형상관리 시스템과 마찬가지로 방화벽 안쪽에 위치시킨다. Confidential [오픈소스컨설팅]애플리케이션 빌드 및 배포.docx Last printed on 3/1/2014 9:21:00 AM
  • 5. Configuration Report 3.1 Jenkins 설치 Jenkins 는 war 형태로 다운로드 받아 java –jar Jenkins_x.x.war 형태로 실행이 가능하지만 실행 스크립트 작성 및 서비스 등록 등을 자동화 하기 위해 Red Hat/Fedora/CentOS 계열의 OS 에서는 yum 명령을 이용하여 자동 설치한다.  다음 명령을 이용하여 Jenkins 를 설치한다. ~]$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkinsci.org/redhat/jenkins.repo --2014-02-11 16:14:07-- http://pkg.jenkins-ci.org/redhat/jenkins.repo Resolving pkg.jenkins-ci.org... 199.193.196.24 Connecting to pkg.jenkins-ci.org|199.193.196.24|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 75 [text/plain] Saving to: `/etc/yum.repos.d/jenkins.repo' 100%[========================================================= ============================================================== =====================>] 75 --.-K/s in 0s 2014-02-11 16:14:08 (10.4 MB/s) - `/etc/yum.repos.d/jenkins.repo' saved [75/75] ~]$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key ~]$ sudo yum install jenkins Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: centos.tt.co.kr * extras: centos.tt.co.kr * updates: centos.tt.co.kr Setting up Install Process Confidential Page 5 3/1/2014
  • 6. Configuration Report Resolving Dependencies --> Running transaction check ---> Package jenkins.noarch 0:1.550-1.1 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================== ============================================================== ========================================================== Package Arch Repository Version Size ============================================================== ============================================================== ========================================================== Installing: jenkins noarch jenkins 1.550-1.1 58 M Transaction Summary ============================================================== ============================================================== ========================================================== Install 1 Package(s) Total download size: 58 M Installed size: 64 M Is this ok [y/N]: y Downloading Packages: jenkins-1.550-1.1.noarch.rpm | 58 MB Confidential 00:33 Page 6 3/1/2014
  • 7. Configuration Report Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : jenkins-1.550-1.1.noarch 1/1 warning: /etc/yum.repos.d/jenkins.repo created as /etc/yum.repos.d/jenkins.repo.rpmnew Verifying : jenkins-1.550-1.1.noarch 1/1 Installed: jenkins.noarch 0:1.550-1.1 Complete!  다음 명령을 이용하여 Jenkins 를 구동한다. ~]$ sudo service jenkins start Starting Jenkins [ OK ] - Jenkins 는 기본적으로 8080 포트로 Listening 하며, 변경을 원할 경우 /etc/sysconfig/jenkins 파일의 JENKINS_PORT="8080" 부분을 수정한다.  다음 명령을 이용하여 부팅 시 Jenkins 가 자동으로 시작하도록 서비스 등록한다. ~]$ sudo chkconfig jenkins on ~]$ sudo chkconfig --list | grep jenkins jenkins  0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제 브라우져를 통해 Jenkins 서버에 정상적으로 접근되는지 확인한다. Confidential Page 7 3/1/2014
  • 8. Configuration Report 3.2 보안 설정 Jenkins 설치 후 기본적으로 Jenkins 접속이 가능한 사람은 로그인 과정 없이 모든 메뉴에 Full Access 권한을 얻는다. 따라서 보안 설정을 통해 로그인 기능을 추가하고 각 사용자 별 접근 권한을 제어하도록 수정한다.  좌측의 “Jenkins 관리” 메뉴를 클릭한다.  “보안 설정” 버튼 또는 “Configure Global Security” 메뉴를 클릭한다. - Enable Security 항목을 체크한다. - Security Realm 항목에서 Jenkins’ own user database 를 선택한다. Confidential Page 8 3/1/2014
  • 9. Configuration Report - 사용자의 가입을 허용할 경우 임의의 사용자가 가입 후 로그인 할 수 있으며, 허용하지 않을 경우 Administrator 권한을 가진 사용자를 통해 계정을 생성할 수 있다. 관리적인 측면에서 사용자로부터 계정 생성 요청을 받고 관리자에 의한 계정 생성 절차를 수행하도록 권고한다.  Save 버튼을 클릭 후 메인 페이지로 이동하면 초기 사용자 가입 화면이 표시된다. Confidential Page 9 3/1/2014
  • 10. Configuration Report  Sign Up 이후 Jenkins 관리 - Configure Global Security 메뉴를 선택하여 계정/그룹별 접근 권한을 재설정한다. Confidential Page 10 3/1/2014
  • 11. Configuration Report - Authorization 항목에서 Matrix-based security 를 체크한다. - 관리자 계정을 추가하고 모든 권한을 추가 후 Save 버튼을 클릭한다.  이후 Jenkins 관리 – Manage Users 메뉴에서 사용자를 추가/삭제할 수 있으며 위와 같이 각 사용자에 대한 권한을 관리할 수 있다. 3.3 플러그인 설치 Jenkins 는 3rd party plugin 을 통해 기능을 확장시킬 수 있다.  Jenkins 관리 – 플러그인 관리 메뉴를 선택한다. Confidential Page 11 3/1/2014
  • 12. Configuration Report - 설치된 플러그인 목록 탭에서 현재 설치되어 있는 플러그인 목록을 확인한다. - 설치 가능 탭에서 필요한 플러그인 목록을 탐색하여 설치할 수 있다. - SVN, Maven 등 필수 플러그인은 기본으로 설치되어 있으며, 커버리지 분석 및 코드 인스펙션 등이 필요할 경우 해당 플러그인을 설치할 수 있다. 3.4 Jenkins 디렉토리 구조 Jenkins 는 빌드를 수행하고 archive 파일을 저장하기 위해 디스크 공간을 필요로 하며, 다음과 같은 구조를 가진다. JENKINS_HOME (/var/lib/jenkins) +- config.xml (jenkins 기본 설정 파일) +- *.xml +- userContent (other site-wide configuration files) (http://${server}:${port}/userContent/ 로 접속 가능한 컨텐츠) +- fingerprints +- plugins +- jobs (fingerprint records 가 저장되는 디렉토리) (plugins 이 저장되는 디렉토리) +- [JOBNAME] +- config.xml Confidential (각 job 별 서브 디렉토리) (job 설정파일) Page 12 3/1/2014
  • 13. Configuration Report +- workspace +- latest (working directory) (최근 성공적인 빌드에 대한 심볼릭 링크) +- builds +- [BUILD_ID] +- build.xml (각 빌드별 서브 디렉토리) (빌드 결과 요약) +- log (로그 디렉토리) +- changelog.xml (변경 로그) 3.5 환경설정 Jenkins 시스템 환경설정을 통해 Maven 실행 환경 및 SVN 접속을 위한 credential 설정을 수행한다. 3.5.1 Maven 설정 Jenkins 빌드 시스템에 Maven 이 설치되어 있지 않을 경우, http://preilly.me/2013/05/10/how-to-install-maven-on-centos/ 를 참고하여 Maven 을 설치한다.  Jenkins 관리 – 시스템 설정 메뉴를 클릭한다.  Maven 항목에서 Maven installations 버튼을 클릭한다. Confidential Page 13 3/1/2014
  • 14. Configuration Report  3.5.2 Name 및 maven 이 설치된 경로(MAVEN_HOME)을 입력하고 저장 버튼을 클릭한다. Credentials SVN 접속 정보를 저장하기 위한 Credential 을 추가한다.  좌측의 Credentials 메뉴를 클릭하고 Add domain 링크를 클릭한다.  Domain Name 에 SVN 서버의 호스트 IP 또는 호스트 명을 입력하고 저장 버튼을 클릭한다.  Add Credentials 화면으로 username 과 password 를 이용한 인증을 사용하기 때문에 Kind 에 Username with password 를 선택하고 접속 정보를 입력 후 OK 버튼을 클릭한다. Confidential Page 14 3/1/2014
  • 15. Configuration Report 3.6 View & Job(Item) View 와 Job 은 Jenkins 내에서 빌드 프로세스를 관리하기 위한 기본 개념으로 Job(Item)은 하나의 빌드 프로세스를 의미하고 View 는 여러 Job 의 집합을 의미한다. Confidential Page 15 3/1/2014
  • 16. Configuration Report  View 는 최소 하나 이상의 Job(Item)을 생성 이후에 추가할 수 있으며, Job(Item)의 생성은 4. 애플리케이션 빌드에서 설명한다. Confidential Page 16 3/1/2014
  • 17. 4 애플리케이션 빌드 애플리케이션 빌드를 위한 Job 생성 및 설정 방법을 가이드하고 빌드를 수행한다. 4.1 Job 생성 빌드 작업을 위한 새로운 Job 을 생성하고 설정한다.  새 작업 링크를 클릭하거나 좌측의 새로운 Item 메뉴를 클릭한다.  Job(Item) 이름을 입력하고 Build a free-style software project 를 선택한다.  Job 이 생성되고 나면 Job 구성 메뉴가 표시되며, 소스 코드 관리 항목에서 Subversion 을 선택하고 URL 정보를 입력하고 앞절에서 생성한 Credentials 정보를 선택한다. Confidential [오픈소스컨설팅]애플리케이션 빌드 및 배포.docx Last printed on 3/1/2014 9:21:00 AM
  • 18. Configuration Report - Check-out Strategy: Use ‘svn update’ as much as possible 을 선택하면 처음에만 소스 코드를 전체 다운로드 받고, 두번째 부터는 변경된 소스 코드만 다운로드 받기 때문에 소스 코드를 다운 받는 시간을 많이 줄일 수 있다. - tags 나 branch 를 사용하여 빌드할 경우 Repository URL 에 해당 tags 나 branch 의 URL 정보를 입력한다.  Build 항목에서 Add build step 콤보박스를 선택하고 Invoke top-level Maven targets 를 선택 후 앞 절에서 설정한 Maven 실행 환경 및 Goals 를 입력한다. Confidential Page 18 3/1/2014
  • 19. Configuration Report 그 밖에 Job 관리 항목으로 빌드 유발 및 빌드 후 조치 추가 항목이 있다.  빌드 유발 : 빌드가 언제 수행되어야 하는지 설정하는 항목으로 다음 네 가지 옵션을 중복 선택할 수 있다. - 다른 프로젝트가 빌드된 후 빌드함 - 빌드를 원격으로 유발 (예: 스크립트 사용) - Build periodically : Cron Expression 을 사용하여 빌드 수행 주기를 지정할 수 있다. - Poll SCM : 지정한 주기별로 소스 관리 시스템을 폴링(체크)하여 변경이 있을 경우에만 빌드를 수행한다.  빌드 후 조치 추가 : 빌드가 완료된 이후의 작업을 설정하는 항목으로 다음 각각의 옵션을 중복하여 설정할 수 있다. - Aggregate downstream test results - Archive the artifacts - Build other projects - Publish JUnit test result report - Public Javadoc Confidential Page 19 3/1/2014
  • 20. Configuration Report - Record fingerprints of files to track usage - E-mail Notification 4.2 빌드 수행 추가된 Job 에 대한 수동 빌드를 수행한다.빌드를 수행하려는 Job 을 선택하고 좌측의 Build Now 를 클릭하여 수동 빌드를 수행한다.  빌드를 수행하려는 Job 을 선택하고 좌측의 Build Now 를 클릭한다. Confidential Page 20 3/1/2014
  • 21. Configuration Report 4.3 소스 Revision 태깅 현재 동작중인 애플리케이션의 SVN Revision 번호와 빌드 날짜를 태깅함으로써 애플리케이션 변경 여부를 확인할 수 있다. 4.3.1 pom.xml 수정 빌드 시 SVN Revision 정보와 빌드 날짜를 태깅하기 위해 pom.xml 파일을 다음과 같이 수정한다. … <properties> <maven.build.timestamp.format>YYYY.MM.dd. HH:mm:ss</maven.build.timestamp.format> <buildNumber>${maven.build.timestamp}</buildNumber> </properties> … <build> <plugins> … <plugin> <groupId>org.apache.maven.plugins</groupId> Confidential Page 21 3/1/2014
  • 22. Configuration Report <artifactId>maven-antrun-plugin</artifactId> <version>1.7</version> <executions> <execution> <id>Revision Tagging</id> <phase>package</phase> <configuration> <target name="jar-checkversion"> <jar destfile="target/checkversion.jar"> <manifest> <attribute name="Revision-Number" value="${SVN.Revision}" /> <attribute name="Build-Date" value="${maven.build.timestamp}" /> </manifest> </jar> <copy file="target/checkversion.jar" tofile="target/${project.artifactId}${project.version}/WEB-INF/lib/checkversion.jar" overwrite="true" failonerror="false" /> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 4.3.2 revision.jsp 파일 생성 SVN Revision 번호 및 빌드 실행 시간을 확인할 수 있는 JSP 페이지를 생성한다. … <%@ page import="java.util.*, java.io.*, java.util.jar.*" %> <%! public String [] checkVersion(String jarFileUrl) throws Exception { JarFile jarFile = new JarFile(new File(jarFileUrl)); Manifest manifest = jarFile.getManifest(); Attributes attributes = (Attributes) manifest.getMainAttributes(); String buildDate = attributes.getValue("Build-Date"); String revision = attributes.getValue("Revision-Number"); return new String [] {buildDate, revision}; } %> Confidential Page 22 3/1/2014
  • 23. Configuration Report <% String portalJar = "/Development/project/peacock/workspace/springsample/chapter4/src/main/webapp/WEB-INF/lib/checkversion.jar"; String [] data = checkVersion(portalJar); out.println("Revision<br>"); out.println("===============================<br>"); out.println("Build Date : " + data[0] + "<br>"); out.println("Revision : " + data[1] + "<br><p>"); %> 4.3.3 빌드 옵션 수정 Jenkins 를 통해 SVN.Revision 파라메타 값을 세팅하기 위해 빌드 옵션을 수정한다.  위와 같이 수정하고 빌드 후 배포하면 revision.jsp 파일을 통해 다음과 같이 SVN Revision 및 빌드 수행 시간을 확인할 수 있다. Confidential Page 23 3/1/2014
  • 25. 5 애플리케이션 배포 빌드 결과 패키징 파일에 대한 서버 배포 방법에는 다음과 같은 여러 가지 방법이 존재한다.  수동 배포 : Jenkins 빌드 시스템에 접속 후 스크립트 등을 이용하여 서버에 수동으로 배포한다.  Maven 설정 파일 이용한 자동 배포 : war 패키징 파일을 WAS 로 배포하기 위해 사용할 수 있으며 pom.xml 파일에 각 WAS 별 plugin 을 이용하여 빌드 후 자동 배포를 수행한다. : 버전에 따라 Tomcat Manager 가 필요할 수 있다.  Deploy Plugin 이용한 자동 배포 : Deploy Jenkins Plugin 을 통해 war/ear 패키징 파일을 Tomcat 4.x/5.x/6.x/7.x, JBoss 3.x/4.x, Glassfish 2.x/3.x 서버로 자동 배포를 수행한다.  Publish Over SSH Plugin 이용한 자동 배포 : Publish Over SSH Jenkins Plugin 을 통해 패키징 결과 파일을 SCP 또는 SFTP 를 이용하여 배포하고 별도의 command 를 실행시킬 수 있다.  Publish Over FTP 이용한 자동 배포 : Publish Over FTP Jenkins Plugin 을 통해 패키징 결과 파일을 FTP 를 이용하여 배포할 수 있다. 본 문서에서는 패키징 파일의 유형에 관계없이 범용으로 사용할 수 있는 Publish Over SSH Plugin 을 사용한 배포를 가이드한다. 5.1 Plugin 설치 Publish Over SSH Jenkins Plugin 을 다음과 같이 설치한다.  Jenkins 관리 – 플러그인 관리 메뉴를 선택하고 설치 가능 탭에서 Publish Over SSH 를 검색한다. Confidential [오픈소스컨설팅]애플리케이션 빌드 및 배포.docx Last printed on 3/1/2014 9:21:00 AM
  • 26. Configuration Report  플러그인 설치를 수행한다. (Jenkins 를 재시작 해야 적용됨) 5.2 시스템설정 SSH 접속 정보를 설정한다.  Jenkins 관리 – 시스템 설정 메뉴를 클릭하고 Publish over SSH 항목에서 서버 및 계정 등 SSH 접속 정보를 설정한다. Confidential Page 26 3/1/2014
  • 27. Configuration Report 5.3 Job 수정 Job 구성 메뉴에서 빌드 후 조치 항목에 Send build artifacts over SSH 옵션이 포함되어 있는 것을 확인할 수 있으며 앞절에서 설정한 서버 정보를 이용한다. Confidential Page 27 3/1/2014
  • 28. Configuration Report  Source files : 배포 대상 패키징 파일  Remove prefix : 배포 대상 패키징 파일이 위치한 workspace/job_name 하위의 경로(eg. target)를 제거할 수 있다. 비어있거나 경로가 일치하지 않을 경우 Remote directory 하위에 동일 서브 디렉토리가 생성된다.  Remote directory : 시스템 설정의 SSH Server 항목에서 설정한 Remote Directory 에서의 상대 경로  Exec command : 패키징 파일 전송 후 실행될 명령 또는 스크립트 5.3.1 빌드 수행 설정이 정상적으로 적용되었는지 Build Now 를 클릭하여 빌드를 수행하고 관련 로그를 확인한다. Confidential Page 28 3/1/2014