이미 알고 계신 분들도 계실지 모르겠지만, 파이썬 패키지의 개발 및 배포과정에서는 품질 보증을 위한 CI/CD 파이프라인이 필수적입니다. 이를 통해 지속적인 통합과 전달을 실현할 수 있으며, 협업하고 있는 팀원들과 효율적으로 작업할 수 있습니다.
파이썬 패키지 관리를 위한 도구 중 하나인 Poetry는 패키지 의존성 해결 및 관리를 자동화해주는 툴입니다. Poetry를 사용하면 프로젝트에 필요한 종속성을 관리하고, 가상환경을 생성하며, 의존성 버전 충돌 문제를 해결할 수 있습니다.
이번에는 Poetry를 사용하여 품질 보증을 위한 CI/CD 파이프라인을 자동화해보겠습니다.
1. Poetry 프로젝트 설정
Poetry를 사용하여 프로젝트를 생성하고 설정하는 것은 매우 간단합니다. 아래의 명령어를 사용하여 Poetry를 설치합니다.
$ pip install poetry
Poetry가 설치되었다면, 프로젝트 디렉토리로 이동하여 아래의 명령어를 실행하여 프로젝트를 설정합니다.
$ poetry init
명령어를 실행하면 프로젝트에 대한 기본 정보를 입력할 수 있는 대화식 프롬프트가 나타납니다. 프로젝트의 이름, 버전, 저작자 등을 입력해주세요. 이렇게 입력한 정보는 pyproject.toml
파일에 저장됩니다.
2. 패키지 의존성 관리
Poetry를 사용하여 프로젝트에 필요한 패키지 의존성을 관리할 수 있습니다. pyproject.toml
파일에 의존성을 추가하고 싶은 패키지를 아래와 같이 추가할 수 있습니다.
[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.26.0"
Poetry는 의존성 관리를 위해 lock 파일(poetry.lock
)을 생성합니다. 이 파일을 사용하여 패키지 의존성을 정확히 관리할 수 있습니다. pyproject.toml
파일에 패키지를 추가하고 실행하면 자동으로 lock 파일이 생성됩니다.
3. CI/CD 파이프라인 자동화
이제 CI/CD 파이프라인을 자동화하기 위해 프로젝트를 GitHub 레포지토리와 연동하고, 각 단계에 대한 설정을 진행해보겠습니다.
- 테스트: 프로젝트의 테스트를 자동으로 실행하여 품질을 검증합니다.
- 빌드: 테스트를 성공적으로 마친 후, 패키지를 빌드하여 배포 가능한 상태로 만듭니다.
- 배포: 빌드된 패키지를 배포하는 단계입니다.
이러한 단계를 자동화하기 위해 GitHub Actions를 사용할 수 있습니다. 프로젝트 루트 경로에 .github/workflows/ci-cd.yml
파일을 생성하고, 아래의 내용으로 파일을 작성해주세요.
name: CI/CD Pipeline
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install Poetry
run: poetry install
- name: Run tests
run: poetry run pytest
build:
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install Poetry
run: poetry install
- name: Build package
run: poetry build
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install Poetry
run: poetry install --no-dev
- name: Publish package
run: poetry publish --username ${{ secrets.PYPI_USERNAME }} --password ${{ secrets.PYPI_PASSWORD }}
위의 작업이 완료되면, 모든 변경 사항이 푸시될 때마다 CI/CD 파이프라인이 실행됩니다. 테스트가 성공하면 자동으로 패키지 빌드 및 배포가 이루어집니다.
4. 참고 자료
- Poetry 공식 문서: https://python-poetry.org/
- GitHub Actions 공식 문서: https://docs.github.com/en/actions
위의 예제를 통해 Poetry를 사용하여 품질 보증을 위한 CI/CD 파이프라인을 자동화하는 방법을 알아보았습니다. GitHub Actions와의 연동을 통해 지속적인 통합과 전달을 간편하게 구축할 수 있습니다.