[python] Poetry를 사용하여 파이썬 패키지의 품질 보증을 위한 CI/CD 파이프라인을 자동화하여 지속적인 통합과 전달을 실현할 수 있습니다.

이미 알고 계신 분들도 계실지 모르겠지만, 파이썬 패키지의 개발 및 배포과정에서는 품질 보증을 위한 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 레포지토리와 연동하고, 각 단계에 대한 설정을 진행해보겠습니다.

  1. 테스트: 프로젝트의 테스트를 자동으로 실행하여 품질을 검증합니다.
  2. 빌드: 테스트를 성공적으로 마친 후, 패키지를 빌드하여 배포 가능한 상태로 만듭니다.
  3. 배포: 빌드된 패키지를 배포하는 단계입니다.

이러한 단계를 자동화하기 위해 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를 사용하여 품질 보증을 위한 CI/CD 파이프라인을 자동화하는 방법을 알아보았습니다. GitHub Actions와의 연동을 통해 지속적인 통합과 전달을 간편하게 구축할 수 있습니다.