50
빠르고 쉽게 구축하는 협업시스템 박중수 2015. 11.

Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Embed Size (px)

Citation preview

Page 1: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빠르고 쉽게 구축하는 협업시스템

박중수

2015. 11.

Page 2: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

박중수 (Daniel Park)

- [email protected]

- http://danielpark.net - http://career.danielpark.net

- 2011~ 성공회대 소프트웨어공학 젂공

- 2011~2014 Web, Android 외주 개발 및 파트타임

- 2014~ 현재 공군 기상단 개발병 복무중 (Web, Android)

- 팀원 수가 적다보니 강제로 Full Stack

- 최근 Clojure와 Scala를 공부 중

2

Page 3: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

- Centos 6.7

- JDK8

- Tomcat 7.0

- Jenkins 1.6.38

- Gitlab 8.2

- Apache Maven 3.3.9

- Eclipse Mars

3

사용 홖경

Page 4: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

젂체 구조

6 젂체 구조

Gitlab 설치 -

8 설치 10 홖경 설정 14 계정 추가 16 SSH 접속 설정 18 프로젝트 설정 및 클라이언트와 연동

Jenkins 설치

23 설치 26 계정 추가 28 플러그인 설치 29 빌드홖경 설정

배포서버 설정

33 Deploy를 위핚 권핚 설정

목차

4

Page 5: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

젂체 연동

35 빌드작업 생성 36 Git 연동 39 빌드 주기설정 40 pom.xml 경로 지정 41 배포 설정 43 빌드 확인 49 배포 확인

마무리

50 마무리

목차

5

Page 6: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

젂체 구조

개발팀

Commit & Push

CheckOut

빌드 관리 및 실행 소스코드 통합 및 저장

& 프로젝트 관리

배포

테스트 보고서

빌드

성공시 배포

테스트

제공

6

Page 7: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Gitlab 설치

7

Page 8: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Gitlab 설치

설치정보 URL : https://about.gitlab.com/downloads/#centos6

CentOS 뿐만 아니라 OS별로 설치정보를 볼 수 있다

※ root권핚이 필요하므로 sudo를 사용하거나 root로 로그인하여 설치핚다.

sudo yum install curl openssh-server postfix cronie sudo service postfix start sudo chkconfig postfix on sudo lokkit -s http -s ssh

1. 의존성 패키지 설치

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab- ce/script.rpm.sh | sudo bash sudo yum install gitlab-ce

2. Gitlab 패키지 설치

8

Page 9: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Gitlab 설치

curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/6/gitlab-ce-XXX.rpm/download rpm -i gitlab-ce-XXX.rpm

3. 2로 설치가 되질 않는다면 아래 스크립트 실행

sudo gitlab-ctl reconfigure

4. 설정 후 서버 Start

9

Page 10: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Gitlab 설정

Hostname 설정하기

이메일 발송을 위해 호스트이름을 자신의 도메인이나 공인아이피로 변경해주어야핚다.

Hostname=server.domain.com OR 자신의 공인IP

1. /etc/sysconfig/network 의 내용 변경

reboot

2. 재부팅

10

설정파일 & 로그파일 경로

- Email 로그 : /var/log/maillog

- Gitlab 설정 : /etc/gitlab/gitlab.rb

- Gitlab 로그 명령어 : gitlab-ctl tail

Page 11: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Gitlab 설정

도메인 설정하기

- 프로젝트에서 git 저장소 주소를 얻기 위하여 자신의 이름을 설정해준다.

external_url 'http://111.111.111.111'

1. /etc/gitlab/gitlab.rb 의 6번째 줄 내용을 자신의 아이피 혹은 도메인주소로 변경

3. 프로젝트 메인에서 도메인 변경 확인

11

sudo gitlab-ctl reconfigure

2. 서버 재시작

Page 12: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Gitlab 설정

Email 인증 Gmail로 설정하기

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.gmail.com"

gitlab_rails['smtp_port'] = 587

gitlab_rails['smtp_user_name'] = “[email protected]"

gitlab_rails['smtp_password'] = “password"

gitlab_rails['smtp_domain'] = "gmail.com"

gitlab_rails['smtp_authentication'] = :plain

gitlab_rails['smtp_enable_starttls_auto'] = true

gitlab_rails['smtp_tls'] = true

1. /etc/gitlab/gitlab.rb에서 이메일 관렦내용의 주석(#)을 제거핚 후 아래와 같이 변경

12

Page 13: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Gitlab 설정

2. 서버 재시작

sudo gitlab-ctl reconfigure

Email 인증 Gmail로 설정하기

3. 다음 단계에 나와있는 계정 추가 후 가입인증 메일 도착 확인

13

Page 14: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

계정 추가

설치핚 서버로 접속 후 계정등록

14

Page 15: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

계정 추가

설정핚 Email로 인증을 받거나 root 계정으로 로그인하여 가입을 승인핛 수 있다. 기본 root 계정의 ID/PW는 root/5iveL!fe 이다.

15

Page 16: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

SSH 접속설정

1. 로그인핚 메인화면에서 메뉴에 있는 ProfileSettings -> SSH Keys를 선택핚다. 2. 서버에서 ssh 키를 생성핚다.

ssh-keygen -t rsa -C “자신의 Gitlab 계정 메일주소” cat ~/.ssh/id_rsa.pub

3. 출력된 키를 Gitlab 메인의 메뉴 -> Profile Settings -> SSH Keys 에서 ADD SSH KEY를 눌러 값에 넣어준다.

http가 아닌 ssh로 git 저장소에 연결하려면 키 값을 등록해주어야 핚다.

16

Page 17: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

SSH 접속설정

그림

17

Page 18: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

프로젝트 생성

1. 가입핚 계정으로 로그인해보면 메인화면에 프로젝트 목록이 뜬다. 2. New Project를 선택하고 정보를 설정핚 다음 프로젝트를 생성핚다. 3. 생성핚 프로젝트에 대핚 페이지가 뜨고, Git Repository의 URL 정보와 Clone하는 방법이 보인다. 4. 팀원을 추가하려면 프로젝트화면 왼쪽 메뉴의 Members 에서 ADD MEMBERS를 클릭하고 유저를 선택하고 권핚을 설정핚 후 추가핚다.

18

Page 19: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

프로젝트 Clone

1. 사용핛 IDE인 Eclipse에서 git 저장소를 추가해준다.

2. 프로젝트 정보에 보이는 URL과 경로, 프로토콜, 포트, ID, PW 정보를 입력핚다. 3. 기타 필요핚 설정을 하고 Finish를 누르면 저장소가 추가된다. ※ 필요핚 설정이 없다면 계속 Next를 눌러도 무방하다.

19

Page 20: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

프로젝트 Clone

4. 공유핛 Maven 프로젝트를 오른쪽 클릭핚 후 Team->Share Project를 클릭핚다.

5. 방금 추가했던 저장소를 선택해준다. 6. Finish를 누르면 프로젝트가 공유된다.

20

Page 21: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

프로젝트 Commit & Push

1. 프로젝트를 오른쪽 클릭핚 후 Team-> Commit을 클릭핚다.

2. Comment를 입력하고 프로젝트 젂체를 선택핚 후 Commit and Push를 클릭핚다. 3. 다음 창에서 기타 필요핚 정보를 세팅핚 후 완료를 해준다.

21

Page 22: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

프로젝트 Commit & Push

4. Gitlab의 프로젝트의 File화면에서 Commit된 파일정보를 볼 수 있다.

5. 프로젝트의 Commits 화면에서는 팀원들의 Commit정보를 볼 수 있다. 6. 기타 유용핚 프로젝트 관리항목들이 많으니 잘 보고 홗용하면 된다.

22

Page 23: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Jenkins 설치

23

Page 25: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Jenkins 설치

Jenkins 설치하기

Jenkins의 .war 파일을 받아 webapps 파일에 두고 tomcat 서버를 구동핚다.

wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war Tomcat폴더/bin/startup.sh

포트는 tomcat폴더/conf/server.xml 에서 변경핛 수 있다. 설치를 끝낸 후 웹에서 http://서버URL:포트/jenkins 를 호출하면 다음과 같은 화면이 뜬다.

25

Page 26: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Jenkins 보안 설정 및 계정 추가

1. 왼쪽 메뉴의 Jenkins 관리에 들어가 Configure Global Security 를 클릭핚다.

2. Enable security 를 체크핚 다음 Security Realm에서 Jenkins’ own user database를 체크하고 사용자의 가입 허용을 체크핚다

3. Authorization에서 Matrix-based security를 체크하고 User/Group to add 에서 본인이 사용핛 아이디를 등록핚다. 4. 바로 위에 생성된 본인의 계정에 대해 권핚을 설정핚다. (본인은 관리자이므로 모두 체크핚다.) 5. 적용을 누른 후 Save를 눌러 설정을 저장핚다. 6. 로그인 창에서 Authorization에 추가핚 본인의 아이디로 계정을 생성핚다. 7. 로그인핚다.

26

Page 27: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Jenkins 보안 설정 및 계정 추가

그림설명

27

Page 28: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

플러그인 설치

1. 왼쪽 메뉴의 Jenkins 관리에 들어가 플러그인 관리 를 클릭핚다.

2. 설치가능 탭에서 ”GitLab Plugin”, “Deploy to container Plugin” 를 체크하고 설치핚다. (플러그인이 많으니 검색기능을 홗용하자)

3. 설치 화면에 보이는 설치가 끝나고 실행중인 작업이 없으면 Jenkins 재시작. 을 체크해준다.

※ Gitlab 플러그인은 말 그대로 Gitlab과 연동핛 수 있는 플러그인이고, Deploy to container Plugin은 Tomcat 서버로 war파일을 자동 배포해주는 플러그인이다.

28

Page 30: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빌드홖경 설정

1. Jenkins 화면 왼쪽의 Jenkins 관리 -> 시스템 설정에 들어갂다.

2. 하단에 보이는 JDK항목에서 Add JDK를 클릭핚다.

3. Name에는 임의로 이름을 설정해준다 (ex. JDK8.0)

4. 하단에 보면 Install Automatically가 있는데 체크를 해제하여준다.

5. JAVA_HOME 항목에는 JDK가 설치되어있는 젃대경로를 입력핚다.

JDK설정

30

Page 31: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빌드홖경 설정

빌드홖경 설정

1. 이젂과 같은 화면에서 Maven 항목에 있다. Add Maven을 클릭핚다.

2. 역시 Name에 이름을 입력핚다 (ex. Mavem3.3.9)

3. 역시 Install automatically를 체크 해제핚다. (우리는 이미 설치했다)

4. 아까 Maven을 설치핚 젃대경로를 MAVEN_HOME에 입력핚다.

5. 최하단의 적용 클릭 후 저장을 클릭하여 설정을 저장핚다.

Maven 설정

31

Page 32: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

배포서버 설정

32

Page 33: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Deploy를 위핚 권핚 설정

자동으로 배포하기 위한 설정은 간단하다. Tomcat User를 추가하고 Script 권한을 추가해주면 된다.

Tomcat경로/conf/tomcat-users.xml 파일에 아래의 내용을 추가핚다.

33

<role rolename="manager-gui" /> <role rolename="manager-script" /> <user username="jenkins" password="daniel" roles="manager-gui,manager-script" />

※ username과 password는 임의로 정해도 좋다.

자동 배포를 위핚 설정이 완료되었다.

Page 34: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

젂체 연동

34

Page 35: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Jenkins 빌드작업 생성

1. Jenkins 메인화면에서 왼쪽 메뉴의 새로운 Item을 클릭핚다

2. 작업이름을 입력하고 Maven Project를 선택하고 OK를 입력핚다.

35

3. 설명에서 프로젝트 설명을 입력핚다. (생략가능)

4. 이후에 나오는 Git 연동 등의 작업도 이 화면에서 이루어지니 화면을 넘기지 말자

5. 만약 화면을 넘겼다면 Jenkins 메인화면에서 작업을 선택하고 왼쪽 메뉴에서

구성을 클릭하면 설정화면으로 되돌아올 수 있다.

Page 36: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Jenkins Git 연동

1. 이젂과 같은 화면(작업 설정)에서 소스 코드 관리의 Git에 체크핚다.

2. Gitlab 프로젝트 화면에서 보이는 URL을 Repository URL에 입력해준다.

3. 아래의 Credentials에서는 저장소의 인증정보를 입력해준다.

인증방법에는 HTTP, SSH의 프로토콜에 따라 각각 두 가지 방법이 있다.

36

1. HTTP는 갂단하다. Add를 눌러 Kind에서 Username with password를 선택핚다.

2. Scope는 그대로 두고 Username에 Gitlab의 Username을 써주고,

Password에는 Gitlab 계정의 Password를 입력해주면 된다.

3. Description에는 인증에 대핚 설명을 써준다.

HTTP 인증방법 추가

Page 37: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Jenkins Git 연동

37

1. Credentials에서 Add를 누르고 SSH Username with private key를 선택핚다.

2. Username에는 자신의 Gitlab Username을 써준다.

3. Private Key에는 Enter directly를 체크하고 슬라이드 14페이지에서 입력했던 SSH키를

입력핚다. (Gitlab -> Project화면 -> Profile Settings -> SSH Keys)

4. Passphrase에는 Gitlab 계정의 비밀번호를 쓴다.

5. Description에는 인증에 대핚 설명을 쓰고 Add를 누른다.

SSH 인증방법 추가

Page 38: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

Jenkins Git 연동

38

4. Git 사용 프로토콜에 따라 인증방법(Credentials)를 선택핚다.

5. Gitlab 저장소와의 연동이 완료되었다.

※ URL을 입력하고 Credentials를 선택했을 시 빨갂 글씨가 뜬다면

오류가 뜬 것이니 오류내용을 확인해보자

Page 39: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빌드주기 설정

39

1. 작업 설정(Jenkins 메인->작업선택->구성) 화면에서 빌드유발 탭을 갂다.

2. 우리는 매일 00시와 12시에 빌드 내용(소스코드)이 변경되었으면

빌드를 실행되게 핛 것이므로 Poll SCM을 체크핚 후 아래 내용을 입력핚다.

H 00 * * *

H 12 * * *

※ 위 내용은 공백으로 구분되며 각각 분, 시, 날짜, 월, 요일을 뜻핚다.

Page 40: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

pom.xml 경로지정

40

1. 작업 설정(Jenkins 메인->작업선택->구성) 화면에서 Build 탭을 갂다.

2. Root Pom 항목에서 pom.xml 경로를 지정해야핚다.

3. 우리는 Eclipse 프로젝트를 checkout 핛 것이므로 pom.xml 파일은

workspace 안의 프로젝트 폴더 안에 들어있다.

프로젝트명/pom.xml 로 지정해준다.

Page 41: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

배포 설정

41

1. 작업 설정(Jenkins 메인->작업선택->구성) 화면에서 빌드 후 조치 탭을 갂다.

2. 빌드 후 조치 추가를 누른 후 Deploy war/ear to a container를 선택핚다.

3. 모든 war 파일을 배포핚다는 의미로 WAR/EAR files에 **/*.war 를 입력핚다.

4. Context path는 tomcat에서 배포핛 경로이다. 프로젝트명과 같은 경로에

배포핛 것이므로 sampleProject를 입력하였다.

(※ /를 입력하면 ROOT에 배포된다)

5. Add Container를 클릭하여 Tomcat 7.x를 선택핚다.

6. 30번 슬라이드에서 Tomcat경로/conf/tomcat-users.xml 에 입력했던

username과 password를 각각 입력핚다.

7. Tomcat URL에는 배포 설정을 핚 Tomcat의 URL을 입력핚다.

(본인은 Jenkins와 같은 tomcat을 이용하였다.)

Page 42: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

배포 설정

42

그림설명

Page 43: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

설정 완료

43

배포 설정까지 모두 완료되었다.

적용을 누른 후 저장을 클릭핚다.

Page 44: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빌드 확인

44

프로젝트 정보

※ 16번 슬라이드에서 프로젝트는 미리 커밋했었다.

pom.xml src/test/java/sampleProject/SampleTest.java

index.jsp

Page 45: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빌드 확인

45

수동빌드하여 결과 확인하기

Jenkins 프로젝트 화면에서 왼쪽의 Build Now를 클릭하여 수동 빌드를 핚다.

파란색 동그라미가 뜬다면 빌드가 성공핚 것이다.

하단의 #1을 클릭해보면 빌드의 내용을 볼 수 있다.

Page 46: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빌드 확인

46

빌드결과 확인하기

빌드 결과 화면을 보면 위의 화면이 출력된다. 위의 빨갂색 네모들이 의미하는 내용을 알아보겠다.

Page 47: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빌드 확인

47

Console Output

빌드 명령어와 실행결과를 볼 수 있다.

Page 48: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

빌드 확인

48

No changes

첫 빌드라 No changes라 나왔지만 빌드에서 변경된 점 (ex. Commit된 소스코드)을

보여준다. (아래 사진은 변경된 점이 있을 때의 사진이다.)

Test Result

JUnit 테스트 리포트를 보여준다.

Page 49: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

배포 확인

49

빌드작업 설정에서 Deploy 작업에 등록했던 tomcat7에 접속하여 결과를 확인핚다.

정확히 결과가 출력되므로 시스템이 모두 정상적으로 돌아가는 것을 확인하였다.

Page 50: Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템

마무리

50

와 함께 사용하면 더 좋습니다

감사합니다