Spring Boot(Gradle) 젠킨스 구축 및 자동배포 - (3) 젠킨스 SSH 생성 후 워커 인스턴스에 등록

젠킨스에서 개인키와 공개키 쌍을 만들어서, 공개키를 워커 인스턴스에 등록해주면

이후 젠킨스에서만 워커에 ssh로 접속 가능

 

  • 젠킨스에서 공개키,개인키 생성
ssh-keygen -t rsa -b 4096 -m PEM

Your public key has been saved in {경로}

확인되는 {경로}에서 생성된 키 확인 가능

 

.pub 붙은게 공개키

안붙은게 개인키

 

공개키를 워커 인스턴스에 등록해야됨

 

첫번째 방법

워커 인스턴스 서버의(root 계정 X, 일반 계정) , root계정 테스트중

일반계정
vi /home/{유저명폴더}/.ssh/authorized_keys

root계정

vi /root/.ssh/authorized_keys

경로에 직접 넣기 / 파일의 맨밑에 생성한 공개키 넣기

※ 주의할 것 : 띄어쓰기나 엔터키 다 지우고 붙여넣기

 

두번째방법 GCP에 등록

공개키 복사 후 GCP의 설정 > 메타데이터 > SSH에 등록

 

필자는 첫번째, 두번째 방법 다해야 되더라...

 

젠킨스에서 워커 인스턴스 환경세팅

 

젠킨스대시보드서 젠킨스관리 > 시스템 설정 

맨밑의 Publish over SSH 확인(플러그인으로 사전에 설치해야됨)

------BEGIN RSA ... ------ 여기부터

------END ... ------여기까지 쫙 복사 후 붙여넣기

※ ---.. 부분을 안붙여서 연결이 처음에 안되더라

 

name : 아무거나, 필자는 gcp에 세팅한 인스턴스 이름이랑 맞춤

hostname : 젠킨스 & 워커인스턴스는 gcp의 같은 네트워크라서 내부 IP 입력

username : 인스턴스접속시 뜨는 계정명

remote director : 업로드할 경로.

 

Test Configuration 클릭 후 Success 뜨면 정상적으로 연결된것

 

 

생성한 Item -> 구성 > 빌드후 조치 추가로 아래 box 클릭

 

push on ssh server에 등록한 워커 인스턴스 추가후 Exec Command에 아래 명령어 입력

github의 웹훅에 의해 가져온 파일을 빌드 > Docker hub에 push 했으니 워커에서 Docker hub에 있는 걸 pull 받은 후 실행 시키는 명령어 (기존 컨테이너를 중지 및 이미지 삭제 후 실행시킴)

sudo docker stop $(sudo docker ps -q) : 모든 컨테이너 중지
sudo docker rmi -f {도커허브계정}/{도커허브 저장소}
sudo docker pull {도커허브계정}/{도커허브 저장소}
sudo docker run -d -p 8090:8090 {도커허브계정}/{도커허브 저장소}

 

https://changhyunit.tistory.com/82

 

[DOCKER & Jenkins & Github] 를 활용한 멀티모듈 spring Boot CI/CD (centos 8)

순서 1. spring boot Dockerfile 작성하기 2. docker로 jenkins설치 3. jenkins로 아이템 생성 (github 연동) 4. jenkins build (docker명령어로 프로젝트 실행) 5. jenkins 컨테이너에 docker 설치 (docker error..

changhyunit.tistory.com

 

https://skyblue300a.tistory.com/14

 

[Jenkins] Docker를 활용한 Spring boot 프로젝트 CI & CD

혼자 생각한대로 배포를 진행해봤는데, 이렇게 하는게 맞는지 아직 잘 모르겠다. 포스팅에 문제점이나 잘못된 점이 있다면 피드백을 받을 수 있으면 좋겠다. Docker 설치 먼저, AWS ec2 인스턴스를

skyblue300a.tistory.com

 

https://more-learn.tistory.com/26?category=796361 

 

Github + Jenkins + Docker로 빌드 / 배포 자동화

저번에 Github에 Commit을 하면 Jenkins에서 다운로드와 Build를 하고 다른 EC2에 자동 배포하는 것까지 했습니다. 이번에는 저번 사용하던 jenkins 서버와 docker를 사용하여 빌드 / 배포 자동화를 해보겠습

more-learn.tistory.com