Spring Boot + Docker + Jenkins + Github

0️⃣ Tech Stack

  • Docker, Spring Boot

  • Jenkins

  • AWS EC2, ECR

  • Github

1️⃣ Before start

VPC 설정

Create a VPC 를 따라 VPC 생성

Ref

보안그룹 설정

2️⃣ Jenkins Server 생성 및 세팅

EC2 생성

  • EC2 생성

  • 탄력적 IP 할당

  • SSH 접속 확인

서버 세팅

  • update package

  • Install Jenkins

  • Install Gradle

  • Install Git

  • Install Docker

Jenkins 접속

  • [EC2 인스턴스 탄력적 IP]:8080 으로 접속

  • 로그인 후 접속

Jenkins와 Github 연동

  • SSH 키 생성

    • 젠킨스 서버에서 Github Project로 접근하기 위한 SSH키

  • Github Deploy Key 등록

    • Github Project > Settings > Deploy Keys > Add deploy key

    • public key 값을 넣어준다.

  • Jenkins Credential 등록

    • Jenkins관리 > Manage Credentials > Credentials

      • Kind : SSH Username with private key

      • ID : 해당 크레덴셜의 ID

    • private key를 크레덴셜로 등록한다.

3️⃣ Dev Server 생성 및 세팅

EC2 생성

  • EC2 생성

    • Amazon Linux

  • 탄력적 IP 할당

  • SSH 접속 확인

Server 세팅

  • update package

  • Install Gradle

  • Install Git

  • Install Docker

4️⃣ Jenkins 서버와 Dev 서버 연결

  • Jenkins Server에서 SSH 키 생성

    • Dev 서버 접근을 위한 키

  • Dev 서버 Public Key 등록

    • 위에서 생성한 키페어 중 public key를 Dev서버의 .ssh/authorized_keys 파일에 추가

  • Publish Over SSH 플러그인 설치

    • Jenkins 관리 > 플러그인 관리 > 설치가능 탭

      • Publish Over SSH 설치 후 재실행

    • Jenkins 관리 > 시스템 관리

      • 해당 페이지에서 Publish Over SSH 영역의 고급 버튼을 눌러 각각의 항목들을 설정

        • Path to Key : 위에서 생성해준 private key 경로를 넣어주세요.

        • Key : Private key 파일안의 내용을 복사 붙여넣기 해주세요.

        • Name : 접속할 ssh 서버의 이름을 지어주세요.

        • Hostname : 접속할 인스턴스의 주소를 넣어주세요.

        • Username : 접속할 유저명을 넣어주세요.

Trouble Shooting

5️⃣ AWS Container Registry 생성 및 이미지 배포

ECR 생성

Jenkins 서버에서 ECR 접속

6️⃣ Jenkins Item 생성

Item 생성

Github 연결

빌드 정보 입력

  • Gradle build

  • Docker build & push

  • Docker pull & Run

Spring Boot Service 배포 확인

7️⃣ 자동 배포화

Github Webhook 연동

  • 플러그인 설치

  • Jenkins Webhook 설정

  • Github Webhook 추가

Ref

Last updated