Skip to content

build-wheel: use multiple versions of a pr in testpipy #2162

build-wheel: use multiple versions of a pr in testpipy

build-wheel: use multiple versions of a pr in testpipy #2162

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
build_wheel:
name: Build wheels
uses: ./.github/workflows/build-wheel.yml
testpypi:
name: Publish package to TestPyPI
if: github.event_name == 'pull_request'
needs:
- build_wheel
runs-on: ubuntu-latest
environment:
name: ${{ github.event_name }}
url: https://test.pypi.org/p/cx-Freeze
permissions:
id-token: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: wheelhouse
pattern: cx-freeze-whl-*
merge-multiple: true
- name: Publish package to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: wheelhouse/
repository-url: https://test.pypi.org/legacy/
skip-existing: true
verbose: true
tests:
needs:
- build_wheel
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-14]
python-version: ['3.9', '3.10', '3.11', '3.12']
include:
- os: macos-13 # macos-13 is x86_64
python-version: '3.9'
- os: macos-13
python-version: '3.10'
exclude:
- os: macos-14 # macos-14 is arm64 (apple silicon)
python-version: '3.9'
- os: macos-14
python-version: '3.10'
defaults:
run:
shell: bash
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: |
**/requirements.txt
**/requirements-test.txt
- name: Download the wheel
uses: actions/download-artifact@v4
with:
name: cx-freeze-whl-${{ matrix.os }}
path: wheelhouse
- name: Install dependencies (Linux)
if: runner.os == 'Linux'
run: sudo apt-get install -qy --allow-downgrades alien cpio=2.13+dfsg-7 fakeroot rpm
- name: Install dependencies to test
run: |
uv pip install --system -r requirements.txt -r requirements-test.txt
uv pip install --system cx_Freeze --no-index --no-deps -f wheelhouse --reinstall
- name: Generate coverage report
run: pytest -nauto --cov="cx_Freeze" --cov-report=xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
use_oidc: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) }}
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
tests_extra:
needs:
- build_wheel
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest]
python-version: ['3.10']
extra-requirement:
- lief==0.14.1
- lief==0.13.2
- lief-disabled
- pywin32
defaults:
run:
shell: bash
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: |
**/requirements.txt
**/requirements-test.txt
- name: Download the wheel
uses: actions/download-artifact@v4
with:
name: cx-freeze-whl-${{ matrix.os }}
path: wheelhouse
- name: Install dependencies to test
run: |
uv pip install --system -r requirements.txt -r requirements-test.txt
uv pip install --system cx_Freeze --no-index --no-deps -f wheelhouse --reinstall
- name: Generate coverage report
run: |
if [ "${{ matrix.extra-requirement }}" == "lief-disabled" ]; then
export CX_FREEZE_BIND=imagehlp
else
uv pip install --system "${{ matrix.extra-requirement }}"
fi
pytest -nauto --cov="cx_Freeze" --cov-report=xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
use_oidc: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) }}
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
tests_unix_binary_wheel:
needs:
- build_wheel
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.10', '3.12']
defaults:
run:
shell: bash
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: |
**/requirements.txt
**/requirements-test.txt
- name: Download the wheel
uses: actions/download-artifact@v4
with:
name: cx-freeze-whl-${{ matrix.os }}
path: wheelhouse
- name: Install dependencies to test
run: |
uv pip install --system -r requirements.txt -r requirements-test.txt
uv pip install --system cx_Freeze --no-index --no-deps -f wheelhouse --reinstall
- name: Install dependencies - extra
run: |
if [ "${{ matrix.python-version }}" == "3.10" ]; then
uv pip install --system -i https://pypi.anaconda.org/intel/simple numpy
fi
uv pip install --system pandas
- name: Generate coverage report
run: pytest -nauto --cov="cx_Freeze" --cov-report=xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
use_oidc: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) }}
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}