Heim >Backend-Entwicklung >Python-Tutorial >Beschleunigen Sie CI mit UV ⚡
Wir können UV verwenden, um Linting und Tests auf GitHub-Aktionen etwa 1,5-mal so schnell durchzuführen.
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.
Zum Beispiel: python/blurb#32
Before | After | Times faster | |
---|---|---|---|
No cache | 60s | 37s | 1.62 |
With cache | 11s | 11s | 1.00 |
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.
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 |
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!