byteforce

CPN 한국어 자습서 · 외부 문서 한국어 미러

UV 문서 · Guides

GitLab CI/CD에서 uv 사용하기

Using uv in GitLab CI/CD · 원문: docs.astral.sh/uv/guides/integration/gitlab/

아래는 원문을 한국어로 옮긴 미러입니다. 코드·명령은 원문 그대로이며, 가장 최신 정보는 하단 원문 링크에서 확인하세요.

uv 이미지 사용하기

Astral은 uv가 사전 설치된 Docker 이미지를 배포합니다. 워크플로우 요구사항에 맞는 이미지 변형을 선택할 수 있습니다.

.gitlab-ci.yml 예시:

코드 · 명령
variables:
  UV_VERSION: "0.11.24"
  PYTHON_VERSION: "3.12"
  BASE_LAYER: trixie-slim
  # GitLab CI creates a separate mountpoint for the build directory,
  # so we need to copy instead of using hard links.
  UV_LINK_MODE: copy

uv:
  image: ghcr.io/astral-sh/uv:$UV_VERSION-python$PYTHON_VERSION-$BASE_LAYER
  script:
    # your `uv` commands

참고: distroless 이미지의 경우 엔트리포인트를 지정합니다:

코드 · 명령
uv:
  image:
    name: ghcr.io/astral-sh/uv:$UV_VERSION
    entrypoint: [""]
  # ...

캐싱

실행 간 uv 캐시 디렉터리를 캐싱하면 성능이 향상됩니다:

코드 · 명령
uv-install:
  variables:
    UV_CACHE_DIR: .uv-cache
  cache:
    - key:
        files:
          - uv.lock
      paths:
        - $UV_CACHE_DIR
  script:
    # Your `uv` commands
  after_script:
    - uv cache prune --ci

작업 완료 시 uv cache prune --ci를 실행하면 캐시 크기를 줄이는 데 도움이 됩니다.

uv pip 사용하기

uv pip 인터페이스를 사용할 때는 기본적으로 가상환경이 필요합니다. --system 플래그 또는 UV_SYSTEM_PYTHON 변수를 통해 시스템 환경 설치를 활성화합니다.

워크플로우 수준에서 변수를 설정합니다:

코드 · 명령
variables:
  UV_SYSTEM_PYTHON: 1

# [...]

특정 호출에서 이 동작을 비활성화하려면 --no-system을 사용합니다. 캐싱 시 uv.lock 대신 requirements.txt 또는 pyproject.toml을 캐시 키 파일로 사용하는 것을 고려합니다.

원문(영어): https://docs.astral.sh/uv/guides/integration/gitlab/ · 본 문서는 학습용 한국어 번역이며 원본의 권리는 원저작자(Astral)에게 있습니다.

원문(영어): https://docs.astral.sh/uv/guides/integration/gitlab/