
GitLab을 이용한 CI/CD 파이프라인 구축하는 스터디를 하면서 공부한 내용을 정리한 포스팅입니다.
포스팅을 참고 하실 분들은 리눅스 환경이 아니라면 먼저 aws ec2인스턴스를 만들고 따라하시는 걸 추천드립니다. 아니면 리눅스 가상환경을 구축해서 해도 좋습니다. (저는 UTM으로 가상환경으로 한번 더 해볼 생각입니다.)

CI/CD는 개발부터 배포까지의 과정을 자동화하는 방법론입니다. 이를 실제 환경에서 구현하려면 CI/CD 파이프라인을 실행할 수 있는 “툴”이 필요합니다. GitLab은 CI/CD 파이프라인을 설계, 구축, 실행할 수 있는 기능을 제공하는 도구 중 하나입니다. GitLab을 통해 CI/CD 파이프라인을 자동으로 실행하는 스크립트를 작성할 수 있으며, 이 스크립트를 활용하여 코드 기반으로 파이프라인을 실행하게 됩니다. 소프트웨어 개발 환경에서는 다양한 CI/CD 도구들이 존재합니다. GitHub, GitLab, Argo CD, 그리고 Jenkins가 대표적인 예시입니다. 이들은 모두 CI/CD를 자동화하기 위해 사용되는 툴입니다.
GitLab 링크를 들어가서 GitLab 가입을 합니다.

전체적인 흐름은 다음과 같습니다.

1. flask 애플리케이션 개발
2. 도커 파일 작성
3. 도커 이미지 생성
4. 도커 이미지 AWS ECR에 푸쉬
5. pull 해서 컨테이너 생성
//////////////////////////
그러나 깃랩을 이용하여 이 과정을 자동화 하여 배포하도록 만들예정입니다.



그룹 우측 상단 New Project를 누르고, 프로젝트를 만듭니다.

저는 test-application이라는 이름으로 만들었습니다.

깃 랩을 클론해서 test-application안에 app.py 간단한 파이썬 플라스크 파일을 만들어서 테스트를 진행할 예정입니다.

지난번에 포스팅한 vsCode를 이용한 원격으로 우분투 서버에 들어와서 app.py와 필요한 파일들을 생성합니다.
VSCode에서 Ubuntu 서버로 원격 SSH 접속

간단하게 app.py를 만들어 주었습니다.

requirements.txt 파일 만들어서 flask 설치해주셔야합니다.

app.py이 잘 실행되는 것을 확인했습니다.
이제 도커 파일을 만들어서 빌드해보도록 하겠습니다. 간단하게 도커파일을 작성합니다.
빌드 완료

이미지 run 완료





단 ! ECR은 회사의 중요한 정보를 가지고 있는 자산 입니다. 그래서 아무나 접근할 수 없도록 접근 권한을 설정합니다. IAM을 이용해서 권한 설정을 합니다.

이렇게 4가지의 명령어들을 수행하면 아래와 같이 푸쉬된 이미지를 확인할 수 있습니다.

그렇다면 저장소에 있는 이미지를 가져와서 잘 실행되는지 테스트를 해보겠습니다.
테스트를 하기 전 방금 올린 도커 image를 삭제하고 테스트 해보겠습니다.
156764cd9517이라는 이미지를 삭제하겠습니다.
docker rmi 156764cd9517 -f
그리고 나서 위 사진에서 URL를 복사해서 저장된 이미지를 실행해보겠습니다.
docker run --name ecr-test -p 5000:5000 <복사한 URL>
테스트 어플리케이션이 잘 나오는 것을 확인할 수 있습니다.

ecr-test로 컨테이너가 실행됩니다.
이렇게 테스트 프로젝트를 만들어서 깃랩에 푸쉬하고, 도커파일을 만들어 ECR 저장소에 푸시까지 해보았습니다. 정말 개발 분야에서 느끼는 건 하나의 목표, 똑같은 결과를 만들기 위해서 정말 여러가지 방법이 있구나 라는 것을 또 한번 느끼는 공부가 되었습니다. 깃랩과 깃랩 러너를 이용한 자동화까지 하면 포스팅이 길어질 것 같아서 나눠서 포스팅을 하도록 하겠습니다.