SlideShare ist ein Scribd-Unternehmen logo
1 von 31
오래된 프로젝트에
Jenkins 적용해보기
• 트위터 : https://twitter.com/yongho1037
• 블로그 : http://yongho1037.tistory.com
• 메일 : yongho1037@gmail.com
(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 8Common7IDE 에서 설
치되어 있는 버전에 맞는 경로로 찾아 들어가시면 됩니다.
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#으로 제작한 프로그램을 사용하는 경우 코드 내에
“Environment.CurrentDirectory”를 이용하거나
“Directory.GetCurrentDirectory()”를 사용해서 경로를 가지고 오는
경우 프로젝트의 작업 디렉토리가 아닌 파일을 실행시킨 위치를
가져오므로 잘못된 위치를 가리킬 수 있습니다.
• 프로젝트의 작업 디렉토리를 가져오기 위해서는
“AppDomain.CurrentDomain.BaseDirectory”를 사용합니다.
겪었던 이슈 -2
• Windows Batch Command를 이용하여 원격 PC에 배포를 하는 경우 경로를 찾
지 못하는 문제가 발생했습니다.
• 로컬에서는 정상 동작하는데 원격 PC로 배포하는 경우에만 자꾸 경로를 찾지
못해서 한참을 헤매던 중 Jenkins로 실행 될 때 실행하는 사용자 계정을 찍어보
니 AUTHORITYSYSTEM 이었습니다.
• 이는 Jenkins 서비스의 설정이 로컬 시스템 계정으로 되어있기 때문이었는데
원격 PC의 공유 폴더에 이 계정에 대한 권한이 없어서 였습니다.
• 그래서 공유폴더에 권한을 가지고 있는 계정으로 지정해서 서비스를 재시작
하니 해결되었습니다.
• 서비스 -> Jenkins 에서 속성으로 진입 -> 로그온 -> 계정 지정 -> 관리자 지
정
마치며
• Jenkins는 직접적으로 구축해본 것은 이번이 처음이었습니다.
• 간단해 보였는데 생각보다 시행착오가 많았습니다.
• 앞으로 더 알게 되는 유용한 정보는 공유할 것입니다.
• 조언을 해 주실 분이나 궁금하신 부분은 메일로 보내주세요.
• yongho1037@gmail.com
감사합니다.

Weitere ähnliche Inhalte

Was ist angesagt?

전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 
Incognito 2015 - 게임 리소스 추출과 변조 - 오효근
Incognito 2015 - 게임 리소스 추출과 변조 - 오효근Incognito 2015 - 게임 리소스 추출과 변조 - 오효근
Incognito 2015 - 게임 리소스 추출과 변조 - 오효근Benjamin Oh
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리Seungyong Lee
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03Changyol BAEK
 
게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치Seungjae Lee
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018devCAT Studio, NEXON
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
Visual Studio를 이용한 어셈블리어 학습 part 2
Visual Studio를 이용한 어셈블리어 학습 part 2Visual Studio를 이용한 어셈블리어 학습 part 2
Visual Studio를 이용한 어셈블리어 학습 part 2YEONG-CHEON YOU
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Junyoung Lee
 

Was ist angesagt? (20)

전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
Incognito 2015 - 게임 리소스 추출과 변조 - 오효근
Incognito 2015 - 게임 리소스 추출과 변조 - 오효근Incognito 2015 - 게임 리소스 추출과 변조 - 오효근
Incognito 2015 - 게임 리소스 추출과 변조 - 오효근
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
Visual Studio를 이용한 어셈블리어 학습 part 2
Visual Studio를 이용한 어셈블리어 학습 part 2Visual Studio를 이용한 어셈블리어 학습 part 2
Visual Studio를 이용한 어셈블리어 학습 part 2
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)
 

Andere mochten auch

젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정중선 곽
 
MSBuild + Git + Jenkins
MSBuild + Git + JenkinsMSBuild + Git + Jenkins
MSBuild + Git + Jenkins선협 이
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅Yoonsung Jung
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Park JoongSoo
 
CLT 소스품질 Jenkins 사용가이드
CLT 소스품질 Jenkins 사용가이드CLT 소스품질 Jenkins 사용가이드
CLT 소스품질 Jenkins 사용가이드jSoboro
 
리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기flashscope
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
간단한 쉘 스크립트 작성하기
간단한 쉘 스크립트 작성하기간단한 쉘 스크립트 작성하기
간단한 쉘 스크립트 작성하기licubeclub
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화none
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CICEE-SEC(R)
 
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법MinGeun Park
 
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관Daekwon Kang
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211Ji-Woong Choi
 

Andere mochten auch (17)

젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
MSBuild + Git + Jenkins
MSBuild + Git + JenkinsMSBuild + Git + Jenkins
MSBuild + Git + Jenkins
 
Jenkins
JenkinsJenkins
Jenkins
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 
CLT 소스품질 Jenkins 사용가이드
CLT 소스품질 Jenkins 사용가이드CLT 소스품질 Jenkins 사용가이드
CLT 소스품질 Jenkins 사용가이드
 
정적분석
정적분석정적분석
정적분석
 
리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기
 
Sonar 설치
Sonar 설치Sonar 설치
Sonar 설치
 
Jenkins소개
Jenkins소개Jenkins소개
Jenkins소개
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
간단한 쉘 스크립트 작성하기
간단한 쉘 스크립트 작성하기간단한 쉘 스크립트 작성하기
간단한 쉘 스크립트 작성하기
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CI
 
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
 
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
 

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

Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetesssuseraada82
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017devCAT Studio, NEXON
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포KwangSeob Jeong
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT Studio, NEXON
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐라한사 아
 
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Joongi Kim
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Dong Chan Shin
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드수정 김
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
How to use Github? (For Cien)
How to use Github? (For Cien)How to use Github? (For Cien)
How to use Github? (For Cien)민수 김
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자Taeyeop Kim
 

Ähnlich wie 오래된 프로젝트에 Jenkins 적용해보기 (20)

Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐
 
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
How to use Github? (For Cien)
How to use Github? (For Cien)How to use Github? (For Cien)
How to use Github? (For Cien)
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Subversion
SubversionSubversion
Subversion
 
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
 

Mehr von 용호 최

작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스용호 최
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD용호 최
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처용호 최
 
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호용호 최
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호용호 최
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호용호 최
 
Terraform 입문 - 최용호
Terraform 입문 - 최용호Terraform 입문 - 최용호
Terraform 입문 - 최용호용호 최
 
ElasticStack으로 다양한 수집 아키텍처 구성하기
ElasticStack으로 다양한 수집 아키텍처 구성하기ElasticStack으로 다양한 수집 아키텍처 구성하기
ElasticStack으로 다양한 수집 아키텍처 구성하기용호 최
 
데이터 수집부터 시각화까지
데이터 수집부터 시각화까지데이터 수집부터 시각화까지
데이터 수집부터 시각화까지용호 최
 
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)용호 최
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)용호 최
 
[자바카페] Elasticsearch Aggregation (2018)
[자바카페] Elasticsearch Aggregation (2018)[자바카페] Elasticsearch Aggregation (2018)
[자바카페] Elasticsearch Aggregation (2018)용호 최
 
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP용호 최
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)용호 최
 
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기용호 최
 
[넥슨토크] 모바일게임 하이브 런칭기 (2018)
[넥슨토크] 모바일게임 하이브 런칭기 (2018)[넥슨토크] 모바일게임 하이브 런칭기 (2018)
[넥슨토크] 모바일게임 하이브 런칭기 (2018)용호 최
 
[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)용호 최
 
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)용호 최
 
[자바카페] 람다 아키텍처, 더 깊이 살펴보기
[자바카페] 람다 아키텍처, 더 깊이 살펴보기[자바카페] 람다 아키텍처, 더 깊이 살펴보기
[자바카페] 람다 아키텍처, 더 깊이 살펴보기용호 최
 
[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례용호 최
 

Mehr von 용호 최 (20)

작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
 
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호
 
Terraform 입문 - 최용호
Terraform 입문 - 최용호Terraform 입문 - 최용호
Terraform 입문 - 최용호
 
ElasticStack으로 다양한 수집 아키텍처 구성하기
ElasticStack으로 다양한 수집 아키텍처 구성하기ElasticStack으로 다양한 수집 아키텍처 구성하기
ElasticStack으로 다양한 수집 아키텍처 구성하기
 
데이터 수집부터 시각화까지
데이터 수집부터 시각화까지데이터 수집부터 시각화까지
데이터 수집부터 시각화까지
 
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
 
[자바카페] Elasticsearch Aggregation (2018)
[자바카페] Elasticsearch Aggregation (2018)[자바카페] Elasticsearch Aggregation (2018)
[자바카페] Elasticsearch Aggregation (2018)
 
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)
 
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
 
[넥슨토크] 모바일게임 하이브 런칭기 (2018)
[넥슨토크] 모바일게임 하이브 런칭기 (2018)[넥슨토크] 모바일게임 하이브 런칭기 (2018)
[넥슨토크] 모바일게임 하이브 런칭기 (2018)
 
[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)
 
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
 
[자바카페] 람다 아키텍처, 더 깊이 살펴보기
[자바카페] 람다 아키텍처, 더 깊이 살펴보기[자바카페] 람다 아키텍처, 더 깊이 살펴보기
[자바카페] 람다 아키텍처, 더 깊이 살펴보기
 
[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례
 

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

  • 1. 오래된 프로젝트에 Jenkins 적용해보기 • 트위터 : https://twitter.com/yongho1037 • 블로그 : http://yongho1037.tistory.com • 메일 : yongho1037@gmail.com (Windows/Visual Studio) 최용호
  • 2. 소개 • 최용호 • 현재 Netmarble Neo “클럽 엠스타”서버 개발 • 안주하지 않는 삶을 살려고 노력 중 입니다.
  • 3. 목차 • 설치하기 • 새로운 Item 생성하기 • Devenv로 프로젝트 빌드하기 • C#을 활용해서 입맛대로 구성해보기 • 겪었던 이슈
  • 5. 설치하기 • Windows에서 Jenkins를 설치하는 방법은 엄청 간단합니다. • Jenkins 홈페이지에서 다운 받아서 설치 합니다. • https://jenkins-ci.org/
  • 6. 설치하기 • 설치가 완료되면 자동으로 서비스가 시작되어 http://localhost:8080 으로 접속됩니다. • 만약 8080 포트가 다른 어플리케이션에서 사용 중이라면 404에러 가 발생할 것입니다. • 이 때는 Jenkins가 설치된 경로(기본 C:Program Files (x86)Jenkins) 에서 Jenkins.xml 파일을 수정하여 port를 8080이 아닌 다른 값으로 변경합니다.
  • 7. 설치하기 완료! • 계정 설정에 대한 부분은 생략했습니다.
  • 10. 새로운 ITEM 생성 • FreeStyle project를 생성합니다.
  • 11. 매개변수 지정 • 매개변수를 지정하게 되면 다양한 방법으로 빌드를 할 수가 있습 니다. • 예를 들면 빌드 할 국가를 선택하고, 플랫폼을 선택 할 수 있도록 구성할 수 있습니다. (단적인 예이고 활용 부분은 무궁무진해요)
  • 12. 매개변수 타입 선택 • 콤보박스에 출력된 리스트 외에도 플러그인을 설치하면 수많은 매개변수 의 타입들을 사용할 수 있습니다. • 저는 그 중에 가장 간단한 Choice Parameter를 사용해봤어요.
  • 13. 매개변수 타입 선택 • Choices에 한 Line에 하나의 매개변수가 입력되고 빌드 시에 선택 할 수 있게 됩니다. • 아래 매개변수 추가 버튼을 통해서 또 다른 매개변수를 추가 할 수 가 있습니다.
  • 14. 소스 코드 관리 • 소스 코드 관리를 통해서 프로젝트에서 사용하고 있는 코드 관리 툴을 연동할 수가 있는데 이 또한 플러그인 설치로 더 많은 종류를 선택할 수가 있습니다. • 저는 Git을 연동해서 사용했는데 이 부분은 나중에 또 설명하도록 할께요.
  • 16. DEVENV로 프로젝트 빌드하기 • 오래된 프로젝트이다 보니 vs2005에서 프로젝트가 빌드되고 있었 습니다. • 처음에는 MSBuild를 사용해서 빌드를 시도했으나 프로젝트의 빌 드 순서 관련 설정이 먹히지 않아 제대로 동작하질 않았어요. (프 로젝트 내에서 지정한 순서대로 빌드 되지 않고 프로젝트 순서대 로 빌드 됨) • 해결방법을 찾지 못해서 devenv를 사용해서 빌드했습니다.
  • 17. BUILD STEP • MSBuild의 경우에는 Jenkins에서 제공하는 플러그인이 존재해서 플러그인을 설치한 후 사용하면 됐었는데, devenv는 안보이더군요. • 그래서 무식하게 “Execute Windows batch command”를 사용했습 니다.
  • 18. COMMAND 입력 • 먼저 devenv가 있는 경로를 알아야 합니다. 보통 아래와 같은 C:Program Files (x86)Microsoft Visual Studio 8Common7IDE 에서 설 치되어 있는 버전에 맞는 경로로 찾아 들어가시면 됩니다.
  • 19. DEVENV 실행 파일 • Devenv가 있는 경로에 가보면 devenv.exe와 devenv.com이 존재하는데 devenv.exe는 로그 출력 없이 수행이 되고 devenv.com은 로그를 함께 출력해 줍니다. • 그래서 저는 devenv.com을 사용했어요.
  • 20. DEVENV 옵션 • 여기서 사용한 옵션 중에 /Build는 말그대로 빌드를 수행하는데 이 외 에도 /ReBuild, /Clean이 있고 옵션은 필요한 것들을 찾아보고 적용하 시면 됩니다. • 여기서 “Debug|Win32”와 같은 것을 매개변수로 지정해서 사용하면 빌드 시작 시에 선택해서 빌드 할 수가 있겠죠? • 그 뒤에 /out은 출력되는 로그를 파일로 저장하기 위한 옵션입니다.
  • 21. 빌드 실행 • 이제 기본적인 빌드를 실행할 수가 있습니다. • 저장을 하고 나오면 아래와 같이 새로운 Item이 추가가 되었고, 오 른쪽에 있는 아이콘을 클릭하면 빌드를 시작하게 됩니다.
  • 22. 빌드 실행 – 매개변수 선택 • 아까 설정한 매개변수가 보입니다. • 이 매개변수를 구성에서 사용할때는 %% 안에 매개변수명을 넣어서 사용하면 됩니 다. (예를 들면 %Parameter1%) • 위에서 사용했던 Windows Batch Command에서 /Build 다음에 플랫폼 을 %Platform%과 같은 식으로 지정해서 사용하면 좀 더 다양하게 빌드할 수 있 을 것입니다.
  • 23. 빌드 진행 • 빌드하기를 선택하면 왼쪽 하단에 진행상황이 출력됩니다. • 진행 상황을 선택하면 더 자세한 정보를 확인할 수가 있어요.
  • 25. C#을 활용해서 입맛대로 구성해보기 • 사실 내용은 별거 없습니다. • Windows Batch Command를 사용해보니 잘 모르는 ant를 공부해서 사용하는 것보다 C#을 이용해서 원하는 기능을 포함시키자 라는 아이디어가 떠올랐습니다. • 그래서 Jenkins에서 활용할 수 있도록 기존의 툴을 변형시켜서 사 용했습니다. • Command로 실행 할 수 있도록. (실행파일.exe 옵션1 옵션2 옵 션3)
  • 26. 제가 사용했던 것 • 빌드 전에 필요한 파일들을 복사해야 하는 경우 • 기획자와의 협업 과정 중 변경된 테이블을 빌드 전에 적용해야 하 는 경우 • 빌드 후 해외로 배포해야 하는 경우 해당 국가에 맞는 실행 파일들 로 패키징하는 경우 • 다른 머신으로 배포 후 서비스 등록까지 한방에 • 등등 그냥 구현하기 나름인 것 같습니다.
  • 28. 겪었던 이슈 -1 • C#으로 제작한 프로그램을 사용하는 경우 코드 내에 “Environment.CurrentDirectory”를 이용하거나 “Directory.GetCurrentDirectory()”를 사용해서 경로를 가지고 오는 경우 프로젝트의 작업 디렉토리가 아닌 파일을 실행시킨 위치를 가져오므로 잘못된 위치를 가리킬 수 있습니다. • 프로젝트의 작업 디렉토리를 가져오기 위해서는 “AppDomain.CurrentDomain.BaseDirectory”를 사용합니다.
  • 29. 겪었던 이슈 -2 • Windows Batch Command를 이용하여 원격 PC에 배포를 하는 경우 경로를 찾 지 못하는 문제가 발생했습니다. • 로컬에서는 정상 동작하는데 원격 PC로 배포하는 경우에만 자꾸 경로를 찾지 못해서 한참을 헤매던 중 Jenkins로 실행 될 때 실행하는 사용자 계정을 찍어보 니 AUTHORITYSYSTEM 이었습니다. • 이는 Jenkins 서비스의 설정이 로컬 시스템 계정으로 되어있기 때문이었는데 원격 PC의 공유 폴더에 이 계정에 대한 권한이 없어서 였습니다. • 그래서 공유폴더에 권한을 가지고 있는 계정으로 지정해서 서비스를 재시작 하니 해결되었습니다. • 서비스 -> Jenkins 에서 속성으로 진입 -> 로그온 -> 계정 지정 -> 관리자 지 정
  • 30. 마치며 • Jenkins는 직접적으로 구축해본 것은 이번이 처음이었습니다. • 간단해 보였는데 생각보다 시행착오가 많았습니다. • 앞으로 더 알게 되는 유용한 정보는 공유할 것입니다. • 조언을 해 주실 분이나 궁금하신 부분은 메일로 보내주세요. • yongho1037@gmail.com