Project CI/CD

Jihoon·2023년 1월 27일
0

CI/CD

목록 보기
2/3
post-thumbnail

✅ CI/CD Architecture - 인디안 프로젝트

오늘 CI/CD Architecture 그림을 Draw.io를 활용해서 작성했다

  • 아직 깃헙 레포지에 각 브랜치들의 변경 코드들이 푸쉬가 돼있는 상태가 아니라서, 진행하지는 못함

✅ CI/CD 작업 순서

  1. API, DEV Branch에 개발 내용이 푸쉬가 필요
  2. 해당 레포지를 나의 레포지로 Fork 진행
  3. 레포지 Clone 진행 및 Docker Image Build (버전 관리 파일인 Requirements.txt → Api Requirements로 진행 / Issue 가능성 있음)
  4. 생성된 Image를 GCR에 Push
  5. VM Instance 생성 및 GCR의 이미지 VM에 Push
  6. Github Action에 필요한 Key 값들 GCP에서 가져와야 함
  7. 추가적으로, Slack Webhook Key 역시 필요
  8. 모든 Keys가 깃헙 레포지에 추가된다면, dev 브랜치에 푸쉬하여 깃헙 액션이 잘 작동하는 확인
  9. Action 진행 현황 파악 및 배포 완료 시 성공

CI/CD 작업 순서

1. Dockerfile 구축 및 Docker Image 빌드

  • Dockerfile
  1. Backend
  2. Frontend
FROM python:3.8.5-slim-buster

RUN mkdir steamrec

COPY start.sh /steamrec/start.sh
COPY /backend /steamrec/backend
COPY /frontend /steamrec/frontend
COPY requirements.txt /steamrec/requirements.txt

RUN pip install --upgrade pip \ 
&& pip install -r /steamrec/requirements.txt

WORKDIR /steamrec

EXPOSE 8001
CMD ["sh", "start.sh"]

2. Image → GCR Push

  • GCR API 이용 허용 필요

3. VM Instance 생성 및 서비스 계정 생성 필요

  • GCP Console에서 작업
  • 서비스 계정 생성 후 키 값 생성 필요
  • 이후, 권한 부여 작업도 필요

4. Git Repository Secrets에 KEY 값 등 설정

5. ✅ Git workflow 작성

  • 어려웠던 점 : Github Action 실행 과정에 있어서 gcloud 환경을 세팅하는데 있어서 Python의 버전 충돌로 인한 에러를 마주하여 원인을 학습하는 부분에 고충을 겪음
  • 해결 과정 : 학습을 통해 CI/CD를 진행하는데 있어서 Cloud환경과 사용하는 언어의 버전을 맞춰줘야 함을 알 수 있었고, Workflow에 Python 버전을 업데이트 하는 과정을 통해 해결함

   # Python 버전 관리 및 gcloud CLI 설정
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.9'
          
      - uses: google-github-actions/setup-gcloud@v0
        with:
          version: '318.0.0'
          service_account_key: ${{ secrets.SERVICE_ACCOUNT_KEY }}
          project_id: ${{ secrets.GCP_PROJECT_ID }}

🤷‍♂️외부 IP 접근 Error

The startup agent encountered errors. Your container was not started. To inspect the agent's logs use 'sudo journalctl -u konlet-startup' command.

  • 문제 정의: Container 작동 X

  • 원인1 : 애초에 이미지를 빌드하고 컨테이너를 구동했어야 했는데, 당연히 될 거란 생각에 넘어간 게 큰 착오였음.

  • 원인2 : 애초에 이미지를 빌드하고 컨테이너를 구동했어야 했는데, 당연히 될 거란 생각에 넘어간 게 큰 착오였음.

  • 해결방법 : 컨테이너 상에서 어디서 오류가 났는지, 실행을 하고 에러코드확인 및 도커파일 수정

CICD 환경 구동 자료

  • Github Action 작동

  • Slack Team 채널에 알림

profile
장난감이 데이터인 사람

0개의 댓글