Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

17,003 views

Published on

Jenkins, Git, Maven을 이용하여 개발팀의 협업에 도움이 되는 시스템을 빠르게 구축해보는 슬라이드입니다.

Published in: Software

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

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

×