name: Python package Release
on:
push:
tags:
- python-v*
env:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rustfmt, clippy
- name: Lint with rustfmt
uses: actions-rs/cargo@v1
with:
command: fmt
- name: Lint with clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-targets --all-features
build:
runs-on: ${{ matrix.os }}
needs: lint
strategy:
fail-fast: false
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install poetry
uses: abatilo/actions-poetry@v2.0.0
- name: Install dependencies
run: cd packages/pyviewercloud && poetry install
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Build Python package
working-directory: ./packages/pyviewercloud
run: poetry run maturin develop --release
python-publish:
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: [3.6, 3.7, 3.8]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v1
- uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Install poetry
uses: abatilo/actions-poetry@v2.0.0
- name: Install dependencies
run: cd packages/pyviewercloud && poetry install
- name: Build Python package
working-directory: ./packages/pyviewercloud
run: poetry run maturin build --release --no-sdist --strip --interpreter python${{matrix.python_version}}
- name: List wheels
if: matrix.os == 'windows-latest'
run: dir packages\pyviewercloud\target\wheels\
- name: List wheels
if: matrix.os != 'windows-latest'
run: find packages/pyviewercloud/target/wheels/
- name: Install wheels
if: matrix.os == 'windows-latest'
run: pip install --find-links=packages\pyviewercloud\target\wheels\pyviewercloud
- name: Install wheels
if: matrix.os != 'windows-latest'
run: pip install packages/pyviewercloud/target/wheels/pyviewercloud*.whl
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: packages/pyviewercloud/target/wheels/pyviewercloud*.whl
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: PyPi publish
working-directory: ./packages/pyviewercloud
env:
MATURIN_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: poetry run maturin publish --username __token__