jenkins GUI Web에서 초기 설정하기
gui web 접속
- 초기 admin 비밀번호를 입력후 continue를 누른다.
// 초기 admin 비밀번호는 initialAdminPassword 파일에 있다.
// 해당 명령어 결과를 복사하여 붙여넣는다.
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- jenkins에서 추천하는 플러그인들을 설치한다.
jenkins item 만들기
- 깃헙에 대해 jenkins credentials 를 만든다
- Username에는 깃헙 아이디
- Password에는 깃헙 비밀번호를 기입한다.
- Add 버튼을 눌러 생성한다.
- 방금 생성한 credential을 선택한다.
- private 저장소 설정하기
- Poll SCM 의 Schedule 란에 * * * * * 을 기입한다.
- 분 시간 일 월 주 간격으로 job을 실행하는 의미이다. (참고)
- 2 * * * : 2분 간격으로 job을 실행하는 것이다
- * * * * : 매 분 간격으로 job을 실행한다
- 젠킨스는 매분 간격으로 github에서 commit이 생길 떄마다 clone하여 빌드한다.
- spring boot 의 build.gradle을 실행하기 위해 'Invoke Gradle script'를 선택한다.
- Gradle Wrapper를 사용가능하게 만들고, Wrapper의 위치 기입한다.
- wrapper는 스프링 부트 프로젝트의 루트 경로에 있으므로 ./을 입력
- Tasks란에 docker를 기입한다.
- gradle의 docker 라는 task를 실행한다.
- 나머지 task(build docker, dockerTagDockerHub)를 실행한다.
- 단, '--exclude-task test'옵션을 붙여 빌드 오류가 나지 않도록한다.
- build.gradle에서 해당 task에 대한 test 코드를 입력했다면 '--exclude-task test'옵션이 필요하지 않다.
- 위의 Task들을 실행하면 젠킨스는 자동적으로 github에서 clone한 스프링 부트 소스를 도커 이미지로 만든다.
- jenkins가 gradlew로 만든 도커 이미지를 run 하는 명령어를 입력하기 위해서 'Execute shell'를 선택한다.
- docker rm -f spring_example_app
- spring_example_app 이라는 이름의 컨테이너를 먼저 remove한다.
- docker run -d --name spring_example_app -p 80:80 --network docker-network guswns3371/spring-example:1.0-SNAPSHOT
- spring_example_app 이라는 이름의 컨테이너를 run한다.
- -p 80:80 : 포트는 80으로 설정한다.
- --network docker-network : docker-network라는 네트워크에 연결한다.
- guswns3371/spring-example:1.0-SNAPSHOT : 도커 이미지 이름이다.