UV を使用すると、GitHub Actions でのリンティングとテストを約 1.5 倍の速さで行うことができます。
リンティングに事前コミットを使用する場合:
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
pre-commit/action を 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
これは、uv が仮想環境を作成し、プリコミット用のパッケージをインストールすることを意味します。これにより、キャッシュがない場合の初期シード操作が高速になります。
例: python/blurb#32
Before | After | Times faster | |
---|---|---|---|
No cache | 60s | 37s | 1.62 |
With cache | 11s | 11s | 1.00 |
毒素を使用してテストする場合:
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
tox を 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 は、tox 環境で virtualenv と pip を uv に置き換える tox プラグインです。 uv をインストールするだけでよく、tox、仮想環境、およびその中の依存関係のインストールを高速化するために、tox-uv のインストールと tox の実行の両方に uvx を使用します。
例: python/blurb#32
Before | After | Times faster | |
---|---|---|---|
No cache | 2m 0s | 1m 26s | 1.40 |
With cache | 1m 58s | 1m 22s | 1.44 |
新しいツール zizmor を実行して、GitHub Actions のセキュリティ問題を見つけます。
ヘッダー写真:「1952 年ヘルシンキ オリンピックのロードサイクリング」オリンピア・クバ・オイおよびヘルシンキ市博物館、パブリック ドメイン作成。
以上がUV で CI を高速化 ⚡の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。