본문 바로가기

⭐ CICD/Elastic Beanstalk & Jenkins

Elastic Beanstalk와 Jenkins로 CI/CD 구현(1)

- 일단 스프링 부트 프로젝트를 생성하기 위해 스프링 이니셜라이저 사이트로 이동한다.

https://start.spring.io/

아래와같이 서정하고 제너레이터를 클릭하여 파일을 다운받는다.

- 인텔리J를 실행시키고, 스프링 이니셜라이저에서 다운받은 파일을 오픈한다.

- java -> com.example.CI.CD -> HomeController.java 파일을 생성하고, 아래의 코드를 작성하여 넣는다.

package com.example.CI.CD;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {
    @GetMapping("/")
    public String home() {
        return "home";
    }
}

- 리소스 -> 템프릿 -> home.html 파일을 생성하고 아래의 간단한 코드를 넣어준다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>SpringBoot Thymeleaf 예제</title>
</head>
<body>
Hello World!!
</body>
</html>

- html 파일을 실행하면 아래와 같이 웹브라우저 에서 볼수 있다.

- 스프링 부트 서버를 실행하고 localhost:8080 으로 접속하면 아래와 같은 화면을 동일하게 볼 수 있다.

- gradle 디펜던시에서 bootWar를 추가해주고, 오른쪽에 gradle 탭에서 bootWar를 실행시킨다.

- 실행이 완료되면 아래의 화면에서와 같이 libs -> application.war 파일이 생성이 됩니다.

- 현재까지 작업한 소스파일을 Github에 등록을 합니다.

- Github의 이름을 CI/CD로 등록을 했기때문에 레포지토리 name을 설정해주시고, share를 클릭하여 공유합니다.

(깃 허브의 이름은 각자가 편한 이름으로 등록해줘도 무방합니다. 만약 레파지토리에 동일한 이름이 없다면 신규로 생성됩니다.)

 - Github에 등록할 대상을 확인하고 add 를 클릭합니다.

- 커밋 메세지에는 나중에 어떤작업을 했는지 알아볼수 있게 이력을 남깁니다.

- 테스트 소스코드를 Github에 공유하는 작업을 완료 하였습니다.

- 이제 Elastic Beanstalk를 생성해 보도록 하겠습니다.

- 새환경 생성을 클릭하여 새로운 웹서버 환경 구성을 생성합니다.

- 아래의 환경설정을 따라서 수행한다. 마지막에는 추가옵션 구성을 선택하여, 추가옵션을 구성한다.

- 추가옵션 구성 (오토스케일링 - 인스턴스 최소 2로 변경, 배포방식 롤링, 배치크기 고정 1로변경)

- 모든 설정을 저장 후 환경 생성을 클릭한다.

- 환경 생성을 클릭하면 아래와같이 환경설정 화면창이 나타난다.

- 정상적으로 생성된 모습, 해당 url을 클릭하여 웹페이지가 정상적으로 뜨는지 확인하자.

- 아래와같이 나온다면, 성공.

- 이전에 환경설정에서 생성시 최소 인스턴스를 2로 설정했기 때문에 2개의 인스턴스가 생성된것을 확인 할 수있다.

- 오토스케일링 그룹과 로드밸런서에 들어가서 확인하면, 해당 인스턴스들이 설정된것을 확인할 수있다.

- 이제 이전에 생성한 war파일을 수동으로 배포하는 작업을 해보겠습니다.

- 업로드 배포를 클릭

- 파일선택을 클릭하여 이전에 생성한 war파일을 선택합니다. 버전은 임의의 버전명을 정해줍니다.

- 배포를 하고있는 상태입니다.

- 배포후 해당 url을 클릭하면 아래와 같이 정상적으로 배포된것을 확인 할 수있다.

- 롤백 수행, 애플리케이션 버전을 클릭하면 이전에 배포되어 있던 버전까지 확인이 가능하다.

- 롤백을 하고싶은 버전을 클릭 후 작업 -> 배포를 클릭하면 이전버전으로 배포가 된다.

- 이전버전으로 배포된 모습

- 다음 페이지에 이어서 하겠습니다.