8. 1-1 지속적통합이란?
• 지속적통합(Continuous Integration, CI)
– 개발 프로세스에서 걸리는 시간을 줄이는데 초점
• ex) 소프트웨어의 품질 개선과 소프트웨어를 배포하는데 걸리는 시간
• ex) 작은 단위의 작업, 빈번한 적용
– 지속적으로 품질관리를 적용하는 프로세스 실행
• 모든 개발을 완료한 뒤에 품질관리를 적용하는 고전적인 방법을 대체
• 지속적인 품질관리로 인한 리스크 감소
– 팀의 구성원들이 작업한 내용을 정기적으로 통합
9. 1-1 지속적통합이란?
• 지속적통합(Continuous Integration, CI)
– 개발 프로세스에서 걸리는 시간을 줄이는데 초점
• ex) 소프트웨어의 품질 개선과 소프트웨어를 배포하는데 걸리는 시간
• ex) 작은 단위의 작업, 빈번한 적용
– 지속적으로 품질관리를 적용하는 프로세스 실행
• 모든 개발을 완료한 뒤에 품질관리를 적용하는 고전적인 방법을 대체
• 지속적인 품질관리로 인한 리스크 감소
– 팀의 구성원들이 작업한 내용을 정기적으로 통합
10. 1-1 지속적통합이란?
• 지속적통합(Continuous Integration, CI)
– 개발 프로세스에서 걸리는 시간을 줄이는데 초점
• ex) 소프트웨어의 품질 개선과 소프트웨어를 배포하는데 걸리는 시간
• ex) 작은 단위의 작업, 빈번한 적용
– 지속적으로 품질관리를 적용하는 프로세스 실행
• 모든 개발을 완료한 뒤에 품질관리를 적용하는 고전적인 방법을 대체
• 지속적인 품질관리로 인한 리스크 감소
– 팀의 구성원들이 작업한 내용을 정기적으로 통합
11. 1-1 지속적통합이란?
• 지속적통합(Continuous Integration, CI)
– 개발 프로세스에서 걸리는 시간을 줄이는데 초점
• ex) 소프트웨어의 품질 개선과 소프트웨어를 배포하는데 걸리는 시간
• ex) 작은 단위의 작업, 빈번한 적용
– 지속적으로 품질관리를 적용하는 프로세스 실행
• 모든 개발을 완료한 뒤에 품질관리를 적용하는 고전적인 방법을 대체
• 지속적인 품질관리로 인한 리스크 감소
– 팀의 구성원들이 작업한 내용을 정기적으로 통합
커밋 빌드 자동화 테스트 자동화 배포 자동화
14. 1-2 빌드 자동화
• 빌드 자동화(Build automation)
– 개발자가 반복적으로 수행하는 다양한 작업의 자동화
• 빌드에 있어서, 반복적인 작업
– CPU에 따른 컴파일 옵션 재지정
– 때에 따른 Build Parameter
• gcc –o helloworld helloworld.c와 의미가 다르다.
– 이건 Build automation이 아니라, Build이다.
• 일반적인 의미로는 Visual Studio의 Build(F7)와도 의미가 다르다.
– 정확히는 Visual Studio의 Solution 또는 Project 설정에 따라 다름.
15. 1-2 빌드 자동화
• 빌드 자동화(Build automation)
– 개발자가 반복적으로 수행하는 다양한 작업의 자동화
• 빌드에 있어서, 반복적인 작업
– CPU에 따른 컴파일 옵션 재지정
– 때에 따른 Build Parameter (ex. ‘gcc –O0’, ‘gcc –O1’, ‘gcc –O2’ …)
• gcc –o helloworld helloworld.c와 의미가 다르다.
– 이건 Build automation이 아니라, Build이다.
• 일반적인 의미로는 Visual Studio의 Build(F7)와도 의미가 다르다.
– 정확히는 Visual Studio의 Solution 또는 Project 설정에 따라 다름.
16. 1-2 빌드 자동화
• 빌드 자동화(Build automation)
– 개발자가 반복적으로 수행하는 다양한 작업의 자동화
• 빌드에 있어서, 반복적인 작업
– CPU에 따른 컴파일 옵션 재지정
– 때에 따른 Build Parameter (ex. ‘gcc –O0’, ‘gcc –O1’, ‘gcc –O2’ …)
• gcc –o helloworld helloworld.c와 의미가 다르다.
– 이건 Build automation이 아니라, Build이다.
– 일반적인 의미로는 Visual Studio의 Build(F7)도 의미가 다르다.
» 정확히는 Visual Studio의 Solution 또는 Project 설정에 따라 다름.
17. 1-2 빌드 자동화
• Build automation utility
– Make
– MSBuild
– Ant
– Gradle
– Etc...
19. 1-3 테스트 자동화
• 테스팅(Testing)
– 결함 발견 & 결함 예방
• 특정 동작에 대한 실행 및 예측 결과와 실제 결과 비교
• 발견시 수정함으로써 SW의 품질 향상
– 서비스 중 발생할 수 있는 장애 감소
• 리스크 감소
20. 1-3 테스트 자동화
• 테스팅(Testing)
– 결함 발견 & 결함 예방
• 특정 동작에 대한 실행 및 예측 결과와 실제 결과 비교
• 발견시 수정함으로써 SW의 품질 향상
– 서비스 중 발생할 수 있는 장애 감소
• 리스크 감소
21. 1-3 테스트 자동화
• 테스팅의 중요성
– 테락-25 방사선치료기
• 1985~1987년까지 테락-25로 방사선 치료를 받은 환자 중 3명이 방사선
과다 피폭으로 사망, 3명이 방사선 후유증
• 원인
– 소프트웨어 결함 -> 8비트형 변수의 최대값을 넘는 연산을 실행하여 산술 넘침
(Arithmetic overflow) 발생
– “역사속의 시스템 오류”, 김종하 저
22. 1-3 테스트 자동화
• 테스팅의 중요성
– 테락-25 방사선치료기
• 1985~1987년까지 테락-25로 방사선 치료를 받은 환자 중 3명이 방사선
과다 피폭으로 사망, 3명이 방사선 후유증
• 원인
– 소프트웨어 결함 -> 8비트형 변수의 최대값을 넘는 연산을 실행하여 산술 넘침
(Arithmetic overflow) 발생
– “역사속의 시스템 오류”, 김종하 저
23. 1-3 테스트 자동화
• 테스팅의 중요성
– 248일마다 재부팅 해야하는 보잉787
• 보잉의 차세대 모델인 보잉787에서 여러 사건 사고 발생
• 항공기의 발전기가 연속해서 248일 이상 전원이 켜져 있을 경우, 소프트웨
어 버그로 인해 발전기 작동 중단
– 발전기 작동이 중단되면 비행에 필요한 전력을 생산할 수 없기 때문에 비행 중 추락
위험
– 왜 하필 248일?
• 원인
– 항공기 전원의 가동시간 카운터에 대한 버그
» 카운터 값을 저장하는 변수는 부호 있는 32비트 정수
» 변수가 담을 수 있는 최대값 : 2^31, 해당 값은 100ms 마다 1씩 증가
» (2^31)/(100*60*60*24) = 248.551348…
» 248.55일마다 변수에 Integer Overflow로 인한 소프트웨어 장애
» “역사속의 시스템 오류”, 김종하 저
24. 1-3 테스트 자동화
• 테스팅의 중요성
– 248일마다 재부팅 해야하는 보잉787
• 보잉의 차세대 모델인 보잉787에서 여러 사건 사고 발생
• 항공기의 발전기가 연속해서 248일 이상 전원이 켜져 있을 경우, 소프트웨
어 버그로 인해 발전기 작동 중단
– 발전기 작동이 중단되면 비행에 필요한 전력을 생산할 수 없기 때문에 비행 중 추락
위험
– 왜 하필 248일?
• 원인
– 항공기 전원의 가동시간 카운터에 대한 버그
» 카운터 값을 저장하는 변수는 부호 있는 32비트 정수
» 변수가 담을 수 있는 최대값 : 2^31, 해당 값은 100ms 마다 1씩 증가
» (2^31-1)/(100*60*60*24) = 248.551348…
» 248.55일마다 변수에 Integer Overflow로 인한 소프트웨어 장애
» “역사속의 시스템 오류”, 김종하 저
25. 1-3 테스트 자동화
• 테스팅과 디버깅
테스팅
•장애를 통해 결함을 발견
•테스터가 수행
디버깅
•장애 또는 결함의 원인을 찾고, 분석하여
제거하는 개발 활동
•개발자가 수행
26. 1-3 테스트 자동화
• 테스팅 용어 : 테스트 케이스(Test Case)
– SW의 구체적인 요구사항과의 일치 여부를 확인하기 위한 묶음
– 실행 사전 조건, 기대 결과 등의 집합
ID 사전 조건 수행 순서 기대결과
P/F
(테스트 결과)
1
2개의 값이
입력되어
있지 않다
더하기 버튼을 눌러
더하기를 시도한다.
2개의 값을 입력하라
는 메시지를 출력한다.
2
2개의 값이
입력되어
있지 않다
빼기 버튼을 눌러
빼기를 시도한다.
2개의 값을 입력하라
는 메시지를 출력한다.
3
2개의 값이
입력 되어있다.
더하기 버튼을 눌러
더하기를 시도한다.
각각의 값을 더한 값
을 출력한다.
4
2개의 값이
입력 되어있다.
빼기 버튼을 눌러
빼기를 시도한다.
각각의 값을 뺀 값을
출력한다.
예시이며 표에 포함되는 내용은 달라 질 수 있다.
27. 1-3 테스트 자동화
• 테스팅 용어 : 테스트 슈트(Test Suite)
– 테스트 케이스를 모아 놓은 집합이다.
• ex) Chrome의 로그인 프로세스 -> Test Suite
– ID, PW 입력 후 로그인 여부 -> Test Case
Test Suite
Test Case 1
Test Case 2
...
Test Case 3
28. 1-3 테스트 자동화
• 테스팅 용어 : 테스트 플랜(Test plan)
– 테스트 슈트를 모아 놓은 집합이다.
• Chrome의 로그인 프로세스 (Test Suite #1)
• IE의 로그인 프로세스 (Test Suite #2)
Test PlanTest Suite
Test Case 1
Test Case 2
...
Test Case 3
Test Suite
Test Case 1
Test Case 2
...
Test Case 3
. . .
29. 1-3 테스트 자동화
• 테스팅 용어 : 유닛 테스트(Unit Test)
– 소스코드의 특정 모듈이 의도한 대로 정확하게 작동하는지에 대
해 검증하는 절차.
– 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하
는 절차.
– 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악
및 수정 할 수 있도록 해준다.
30. 1-3 테스트 자동화
• 테스팅 용어 : 유닛 테스트(Unit Test)
– 소스코드의 특정 모듈이 의도한 대로 정확하게 작동하는지에 대
해 검증하는 절차.
– 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하
는 절차.
– 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악
및 수정 할 수 있도록 해준다.
31. 1-3 테스트 자동화
• 테스팅 용어 : 유닛 테스트(Unit Test)
– 소스코드의 특정 모듈이 의도한 대로 정확하게 작동하는지에 대
해 검증하는 절차.
– 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하
는 절차.
– 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악
및 수정 할 수 있도록 해준다.
32. 1-3 테스트 자동화
• 테스팅 용어 : 코드 커버리지(Code Coverage)
– SW 테스트를 진행하였을 때 코드 자체가 얼마나 실행되었는지
를 나타낸다.
– 코드 커버리지의 종류에는 크게 3가지가 있다.
• 구문(Statement)
– 코드 한 줄이 한번 이상 실행된다면 충족
• 조건(Condition)
– 각 내부 조건이 참 / 거짓을 가지게 되면 충족
• 결정(Decision)
– 전체적인 결과가 참 / 거짓이면 충족
33. 1-3 테스트 자동화
• 테스팅 용어 : 코드 커버리지(Code Coverage)
– SW 테스트를 진행하였을 때 코드 자체가 얼마나 실행되었는지
를 나타낸다.
– 코드 커버리지의 종류에는 크게 3가지가 있다.
• 구문(Statement)
– 코드 한 줄이 한번 이상 실행된다면 충족
• 조건(Condition)
– 각 내부 조건이 참 / 거짓을 가지게 되면 충족
• 결정(Decision)
– 전체적인 결과가 참 / 거짓이면 충족
34. 1-3 테스트 자동화
• 테스팅 자동화(Test automation)
– 테스팅 자동화는 앞서 소개한 테스팅을 자동으로 하는 것.
• 수동 테스팅은 컴퓨터 앞에 앉아 있는 사람이 각 테스트 단계별로 실행하며
수행한다.
• 수동 테스팅은 사람이 하기 때문에 실수를 범하기 쉽다.
– 테스트 슈트(Test suite)를 실행하기 위해 자동화 툴을 사용
– 테스팅 자동화를 통하여 테스트에 걸리는 시간을 줄일 수 있다.
35. 1-3 테스트 자동화
• 테스팅 자동화(Test automation)
– 테스팅 자동화는 앞서 소개한 테스팅을 자동으로 하는 것.
• 수동 테스팅은 컴퓨터 앞에 앉아 있는 사람이 각 테스트 단계별로 실행하며
수행한다.
• 수동 테스팅은 사람이 하기 때문에 실수를 범하기 쉽다.
– 테스트 슈트(Test suite)를 실행하기 위해 자동화 툴을 사용
– 테스팅 자동화를 통하여 테스트에 걸리는 시간을 줄일 수 있다.
36. 1-3 테스트 자동화
• 테스팅 자동화(Test automation)
– 테스팅 자동화는 앞서 소개한 테스팅을 자동으로 하는 것.
• 수동 테스팅은 컴퓨터 앞에 앉아 있는 사람이 각 테스트 단계별로 실행하며
수행한다.
• 수동 테스팅은 사람이 하기 때문에 실수를 범하기 쉽다.
– 테스트 슈트(Test suite)를 실행하기 위해 자동화 툴을 사용
– 테스팅 자동화를 통하여 테스트에 걸리는 시간을 줄일 수 있다.
37. 1-3 테스트 자동화
• 테스팅 자동화(Test automation) 접근법
– 일반적인 접근법
• GUI Testing
– 키 입력 및 마우스 클릭과 같은 UI 이벤트 생성 및 UI에서 발생하는 변경 사항을 관
찰하여 해당 동작이 올바른 지 검증
• API driven Testing
– 테스트 중인 동작을 확인하기 위해 SW의 Programming Interface(PI) 사용
» SW의 UI를 우회하며, 다양한 입력 변수를 테스트하고 반환된 결과를 검증할 수
있다.
38. 1-3 테스트 자동화
• 테스팅 자동화(Test automation) 접근법
– 일반적인 접근법
• GUI Testing
– 키 입력 및 마우스 클릭과 같은 UI 이벤트 생성 및 UI에서 발생하는 변경 사항을 관
찰하여 해당 동작이 올바른 지 검증
• API driven Testing
– 테스트 중인 동작을 확인하기 위해 Application의 Programming Interface(API)
사용
» SW의 UI를 우회하며, 다양한 입력 변수를 테스트하고 반환된 결과를 검증할 수
있다.
45. 2-1 Jenkins이란?
•
– CI를 가능하게 하는 툴 중 하나.
• 지속적인 빌드 자동화
• 지속적인 테스트 자동화
• 지속적인 배포 자동화
– 이전에는 Hudson으로 불림
• Oracle과의 상표권 분쟁으로 Jenkins라는 이름으로 변경
– JAVA로 작성된 OpenSource 자동화 서버
– Servlet Container 기반
• Servlet은 Web에서의 Java Programming을 위해 탄생
• Servlet Container는 Servlet과 Web Server의 통신 제공
• 대표적으로 Apache Tomcat가 있다.
46. 2-1 Jenkins이란?
•
– CI를 가능하게 하는 툴 중 하나.
• 지속적인 빌드 자동화
• 지속적인 테스트 자동화
• 지속적인 배포 자동화
– 이전에는 Hudson으로 불림
• Oracle과의 상표권 분쟁으로 Jenkins라는 이름으로 Fork
– JAVA로 작성된 OpenSource 자동화 서버
– Servlet Container 기반
• Servlet은 Web에서의 Java Programming을 위해 탄생
• Servlet Container는 Servlet과 Web Server의 통신 제공
• 대표적으로 Apache Tomcat가 있다.
47. 2-1 Jenkins이란?
•
– CI를 가능하게 하는 툴 중 하나.
• 지속적인 빌드 자동화
• 지속적인 테스트 자동화
• 지속적인 배포 자동화
– 이전에는 Hudson으로 불림
• Oracle과의 상표권 분쟁으로 Jenkins라는 이름으로 Fork
– JAVA로 작성된 OpenSource 자동화 서버
– Servlet Container 기반
• Servlet은 Web에서의 Java Programming을 위해 탄생
• Servlet Container는 Servlet과 Web Server의 통신 제공
• 대표적으로 Apache Tomcat가 있다.
48. 2-1 Jenkins이란?
•
– CI를 가능하게 하는 툴 중 하나.
• 지속적인 빌드 자동화
• 지속적인 테스트 자동화
• 지속적인 배포 자동화
– 이전에는 Hudson으로 불림
• Oracle과의 상표권 분쟁으로 Jenkins라는 이름으로 Fork
– JAVA로 작성된 OpenSource 자동화 서버
– Servlet Container 기반
• Servlet은 Web에서의 Java Programming을 위해 탄생
• Servlet Container는 Servlet과 Web Server의 통신 제공
• 대표적으로 Apache Tomcat가 있다.
49. 2-1 Jenkins이란?
•
– 다양한 Plugin 제공
• Git, CVS, Subversion, ssh, Ant, Maven, Groovy, MSBuild …
– 시각적인 형태(UI) 또는 신규 기능 추가 기능
– Plugin을 통한 다양한 포맷의 자동화 보고서 생성 가능
– ETC…
52. 2-2 Jenkins 환경 구축
• 설치
– 설치는 크게 두가지로 나눌 수 있다.
• WAR(Web Application Archive) 파일을 이용한 설치
– JDK와 JRE가 설치되어 있어야 한다.
– WAR파일을 단독으로 직접 실행하거나 Servlet Container(Apache Tomcat,
Jetty, ETC…) 에서 실행을 하여야 한다.
» Jenkins 단독 실행 시, Jetty를 사용한다. (https://wiki.jenkins-ci.org/display/JENKINS/Containers)
• 패키지 관리자인 Yum, APT 등을 이용한 설치 또는 Installer
– Windows와 Mac OS
– Servlet Container에서 가동이 아닌 Jenkins를 단독 실행하는 것과 다름 없다.
– 만약 가동중인 Web Server가 있다면 포트가 겹치지 않도록 해야한다.
53. 2-2 Jenkins 환경 구축
• 설치
– 설치는 크게 두가지로 나눌 수 있다.
• WAR(Web Application Archive) 파일을 이용한 설치
– JDK와 JRE가 설치되어 있어야 한다.
– WAR파일을 단독으로 직접 실행하거나 Servlet Container(Apache Tomcat,
Jetty, ETC…) 에서 실행을 하여야 한다.
» Jenkins 단독 실행 시, Jetty를 사용한다. (https://wiki.jenkins-ci.org/display/JENKINS/Containers)
• 패키지 관리자인 Yum, APT 등을 이용한 설치 또는 Installer
– Windows와 Mac OS
– Servlet Container에서 가동이 아닌 Jenkins를 단독 실행하는 것과 다름 없다.
– 만약 가동중인 Web Server가 있다면 포트가 겹치지 않도록 해야한다.
54. 2-2 Jenkins 환경 구축
• 설치
– 강의에 사용한 환경은 다음과 같다.
– Odroid U2
• 1.7GHz Exynos4412 Prime Cortex-
A9 Quad-core processor with PoP
(Package on Package) 2Gbyte
LPDDR2 880Mega Data Rate
– OS : Ubuntu Server 14.04 LTS
– Linux Kernel : 3.8.13.30
– APT를 이용한 Jenkins 설치.
55. 2-2 Jenkins 환경 구축
• 설치
– 패키지 관리자를 통한 설치
– https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu
• wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo
apt-key add –
• sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ >
/etc/apt/sources.list.d/jenkins.list‘
• sudo apt-get update
• sudo apt-get install jenkins
56. 2-2 Jenkins 환경 구축
• 초기 설정
– 설치 완료 후 http://IP:JenkinsPORT 첫 접속 시 화면
57. 2-2 Jenkins 환경 구축
• 초기 설정
– 기다리면 화면이 바뀌는데, Jenkins 설치를 위해 Unlock을 한다.
58. 2-2 Jenkins 환경 구축
• 초기 설정
– Unlock을 위해 root계정으로 해당 경로 파일의 내용 입력
59. 2-2 Jenkins 환경 구축
• 초기 설정
– Unlock을 위해 root계정으로 해당 경로 파일의 내용 입력
60. 2-2 Jenkins 환경 구축
• 초기 설정
– 입력 후 설치를 진행하기 위해 Continue 클릭
76. 2-2 Jenkins 환경 구축
• Job
– Freestyle Project
• 간단한 빌드 & 배포 프로젝트에
용이.
– Pipeline
• 빌드 & 테스트 & 배포 등 여러
작업의 흐름(Workflow)가 필요
할 경우에 용이.
– ETC
• …
77. 2-2 Jenkins 환경 구축
• Item
– Freestyle Project
• 일반적인 Jenkins Project.
– Pipeline
• 여러 작업의 흐름(Workflow)가
필요할 경우에 용이.
– ETC
• …
– 강의는 Freestyle Project로 진행합니다.
78. 2-2 Jenkins 환경 구축
• Freestyle Project
– 설정하는 것은 크게 4가지
• 소스 코드 관리
• 빌드 유발
• Build
• 빌드 후 조치
79. 2-2 Jenkins 환경 구축
• Freestyle Project
– 소스 코드 관리
• Jenkins의 소스 코드 관리 Plugin에 추가된 목록이다.
• 해당 Jenkins Freestyle Project에서 사용할 플러그인을 선택한다.
• 강의에서는 Git으로 진행하도록 하겠다.
80. 2-2 Jenkins 환경 구축
• Freestyle Project
– 소스 코드 관리 (Git)
• 해당 Git의 Repository URL과 계정을 추가하며, 특정 Branch명을 기입한
다.
81. 2-2 Jenkins 환경 구축
• Freestyle Project
– 소스 코드 관리 (Git)
• 필요시 해당 Git의 Repository 확인 및 사용을 위해 계정을 등록 할 수도 있
다.
82. 2-2 Jenkins 환경 구축
• Freestyle Project
– 소스 코드 관리 (Git)
• 필요시 해당 Git의 Repository 확인 및 사용을 위해 계정을 등록 할 수도 있
다.
83. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 유발
• 빌드를 원격으로 유발
• 다른 프로젝트 완료 시 유발
• 정기적으로 빌드를 유발
• 직접 SCM(Source Code Management)에 Push가 될 경우 가져온다.
• 강의에서는 Poll SCM으로 진행한다.
84. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 유발 (Poll SCM)
• SCM의 Push 확인을 위해 Schedule를 등록한다.
– 이때의 Schedule는 다음과 같은 규칙으로 작성한다.
» MINUTE HOUR DOM MONTH DOW
• MINUTE Minutes within the hour (0–59)
• HOUR The hour of the day (0–23)
• DOM The day of the month (1–31)
• MONTH The month (1–12)
• DOW The day of the week (0–7) where 0 and 7 are Sunday.
85. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 유발 (Poll SCM) Schedule 예시
• # every fifteen minutes (perhaps at :07, :22, :37, :52)
– H/15 * * * *
• # every ten minutes in the first half of every hour (three times,
perhaps at :04, :14, :24)
– H(0-29)/10 * * * *
• # once every two hours at 45 minutes past the hour starting at 9:45
AM and finishing at 3:45 PM every weekday.
– 45 9-16/2 * * 1-5
• # once in every two hours slot between 9 AM and 5 PM every
weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
– H H(9-16)/2 * * 1-5
• # once a day on the 1st and 15th of every month except December
– H H 1,15 1-11 *
86. 2-2 Jenkins 환경 구축
• Freestyle Project
– Build
• Build를 유발하기 위해, 다양한 Build Step를 작성 할 수 있다.
87. 2-2 Jenkins 환경 구축
• Freestyle Project
– Build
• Build Step를 이용, 테스트 작업도 추가할 수 있다.
88. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치
• 테스트 결과 및 다른 프로젝트 빌드 등을 할 수 있다.
89. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : 테스트 결과
• 다음과 같이 해당 Job 메인 화면에서 테스트 결과도 볼 수 있다.
90. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치
• Build Step의 SSH을 이용하여, 배포 작업도 추가할 수 있다.
• SSH 추가를 위해, Jenkins 관리에 들어간다.
91. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• Jenkins 관리에서 시스템 설정에 들어간다.
92. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• Jenkins 관리에서 시스템 설정에 들어간다.
93. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• 시스템 설정 하단에 있는 Publish over SSH의 SSH Server 추가 버튼 클릭
94. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• 시스템 설정 하단에 있는 Publish over SSH의 SSH Server 추가 버튼 클릭
95. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• 해당 SSH Server의 정보를 입력하고 제일 하단의 저장을 클릭한다.
96. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• 해당 SSH Server의 정보를 입력하고 추가를 클릭한다.
예시
97. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• 해당 SSH Server의 정보를 입력하고 추가를 클릭한다.
예시
98. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• 해당 SSH Server의 정보를 입력하고 추가를 클릭한다.
예시
99. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• 배포작업을 추가할 해당 Freestyle Project로 돌아와서 추가한다.
– 빌드 후 조치 추가 버튼 클릭 시 나타나는 Send Build artifacts over SSH
100. 2-2 Jenkins 환경 구축
• Freestyle Project
– 빌드 후 조치 : SSH을 이용한 배포 작업 추가
• Send Build artifacts over SSH 설정
101. 2-2 Jenkins 환경 구축
• Freestyle Project
– Send Build artifacts over SSH 설정
• SSH Server Name : Jenkins 설정에서 등록한 SSH 서버 중 배포 서버 선택
• Source Files : 어떠한 파일을 배포할지 설정.
– ex) **/*.jar은 모든 폴더의 jar로 끝나는 파일을 의미
• Remove prefix 제거할 접두사 의미.
– ex) Hello/World 입력 시 : /Hello/World/Jenkins/test.jar -> /Jenkins/test.jar
• Remove directory : Jenkins 설정에서 등록한 SSH의 Remote Directory
• 뒤로 추가로 입력되는 디렉토리.
– 주의사항 : 해당 디렉토리가 없을 경우 추가해 주지 않기 때문에 추가해주어야함.
• Exec command : 배포 후 실행 할 명령어 입력.
106. 3 CI Demo
• Jenkins Job Info
– Project 개발 언어 : Node.js
– 사용한 Jenkins Plugin
• Cobertura Plugin
– 코드 커버리지 관련 Plugin
• SSH Agent Plugin
– SSH 관련 Plugin
• SSH plugin
– SSH 관련 Plugin