[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을 생성합니다.
- Jenkins 관리 페이지로 이동합니다.
- “새로운 Item”을 선택하고 Job 이름을 입력합니다.
- “Freestyle project”를 선택합니다.
- 소스 코드 관리에서 Git을 선택하고, Repository URL을 입력합니다.
- 빌드 유발 탭에서 “GitHub hook trigger for GITScm polling”을 선택합니다.
- 빌드 환경에서 “Provide Node & npm bin/ folders to PATH”를 활성화합니다.
- 빌드 탭에서 빌드 스크립트를 작성합니다. 예를 들어,
python -m pytest
을 사용하여 테스트를 실행할 수 있습니다.
3. CD 설정하기
CI를 통해 빌드가 성공하면, CD 파이프라인을 설정하여 프로젝트를 배포할 수 있습니다.
- CI Job 설정 페이지에서 “빌드 후 작업”을 선택하고 “다른 프로젝트 빌드”를 선택합니다.
- 빌드할 프로젝트와 매개 변수를 지정합니다. 예를 들어, 다음과 같은 배포 스크립트를 사용할 수 있습니다.
#!/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 파이프라인을 구축한 후, 실제로 프로젝트가 원활하게 작동하는지 확인해야합니다. 이를 위해 자동화된 테스트와 모니터링을 설정할 수 있습니다.
- CI Job 설정 페이지로 이동합니다.
- “빌드 후 작업”에 “실행 가능한 Shell 스크립트 추가”를 선택합니다.
- 테스트 스크립트를 작성합니다. 예를 들어,
python -m pytest
을 사용하여 테스트를 실행할 수 있습니다.
마무리
이렇게 파이썬 프로젝트를 CI/CD 구축하는 방법에 대해 알아보았습니다. CI/CD를 통해 프로젝트의 안정성과 효율성을 향상시킬 수 있으며, 지속적인 개선과 배포가 가능해집니다.