오래된 프로젝트에 jenkins 적용해보기

31
오오오 오오오오오 Jenkins 오오오오오 오오오 : https://twitter.com/yongho1037 오오오 : http://yongho1037.tistory.com 오오 : [email protected] (Windows/Visual Studio) 오오오

Upload: -

Post on 16-Apr-2017

997 views

Category:

Technology


0 download

TRANSCRIPT

오래된 프로젝트에 Jenkins 적용해보기

• 트위터 : https://twitter.com/yongho1037• 블로그 : http://yongho1037.tistory.com• 메일 : [email protected]

(Windows/Visual Studio)

최용호

소개• 최용호

• 현재 Netmarble Neo “ 클럽 엠스타”서버 개발

• 안주하지 않는 삶을 살려고 노력 중 입니다 .

목차

• 설치하기

• 새로운 Item 생성하기

• Devenv 로 프로젝트 빌드하기

• C# 을 활용해서 입맛대로 구성해보기

• 겪었던 이슈

설치 하기

설치하기• Windows 에서 Jenkins 를 설치하는 방법은 엄청 간단합니다 .• Jenkins 홈페이지에서 다운 받아서 설치 합니다 .• https://jenkins-ci.org/

설치하기

• 설치가 완료되면 자동으로 서비스가 시작되어

http://localhost:8080 으로 접속됩니다 .

• 만약 8080 포트가 다른 어플리케이션에서 사용 중이라면 404에러가 발생할 것입니다 .

• 이 때는 Jenkins 가 설치된 경로 ( 기본 C:\Program Files (x86)\Jenkins) 에서 Jenkins.xml 파일을 수정하여 port 를

8080 이 아닌 다른 값으로 변경합니다 .

설치하기 완료 !• 계정 설정에 대한 부분은 생략했습니다 .

새로운 ITEM 생성하기

새로운 ITEM 생성

새로운 ITEM 생성

• FreeStyle project 를 생성합니다 .

매개변수 지정• 매개변수를 지정하게 되면 다양한 방법으로 빌드를 할 수가 있습니다 .

• 예를 들면 빌드 할 국가를 선택하고 , 플랫폼을 선택 할 수 있도록

구성할 수 있습니다 . ( 단적인 예이고 활용 부분은 무궁무진해요 )

매개변수 타입 선택

• 콤보박스에 출력된 리스트 외에도 플러그인을 설치하면 수많은

매개변수의 타입들을 사용할 수 있습니다 .

• 저는 그 중에 가장 간단한 Choice Parameter 를 사용해봤어요 .

매개변수 타입 선택

• Choices 에 한 Line 에 하나의 매개변수가 입력되고 빌드 시에

선택할 수 있게 됩니다 .

• 아래 매개변수 추가 버튼을 통해서 또 다른 매개변수를 추가 할

수가 있습니다 .

소스 코드 관리

• 소스 코드 관리를 통해서 프로젝트에서 사용하고 있는 코드 관리 툴을 연동할

수가 있는데 이 또한 플러그인 설치로 더 많은 종류를 선택할 수가 있습니다 .

• 저는 Git 을 연동해서 사용했는데 이 부분은 나중에 또 설명하도록 할께요 .

DEVENV 로 프로젝트 빌드하기

DEVENV 로 프로젝트 빌드하기

• 오래된 프로젝트이다 보니 vs2005 에서 프로젝트가 빌드되고

있었습니다 .

• 처음에는 MSBuild 를 사용해서 빌드를 시도했으나 프로젝트의

빌드 순서 관련 설정이 먹히지 않아 제대로 동작하질 않았어요 . ( 프로젝트 내에서 지정한 순서대로 빌드 되지 않고 프로젝트

순서대로 빌드 됨 )

• 해결방법을 찾지 못해서 devenv 를 사용해서 빌드했습니다 .

BUILD STEP• MSBuild 의 경우에는 Jenkins 에서 제공하는 플러그인이 존재해서

플러그인을 설치한 후 사용하면 됐었는데 , devenv 는

안보이더군요 .

• 그래서 무식하게 “ Execute Windows batch command” 를

사용했습니다 .

COMMAND 입력

• 먼저 devenv 가 있는 경로를 알아야 합니다 . 보통 아래와 같은 C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE 에서 설치되어 있는 버전에 맞는 경로로 찾아 들어가시면 됩니다 .

DEVENV 실행 파일

• Devenv 가 있는 경로에 가보면 devenv.exe 와 devenv.com 이

존재하는데 devenv.exe 는 로그 출력 없이 수행이 되고 devenv.-com 은 로그를 함께 출력해 줍니다 .

• 그래서 저는 devenv.com 을 사용했어요 .

DEVENV 옵션

• 여기서 사용한 옵션 중에 /Build 는 말그대로 빌드를 수행하는데 이 외에

도 /ReBuild, /Clean 이 있고 옵션은 필요한 것들을 찾아보고 적용하시면

됩니다 .

• 여기서 “ Debug|Win32” 와 같은 것을 매개변수로 지정해서 사용하면 빌드

시작 시에 선택해서 빌드 할 수가 있겠죠 ?

• 그 뒤에 /out 은 출력되는 로그를 파일로 저장하기 위한 옵션입니다 .

빌드 실행

• 이제 기본적인 빌드를 실행할 수가 있습니다 .

• 저장을 하고 나오면 아래와 같이 새로운 Item 이 추가가 되었

고 , 오른쪽에 있는 아이콘을 클릭하면 빌드를 시작하게 됩니다 .

빌드 실행 – 매개변수 선택

• 아까 설정한 매개변수가 보입니다 .

• 이 매개변수를 구성에서 사용할때는 %% 안에 매개변수명을 넣어서 사용하면 됩니

다 . ( 예를 들면 %Parameter1%)

• 위에서 사용했던 Windows Batch Command 에서 /Build 다음에 플랫폼을

%Platform% 과 같은 식으로 지정해서 사용하면 좀 더 다양하게 빌드할 수 있을

것입니다 .

빌드 진행

• 빌드하기를 선택하면 왼쪽 하단에 진행상황이 출력됩니다 .

• 진행 상황을 선택하면 더 자세한 정보를 확인할 수가 있어요 .

C# 을 활용해서 입맛대로 구성해보기

C# 을 활용해서 입맛대로 구성해보기

• 사실 내용은 별거 없습니다 .

• Windows Batch Command 를 사용해보니 잘 모르는 ant 를

공부해서 사용하는 것보다 C# 을 이용해서 원하는 기능을

포함시키자 라는 아이디어가 떠올랐습니다 .

• 그래서 Jenkins 에서 활용할 수 있도록 기존의 툴을 변형시켜서

사용했습니다 .

• Command 로 실행 할 수 있도록 . ( 실행파일 .exe 옵션 1 옵션 2 옵션 3)

제가 사용했던 것

• 빌드 전에 필요한 파일들을 복사해야 하는 경우

• 기획자와의 협업 과정 중 변경된 테이블을 빌드 전에 적용해야

하는 경우

• 빌드 후 해외로 배포해야 하는 경우 해당 국가에 맞는 실행

파일들로 패키징하는 경우

• 다른 머신으로 배포 후 서비스 등록까지 한방에

• 등등 그냥 구현하기 나름인 것 같습니다 .

겪었던 이슈

겪었던 이슈 -1• C# 으로 제작한 프로그램을 사용하는 경우 코드 내에 “ Envi-

ronment.CurrentDirectory” 를 이용하거나 “ Directo-ry.GetCurrentDirectory()” 를 사용해서 경로를 가지고 오는

경우 프로젝트의 작업 디렉토리가 아닌 파일을 실행시킨 위치를

가져오므로 잘못된 위치를 가리킬 수 있습니다 .

• 프로젝트의 작업 디렉토리를 가져오기 위해서는 “ AppDo-main.CurrentDomain.BaseDirectory” 를 사용합니다 .

겪었던 이슈 -2• Windows Batch Command 를 이용하여 원격 PC 에 배포를 하는 경우 경로를

찾지 못하는 문제가 발생했습니다 .

• 로컬에서는 정상 동작하는데 원격 PC 로 배포하는 경우에만 자꾸 경로를 찾지

못해서 한참을 헤매던 중 Jenkins 로 실행 될 때 실행하는 사용자 계정을

찍어보니 AUTHORITY\SYSTEM 이었습니다 .

• 이는 Jenkins 서비스의 설정이 로컬 시스템 계정으로 되어있기 때문이었는데

원격 PC 의 공유 폴더에 이 계정에 대한 권한이 없어서 였습니다 .

• 그래서 공유폴더에 권한을 가지고 있는 계정으로 지정해서 서비스를 재시작하니

해결되었습니다 .

• 서비스 -> Jenkins 에서 속성으로 진입 -> 로그온 -> 계정 지정 -> 관리자 지정

마치며

• Jenkins 는 직접적으로 구축해본 것은 이번이 처음이었습니다 .

• 간단해 보였는데 생각보다 시행착오가 많았습니다 .

• 앞으로 더 알게 되는 유용한 정보는 공유할 것입니다 .

• 조언을 해 주실 분이나 궁금하신 부분은 메일로 보내주세요 .

[email protected]

감사합니다 .