SpringBoot + Gradle jib + Github Actions + ECR + ECS 파이프라인 구축하기
Github Actions 기능을 활용한 CI/CD 파이프라인 구축하기 입니다.
먼저 jib는 구글에서 만든 자바 어플리케이션을 컨테이너화 하는 도구 입니다.
gradle plugin : https://github.com/GoogleContainerTools/jib/blob/master/jib-gradle-plugin/README.md
1. 프로젝트 build.gradle 에 plugin을 추가하고 jib 설정을 합니다.
profile 별로 jib 옵션이 다르게 하기 위해 gradle 파일을 분리 했습니다.
로컬에서 ECR에 정상 등록을 확인하기 위해서는 credHelper(https://github.com/GoogleContainerTools/jib/blob/master/jib-gradle-plugin/README.md#using-docker-credential-helpers) 를 사용해야 하지만 Github Actions에서는 필요하지 않습니다.
2. AWS ECR, ECS(Fargate) 를 설정하고 task-definition.json 파일을 만듭니다.
작업 정의에 있는 JSON 을 통해 task-definition json파일을 만듭니다. 해당 json을 그대로 사용하면 아래 오류가 나옵니다. 오류 나는 내용들을 제거하여 프로젝트 최상단에 파일을 만듭니다.
* UnexpectedParameter: Unexpected key ‘compatibilities’ found in params
* UnexpectedParameter: Unexpected key ‘taskDefinitionArn’ found in params
* UnexpectedParameter: Unexpected key ‘requiresAttributes’ found in params
* UnexpectedParameter: Unexpected key ‘revision’ found in params
* UnexpectedParameter: Unexpected key ‘status’ found in params
나머지 AWS 관련 내용은 생략하도록 하겠습니다.
3. ./github/workflows 에 actions에서 사용할 yml 파일을 생성 합니다.
build 는 dev branch에 push 되었을 때 진행 되도록 하고 결과를 slack으로 받도록 하였습니다. 필요한 secret 값들을 등록합니다.
4. dev branch에 push 시 Actions가 동작 함을 확인 할 수 있습니다.
감사합니다.