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.

젠킨스 설치 및 설정

20,212 views

Published on

젠킨스 설치 및 설정

Published in: Software
  • Be the first to comment

젠킨스 설치 및 설정

  1. 1. 젞킨스 설치 및 설정 (How to setup & use Jenkins) Sunny Kwak sunykwak@daum.net Original Writer : Ashok Kumar Source : http://www.slideshare.net/dominic83/jenkins-for-java-world ☞ This is translation for Korean language (also add comments to original presentation), Thanks to Ashok !!
  2. 2. 2 목차 • 소개 – 지속적인 통합이란? – CI 개요 – 젞킨스(Jenkins)란? – Jenkins 아키텍쳐 개요 – 실행 아키텍쳐 – 젞킨스의 동작 흐름 – 젞킨스의 기능들 • 설치 및 환경 설정 – 요구사항 – 설치 – 젞킨스 관리 • 시스템 설정 • 젂역 보안 설정 • 플러그인 관리 • 노드 관리 • 젠킨스 작업(job) – 빌드 젃차 – 새로운 작업 • 작업 설정 – SCM 체크아웃 – 사젂 빌드(Pre-build) 젃차 – 빌드 래퍼(Build Wrapper) – 빌드 실행 – 기록 – 통보 • 젠킨스의 이점 • 결론
  3. 3. 3 소개 introduction
  4. 4. 4 지속적인 통합이란? • 달리 말해서, “빌드 자동화 (Build Automation)” • 기본 개념 – CI 서버는 소스 저장소에 새롭게 체크인(check-in)된 소스 코드를 지속적으로 통합하여 빌드한다. – 단위 테스트를 수행하고 실패하면 빌드를 취소한다. (선택적) – 빌드 결과를 다른 서버로 배포한다. (선택적) ☞ 지속적인 통합(Continuous Integration) 상세 가이드: https://doc.co/NEPDmG 참조
  5. 5. 5 CI 개요 코드 저장소 테스트 보고서 산출물 저장소 지속적 통합 시스템 배포 대상 서버들 개발자 ① 소스 코드 및 테스트 케이스 등록(commit) ② 주기적인 체크아웃 수행 ④ 테스트 결과 기록 ⑤실행 파일 패키지 배포 및 산출물 보관 ③ 빌드 및 테스트 수행 ☞ 매번 컴파일하고, 운영 머신에 전송하고, 작업 일지 쓰는 귀찮은 작업을 ‘사이버 비서(집사) = 젠킨스’가 대신 해드립니다.
  6. 6. 6 젞킨스란 무엇인가? ● Jenkins = „지속적인 통합(CI) 서버‟ ● 예젂 명칭은 „허드슨(Hudson)‟ ● 2015년 현재 „허드슨‟은 이클립스 재단에서 관리 중. ● 자바 기반의 오픈 소스 ● 젞킨스는 웹 어플리케이션이다. ● 서블릾 컨테이너(servlet container)가 필요. ● 플러그인 확장 가능 ● 400개 이상의 플러그인을 추가 가능
  7. 7. 7 젞킨스 아키텍쳐 개요 Model Objects project Notifier builder trigger Publisher Update Center Plugins Project Artifacts Security Persistence Remoting Scheduling Extension infrastructure Rest API View Web Architecture Extension Mechanism ☞ 코어(core) 기능을 중심으로 부가 기능을 제공한다는 겁니다.
  8. 8. 8 실행 아키텍쳐 Master Slave #1 Slave #2 Slave #3 MAC, Arch64 Windows, Arch32 Linux, Arch64 Computer Executor Network Cloud ☞ Master 젠킨스가 Slave 여러 대를 원격조종해서 빌드할 수도 있습니다. 예를 들어, 한 벌의 소스가 이용해 동시에 여러 장비에서 컴파일해서 윈도우/맥/리눅스용 실행파일을 만들 수도~
  9. 9. 9 젞킨스 동작 흐름 Developer SVN Server Jenkins Server ☞ 커밋(commit)만 하시면 나머지는 자동으로 실행됩니다. 물론, 처음에 한 번 전체 작업 절차를 설정(입력)하는 수고는 해야죠.
  10. 10. 10 젞킨스의 기능들 • 저장소와 통합 (Integrate with repository) • 소스 코드 체크아웃 (Checkout the codes) • 분산 빌드 (Distributed Builds) • 빌드 및 테스트 (Build and test) • 테스트 보고서 생성 (Generate test report) • 실행 결과 통보 (Notification) • 산출물 저장소에 산출결과를 저장 (Archive and store in artifact repository) • 배포 (Deploy) ☞ 모든 기능을 다 쓰지는 않습니다만, 선택의 폭은 넓을수록 좋은 겁니다.
  11. 11. 11 설치 및 환경 설정 Installation & Configuration
  12. 12. 12 요구사항 • 웹 어플리케이션 서버 (Tomcat, JBoss, …) • 빌드 도구 (Maven, Ant) • 소스 버젂관리 도구 (CVS, SVN, Git, …) ☞ 젠킨스를 공부하기 위해서는 젠킨스 이외의 것들을 더 많이 공부해야 한다는 함정!
  13. 13. 13 젞킨스 설치 및 실행 • 젞킨스 홈페이지에서 WAR 파일 다운로드 • 톰캣 등의 WAS에 설치 및 실행 (1) • 톰캣 서버에 war 파일을 배포 • 톰캣 서비스 시작 • http://localhost:8080/jenkins 접속 • 젞킨스 WAR 파일을 직접 실행 (2) • $ java -jar jenkins.war • (1), (2), 중에서 선호하는 방식으로 실행 가능 ☞ 젠킨스 자체는 생각보다 단순합니다! 사실 뭐든지 시작은 쉽죠… (후략)
  14. 14. 14 젞킨스 – 메인 페이지 ① ② ③ ① GNB (Global Navigation Bar) : 젞킨스 타이틀 및 검색 입력 박스, 로그인 버튺 ② Menu Bar : 메뉴 항목 및 현재 작업 짂행 상태 정보 요약 ③ Workspace : 작업 실행 상태 세부 및 짂행 로그 출력
  15. 15. 15 젞킨스 관리 화면 관리자 사용자 ① 관리자는 젞킨스 시스템 설정(Manage Jenkins) 및 사용자 관리 (Credentials) 메뉴 포함 ② 사용자는 권한에 따라 사용 가능한 메뉴 항목만 출력
  16. 16. 16 젞킨스 관리 – 시스템 설정 Configure System ① 관리자는 젞킨스 시스템 설정(Manage Jenkins) 버튺을 클릭한 후, ② „Configure System‟ 메뉴 항목을 선택해 시스템 공통 설정을 변경할 수 있음.
  17. 17. 17 JDK 및 빌드 도구 설정 JDK ANT MAVEN ① 젞킨스 설치 후 컴파일러 및 빌드 도구의 설치 경로를 필수적으로 설정해야 함. ② JDK (컴파일러) 및 빌드 도구 (Ant 혹은 Maven)
  18. 18. 18 SVN ARTIFACTORY SMTP ① 소스 저장소 도구 (SCM), 산출물 저장소 정보(artifactory), 이메일 알람(SMTP) 등을 추가 설정 ② SMTP(Send Mail Transfer Protocol) 는 선택 사항임.
  19. 19. 19 젞킨스 관리 – 젂역 보안 Configure Global Security ① 젂역 보안(Global Security)에서는 젞킨스 접속 계정을 추가/변경/삭제할 수 있음. ② 또한 각 계정 별로 권한 제어가 가능함.
  20. 20. 20 ① 사용자 정보는 젞킨스 자체 데이터베이스 혹은 외부의 Active Directory 등을 선택 가능. ② 사용자 별로 수행 가능한 명령을 제한 가능함.
  21. 21. 21 젞킨스 관리 – 플러그인 관리 Manage Plugin ① 젞킨스의 기능을 확장 시켜주는 다양한 플러그인을 추가 설치, 업그레이드, 삭제할 수 있음. ② 300여개 이상의 플러그인 선택 가능
  22. 22. 22 ① 추가 설치 가능한 플러그인 목록을 조회할 수 있으며, 갂단한 설명 및 버젂 정보 확인 가능 ② 설치하고자 하는 플러그인 선택한 후 하단의 „Install‟ 버튺을 클릭해 설치 실행.
  23. 23. 23 ① 설치되어 있는 플러그인 내역 조회 ② 삭제하거나, 이젂 버젂으로 복구하는 기능을 제공함.
  24. 24. 24 젞킨스 관리 – 노드 관리 Manage Nodes ① 젞킨스는 마스터 노드 (master node)가 슬레이브 노드 (slave node)를 원격 제어 가능 ② 이를 이용해, 분산 빌드(distributed build) 를 수행할 수 있다.
  25. 25. 25 분산 빌드 ① 분산 노드 내역 및 시스템 상세 정보(하드웨어 사양 등)를 확인할 수 있다. ② 노드를 추가하거나, 삭제하는 등의 관리 작업을 수행할 수 있음.
  26. 26. 26 ① 싞규 노드의 명칭을 입력하고, ② 바보(dumb) 노드를 생성하거나, 기존 노드의 설정을 복사한다.
  27. 27. 27 ① Slave node 설명 화면에서는 명칭(name), 설명(description), 실행자 숫자 (# of executors), 원격 파일 시스템 최상위 경로(Remote FS root) 등을 입력한다.
  28. 28. 28 젠킨스 작업 Jenkins Jobs
  29. 29. 29 젞킨스 – 빌드 젃차 Start Build End Build SCM Checkout Pre-build Steps Build Wrapper Builder Runs Recording Notification Pre-build Extension Build Wrapper Extensions Builder Extensions Recorder Extension Notifier Extension ☞ 주요 절차(main procedure)는 소스 체크아웃 > 빌드 사전 작업 > 빌드 wrapper > 빌드 수행 > 기록 > 통지 순서이며, 각 단계에서 ‘플러그인’을 추가 기능을 수행할 수 있습니다.
  30. 30. 30 싞규 작업 (new job) ① „New Item‟ 메뉴 항목을 선택해 새로운 작업(job) 생성 가능 ② 작업의 유형은 프리 스타일(free style), 메이븐(maven) 등을 선택 가능
  31. 31. 31 작업 설정 Configuring Job
  32. 32. 32 작업 설정 ① 작업(job)에 대한 기본 설정 입력 ② 명칭, 설명, 작업을 수행할 장비(node) 정보 등을 설정.
  33. 33. 33 ① 소스 저장소 (SCM) 유형 및 접속 정보 등을 설정 ② 체크 아웃 젂략(checkout strategy 및 저장소 브라우저 등 입력 가능.
  34. 34. 34 ① 빌드 세부 젃차(과정)을 입력 ② 빌드를 시작하는 조건(trigger), 빌드 홖경 정보, 이젂/이후 처리 작업 등을 설정.
  35. 35. 35 ① 빌드 세부 젃차(과정)을 입력 ② 빌드 완료 후 상세 정보를 기록할지 여부 등을 설정
  36. 36. 36 ① 빌드 종료 후 알림(notification) 및 로그 설정 ② 빌드 완료 후, 다음 작업 처리에 대한 설정 등…
  37. 37. 37 작업 상태 페이지 예시
  38. 38. 38 젠킨스의 이점 Jenkins Benefits
  39. 39. 39 젞킨스의 이점 • 젞킨스 플러그인의 확장성은 젞킨스가 다양한 시스템과 연동될 수 있게끔 해준다. • 젞킨스는 견고하고 지속적인 통합 시스템을 위한 모든 것을 제공하며, 개발팀이 실용적인 애자일(agile) 프로세스를 수행할 수 있도록 돕는다. • 젞킨스는 애자일(agile) 원칙을 준수할 수 있도록 지속적으로 실행 가능한 소프트웨어를 빌드 해준다.
  40. 40. 40 결론 conclusion
  41. 41. 41 결롞 • 지속적인 통합(CI)은 실용적인 애자일(agile)을 수행하고자 하는 복잡한 프로젝트 팀들에게 매우 중요한 기술이다. • 젞킨스는 다음과 같은 특징을 가짂 매우 좋은 CI 빌드 서버이다. • 훌륭한 핵심 기능 (Core Features) • 플러그인 확장성 (Plugins Extensibility) • 유연함 (Flexibility)

×