컨테이너 기반으로 애플리케이션을 운영하기위해서는 소스 코드가 변경될 때 마다 도커 이미지를 새로 빌드하고, 운영서버에서 업데이트 된 신규 이미지를 다운로드할 수 있도록 도커 레지스트리에 신규 이미지를 업로드해야한다.

해당 글에서는 Gitab CI 파이프라인으로 아래 작업을 동작시켜보는 것을 목표로한다.

먼저 수동으로 해보기

자동화를 하기위해서는 해당 작업을 수동으로 처음부터 끝까지 할 수 있어야 한다고 생각한다. 그래야 왜 자동화를 해야하는지에 대해서 생각해볼 수 있고, 어떤 부분을 신경써서 자동화해야하는지 알 수 있기 때문이다.

# 1.source code 가져오기
git clone -b develop [email protected]:shseoul14/wrtn_django.git
cd wrtn_django

# 2.docker image build하기
docker build -t wrtn_django .
docker tag wrtn_django:latest 165998515795.dkr.ecr.ap-northeast-2.amazonaws.com/wrtn_django:latest

# 3.image를 ECR에 push하기 
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 165998515795.dkr.ecr.ap-northeast-2.amazonaws.com
docker push 165998515795.dkr.ecr.ap-northeast-2.amazonaws.com/wrtn_django:latest

Gitlap CI Pipeline 작성해보기

신경 써줘서 처리해야할 부분이 2가지 정도 보인다.

  1. 어떻게 원하는 branch를 타겟팅 할것 인가?

    → pipeline의 rules / only를 통해 제어 할 수 있다.

  2. runner에 aws cli 환경 구성을 어떻게 해줘야 할 것인가?

    → 1안. aws cli가 설치된 도커 이미지 기반으로 job을 실행한다. (runner를 직접 호스팅하는 경우 가능)

      2안. aws cil를 설치하는 스크립트를 추가한다
    

gitlab이 제공해주는 Docker pipeline template 파일을 수정해서 파이프라인을 작성했다.