Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Percepatkan CI dengan uv ⚡

Percepatkan CI dengan uv ⚡

Susan Sarandon
Susan Sarandonasal
2024-11-04 00:39:03832semak imbas

Speed up CI with uv ⚡

Kami boleh menggunakan uv untuk membuat linting dan ujian pada Tindakan GitHub sekitar 1.5 kali lebih pantas.

Linting

Apabila menggunakan pra-komit untuk linting:

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

Kami boleh menggantikan pra-komit/tindakan dengan tox-dev/action-pre-commit-uv:

       - 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

Ini bermakna uv akan mencipta persekitaran maya dan memasang pakej untuk pra-komit, yang lebih pantas untuk operasi benih awal apabila tiada cache.

Perbandingan lin

Contohnya: python/blurb#32

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

Menguji

Apabila menguji dengan 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

Kita boleh menggantikan tox dengan tox-uv:

       - 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 ialah pemalam tox untuk menggantikan virtualenv dan pip dengan uv dalam persekitaran tox anda. Kami hanya perlu memasang uv dan menggunakan uvx untuk memasang tox-uv dan menjalankan tox, untuk pemasangan tox yang lebih pantas, persekitaran maya dan kebergantungan di dalamnya.

Perbandingan ujian

Contohnya: python/blurb#32

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

Tip bonus

Jalankan alat zizmor baharu untuk mencari isu keselamatan dalam Tindakan GitHub.


Foto pengepala: "Berbasikal jalan raya di Sukan Olimpik Helsinki 1952" oleh Olympia-Kuva Oy & Muzium Bandar Helsinki, Domain Awam.

Atas ialah kandungan terperinci Percepatkan CI dengan uv ⚡. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn