diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 4ea0eb33..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,81 +0,0 @@ -name: CI - -on: - pull_request: - types: [opened, synchronize, reopened] - push: - branches: [main] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - -jobs: - quality: - runs-on: ubuntu-22.04 - steps: - - name: Check out - uses: actions/checkout@v4 - - - name: Set up the environment - uses: ./.github/actions/setup-env - - - name: Run pre-commit - run: | - rustup component add rustfmt - pdm run pre-commit run -a --show-diff-on-failure - - - name: Inspect dependencies with deptry - run: | - pdm run deptry python - - tests: - strategy: - matrix: - os: - - name: linux - image: ubuntu-22.04 - - name: macos - image: macos-14 - - name: windows - image: windows-2022 - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', 'pypy3.10'] - fail-fast: false - runs-on: ${{ matrix.os.image }} - name: ${{ matrix.os.name }} (${{ matrix.python-version }}) - steps: - - name: Check out - uses: actions/checkout@v4 - - - name: Set up the environment - uses: ./.github/actions/setup-env - with: - python-version: ${{ matrix.python-version }} - - - name: Check typing - run: pdm run mypy - if: ${{ matrix.os.name == 'linux' }} - - - name: Run unit tests - run: pdm run pytest tests/unit --cov --cov-config=pyproject.toml --cov-report=xml - - - name: Run functional tests - run: pdm run pytest tests/functional -n auto --dist loadgroup - - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - if: ${{ matrix.os.name == 'linux' && matrix.python-version == '3.12' }} - - check-docs: - runs-on: ubuntu-22.04 - steps: - - name: Check out - uses: actions/checkout@v4 - - - name: Set up the environment - uses: ./.github/actions/setup-env - - - name: Check if documentation can be built - run: pdm run mkdocs build -s diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ff9811a6..9d25785d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,12 @@ name: Release on: - release: - types: [published] + pull_request: + types: [opened, synchronize, reopened] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: set-version: @@ -10,15 +14,15 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Export tag - id: vars - run: echo tag=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT +# - name: Export tag +# id: vars +# run: echo tag=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT - name: Update project version run: | sed -i "s/^version = \".*\"/version = \"$RELEASE_VERSION\"/" pyproject.toml env: - RELEASE_VERSION: ${{ steps.vars.outputs.tag }} + RELEASE_VERSION: 1.2.3 - name: Upload updated pyproject.toml uses: actions/upload-artifact@v4 @@ -26,81 +30,22 @@ jobs: name: pyproject-toml path: pyproject.toml - linux: - runs-on: ubuntu-22.04 - needs: [set-version] + build-wheel: strategy: matrix: + os: + - name: linux + image: ubuntu-22.04 + - name: macos + image: macos-14 + - name: windows + image: windows-2022 target: [x86_64, aarch64] python: ['3.12', 'pypy3.10'] - steps: - - name: Check out - uses: actions/checkout@v4 - - - name: Download updated pyproject.toml - uses: actions/download-artifact@v4 - with: - name: pyproject-toml - - - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python }} - - - name: Build wheels - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - args: --release --out dist --interpreter ${{ startsWith(matrix.python, 'pypy') && matrix.python || format('python{0}', matrix.python) }} - sccache: 'true' - manylinux: auto - - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels-linux-${{ matrix.target }}-${{ matrix.python }} - path: dist - - windows: - runs-on: windows-2022 - needs: [set-version] - strategy: - matrix: - target: [x64] - python: ['3.12', 'pypy3.10'] - steps: - - name: Check out - uses: actions/checkout@v4 - - - name: Download updated pyproject.toml - uses: actions/download-artifact@v4 - with: - name: pyproject-toml - - - uses: actions/setup-python@v5 - id: setup-python - with: - python-version: ${{ matrix.python }} - - - name: Build wheels - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - args: --release --out dist --interpreter ${{ steps.setup-python.outputs.python-path }} - sccache: 'true' - - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels-windows-${{ matrix.target }}-${{ matrix.python }} - path: dist - - macos: - runs-on: macos-14 + fail-fast: false + runs-on: ${{ matrix.os.image }} + name: Build wheel for ${{ matrix.os.name }} ${{ matrix.target }} (${{ matrix.python }}) needs: [set-version] - strategy: - matrix: - target: [x86_64, aarch64] - python: ['3.12', 'pypy3.10'] steps: - name: Check out uses: actions/checkout@v4 @@ -115,20 +60,21 @@ jobs: with: python-version: ${{ matrix.python }} - - name: Build wheels + - name: Build wheel uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist --interpreter ${{ steps.setup-python.outputs.python-path }} sccache: 'true' + manylinux: auto - - name: Upload wheels + - name: Upload wheel uses: actions/upload-artifact@v4 with: - name: wheels-macos-${{ matrix.target }}-${{ matrix.python }} + name: artifact-wheel-${{ matrix.os.name }}-${{ matrix.target }}-${{ matrix.python }} path: dist - sdist: + build-sdist: runs-on: ubuntu-22.04 needs: [set-version] steps: @@ -148,33 +94,34 @@ jobs: - name: Upload sdist uses: actions/upload-artifact@v4 with: - name: wheels-sdist + name: artifact-sdist path: dist - publish: - name: Publish - runs-on: ubuntu-22.04 - needs: [linux, windows, macos, sdist] - steps: - - uses: actions/download-artifact@v4 - - - name: Publish to PyPI - uses: PyO3/maturin-action@v1 - env: - MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} - with: - command: upload - args: --non-interactive --skip-existing wheels-*/* - - check-docs: - runs-on: ubuntu-22.04 - needs: publish - steps: - - name: Check out - uses: actions/checkout@v4 - - - name: Set up the environment - uses: ./.github/actions/setup-env - - - name: Deploy documentation - run: pdm run mkdocs gh-deploy --force +# publish: +# name: Publish +# runs-on: ubuntu-22.04 +# needs: [build-wheel, build-sdist] +# steps: +# - uses: actions/download-artifact@v4 +# path: dist +# +# - name: Publish to PyPI +# uses: PyO3/maturin-action@v1 +# env: +# MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} +# with: +# command: upload +# args: --non-interactive --skip-existing artifact-*/* + +# check-docs: +# runs-on: ubuntu-22.04 +# needs: publish +# steps: +# - name: Check out +# uses: actions/checkout@v4 +# +# - name: Set up the environment +# uses: ./.github/actions/setup-env +# +# - name: Deploy documentation +# run: pdm run mkdocs gh-deploy --force