Heim >Backend-Entwicklung >Python-Tutorial >Beschleunigen Sie CI mit UV ⚡

Beschleunigen Sie CI mit UV ⚡

Susan Sarandon
Susan SarandonOriginal
2024-11-04 00:39:03907Durchsuche

Speed up CI with uv ⚡

Wir können UV verwenden, um Linting und Tests auf GitHub-Aktionen etwa 1,5-mal so schnell durchzuführen.

Fusseln

Bei Verwendung von Pre-Commit zum Flusen:

name: Lint

on: [push, pull_request, workflow_dispatch]

env:
  FORCE_COLOR: 1

permissions:
  contents: read

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false
      - uses: actions/setup-python@v5
        with:
          python-version: "3.x"
          cache: pip
      - uses: pre-commit/action@v3.0.1

Wir können pre-commit/action durch tox-dev/action-pre-commit-uv ersetzen:

       - uses: actions/setup-python@v5
         with:
           python-version: "3.x"
-          cache: pip
-      - uses: pre-commit/action@v3.0.1
+      - uses: tox-dev/action-pre-commit-uv@v1
name: Lint

on: [push, pull_request, workflow_dispatch]

env:
  FORCE_COLOR: 1

permissions:
  contents: read

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false
      - uses: actions/setup-python@v5
        with:
          python-version: "3.x"
      - uses: tox-dev/action-pre-commit-uv@v1

Das bedeutet, dass uv virtuelle Umgebungen erstellt und Pakete für das Pre-Commit installiert, was für den anfänglichen Seed-Vorgang schneller ist, wenn kein Cache vorhanden ist.

Flusenvergleich

Zum Beispiel: python/blurb#32

Before After Times faster
No cache 60s 37s 1.62
With cache 11s 11s 1.00

Testen

Beim Testen mit Tox:

name: Test

on: [push, pull_request, workflow_dispatch]

permissions:
  contents: read

env:
  FORCE_COLOR: 1

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]

    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
          allow-prereleases: true
          cache: pip

      - name: Install dependencies
        run: |
          python --version
          python -m pip install -U pip
          python -m pip install -U tox

      - name: Tox tests
        run: |
          tox -e py

Wir können Tox durch Tox-UV ersetzen:

       - name: Set up Python ${{ matrix.python-version }}
         uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
           allow-prereleases: true
-          cache: pip

-      - name: Install dependencies
-        run: |
-          python --version
-          python -m pip install -U pip
-          python -m pip install -U tox
+      - name: Install uv
+        uses: hynek/setup-cached-uv@v2

       - name: Tox tests
         run: |
-          tox -e py
+          uvx --with tox-uv tox -e py
name: Test

on: [push, pull_request, workflow_dispatch]

permissions:
  contents: read

env:
  FORCE_COLOR: 1

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]

    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
          allow-prereleases: true

      - name: Install uv
        uses: hynek/setup-cached-uv@v2

      - name: Tox tests
        run: |
          uvx --with tox-uv tox -e py

tox-uv ist ein Tox-Plugin zum Ersetzen von Virtualenv und Pip durch UV in Ihren Tox-Umgebungen. Wir müssen nur uv installieren und uvx verwenden, um sowohl tox-uv zu installieren als auch tox auszuführen, um die Installation von tox, der virtuellen Umgebung und den darin enthaltenen Abhängigkeiten zu beschleunigen.

Testvergleich

Zum Beispiel: python/blurb#32

Before After Times faster
No cache 2m 0s 1m 26s 1.40
With cache 1m 58s 1m 22s 1.44

Bonus-Tipp

Führen Sie das neue Tool zizmor aus, um Sicherheitsprobleme in GitHub Actions zu finden.


Headerfoto: „Straßenradfahren bei den Olympischen Spielen 1952 in Helsinki“ von Olympia-Kuva Oy & Helsinki City Museum, Public Domain.

Das obige ist der detaillierte Inhalt vonBeschleunigen Sie CI mit UV ⚡. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn