SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
빠르고 쉽게 구축하는 협업시스템
박중수
2015. 11.
박중수 (Daniel Park)
- wndtn853@gmail.com
- http://danielpark.net
- http://career.danielpark.net
- 2011~ 성공회대 소프트웨어공학 젂공
- 2011~2014 Web, Android 외주 개발 및 파트타임
- 2014~ 현재 공군 기상단 개발병 복무중 (Web, Android)
- 팀원 수가 적다보니 강제로 Full Stack
- 최근 Clojure와 Scala를 공부 중
2
- Centos 6.7
- JDK8
- Tomcat 7.0
- Jenkins 1.6.38
- Gitlab 8.2
- Apache Maven 3.3.9
- Eclipse Mars
3
사용 홖경
젂체 구조
6 젂체 구조
Gitlab 설치-
8 설치
10 홖경 설정
14 계정 추가
16 SSH 접속 설정
18 프로젝트 설정 및 클라이언트와 연동
Jenkins 설치
23 설치
26 계정 추가
28 플러그인 설치
29 빌드홖경 설정
배포서버 설정
33 Deploy를 위핚 권핚 설정
목차
4
젂체 연동
35 빌드작업 생성
36 Git 연동
39 빌드 주기설정
40 pom.xml 경로 지정
41 배포 설정
43 빌드 확인
49 배포 확인
마무리
50 마무리
목차
5
젂체 구조
개발팀
Commit
& Push
CheckOut
빌드 관리 및 실행
소스코드 통합 및 저장
& 프로젝트 관리
배포
테스트 보고서
빌드
성공시 배포
테스트
제공
6
Gitlab 설치
7
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
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
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
Gitlab 설정
도메인 설정하기
- 프로젝트에서 git 저장소 주소를 얻기 위하여 자신의 이름을 설정해준다.
external_url 'http://111.111.111.111'
1. /etc/gitlab/gitlab.rb 의 6번째 줄 내용을 자신의 아이피 혹은 도메인주소로 변경
3. 프로젝트 메인에서 도메인 변경 확인
11
sudo gitlab-ctl reconfigure
2. 서버 재시작
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'] = “id@gmail.com"
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
Gitlab 설정
2. 서버 재시작
sudo gitlab-ctl reconfigure
Email 인증 Gmail로 설정하기
3. 다음 단계에 나와있는 계정 추가 후 가입인증 메일 도착 확인
13
계정 추가
설치핚 서버로 접속 후 계정등록
14
계정 추가
설정핚 Email로 인증을 받거나 root 계정으로 로그인하여 가입을 승인핛 수 있다.
기본 root 계정의 ID/PW는 root/5iveL!fe 이다.
15
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
SSH 접속설정
그림
17
프로젝트 생성
1. 가입핚 계정으로 로그인해보면 메인화면에 프로젝트 목록이 뜬다.
2. New Project를 선택하고 정보를 설정핚 다음 프로젝트를 생성핚다.
3. 생성핚 프로젝트에 대핚 페이지가 뜨고, Git Repository의 URL 정보와
Clone하는 방법이 보인다.
4. 팀원을 추가하려면 프로젝트화면 왼쪽 메뉴의 Members 에서 ADD MEMBERS를
클릭하고 유저를 선택하고 권핚을 설정핚 후 추가핚다.
18
프로젝트 Clone
1. 사용핛 IDE인 Eclipse에서 git 저장소를 추가해준다.
2. 프로젝트 정보에 보이는 URL과 경로,
프로토콜, 포트, ID, PW 정보를 입력핚다.
3. 기타 필요핚 설정을 하고 Finish를
누르면 저장소가 추가된다.
※ 필요핚 설정이 없다면 계속 Next를 눌러도
무방하다.
19
프로젝트 Clone
4. 공유핛 Maven 프로젝트를 오른쪽 클릭핚 후 Team->Share Project를 클릭핚다.
5. 방금 추가했던 저장소를 선택해준다.
6. Finish를 누르면 프로젝트가 공유된다.
20
프로젝트 Commit & Push
1. 프로젝트를 오른쪽 클릭핚 후 Team-> Commit을 클릭핚다.
2. Comment를 입력하고 프로젝트 젂체를 선택핚 후 Commit and Push를 클릭핚다.
3. 다음 창에서 기타 필요핚 정보를 세팅핚 후 완료를 해준다.
21
프로젝트 Commit & Push
4. Gitlab의 프로젝트의 File화면에서 Commit된 파일정보를 볼 수 있다.
5. 프로젝트의 Commits 화면에서는 팀원들의 Commit정보를 볼 수 있다.
6. 기타 유용핚 프로젝트 관리항목들이 많으니 잘 보고 홗용하면 된다.
22
Jenkins 설치
23
Jenkins 설치
Tomcat 설치하기
Jenkins 구동과 테스트 배포를 위해 Tomcat WAS를 설치핚다.
wget http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.65/bin/apache-
tomcat-7.0.65.tar.gz
tar –xvf apache-tomcat-7.0.65.tar.gz
mv apache-tomcat-7.0.65 tomcat7.0
cd tomcat7.0/webapps/
포트는 tomcat폴더/conf/server.xml 에서 변경핛 수 있다.
24
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
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
Jenkins 보안 설정 및 계정 추가
그림설명
27
플러그인 설치
1. 왼쪽 메뉴의 Jenkins 관리에 들어가 플러그인 관리 를 클릭핚다.
2. 설치가능 탭에서 ”GitLab Plugin”, “Deploy to container Plugin” 를 체크하
고 설치핚다. (플러그인이 많으니 검색기능을 홗용하자)
3. 설치 화면에 보이는 설치가 끝나고 실행중인 작업이 없으면 Jenkins 재시작.
을 체크해준다.
※ Gitlab 플러그인은 말 그대로 Gitlab과 연동핛 수 있는 플러그인이고,
Deploy to container Plugin은 Tomcat 서버로 war파일을 자동 배포해주는
플러그인이다.
28
빌드홖경 설정
Maven 설치
먼저 Jenkins에서 빌드에 사용할 Maven을 설치한다.
JDK, Maven 등의 빌드에 필요한 환경을 설정해준다.
※ JDK는 설치되어 있다고 가정한다.
wget http://apache.tt.co.kr/maven/maven-3/3.3.9/binaries/apache-maven-
3.3.9-bin.tar.gz
tar –xvf apache-maven-3.3.9-bin.tar.gz
29
빌드홖경 설정
1. Jenkins 화면 왼쪽의 Jenkins 관리 -> 시스템 설정에 들어갂다.
2. 하단에 보이는 JDK항목에서 Add JDK를 클릭핚다.
3. Name에는 임의로 이름을 설정해준다 (ex. JDK8.0)
4. 하단에 보면 Install Automatically가 있는데 체크를 해제하여준다.
5. JAVA_HOME 항목에는 JDK가 설치되어있는 젃대경로를 입력핚다.
JDK설정
30
빌드홖경 설정
빌드홖경 설정
1. 이젂과 같은 화면에서 Maven 항목에 있다. Add Maven을 클릭핚다.
2. 역시 Name에 이름을 입력핚다 (ex. Mavem3.3.9)
3. 역시 Install automatically를 체크 해제핚다. (우리는 이미 설치했다)
4. 아까 Maven을 설치핚 젃대경로를 MAVEN_HOME에 입력핚다.
5. 최하단의 적용 클릭 후 저장을 클릭하여 설정을 저장핚다.
Maven 설정
31
배포서버 설정
32
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는 임의로 정해도 좋다.
자동 배포를 위핚 설정이 완료되었다.
젂체 연동
34
Jenkins 빌드작업 생성
1. Jenkins 메인화면에서 왼쪽 메뉴의 새로운 Item을 클릭핚다
2. 작업이름을 입력하고 Maven Project를 선택하고 OK를 입력핚다.
35
3. 설명에서 프로젝트 설명을 입력핚다. (생략가능)
4. 이후에 나오는 Git 연동 등의 작업도 이 화면에서 이루어지니 화면을 넘기지 말자
5. 만약 화면을 넘겼다면 Jenkins 메인화면에서 작업을 선택하고 왼쪽 메뉴에서
구성을 클릭하면 설정화면으로 되돌아올 수 있다.
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 인증방법 추가
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 인증방법 추가
Jenkins Git 연동
38
4. Git 사용 프로토콜에 따라 인증방법(Credentials)를 선택핚다.
5. Gitlab 저장소와의 연동이 완료되었다.
※ URL을 입력하고 Credentials를 선택했을 시 빨갂 글씨가 뜬다면
오류가 뜬 것이니 오류내용을 확인해보자
빌드주기 설정
39
1. 작업 설정(Jenkins 메인->작업선택->구성) 화면에서 빌드유발 탭을 갂다.
2. 우리는 매일 00시와 12시에 빌드 내용(소스코드)이 변경되었으면
빌드를 실행되게 핛 것이므로 Poll SCM을 체크핚 후 아래 내용을 입력핚다.
H 00 * * *
H 12 * * *
※ 위 내용은 공백으로 구분되며 각각 분, 시, 날짜, 월, 요일을 뜻핚다.
pom.xml 경로지정
40
1. 작업 설정(Jenkins 메인->작업선택->구성) 화면에서 Build 탭을 갂다.
2. Root Pom 항목에서 pom.xml 경로를 지정해야핚다.
3. 우리는 Eclipse 프로젝트를 checkout 핛 것이므로 pom.xml 파일은
workspace 안의 프로젝트 폴더 안에 들어있다.
프로젝트명/pom.xml 로 지정해준다.
배포 설정
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을 이용하였다.)
배포 설정
42
그림설명
설정 완료
43
배포 설정까지 모두 완료되었다.
적용을 누른 후 저장을 클릭핚다.
빌드 확인
44
프로젝트 정보
※ 16번 슬라이드에서 프로젝트는 미리 커밋했었다.
pom.xml src/test/java/sampleProject/SampleTest.java
index.jsp
빌드 확인
45
수동빌드하여 결과 확인하기
Jenkins 프로젝트 화면에서 왼쪽의 Build Now를 클릭하여 수동 빌드를 핚다.
파란색 동그라미가 뜬다면 빌드가 성공핚 것이다.
하단의 #1을 클릭해보면 빌드의 내용을 볼 수 있다.
빌드 확인
46
빌드결과 확인하기
빌드 결과 화면을 보면 위의 화면이 출력된다.
위의 빨갂색 네모들이 의미하는 내용을 알아보겠다.
빌드 확인
47
Console Output
빌드 명령어와 실행결과를 볼 수 있다.
빌드 확인
48
No changes
첫 빌드라 No changes라 나왔지만 빌드에서 변경된 점 (ex. Commit된 소스코드)을
보여준다. (아래 사진은 변경된 점이 있을 때의 사진이다.)
Test Result
JUnit 테스트 리포트를 보여준다.
배포 확인
49
빌드작업 설정에서 Deploy 작업에 등록했던 tomcat7에 접속하여 결과를 확인핚다.
정확히 결과가 출력되므로 시스템이 모두 정상적으로 돌아가는 것을 확인하였다.
마무리
50
와 함께 사용하면 더 좋습니다
감사합니다

Contenu connexe

Tendances

Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring BootVincent Kok
 
황규영 포트폴리오
황규영 포트폴리오황규영 포트폴리오
황규영 포트폴리오Q_0
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)MinGeun Park
 
Quick flask an intro to flask
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flaskjuzten
 
LockFree Algorithm
LockFree AlgorithmLockFree Algorithm
LockFree AlgorithmMerry Merry
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기용호 최
 
2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현kdh24
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)중선 곽
 
Android Security & Penetration Testing
Android Security & Penetration TestingAndroid Security & Penetration Testing
Android Security & Penetration TestingSubho Halder
 
Reverse Engineering: Writing a Linux driver for an unknown device
Reverse Engineering: Writing a Linux driver for an unknown deviceReverse Engineering: Writing a Linux driver for an unknown device
Reverse Engineering: Writing a Linux driver for an unknown deviceLubomir Rintel
 

Tendances (20)

Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring Boot
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
황규영 포트폴리오
황규영 포트폴리오황규영 포트폴리오
황규영 포트폴리오
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
 
Quick flask an intro to flask
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flask
 
LockFree Algorithm
LockFree AlgorithmLockFree Algorithm
LockFree Algorithm
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
Core java
Core javaCore java
Core java
 
200531 jandi
200531 jandi200531 jandi
200531 jandi
 
Android Security & Penetration Testing
Android Security & Penetration TestingAndroid Security & Penetration Testing
Android Security & Penetration Testing
 
Reverse Engineering: Writing a Linux driver for an unknown device
Reverse Engineering: Writing a Linux driver for an unknown deviceReverse Engineering: Writing a Linux driver for an unknown device
Reverse Engineering: Writing a Linux driver for an unknown device
 
Angular js
Angular jsAngular js
Angular js
 

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

Spring@mvc웹호스팅
Spring@mvc웹호스팅Spring@mvc웹호스팅
Spring@mvc웹호스팅J.H Ahn
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfLee Dong Wook
 
Weblogic install
Weblogic installWeblogic install
Weblogic installSukjin Yun
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
How to build a web server on Linux.
How to build a web server on Linux.How to build a web server on Linux.
How to build a web server on Linux.은석 김은석
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정중선 곽
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1Ji-Woong Choi
 
02.개발환경 실습교재
02.개발환경 실습교재02.개발환경 실습교재
02.개발환경 실습교재Hankyo
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211Ji-Woong Choi
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guideseungdon Choi
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 

Similaire à Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템 (20)

Spring@mvc웹호스팅
Spring@mvc웹호스팅Spring@mvc웹호스팅
Spring@mvc웹호스팅
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdf
 
Weblogic install
Weblogic installWeblogic install
Weblogic install
 
Internship backend
Internship backendInternship backend
Internship backend
 
How to build a web server on Linux.
How to build a web server on Linux.How to build a web server on Linux.
How to build a web server on Linux.
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
 
02.개발환경 실습교재
02.개발환경 실습교재02.개발환경 실습교재
02.개발환경 실습교재
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
 
Spring boot
Spring bootSpring boot
Spring boot
 
Final report201101
Final report201101Final report201101
Final report201101
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guide
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
테스트
테스트테스트
테스트
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 

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

  • 1. 빠르고 쉽게 구축하는 협업시스템 박중수 2015. 11.
  • 2. 박중수 (Daniel Park) - wndtn853@gmail.com - http://danielpark.net - http://career.danielpark.net - 2011~ 성공회대 소프트웨어공학 젂공 - 2011~2014 Web, Android 외주 개발 및 파트타임 - 2014~ 현재 공군 기상단 개발병 복무중 (Web, Android) - 팀원 수가 적다보니 강제로 Full Stack - 최근 Clojure와 Scala를 공부 중 2
  • 3. - Centos 6.7 - JDK8 - Tomcat 7.0 - Jenkins 1.6.38 - Gitlab 8.2 - Apache Maven 3.3.9 - Eclipse Mars 3 사용 홖경
  • 4. 젂체 구조 6 젂체 구조 Gitlab 설치- 8 설치 10 홖경 설정 14 계정 추가 16 SSH 접속 설정 18 프로젝트 설정 및 클라이언트와 연동 Jenkins 설치 23 설치 26 계정 추가 28 플러그인 설치 29 빌드홖경 설정 배포서버 설정 33 Deploy를 위핚 권핚 설정 목차 4
  • 5. 젂체 연동 35 빌드작업 생성 36 Git 연동 39 빌드 주기설정 40 pom.xml 경로 지정 41 배포 설정 43 빌드 확인 49 배포 확인 마무리 50 마무리 목차 5
  • 6. 젂체 구조 개발팀 Commit & Push CheckOut 빌드 관리 및 실행 소스코드 통합 및 저장 & 프로젝트 관리 배포 테스트 보고서 빌드 성공시 배포 테스트 제공 6
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. Gitlab 설정 도메인 설정하기 - 프로젝트에서 git 저장소 주소를 얻기 위하여 자신의 이름을 설정해준다. external_url 'http://111.111.111.111' 1. /etc/gitlab/gitlab.rb 의 6번째 줄 내용을 자신의 아이피 혹은 도메인주소로 변경 3. 프로젝트 메인에서 도메인 변경 확인 11 sudo gitlab-ctl reconfigure 2. 서버 재시작
  • 12. 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'] = “id@gmail.com" 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
  • 13. Gitlab 설정 2. 서버 재시작 sudo gitlab-ctl reconfigure Email 인증 Gmail로 설정하기 3. 다음 단계에 나와있는 계정 추가 후 가입인증 메일 도착 확인 13
  • 14. 계정 추가 설치핚 서버로 접속 후 계정등록 14
  • 15. 계정 추가 설정핚 Email로 인증을 받거나 root 계정으로 로그인하여 가입을 승인핛 수 있다. 기본 root 계정의 ID/PW는 root/5iveL!fe 이다. 15
  • 16. 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
  • 18. 프로젝트 생성 1. 가입핚 계정으로 로그인해보면 메인화면에 프로젝트 목록이 뜬다. 2. New Project를 선택하고 정보를 설정핚 다음 프로젝트를 생성핚다. 3. 생성핚 프로젝트에 대핚 페이지가 뜨고, Git Repository의 URL 정보와 Clone하는 방법이 보인다. 4. 팀원을 추가하려면 프로젝트화면 왼쪽 메뉴의 Members 에서 ADD MEMBERS를 클릭하고 유저를 선택하고 권핚을 설정핚 후 추가핚다. 18
  • 19. 프로젝트 Clone 1. 사용핛 IDE인 Eclipse에서 git 저장소를 추가해준다. 2. 프로젝트 정보에 보이는 URL과 경로, 프로토콜, 포트, ID, PW 정보를 입력핚다. 3. 기타 필요핚 설정을 하고 Finish를 누르면 저장소가 추가된다. ※ 필요핚 설정이 없다면 계속 Next를 눌러도 무방하다. 19
  • 20. 프로젝트 Clone 4. 공유핛 Maven 프로젝트를 오른쪽 클릭핚 후 Team->Share Project를 클릭핚다. 5. 방금 추가했던 저장소를 선택해준다. 6. Finish를 누르면 프로젝트가 공유된다. 20
  • 21. 프로젝트 Commit & Push 1. 프로젝트를 오른쪽 클릭핚 후 Team-> Commit을 클릭핚다. 2. Comment를 입력하고 프로젝트 젂체를 선택핚 후 Commit and Push를 클릭핚다. 3. 다음 창에서 기타 필요핚 정보를 세팅핚 후 완료를 해준다. 21
  • 22. 프로젝트 Commit & Push 4. Gitlab의 프로젝트의 File화면에서 Commit된 파일정보를 볼 수 있다. 5. 프로젝트의 Commits 화면에서는 팀원들의 Commit정보를 볼 수 있다. 6. 기타 유용핚 프로젝트 관리항목들이 많으니 잘 보고 홗용하면 된다. 22
  • 24. Jenkins 설치 Tomcat 설치하기 Jenkins 구동과 테스트 배포를 위해 Tomcat WAS를 설치핚다. wget http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.65/bin/apache- tomcat-7.0.65.tar.gz tar –xvf apache-tomcat-7.0.65.tar.gz mv apache-tomcat-7.0.65 tomcat7.0 cd tomcat7.0/webapps/ 포트는 tomcat폴더/conf/server.xml 에서 변경핛 수 있다. 24
  • 25. 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
  • 26. 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
  • 27. Jenkins 보안 설정 및 계정 추가 그림설명 27
  • 28. 플러그인 설치 1. 왼쪽 메뉴의 Jenkins 관리에 들어가 플러그인 관리 를 클릭핚다. 2. 설치가능 탭에서 ”GitLab Plugin”, “Deploy to container Plugin” 를 체크하 고 설치핚다. (플러그인이 많으니 검색기능을 홗용하자) 3. 설치 화면에 보이는 설치가 끝나고 실행중인 작업이 없으면 Jenkins 재시작. 을 체크해준다. ※ Gitlab 플러그인은 말 그대로 Gitlab과 연동핛 수 있는 플러그인이고, Deploy to container Plugin은 Tomcat 서버로 war파일을 자동 배포해주는 플러그인이다. 28
  • 29. 빌드홖경 설정 Maven 설치 먼저 Jenkins에서 빌드에 사용할 Maven을 설치한다. JDK, Maven 등의 빌드에 필요한 환경을 설정해준다. ※ JDK는 설치되어 있다고 가정한다. wget http://apache.tt.co.kr/maven/maven-3/3.3.9/binaries/apache-maven- 3.3.9-bin.tar.gz tar –xvf apache-maven-3.3.9-bin.tar.gz 29
  • 30. 빌드홖경 설정 1. Jenkins 화면 왼쪽의 Jenkins 관리 -> 시스템 설정에 들어갂다. 2. 하단에 보이는 JDK항목에서 Add JDK를 클릭핚다. 3. Name에는 임의로 이름을 설정해준다 (ex. JDK8.0) 4. 하단에 보면 Install Automatically가 있는데 체크를 해제하여준다. 5. JAVA_HOME 항목에는 JDK가 설치되어있는 젃대경로를 입력핚다. JDK설정 30
  • 31. 빌드홖경 설정 빌드홖경 설정 1. 이젂과 같은 화면에서 Maven 항목에 있다. Add Maven을 클릭핚다. 2. 역시 Name에 이름을 입력핚다 (ex. Mavem3.3.9) 3. 역시 Install automatically를 체크 해제핚다. (우리는 이미 설치했다) 4. 아까 Maven을 설치핚 젃대경로를 MAVEN_HOME에 입력핚다. 5. 최하단의 적용 클릭 후 저장을 클릭하여 설정을 저장핚다. Maven 설정 31
  • 33. 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는 임의로 정해도 좋다. 자동 배포를 위핚 설정이 완료되었다.
  • 35. Jenkins 빌드작업 생성 1. Jenkins 메인화면에서 왼쪽 메뉴의 새로운 Item을 클릭핚다 2. 작업이름을 입력하고 Maven Project를 선택하고 OK를 입력핚다. 35 3. 설명에서 프로젝트 설명을 입력핚다. (생략가능) 4. 이후에 나오는 Git 연동 등의 작업도 이 화면에서 이루어지니 화면을 넘기지 말자 5. 만약 화면을 넘겼다면 Jenkins 메인화면에서 작업을 선택하고 왼쪽 메뉴에서 구성을 클릭하면 설정화면으로 되돌아올 수 있다.
  • 36. 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 인증방법 추가
  • 37. 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 인증방법 추가
  • 38. Jenkins Git 연동 38 4. Git 사용 프로토콜에 따라 인증방법(Credentials)를 선택핚다. 5. Gitlab 저장소와의 연동이 완료되었다. ※ URL을 입력하고 Credentials를 선택했을 시 빨갂 글씨가 뜬다면 오류가 뜬 것이니 오류내용을 확인해보자
  • 39. 빌드주기 설정 39 1. 작업 설정(Jenkins 메인->작업선택->구성) 화면에서 빌드유발 탭을 갂다. 2. 우리는 매일 00시와 12시에 빌드 내용(소스코드)이 변경되었으면 빌드를 실행되게 핛 것이므로 Poll SCM을 체크핚 후 아래 내용을 입력핚다. H 00 * * * H 12 * * * ※ 위 내용은 공백으로 구분되며 각각 분, 시, 날짜, 월, 요일을 뜻핚다.
  • 40. pom.xml 경로지정 40 1. 작업 설정(Jenkins 메인->작업선택->구성) 화면에서 Build 탭을 갂다. 2. Root Pom 항목에서 pom.xml 경로를 지정해야핚다. 3. 우리는 Eclipse 프로젝트를 checkout 핛 것이므로 pom.xml 파일은 workspace 안의 프로젝트 폴더 안에 들어있다. 프로젝트명/pom.xml 로 지정해준다.
  • 41. 배포 설정 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을 이용하였다.)
  • 43. 설정 완료 43 배포 설정까지 모두 완료되었다. 적용을 누른 후 저장을 클릭핚다.
  • 44. 빌드 확인 44 프로젝트 정보 ※ 16번 슬라이드에서 프로젝트는 미리 커밋했었다. pom.xml src/test/java/sampleProject/SampleTest.java index.jsp
  • 45. 빌드 확인 45 수동빌드하여 결과 확인하기 Jenkins 프로젝트 화면에서 왼쪽의 Build Now를 클릭하여 수동 빌드를 핚다. 파란색 동그라미가 뜬다면 빌드가 성공핚 것이다. 하단의 #1을 클릭해보면 빌드의 내용을 볼 수 있다.
  • 46. 빌드 확인 46 빌드결과 확인하기 빌드 결과 화면을 보면 위의 화면이 출력된다. 위의 빨갂색 네모들이 의미하는 내용을 알아보겠다.
  • 47. 빌드 확인 47 Console Output 빌드 명령어와 실행결과를 볼 수 있다.
  • 48. 빌드 확인 48 No changes 첫 빌드라 No changes라 나왔지만 빌드에서 변경된 점 (ex. Commit된 소스코드)을 보여준다. (아래 사진은 변경된 점이 있을 때의 사진이다.) Test Result JUnit 테스트 리포트를 보여준다.
  • 49. 배포 확인 49 빌드작업 설정에서 Deploy 작업에 등록했던 tomcat7에 접속하여 결과를 확인핚다. 정확히 결과가 출력되므로 시스템이 모두 정상적으로 돌아가는 것을 확인하였다.
  • 50. 마무리 50 와 함께 사용하면 더 좋습니다 감사합니다