├── 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 | ![jenkins icon](https://jenkins-ci.org/sites/default/files/jenkins_logo.png) 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 | ![jenkins_1](image/jenkins_1.png) 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 | ![jenkins_2](image/jenkins_2.png) 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 | ![jenkins_3](image/jenkins_3.png) 117 | - Maven 설정 118 | ![jenkins_4](image/jenkins_4.png) 119 | - Groovy 설정 120 | ![jenkins_5](image/jenkins_5.png) 121 | - Gradle 설정 122 | ![jenkins_6](image/jenkins_6.png) 123 | - Grails 설정 124 | ![jenkins_7](image/jenkins_7.png) 125 | - Email 알림 설정 126 | ![jenkins_8](image/jenkins_8.png) 127 | - gmail 에서 SMTP service 제공 128 | - gmail 에서 '로그인 및 보안' 탭에서 보안수준 설정 129 | ![jenkins_9](image/jenkins_9.png) 130 | - FTP 서버 설정 131 | ![jenkins_10](image/jenkins_10.png) 132 | 133 | --- 134 | 135 | ## Maven 프로젝트 빌드 설정 136 | 1. 프로젝트 생성 : item 이름 설정후, ***'Maven project'*** 클릭 137 | ![jenkins_11](image/jenkins_11.png) 138 | 2. 프로젝트 설명 : 프로젝트 설명과 '오래된 빌드 삭제' 여부 선택 139 | ![jenkins_12](image/jenkins_12.png) 140 | 3. 소스 코드 관리 : Git 소스 관리 프로젝트인 경우 141 | ![jenkins_13](image/jenkins_13.png) 142 | 4. 빌드 설정 : 매 30분마다 확인 후 변경 내용이 있으면 빌드 143 | ![jenkins_14](image/jenkins_14.png) 144 | 5. 빌드 전에 실행할 내용 : 샘플 스크립트 파일을 실행 145 | ![jenkins_15](image/jenkins_15.png) 146 | 6. 빌드 : pom.xml 의 경로 설정 147 | ![jenkins_16](image/jenkins_16.png) 148 | 7. 빌드 후에 실행할 내용 : 그루비 문법 테스트 149 | ![jenkins_17](image/jenkins_17.png) 150 | 8. Email 알림 설정 151 | ![jenkins_18](image/jenkins_18.png) 152 | 153 | --- 154 | 155 | ### Gradle 프로젝트 빌드 156 | #### 프로젝트 생성시 'FreeStyle Project' 선택 후 빌드 설정을 해줌 157 | ![jenkins_21](image/jenkins_21.png) 158 | 159 | --- 160 | 161 | ### Grails 프로젝트 빌드 162 | #### 프로젝트 생성시 'FreeStyle Project' 선택 후 빌드 설정을 해줌 163 | 164 | ![jenkins_22](image/jenkins_22.png) 165 | 166 | --- 167 | 168 | ## 프로젝트 빌드 169 | - 빌드하기 : 'Build Now' 를 클릭 170 | 171 | ![jenkins_19](image/jenkins_19.png) 172 | 173 | - 빌드결과 174 | 175 | ![jenkins_20](image/jenkins_20.png) 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 | ![jenkins_23](image/jenkins_23.png) 189 | 190 | #### FTP 서버로 war 파일 전송하기 191 | 1. 젠킨스 관리에서 플러그인(Publish Over FTP) 및 시스템 설정 후 192 | 2. 등록한 FTP 서버 선택 193 | 3. war 파일의 경로 설정 194 | 4. 빌드 195 | ![jenkins_24](image/jenkins_24.png) 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 | ![jenkins_25](image/jenkins_25.png) 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 | ![jenkins_26](image/jenkins_26.png) 238 | ![jenkins_27](image/jenkins_27.png) 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 --------------------------------------------------------------------------------