InfoGrab Docs

튜토리얼: CI/CD로 패키지 자동 빌드 및 게시

요약

CI/CD를 사용하여 PyPI 패키지를 빌드하고 게시할 수 있습니다. 이 튜토리얼에서는 샘플 PyPI 패키지를 빌드, 테스트 및 게시하기 위한 새 CI/CD 구성을 만들 것입니다. CI/CD로 패키지를 자동으로 빌드하고 게시하려면:

CI/CD를 사용하여 PyPI 패키지를 빌드하고 게시할 수 있습니다. 자동 빌드는 패키지를 최신 상태로 유지하고 다른 사람들이 사용할 수 있도록 하는 데 도움이 됩니다.

이 튜토리얼에서는 샘플 PyPI 패키지를 빌드, 테스트 및 게시하기 위한 새 CI/CD 구성을 만들 것입니다. 완료되면 파이프라인의 각 단계가 어떻게 작동하는지 더 잘 이해하고 CI/CD를 자신의 패키지 레지스트리 워크플로우에 통합하는 데 편안함을 느낄 것입니다.

CI/CD로 패키지를 자동으로 빌드하고 게시하려면:

  1. .gitlab-ci.yml 파일 만들기
    1. 선택 사항. CI/CD 변수 없이 인증
  2. 파이프라인 확인

시작하기 전에#

이 튜토리얼을 완료하기 전에 다음이 있는지 확인하세요:

  • 테스트 프로젝트. 원하는 Python 프로젝트를 사용할 수 있지만 이 튜토리얼을 위한 프로젝트를 별도로 만드는 것을 고려해 보세요.
  • PyPI 및 GitLab 패키지 레지스트리에 대한 친숙함.

.gitlab-ci.yml 파일 만들기#

모든 CI/CD 구성에는 .gitlab-ci.yml이 필요합니다. 이 파일은 CI/CD 파이프라인의 각 단계를 정의합니다. 이 경우 단계는 다음과 같습니다:

  • build - PyPI 패키지를 빌드합니다.
  • test - 테스트 프레임워크 pytest로 패키지를 검증합니다.
  • publish - 패키지 레지스트리에 패키지를 게시합니다.

.gitlab-ci.yml 파일을 만들려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.

  2. 왼쪽 사이드바에서 코드 > 저장소를 선택합니다.

  3. 파일 목록 위에서 커밋할 브랜치를 선택합니다.

  4. 오른쪽 상단에서 새로 만들기 (+)를 선택합니다.

  5. 파일 이름을 .gitlab-ci.yml로 지정합니다. 더 큰 창에 이 샘플 구성을 붙여넣습니다:

    default:
      image: python:3.9
      cache:
        paths:
          - .pip-cache/
      before_script:
        - python --version
        - pip install --upgrade pip
        - pip install build twine
    
    stages:
      - build
      - test
      - publish
    
    variables:
      PIP_CACHE_DIR: "$CI_PROJECT_DIR/.pip-cache"
    
    build:
      stage: build
      script:
        - python -m build
      artifacts:
        paths:
          - dist/
    
    test:
      stage: test
      script:
        - pip install pytest
        - pip install dist/*.whl
        - pytest
    
    publish:
      stage: publish
      script:
        - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
      rules:
        - if: $CI_COMMIT_TAG
    
  6. 변경 사항 커밋을 선택합니다.

커밋된 코드에 대한 간단한 설명:

  • image - 사용할 Docker 이미지를 지정합니다.
  • stages - 이 파이프라인의 세 단계를 정의합니다.
  • variablescache - PIP가 캐싱을 사용하도록 구성합니다. 이는 후속 파이프라인을 약간 더 빠르게 실행할 수 있습니다.
  • before_script - 세 단계를 완료하는 데 필요한 도구를 설치합니다.
  • build - 패키지를 빌드하고 결과를 아티팩트로 저장합니다.
  • test - pytest를 설치하고 실행하여 패키지를 검증합니다.
  • publish - twine으로 패키지를 패키지 레지스트리에 업로드하되 새 태그가 푸시된 경우에만 합니다. CI_JOB_TOKEN을 사용하여 패키지 레지스트리로 인증합니다.

CI/CD 변수 없이 인증#

패키지 레지스트리로 인증하기 위해 예시 구성은 GitLab CI/CD에서 자동으로 제공되는 CI_JOB_TOKEN을 사용합니다. 외부 PyPI 레지스트리에 게시하려면 프로젝트 설정에서 시크릿 변수를 구성해야 합니다:

  1. 왼쪽 사이드바에서 설정 > CI/CD > 변수를 선택합니다.

  2. 값으로 PyPI API 토큰을 사용하여 PYPI_TOKEN이라는 새 변수를 추가합니다.

  3. .gitlab-ci.yml 파일에서 publish:script를 다음으로 교체합니다:

    script:
    - TWINE_PASSWORD=${PYPI_TOKEN} TWINE_USERNAME=__token__ python -m twine upload dist/*
    

파이프라인 확인#

변경 사항을 커밋하면 파이프라인이 올바르게 실행되는지 확인해야 합니다:

  • 왼쪽 사이드바에서 빌드 > 파이프라인을 선택합니다. 가장 최근 파이프라인에는 이전에 정의된 세 단계가 있어야 합니다.

파이프라인이 실행되지 않은 경우 새 파이프라인을 수동으로 실행하고 성공적으로 완료되는지 확인합니다.

모범 사례#

패키지의 보안과 안정성을 보장하려면 패키지 레지스트리에 게시하기 위한 모범 사례를 따라야 합니다. 추가한 구성은 다음과 같습니다:

  • 파이프라인 속도를 높이기 위해 캐싱을 구현합니다.
  • 아티팩트를 사용하여 단계 간에 빌드된 패키지를 전달합니다.
  • 게시 전에 패키지를 검증하기 위한 테스트 단계를 포함합니다.
  • 인증 토큰과 같은 민감한 정보에 GitLab CI/CD 변수를 사용합니다.
  • 새 Git 태그가 푸시될 때만 게시합니다. 이는 적절하게 버전이 지정된 릴리스만 게시되도록 합니다.

GitLab CI/CD로 패키지를 성공적으로 빌드, 테스트 및 게시했습니다. 유사한 구성을 사용하여 자신의 개발 프로세스를 간소화할 수 있습니다.

튜토리얼: CI/CD로 패키지 자동 빌드 및 게시

원문 보기
요약

CI/CD를 사용하여 PyPI 패키지를 빌드하고 게시할 수 있습니다. 이 튜토리얼에서는 샘플 PyPI 패키지를 빌드, 테스트 및 게시하기 위한 새 CI/CD 구성을 만들 것입니다. CI/CD로 패키지를 자동으로 빌드하고 게시하려면:

CI/CD를 사용하여 PyPI 패키지를 빌드하고 게시할 수 있습니다. 자동 빌드는 패키지를 최신 상태로 유지하고 다른 사람들이 사용할 수 있도록 하는 데 도움이 됩니다.

이 튜토리얼에서는 샘플 PyPI 패키지를 빌드, 테스트 및 게시하기 위한 새 CI/CD 구성을 만들 것입니다. 완료되면 파이프라인의 각 단계가 어떻게 작동하는지 더 잘 이해하고 CI/CD를 자신의 패키지 레지스트리 워크플로우에 통합하는 데 편안함을 느낄 것입니다.

CI/CD로 패키지를 자동으로 빌드하고 게시하려면:

  1. .gitlab-ci.yml 파일 만들기
    1. 선택 사항. CI/CD 변수 없이 인증
  2. 파이프라인 확인

시작하기 전에#

이 튜토리얼을 완료하기 전에 다음이 있는지 확인하세요:

  • 테스트 프로젝트. 원하는 Python 프로젝트를 사용할 수 있지만 이 튜토리얼을 위한 프로젝트를 별도로 만드는 것을 고려해 보세요.
  • PyPI 및 GitLab 패키지 레지스트리에 대한 친숙함.

.gitlab-ci.yml 파일 만들기#

모든 CI/CD 구성에는 .gitlab-ci.yml이 필요합니다. 이 파일은 CI/CD 파이프라인의 각 단계를 정의합니다. 이 경우 단계는 다음과 같습니다:

  • build - PyPI 패키지를 빌드합니다.
  • test - 테스트 프레임워크 pytest로 패키지를 검증합니다.
  • publish - 패키지 레지스트리에 패키지를 게시합니다.

.gitlab-ci.yml 파일을 만들려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.

  2. 왼쪽 사이드바에서 코드 > 저장소를 선택합니다.

  3. 파일 목록 위에서 커밋할 브랜치를 선택합니다.

  4. 오른쪽 상단에서 새로 만들기 (+)를 선택합니다.

  5. 파일 이름을 .gitlab-ci.yml로 지정합니다. 더 큰 창에 이 샘플 구성을 붙여넣습니다:

    default:
      image: python:3.9
      cache:
        paths:
          - .pip-cache/
      before_script:
        - python --version
        - pip install --upgrade pip
        - pip install build twine
    
    stages:
      - build
      - test
      - publish
    
    variables:
      PIP_CACHE_DIR: "$CI_PROJECT_DIR/.pip-cache"
    
    build:
      stage: build
      script:
        - python -m build
      artifacts:
        paths:
          - dist/
    
    test:
      stage: test
      script:
        - pip install pytest
        - pip install dist/*.whl
        - pytest
    
    publish:
      stage: publish
      script:
        - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
      rules:
        - if: $CI_COMMIT_TAG
    
  6. 변경 사항 커밋을 선택합니다.

커밋된 코드에 대한 간단한 설명:

  • image - 사용할 Docker 이미지를 지정합니다.
  • stages - 이 파이프라인의 세 단계를 정의합니다.
  • variablescache - PIP가 캐싱을 사용하도록 구성합니다. 이는 후속 파이프라인을 약간 더 빠르게 실행할 수 있습니다.
  • before_script - 세 단계를 완료하는 데 필요한 도구를 설치합니다.
  • build - 패키지를 빌드하고 결과를 아티팩트로 저장합니다.
  • test - pytest를 설치하고 실행하여 패키지를 검증합니다.
  • publish - twine으로 패키지를 패키지 레지스트리에 업로드하되 새 태그가 푸시된 경우에만 합니다. CI_JOB_TOKEN을 사용하여 패키지 레지스트리로 인증합니다.

CI/CD 변수 없이 인증#

패키지 레지스트리로 인증하기 위해 예시 구성은 GitLab CI/CD에서 자동으로 제공되는 CI_JOB_TOKEN을 사용합니다. 외부 PyPI 레지스트리에 게시하려면 프로젝트 설정에서 시크릿 변수를 구성해야 합니다:

  1. 왼쪽 사이드바에서 설정 > CI/CD > 변수를 선택합니다.

  2. 값으로 PyPI API 토큰을 사용하여 PYPI_TOKEN이라는 새 변수를 추가합니다.

  3. .gitlab-ci.yml 파일에서 publish:script를 다음으로 교체합니다:

    script:
    - TWINE_PASSWORD=${PYPI_TOKEN} TWINE_USERNAME=__token__ python -m twine upload dist/*
    

파이프라인 확인#

변경 사항을 커밋하면 파이프라인이 올바르게 실행되는지 확인해야 합니다:

  • 왼쪽 사이드바에서 빌드 > 파이프라인을 선택합니다. 가장 최근 파이프라인에는 이전에 정의된 세 단계가 있어야 합니다.

파이프라인이 실행되지 않은 경우 새 파이프라인을 수동으로 실행하고 성공적으로 완료되는지 확인합니다.

모범 사례#

패키지의 보안과 안정성을 보장하려면 패키지 레지스트리에 게시하기 위한 모범 사례를 따라야 합니다. 추가한 구성은 다음과 같습니다:

  • 파이프라인 속도를 높이기 위해 캐싱을 구현합니다.
  • 아티팩트를 사용하여 단계 간에 빌드된 패키지를 전달합니다.
  • 게시 전에 패키지를 검증하기 위한 테스트 단계를 포함합니다.
  • 인증 토큰과 같은 민감한 정보에 GitLab CI/CD 변수를 사용합니다.
  • 새 Git 태그가 푸시될 때만 게시합니다. 이는 적절하게 버전이 지정된 릴리스만 게시되도록 합니다.

GitLab CI/CD로 패키지를 성공적으로 빌드, 테스트 및 게시했습니다. 유사한 구성을 사용하여 자신의 개발 프로세스를 간소화할 수 있습니다.