diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 1673def..e58e099 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -12,60 +12,98 @@ on: - edited jobs: - macos: - runs-on: macos-latest - strategy: - matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - targets: aarch64-apple-darwin - - name: Build wheels - x86_64 - uses: PyO3/maturin-action@v1 - with: - target: x86_64 - args: -i python --release --out dist --sdist - - name: Install built wheel - x86_64 - run: | - pip install gilknocker --no-index --find-links dist --force-reinstall - - name: Build wheels - universal2 - if: ${{ matrix.python-version >= '3.8' || contains(fromJson('["3.10", "3.11"]'), matrix.python-version) }} - uses: PyO3/maturin-action@v1 - with: - args: -i python --release --universal2 --out dist - - name: Install built wheel - universal2 - if: ${{ matrix.python-version >= '3.8' || contains(fromJson('["3.10", "3.11"]'), matrix.python-version) }} - run: | - pip install gilknocker --no-index --find-links dist --force-reinstall - - name: Python UnitTest - run: | - pip install -r requirements-dev.txt - python -m pytest tests - - name: Upload wheels - uses: actions/upload-artifact@v3 - with: - name: wheels - path: dist + # macos: + # runs-on: macos-latest + # strategy: + # matrix: + # python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] + # steps: + # - uses: actions/checkout@v3 + # - uses: actions/setup-python@v4 + # with: + # python-version: ${{ matrix.python-version }} + # - name: Install Rust toolchain + # uses: dtolnay/rust-toolchain@stable + # with: + # targets: aarch64-apple-darwin + # - name: Build wheels - x86_64 + # uses: PyO3/maturin-action@v1 + # with: + # target: x86_64 + # args: -i python --release --out dist --sdist + # - name: Install built wheel - x86_64 + # run: | + # pip install gilknocker --no-index --find-links dist --force-reinstall + # - name: Build wheels - universal2 + # if: ${{ matrix.python-version >= '3.8' || contains(fromJson('["3.10", "3.11"]'), matrix.python-version) }} + # uses: PyO3/maturin-action@v1 + # with: + # args: -i python --release --universal2 --out dist + # - name: Install built wheel - universal2 + # if: ${{ matrix.python-version >= '3.8' || contains(fromJson('["3.10", "3.11"]'), matrix.python-version) }} + # run: | + # pip install gilknocker --no-index --find-links dist --force-reinstall + # - name: Python UnitTest + # run: | + # pip install -r requirements-dev.txt + # python -m pytest tests + # - name: Upload wheels + # uses: actions/upload-artifact@v3 + # with: + # name: wheels + # path: dist - windows: + # windows: + # runs-on: windows-latest + # strategy: + # fail-fast: false + # matrix: + # python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] + # target: [x64, x86] + # steps: + # - uses: actions/checkout@v2 + # - uses: actions/setup-python@v2 + # with: + # python-version: ${{ matrix.python-version }} + # architecture: ${{ matrix.target }} + # - name: Update rustup + # run: rustup self update + # - name: Install Rust toolchain + # uses: actions-rs/toolchain@v1 + # with: + # toolchain: stable + # profile: minimal + # default: true + # - name: Build wheels + # uses: messense/maturin-action@v1 + # with: + # target: ${{ matrix.target }} + # args: -i python --release --out dist + # - name: Install built wheel + # run: | + # pip install gilknocker --no-index --find-links dist --force-reinstall + # - name: Python UnitTest + # run: | + # python -m pip install -r requirements-dev.txt + # python -m pytest -vs tests + # - name: Upload wheels + # uses: actions/upload-artifact@v2 + # with: + # name: wheels + # path: dist + + windows-arm: runs-on: windows-latest strategy: fail-fast: false matrix: python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] - target: [x64, x86] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - architecture: ${{ matrix.target }} + architecture: x64 - name: Update rustup run: rustup self update - name: Install Rust toolchain @@ -74,219 +112,213 @@ jobs: toolchain: stable profile: minimal default: true + target: aarch64-pc-windows-msvc - name: Build wheels uses: messense/maturin-action@v1 with: - target: ${{ matrix.target }} + target: aarch64-pc-windows-msvc args: -i python --release --out dist - - name: Install built wheel - run: | - pip install gilknocker --no-index --find-links dist --force-reinstall - - name: Python UnitTest - run: | - python -m pip install -r requirements-dev.txt - python -m pytest -vs tests - name: Upload wheels uses: actions/upload-artifact@v2 with: name: wheels path: dist - linux: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] - target: [x86_64, i686] - steps: - - uses: actions/checkout@v2 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - default: true - - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Build Wheels - uses: messense/maturin-action@v1 - with: - target: ${{ matrix.target }} - manylinux: auto - args: -i ${{ matrix.python-version }} --release --out dist - - name: Python UnitTest - if: matrix.target == 'x86_64' - run: | - pip install gilknocker --no-index --find-links dist --force-reinstall - python -m pip install -r requirements-dev.txt - python -m pytest -vs tests - - name: Upload wheels - uses: actions/upload-artifact@v2 - with: - name: wheels - path: dist + # linux: + # runs-on: ubuntu-latest + # strategy: + # fail-fast: false + # matrix: + # python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] + # target: [x86_64, i686] + # steps: + # - uses: actions/checkout@v2 + # - name: Install Rust toolchain + # uses: actions-rs/toolchain@v1 + # with: + # toolchain: stable + # profile: minimal + # default: true + # - uses: actions/setup-python@v2 + # with: + # python-version: ${{ matrix.python-version }} + # - name: Build Wheels + # uses: messense/maturin-action@v1 + # with: + # target: ${{ matrix.target }} + # manylinux: auto + # args: -i ${{ matrix.python-version }} --release --out dist + # - name: Python UnitTest + # if: matrix.target == 'x86_64' + # run: | + # pip install gilknocker --no-index --find-links dist --force-reinstall + # python -m pip install -r requirements-dev.txt + # python -m pytest -vs tests + # - name: Upload wheels + # uses: actions/upload-artifact@v2 + # with: + # name: wheels + # path: dist - pypy-linux: - runs-on: ubuntu-latest - strategy: - matrix: - python: - - pypy-3.7 - - pypy-3.8 - - pypy-3.9 - steps: - - uses: actions/checkout@v3 - - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-${{matrix.python}}-cargo-${{ hashFiles('**/Cargo.lock') }} - - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python }} - - name: Build Wheels - gilknocker - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - manylinux: auto - args: -i ${{ matrix.python }} --release --out dist - - name: Python UnitTest - gilknocker - run: | - pip install gilknocker --no-index --find-links dist - pypy -c "import gilknocker" - - name: Upload wheels - uses: actions/upload-artifact@v3 - with: - name: wheels - path: dist + # pypy-linux: + # runs-on: ubuntu-latest + # strategy: + # matrix: + # python: + # - pypy-3.7 + # - pypy-3.8 + # - pypy-3.9 + # steps: + # - uses: actions/checkout@v3 + # - uses: actions/cache@v3 + # with: + # path: | + # ~/.cargo/bin/ + # ~/.cargo/registry/index/ + # ~/.cargo/registry/cache/ + # ~/.cargo/git/db/ + # target/ + # key: ${{ runner.os }}-${{matrix.python}}-cargo-${{ hashFiles('**/Cargo.lock') }} + # - uses: actions/setup-python@v4 + # with: + # python-version: ${{ matrix.python }} + # - name: Build Wheels - gilknocker + # uses: PyO3/maturin-action@v1 + # with: + # target: ${{ matrix.target }} + # manylinux: auto + # args: -i ${{ matrix.python }} --release --out dist + # - name: Python UnitTest - gilknocker + # run: | + # pip install gilknocker --no-index --find-links dist + # pypy -c "import gilknocker" + # - name: Upload wheels + # uses: actions/upload-artifact@v3 + # with: + # name: wheels + # path: dist - pypy-macos: - runs-on: macos-latest - strategy: - matrix: - python-version: [ pypy-3.7, pypy-3.8, pypy-3.9 ] - steps: - - uses: actions/checkout@v3 - - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install maturin - run: pip install maturin - - name: Build Wheels - gilknocker - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - manylinux: auto - args: -i ${{ matrix.python }} --release --out dist - - name: Install wheel - run: | - pip install gilknocker --no-index --find-links dist - - name: Python Import test - run: pypy -c "import gilknocker" - - name: Upload wheels - uses: actions/upload-artifact@v3 - with: - name: wheels - path: dist + # pypy-macos: + # runs-on: macos-latest + # strategy: + # matrix: + # python-version: [ pypy-3.7, pypy-3.8, pypy-3.9 ] + # steps: + # - uses: actions/checkout@v3 + # - uses: actions/cache@v3 + # with: + # path: | + # ~/.cargo/bin/ + # ~/.cargo/registry/index/ + # ~/.cargo/registry/cache/ + # ~/.cargo/git/db/ + # target/ + # key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + # - name: Install Rust toolchain + # uses: dtolnay/rust-toolchain@stable + # - uses: actions/setup-python@v4 + # with: + # python-version: ${{ matrix.python-version }} + # - name: Install maturin + # run: pip install maturin + # - name: Build Wheels - gilknocker + # uses: PyO3/maturin-action@v1 + # with: + # target: ${{ matrix.target }} + # manylinux: auto + # args: -i ${{ matrix.python }} --release --out dist + # - name: Install wheel + # run: | + # pip install gilknocker --no-index --find-links dist + # - name: Python Import test + # run: pypy -c "import gilknocker" + # - name: Upload wheels + # uses: actions/upload-artifact@v3 + # with: + # name: wheels + # path: dist - linux-cross: - runs-on: ubuntu-latest - strategy: - matrix: - python: - - '3.7' - - '3.8' - - '3.9' - - '3.10' - - '3.11' - target: [aarch64, armv7, s390x, ppc64le] - include: - - python: pypy3.7 - target: aarch64 - - python: pypy3.8 - target: aarch64 - - python: pypy3.9 - target: aarch64 - steps: - - uses: actions/checkout@v3 - - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - name: Build Wheels - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - manylinux: auto - args: -i ${{ matrix.python }} --release --out dist - - uses: uraimo/run-on-arch-action@v2.3.0 - # skipped cross compiled pypy wheel tests for now - if: ${{ !startsWith(matrix.python, 'pypy') }} - name: Install built wheel - with: - arch: ${{ matrix.target }} - distro: ubuntu20.04 - githubToken: ${{ github.token }} - # Mount the dist directory as /artifacts in the container - dockerRunArgs: | - --volume "${PWD}/dist:/artifacts" - install: | - apt-get update - apt-get install -y --no-install-recommends python3 python3-venv software-properties-common - add-apt-repository ppa:deadsnakes/ppa - apt-get update - apt-get install -y curl python3.7-venv python3.9-venv python3.10-venv python3.11-venv - run: | - ls -lrth /artifacts - PYTHON=python${{ matrix.python }} - $PYTHON -m venv venv - venv/bin/pip install -U pip - venv/bin/pip install gilknocker --no-index --find-links /artifacts --force-reinstall - venv/bin/python -c 'import gilknocker' - - name: Upload wheels - uses: actions/upload-artifact@v3 - with: - name: wheels - path: dist + # linux-cross: + # runs-on: ubuntu-latest + # strategy: + # matrix: + # python: + # - '3.7' + # - '3.8' + # - '3.9' + # - '3.10' + # - '3.11' + # target: [aarch64, armv7, s390x, ppc64le] + # include: + # - python: pypy3.7 + # target: aarch64 + # - python: pypy3.8 + # target: aarch64 + # - python: pypy3.9 + # target: aarch64 + # steps: + # - uses: actions/checkout@v3 + # - uses: actions/cache@v3 + # with: + # path: | + # ~/.cargo/bin/ + # ~/.cargo/registry/index/ + # ~/.cargo/registry/cache/ + # ~/.cargo/git/db/ + # target/ + # key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + # - name: Build Wheels + # uses: PyO3/maturin-action@v1 + # with: + # target: ${{ matrix.target }} + # manylinux: auto + # args: -i ${{ matrix.python }} --release --out dist + # - uses: uraimo/run-on-arch-action@v2.3.0 + # # skipped cross compiled pypy wheel tests for now + # if: ${{ !startsWith(matrix.python, 'pypy') }} + # name: Install built wheel + # with: + # arch: ${{ matrix.target }} + # distro: ubuntu20.04 + # githubToken: ${{ github.token }} + # # Mount the dist directory as /artifacts in the container + # dockerRunArgs: | + # --volume "${PWD}/dist:/artifacts" + # install: | + # apt-get update + # apt-get install -y --no-install-recommends python3 python3-venv software-properties-common + # add-apt-repository ppa:deadsnakes/ppa + # apt-get update + # apt-get install -y curl python3.7-venv python3.9-venv python3.10-venv python3.11-venv + # run: | + # ls -lrth /artifacts + # PYTHON=python${{ matrix.python }} + # $PYTHON -m venv venv + # venv/bin/pip install -U pip + # venv/bin/pip install gilknocker --no-index --find-links /artifacts --force-reinstall + # venv/bin/python -c 'import gilknocker' + # - name: Upload wheels + # uses: actions/upload-artifact@v3 + # with: + # name: wheels + # path: dist - release: - name: Release - runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" - needs: [ macos, windows, linux ] - steps: - - uses: actions/download-artifact@v2 - with: - name: wheels - - uses: actions/setup-python@v2 - with: - python-version: 3.9 - - name: Publish to PyPi - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.TWINE_TOKEN }} - run: | - pip install --upgrade wheel pip setuptools twine - twine upload --skip-existing * \ No newline at end of file + # release: + # name: Release + # runs-on: ubuntu-latest + # if: "startsWith(github.ref, 'refs/tags/')" + # needs: [ macos, windows, linux ] + # steps: + # - uses: actions/download-artifact@v2 + # with: + # name: wheels + # - uses: actions/setup-python@v2 + # with: + # python-version: 3.9 + # - name: Publish to PyPi + # env: + # TWINE_USERNAME: __token__ + # TWINE_PASSWORD: ${{ secrets.TWINE_TOKEN }} + # run: | + # pip install --upgrade wheel pip setuptools twine + # twine upload --skip-existing * \ No newline at end of file