[CI/CD자동화 시리즈(4)]Jenkins 빌드 자동화 설정
IT/DevOps

[CI/CD자동화 시리즈(4)]Jenkins 빌드 자동화 설정

반응형

안녕하세요 오늘은 앞에서 준비한 jenkins로 새 프로젝트를 만들어 빌드 자동화 설정을 해보겠습니다.

먼저 앞에서 구축한 jenkins 서버에 접속합니다. 

* 참고 Amazon Linux1에 Jenkins 설치 : https://kim-dragon.tistory.com/23?category=839107

 

[CI/CD자동화 시리즈(1)]AWS EC2 Amazon Linux1에 Jenkins설치

안녕하세요 오늘부터 차근차근 쿠버네티스의 배포 자동화 구축을 시리즈로 연재해 볼까 합니다. 그 첫번째가 Jenkins 설치 입니다. 배포 자동화를 위해 AWS에서는 AWS code series를 사용할 수 있지만 이는 베포..

kim-dragon.tistory.com

젠킨스의 초기 포트는 8080 입니다만, nginx를 사용하여 80포트로 포워딩 설정을 해놓았기 때문에 서버의 public ip으로 접근하면 됩니다.

왼쪽 카테고리에서 새로운 프로젝트를 생성합니다. [새로운 item] - [Freestyle project] 

프로젝트를 생성하면 다음과 같은 설정 메뉴들이 나옵니다. 여기 General에 GitHub project를 선택하고 앞서 생성했던 git 저장소의 URL을 입력합니다.

* 참고 Git hub 가입및 저장소 생성 : https://kim-dragon.tistory.com/27?category=839107

 

[CI/CD자동화 시리즈(3)]Git hub와 Docker hub 가입 부터 설치까지

오늘은 빌드/베포 자동화를 위해 Git hub, Docker hub 가입하고 Amazone linux1에 git과 docker hub를 설치해보겠습니다. 먼저 도커 홈페이지에 접속합니다. https://hub.docker.com/ Docker Hub Docker Certified..

kim-dragon.tistory.com

아래와 같이 설정합니다.

 

소스 코드 관리 설정에서 Git을 설정하고 빌드할 소스의 저장소를 아래와 같이 설정합니다.

(만약 저장소가 Private 저장소라면 별도의 Credentials설정을 해야합니다.)

 

그 다음 실제로 빌드할 설정은 아래와 같습니다.

앞서 빌드를 위해 메이븐을 설치 했었죠. 이 메이븐으로 빌드를 하기위한 쉘명령어를 입력하는 부분입니다.

여기서 중요한 부분은 "mvn clean package -DskipTests=true" 입니다.

다음은 도커 빌드 부분입니다. -t 옵션은 생성할 이미지의 이름으 지정하는 부분이며 -f 는 도커파일 위치를 입력해주는 부분입니다.

 

끝으로 해당 도커이미지를 어디에 넣을 것인지 설정하는 부분 입니다. 앞에서 만들었던 Docker Hub 저장소를 입력해줍니다. 제 docker hub 저장소 이름은 yongman50/simple-api 입니다. 만약 특정 버전이 있으면 Tag에 버전을 입력하면됩니다. 

Registry credentials에는 도커 허브의 ID/PW 를 입력해줍니다.

 

자 여기까지 빌드 프로젝트 설정을 끝냈습니다. 마지막으로 젠킨스 시스템설정을 해야합니다.

[Jenkins 관리] - [시스템 설정] - [Docker Builder] - Docker URL에 unix:///var/run/docker.sock 를 입력하고 Test Connection을 클릭

 

해당 프로젝트를 클릭하고 Build now를 클릭하고 결과를 지켜 보면 됩니다.

참고로 저는 55번째에 처음 성공하였네요.

 

앞에 54번의 빌드 실패를 디버깅해보면 대부분 jenkins에서 maven을 실행할때 권한문제 였습니다.

위에서 젠킨스 프로젝트 설정에서 Execute shell은 jekins 설치시 생성되는 jenkins유저가 실행하는데 mvn이나 docker 명령어를 실행하지 못하는 문제였습니다.

 

이렇게 해서 Git에 있는 소스코들을 빌드 하여 Docker hub로 image를 말아서 저장하였고 최종적으로 빌드 자동화가 이루어졌습니다.

도커 이미지를 만들었으니 이를 활용해야겠죠? 어떻게? docker 오케스트레이션의 de-fecto인 쿠버네티스를 이용 할 것입니다. 

그러면 이어서 쿠버네티스에서 베포 자동화를 어떻게 할 것인가? 에 대해서 계속 해서 연재 하도록 하겠습니다.

반응형