├── README.md
└── image
├── jenkins_1.png
├── jenkins_10.png
├── jenkins_11.png
├── jenkins_12.png
├── jenkins_13.png
├── jenkins_14.png
├── jenkins_15.png
├── jenkins_16.png
├── jenkins_17.png
├── jenkins_18.png
├── jenkins_19.png
├── jenkins_2.png
├── jenkins_20.png
├── jenkins_21.png
├── jenkins_22.png
├── jenkins_23.png
├── jenkins_24.png
├── jenkins_25.png
├── jenkins_26.png
├── jenkins_27.png
├── jenkins_3.png
├── jenkins_4.png
├── jenkins_5.png
├── jenkins_6.png
├── jenkins_7.png
├── jenkins_8.png
└── jenkins_9.png
/README.md:
--------------------------------------------------------------------------------
1 | # 젠킨스(Jenkins) 로 자동 배포하기
2 |
3 | 
4 |
5 | ## 젠킨스(Jenkins) 란?
6 | - 오픈소스 지속적 통합 CI(continuous intergration) 툴로 JAVA로 만들어 졌음
7 | - csv, svn, git 등의 소스 툴을 지원하고 ant와 maven등의 빌드 툴을 지원함
8 | - 배포 파일은 Java Web Archive(.war) 형태로 제공
9 | - 다양한 플러그인을 지원함
10 |
11 | ---
12 |
13 | ## 지속적인 통합(CI, Continuous Integration)
14 | - 팀의 구성원들이 작업한 내용을 정기적으로 통합하는 것
15 | - 지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것
16 | - 작은 단위의 작업, 빈번한 적용. 지속적인 통합은 모든 개발을 완료한 뒤에 ***퀄리티 컨트롤(QC)*** 을 적용하는 고전적인 방법을 대체하는 방법
17 | - 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이 맞추어져 있음
18 |
19 | ### 퀄리티 컨트롤(QC, Quality Control)
20 | - 엔티티 생산에 관련된 모든 품질 요인을 검토하는 과정
21 |
22 | ---
23 |
24 | ## 젠킨스(Jenkins) 기능
25 | - 소스 코드 체크아웃
26 | - 분산 빌드
27 | - 빌드 및 테스트 자동화
28 | - 테스트 보고서 작성
29 | - Groovy script 를 이용한 Job 스케줄링 기능
30 | - 커맨드라인 인터페이스 제공
31 | - 윈도우커맨드 스케줄링 실행 가능
32 | - 실행결과를 통보
33 | - 결과물을 저장
34 | - 자동 배포
35 |
36 | ---
37 |
38 | ## 젠킨스(Jenkins) 설치
39 |
40 | - ### homebrew 를 이용한 젠킨스 설치
41 | > brew install jenkins
42 |
43 | - ### yum 을 이용한 젠킨스 설치
44 | > wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
45 | >
46 | > rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
47 | >
48 | > yum install jenkins
49 |
50 | ---
51 |
52 | ## 젠킨스(Jenkins) 시작/종료
53 | - 설치 후 자동실행됨
54 |
55 | 
56 | - 시작 명령어
57 | > launchctl load homebrew.mxcl.jenkins.plist
58 | >
59 | > service jenkins start
60 |
61 | - 종료 명령어
62 | > launchctl unload homebrew.mxcl.jenkins.plist
63 | >
64 | > service jenkins stop
65 |
66 |
67 | ---
68 |
69 | ## 젠킨스(Jenkins) 관리 설정
70 | 
71 |
72 | ---
73 |
74 | ### 플러그인 설정
75 |
76 | - 깃헙 관련 플러그인
77 |
78 | ```
79 | Git plugin
80 | Github plugin
81 | ```
82 |
83 | - 그루비 플러그인
84 |
85 | ```
86 | Groovy
87 | ```
88 | - 그래들 플러그인
89 |
90 | ```
91 | Gradle plugin
92 | ```
93 | - 그레일즈 플러그인
94 |
95 | ```
96 | Grails plugin
97 | ```
98 |
99 | - 배포 관련 플러그인
100 |
101 | ```
102 | Deploy to container plugin
103 | ```
104 |
105 | - FTP 관련 플러그인
106 |
107 | ```
108 | Publish Over FTP
109 | ```
110 |
111 | ---
112 |
113 | ### 시스템 설정
114 |
115 | - JDK 설정
116 | 
117 | - Maven 설정
118 | 
119 | - Groovy 설정
120 | 
121 | - Gradle 설정
122 | 
123 | - Grails 설정
124 | 
125 | - Email 알림 설정
126 | 
127 | - gmail 에서 SMTP service 제공
128 | - gmail 에서 '로그인 및 보안' 탭에서 보안수준 설정
129 | 
130 | - FTP 서버 설정
131 | 
132 |
133 | ---
134 |
135 | ## Maven 프로젝트 빌드 설정
136 | 1. 프로젝트 생성 : item 이름 설정후, ***'Maven project'*** 클릭
137 | 
138 | 2. 프로젝트 설명 : 프로젝트 설명과 '오래된 빌드 삭제' 여부 선택
139 | 
140 | 3. 소스 코드 관리 : Git 소스 관리 프로젝트인 경우
141 | 
142 | 4. 빌드 설정 : 매 30분마다 확인 후 변경 내용이 있으면 빌드
143 | 
144 | 5. 빌드 전에 실행할 내용 : 샘플 스크립트 파일을 실행
145 | 
146 | 6. 빌드 : pom.xml 의 경로 설정
147 | 
148 | 7. 빌드 후에 실행할 내용 : 그루비 문법 테스트
149 | 
150 | 8. Email 알림 설정
151 | 
152 |
153 | ---
154 |
155 | ### Gradle 프로젝트 빌드
156 | #### 프로젝트 생성시 'FreeStyle Project' 선택 후 빌드 설정을 해줌
157 | 
158 |
159 | ---
160 |
161 | ### Grails 프로젝트 빌드
162 | #### 프로젝트 생성시 'FreeStyle Project' 선택 후 빌드 설정을 해줌
163 |
164 | 
165 |
166 | ---
167 |
168 | ## 프로젝트 빌드
169 | - 빌드하기 : 'Build Now' 를 클릭
170 |
171 | 
172 |
173 | - 빌드결과
174 |
175 | 
176 |
177 | ---
178 |
179 | ## 추가 기능
180 |
181 | #### 깃헙 에서 푸시 하면, 자동 빌드 하기
182 | 1. 빌드유발에서 'Build when a change is pushed to GitHub' 체크박스 선택
183 | 2. Github 프로젝트에서 'Settings' 클릭
184 | 3. 'Webhooks & Services' 탭 클릭
185 | 4. Add Service 에서 'Jenkins (GitHub plugin)' 클릭
186 | 5. ***Jenkins hook url*** 을 설정 ***(127.0.0.1:8080 또는 localhost:8080 은 안됨)***
187 | 6. 빌드
188 | 
189 |
190 | #### FTP 서버로 war 파일 전송하기
191 | 1. 젠킨스 관리에서 플러그인(Publish Over FTP) 및 시스템 설정 후
192 | 2. 등록한 FTP 서버 선택
193 | 3. war 파일의 경로 설정
194 | 4. 빌드
195 | 
196 |
197 |
198 | #### Tomcat 서버에 war 파일 띄우기
199 | ```
200 |
201 |
202 |
203 |
204 |
205 | ```
206 | 1. tomcat/conf 에서 ***tomcat-users.xml*** 파일에서 위의 내용 추가
207 | 2. 젠킨스 관리에서 플러그인(Deploy to container plugin) 및 시스템 설정 후
208 | 3. 톰캣서버 버젼 선택
209 | 4. tomcat-users.xml 에 등록한 username, password 입력 후
210 | 5. ***Tomcat URL 설정***
211 | 6. 빌드
212 | 
213 |
214 | #### 테스트 리포트 설정하기
215 | ```
216 |
217 | org.jenkins-ci.plugins
218 | plugin
219 | 1.542
220 |
221 |
222 |
223 | jenkins-releases
224 | http://repo.jenkins-ci.org/releases
225 |
226 |
227 | repo.jenkins-ci.org
228 | http://repo.jenkins-ci.org/public
229 |
230 |
231 | ```
232 |
233 | 1. 프로젝트 pom.xml 위의 내용을 추가
234 | 2. 테스트케이스 작성 후
235 | 3. 빌드
236 |
237 | 
238 | 
239 |
240 | ---
241 |
242 | ## 참고자료
243 |
244 | - 지속적인 통합 위키백과
245 |
246 |
247 |
248 | - 퀄리티 컨트롤 위키백과
249 |
250 |
251 |
252 | - 관련 블로그
253 |
254 | -
255 | -
256 | -
257 | -
258 | -
259 | -
260 | -
261 |
262 | ---
263 |
--------------------------------------------------------------------------------
/image/jenkins_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_1.png
--------------------------------------------------------------------------------
/image/jenkins_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_10.png
--------------------------------------------------------------------------------
/image/jenkins_11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_11.png
--------------------------------------------------------------------------------
/image/jenkins_12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_12.png
--------------------------------------------------------------------------------
/image/jenkins_13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_13.png
--------------------------------------------------------------------------------
/image/jenkins_14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_14.png
--------------------------------------------------------------------------------
/image/jenkins_15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_15.png
--------------------------------------------------------------------------------
/image/jenkins_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_16.png
--------------------------------------------------------------------------------
/image/jenkins_17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_17.png
--------------------------------------------------------------------------------
/image/jenkins_18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_18.png
--------------------------------------------------------------------------------
/image/jenkins_19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_19.png
--------------------------------------------------------------------------------
/image/jenkins_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_2.png
--------------------------------------------------------------------------------
/image/jenkins_20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_20.png
--------------------------------------------------------------------------------
/image/jenkins_21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_21.png
--------------------------------------------------------------------------------
/image/jenkins_22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_22.png
--------------------------------------------------------------------------------
/image/jenkins_23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_23.png
--------------------------------------------------------------------------------
/image/jenkins_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_24.png
--------------------------------------------------------------------------------
/image/jenkins_25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_25.png
--------------------------------------------------------------------------------
/image/jenkins_26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_26.png
--------------------------------------------------------------------------------
/image/jenkins_27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_27.png
--------------------------------------------------------------------------------
/image/jenkins_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_3.png
--------------------------------------------------------------------------------
/image/jenkins_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_4.png
--------------------------------------------------------------------------------
/image/jenkins_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_5.png
--------------------------------------------------------------------------------
/image/jenkins_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_6.png
--------------------------------------------------------------------------------
/image/jenkins_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_7.png
--------------------------------------------------------------------------------
/image/jenkins_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_8.png
--------------------------------------------------------------------------------
/image/jenkins_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yongdae-Kim/HowToUseJenkins/7a8e65af246f51732f50bc0a71cb0a459076115f/image/jenkins_9.png
--------------------------------------------------------------------------------