Skip to content

GitLab CI/CDでuvを使用する

uvイメージの使用

Astralは、uvがプリインストールされたDockerイメージを提供しています。 ワークフローに適したバリアントを選択してください。

gitlab-ci.yml
variables:
  UV_VERSION: 0.5
  PYTHON_VERSION: 3.12
  BASE_LAYER: bookworm-slim

stages:
  - analysis

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

キャッシュ

ワークフローの実行間でuvキャッシュを保持することで、パフォーマンスを向上させることができます。

uv-install:
  variables:
    UV_CACHE_DIR: .uv-cache
  cache:
    - key:
        files:
          - uv.lock
      paths:
        - $UV_CACHE_DIR
  script:
    # Your `uv` commands
    - uv cache prune --ci

キャッシュの設定に関する詳細は、GitLabキャッシュドキュメントを参照してください。

ジョブの最後にuv cache prune --ciを使用することをお勧めします。これにより、キャッシュサイズが削減されます。詳細については、uvキャッシュドキュメントを参照してください。

uv pipの使用

uvプロジェクトインターフェースの代わりにuv pipインターフェースを使用する場合、uvはデフォルトで仮想環境を必要とします。システム環境にパッケージをインストールできるようにするには、すべてのuv呼び出しで--systemフラグを使用するか、UV_SYSTEM_PYTHON変数を設定します。

UV_SYSTEM_PYTHON変数は、異なるスコープで定義できます。GitLabでの変数とその優先順位の動作についてはこちらを参照してください。

ワークフロー全体でオプトインするには、トップレベルで定義します:

gitlab-ci.yml
variables:
  UV_SYSTEM_PYTHON: 1

# [...]

再度オプトアウトするには、任意のuv呼び出しで--no-systemフラグを使用できます。

キャッシュを保持する場合、キャッシュキーとしてrequirement.txtpyproject.tomlを使用することを検討してください。