[python] 파이썬 프로젝트 배포를 위한 CI/CD 구축 방법

이 블로그 포스트에서는 파이썬 프로젝트의 지속적인 통합 및 배포를 위한 CI/CD(Continuous Integration/Deployment) 구축 방법에 대해 알아보겠습니다. CI/CD는 개발 과정에서의 자동화와 지속적인 배포를 통해 소프트웨어의 품질을 향상시키고 변화에 신속하게 대응할 수 있게 해줍니다.

1. Git과 통합하기

프로젝트를 Git 저장소에 올리고, CI/CD 시스템과의 연동을 위해 설정을 해야합니다. 이를 위해 Git 저장소를 생성하고 프로젝트를 커밋하고 푸시해야합니다.

$ git init
$ git add .
$ git commit -m "Initial commit"
$ git remote add origin [repository-url]
$ git push -u origin master

2. CI 설정하기

가장 인기있는 CI 도구인 Jenkins를 사용하여 파이썬 프로젝트의 CI를 구축해보겠습니다. Jenkins를 설치하고 새로운 Job을 생성합니다.

  1. Jenkins 관리 페이지로 이동합니다.
  2. “새로운 Item”을 선택하고 Job 이름을 입력합니다.
  3. “Freestyle project”를 선택합니다.
  4. 소스 코드 관리에서 Git을 선택하고, Repository URL을 입력합니다.
  5. 빌드 유발 탭에서 “GitHub hook trigger for GITScm polling”을 선택합니다.
  6. 빌드 환경에서 “Provide Node & npm bin/ folders to PATH”를 활성화합니다.
  7. 빌드 탭에서 빌드 스크립트를 작성합니다. 예를 들어, python -m pytest을 사용하여 테스트를 실행할 수 있습니다.

3. CD 설정하기

CI를 통해 빌드가 성공하면, CD 파이프라인을 설정하여 프로젝트를 배포할 수 있습니다.

  1. CI Job 설정 페이지에서 “빌드 후 작업”을 선택하고 “다른 프로젝트 빌드”를 선택합니다.
  2. 빌드할 프로젝트와 매개 변수를 지정합니다. 예를 들어, 다음과 같은 배포 스크립트를 사용할 수 있습니다.
#!/bin/bash

# 푸시한 브랜치 가져오기
BRANCH=$(git symbolic-ref --short HEAD)

# 배포할 서버 IP
SERVER_IP=[server-ip]

# 배포할 디렉토리
DEPLOY_DIR=/path/to/deploy

# 서버에 접속하여 코드 업데이트 및 설정 적용
ssh -i ~/.ssh/id_rsa $SERVER_IP "cd $DEPLOY_DIR && git pull origin $BRANCH && pip install -r requirements.txt && systemctl restart myapp.service"

4. 테스트와 모니터링

CI/CD 파이프라인을 구축한 후, 실제로 프로젝트가 원활하게 작동하는지 확인해야합니다. 이를 위해 자동화된 테스트와 모니터링을 설정할 수 있습니다.

  1. CI Job 설정 페이지로 이동합니다.
  2. “빌드 후 작업”에 “실행 가능한 Shell 스크립트 추가”를 선택합니다.
  3. 테스트 스크립트를 작성합니다. 예를 들어, python -m pytest을 사용하여 테스트를 실행할 수 있습니다.

마무리

이렇게 파이썬 프로젝트를 CI/CD 구축하는 방법에 대해 알아보았습니다. CI/CD를 통해 프로젝트의 안정성과 효율성을 향상시킬 수 있으며, 지속적인 개선과 배포가 가능해집니다.

참고 자료