[CICD] Jenkins SSH 배포

소스 코드 변경 시 자동 빌드하기

Chron Job: UNIX 기반 OS의 시간 기반 Job Scheduler이다.

아래 Chron Job 기반의 두 가지 방법으로 빌드 트리거 설정을 할 수 있다.

  • Build Periodcally: 일정 시간 마다 빌드를 진행한다.
  • PollSCM: 일정 시간 마다 검사 후 코드 업데이트 사항(commit)이 있다면 빌드를 진행한다.

PollSCM schedule 설정 방법

 

Deploy 

SSH 설정

  1. SSH plugin 설치 (Publish Over SSH)
  2. Jenkins 관리 -> system -> publish over ssh -> ssh sever 추가

로컬에서 다른 서버를 띄웠을 때 Hostname이 localhost라면 젠킨스 자신을 가리키기 때문에 실제 자기 ip를 입력해야한다.
고급에서 use password를 체크해주고 패스워드와 ssh 포트번호를 입력해준다.

Test Configuration을 클릭해서 좌측 하단에 success가 출력되면 성공이다.

 

Jenkins Project 설정

  1. maven project -> build -> goals and options =>  clean compile package
  2. git repository url 등록
  3. build 후 조치 = Send build artifacts over SSH

Transfer set: 복사할 실행 파일

Remove prefix: 결과물 이름에 prefix 제거

Remote directory: 저장 경로

Exec command: 빌드 후 실행할 내용

docker build --tag=[이미지 이름] -f [실행할 도커파일명(default=Dockerfile)] .; # . 현재 폴더 ;는 명령어 구분을 위한 세미콜론
docker run -d -p 8080:8080 --name [컨테이너 이름] [이미지 이름]:[버전]

 

아키텍처

 

트러블슈팅

위 과정을 진행하면서 Jenkins ssh 설정에서 ip를 인터넷에서 my ip를 검색해서 넣었더니 ssh 접속이 안됐다.

  • ifconfig의 en0에 있는 ip로 변경해서 해결

docker 명령어 실행 시 아래와 같은 에러 메세시가 나와서 systemctl 명령으로 docker service를 실행해주었다.

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

 

Reference

인프런 jenkins 강의 - 이도원

도커 실행 오류 해결

 

'DevOps' 카테고리의 다른 글

[CICD] Jenkins 설치 및 기본 세팅  (0) 2023.09.29