Docker와 Jenkins로 CI / CD 환경 구축하기[4] - Backend 빌드배포

안상철·2022년 6월 21일
0

CI / CD

목록 보기
4/8
post-thumbnail

먼저 플러그인을 설치하고 아래 과정을 순서대로 진행하면 됩니다.
젠킨스를 설치할 때 기본으로 다운되어 있는 플러그인도 있으니, 없는 플러그인만 찾아서 설치 해 주면 됩니다.

Artifact Manager on S3 plugin
S3 publisher plugin
AWS Elastic Beanstalk Publisher Plugin

위 3가지 플러그인을 다운 받으면, 저 플러그인들을 작동시키기 위한 플러그인을 추가로 설치합니다.

1. 젠킨스 내 s3 / eb 프로필 설정

aws 플러그인을 활용해 AWS EB에 배포하려면 Jenkins → 시스템 설정 →Amazon S3 profiles와 Deploy into AWS Elastic Beanstalk 를 먼저 설정 해 줘야 합니다.


AWS IAM 계정 및 권한을 만들 때 받았던 credential~.csv 파일을 열어서 두 가지 설정을 완료 합니다.
Test Connection을 클릭하면 Credential이 잘 입력 되었는지, 접속 권한이 있는지 확인할 수 있습니다.

2. 젠킨스 내 프로젝트 파일의 build ~ deploy 구성 설정

다음은 젠킨스에서 배포 할 프로젝트를 클릭 한 다음, 구성을 선택 해 빌드 정보를 구성합니다.

아래 사진 순서대로 작성하면 됩니다.

  • 개인정보 등은 하얀색/초록색으로 가렸으니 참고 해 주세요.
  • 원래는 API도 도메인을 새로 생성해서 사용해야 하지만, 편의상 EB가 기본으로 제공 해 주는 Url을 사용하도록 하겠습니다.

(1) General


프로젝트에 대한 설명과 필요한 경우 Git Parameter / String Parameter를 작성합니다.

(2) 소스코드 유발

소스코드 관리에서 소스가 저장되어있는 Repo의 주소를 적어줍니다.

아래 Credential은 이 Repo에 접근할 수 있는 권한을 가진 Credential이어야 합니다.
없다면 위에서 설정한 S3 / EB Credential처럼 한 개 생성 해 주면 됩니다.

(3) Build / AWS Credentails and Region


프로젝트를 빌드 할 빌드 도구를 설정합니다. Gradle로 빌드했다면 위 처럼 Gradle을 선택하고 Tasks에는 이전 빌드를 지우고 새로 jar파일을 빌드할 수 있도록 clean build를 입력 해 줍니다.

아래 Credential은 위에서 입력한 크리덴셜을 추가하고, 소스가 올라가는 EB/S3의 Region을 입력합니다. 보통 ap-northeast-2(서울) 입니다. 아래 Number of Attempts는 기본값인 30으로 둡니다.

좌측 하단의 Validate Credentials를 클릭하면 연결정보를 확인할 수 있는데, 크리덴셜이 적합하지 않으면 ERROR, 정상이라면 이 크리덴셜이 가지고 있는 IAM 권한 및 접근 가능한 EB/어플리케이션 등의 내용을 출력 해 줍니다.

(4) Application and Enviroment ~ Versioning




Application and Environment 에는 배포할 어플리케이션 이름과 EB환경 이름을 적어줍니다. 역시 우측 하단의 Validate~를 클릭하면 어떤 환경에 연결되었는지 출력 해 줍니다.

Packaging의 Root Object 위치는 이 젠킨스의 Workspace에 업로드 된 소스를 대상으로 위치를 찾아갑니다. build된 JAR파일이 어디에 저장되는지 먼저 숙지하고 이 젠킨스의 Workspace를 확인해 보면 됩니다.

Uploading에는 버킷 이름을 적어줍니다. Prefix는 생략했습니다.

Versioning에는 배포 할 어플리케이션 버전을 어떻게 관리할 것인지 설정하는 부분입니다. 한 번 빌드 될 때 마다 같은 이름으로 버전을 1씩 올려서 배포 할 것이기 때문에,

${BUILD_TAG} 매개변수를 작성 해 줍니다. 아래 Description Format은 넘어갑니다.

(5) Deployment

기본으로 위 사진처럼 설정되어 있습니다. 그대로 두면 됩니다.

(6) 빌드 후 조치


젠킨스가 프로젝트를 빌드 한 다음 어떤 행동을 할 지 설정하는 부분입니다. 여기서는 젠킨스가 소스를 빌드 한 다음 S3에 JAR파일을 ZIP으로 압축해서 업로드 → EB에 업로드 → 환경 업데이트 및 배포 순으로 작동하게 됩니다.

EB에 접속할 수 있는 Credential을 선택하고(바로 아래 AWS Credentials lookup by name 는 넘어갑니다. AWS Credential을 userName으로 찾는 부분인 것 같은데, 미리 저장 해 준 크리덴셜을 사용하면 됩니다.)
Region은 똑같이 서울리전, 아래 Application Name에는 EB어플리케이션 이름을 적어줍니다.

Version Label Format.Version Description Format은 둘 다 ${BUILD_TAG}로 작성하고 아래 Fail if any failures를 체크 해 줍니다. 한 번이라도 실패하면 업로드 및 배포를 하지 않도록 합니다.

이제 방금 설정 한 프로젝트를 빌드 해 봅니다. 젠킨스 메인 화면에서 실행합니다.

GIT에서 마지막 소스 버전을 찾아 업데이트 → jar 빌드 → 빌드한 파일을 AWS에 업로드하고 배포합니다.

eb에서 기본으로 제공하는 api url에 접속하면 배포가 완료 된 것을 확인할 수 있습니다.

3. 참고 내용

간혹 젠킨스에서 빌드 할 때, 젠킨스 내 용량이 부족해서 빌드가 되지 않는 경우가 있습니다. 젠킨스가 예상하는 빌드 output 메모리와 실제 빌드 된 파일의 크기가 맞지 않으면 에러가 발생합니다. workspace나 build 기록 등이 너무 많이 쌓여서 발생하는게 대부분이기 때문에 이 두 가지를 주기적으로 비워줘야 합니다.

단!! api는 workspace를 비우지 않고 빌드 기록만 지워줍니다. workspace를 비우면 빌드가 되지 않습니다.

  • 빌드 구성의 General 설정에 ‘오래된 빌드 삭제’를 선택합니다.
  • 다른 설정은 기본으로 두고 빌드 기록을 보관 할 최대 갯수를 입력합니다.(이력보다는 갯수 설정이 좋습니다. )
profile
웹 개발자(FE / BE) anna입니다.

0개의 댓글