SpringBoot + Gradle jib + Github Actions + ECR + ECS 파이프라인 구축하기

Kevin Park
3 min readJan 2, 2020

--

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가 동작 함을 확인 할 수 있습니다.

감사합니다.

--

--