Skip to content

#22: Incorporate debouncer logic into notifykit (#23) #74

#22: Incorporate debouncer logic into notifykit (#23)

#22: Incorporate debouncer logic into notifykit (#23) #74

Workflow file for this run

name: ci
on:
push:
branches:
- main
tags:
- '**'
pull_request: {}
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: install rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
components: rustfmt, clippy
- name: cache rust
uses: Swatinem/rust-cache@v1
- name: Setup PDM
uses: pdm-project/setup-pdm@v3
# You are now able to use PDM in your workflow
- name: Install dependencies
run: pdm install
- name: Lint Rust codebase
run: make lib-lint
- name: Lint Python codebase
run: make lint
# test:
# name: test ${{ matrix.python-version }}, rust ${{ matrix.rust-version }} on ${{ matrix.os }}
# strategy:
# fail-fast: false
# matrix:
# os: [ubuntu, macos]
# rust-version: [stable, '1.65.0']
# python-version:
# - '3.8'
# - '3.9'
# - '3.10'
# - '3.11'
# - '3.12'
# - 'pypy3.8'
# - 'pypy3.9'
# - 'pypy3.10'
# exclude:
# - rust-version: '1.65.0'
# os: macos
#
# runs-on: ${{ matrix.os }}-latest
#
# env:
# PYTHON: ${{ matrix.python-version }}
# RUST: ${{ matrix.rust-version }}
# OS: ${{ matrix.os }}
#
# steps:
# - uses: actions/checkout@v3
#
# - name: set up python
# uses: actions/setup-python@v4
# with:
# python-version: ${{ matrix.python-version }}
#
# - name: install rust
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: ${{ matrix.rust-version }}
# override: true
#
# - name: cache rust
# uses: Swatinem/rust-cache@v1
#
# - name: Setup PDM
# uses: pdm-project/setup-pdm@v3
#
# # You are now able to use PDM in your workflow
# - name: Install dependencies
# run: pdm install
#
# # TODO: enable the test step back
# - run: make test
# - run: coverage xml
# - uses: codecov/codecov-action@v1.0.13
# with:
# file: ./coverage.xml
# env_vars: PYTHON,RUST,OS
build-linux:
name: Build on Linux (${{ matrix.target }}, ${{ matrix.manylinux || 'auto' }})
if: "startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [x86_64, x86, aarch64, armv7, s390x, ppc64le]
manylinux: [auto]
include:
# musllinux
- target: x86_64
manylinux: musllinux_1_1
- target: aarch64
manylinux: musllinux_1_1
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Build CPython Wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: 'true'
manylinux: ${{ matrix.manylinux || 'auto' }}
- name: Build PyPy wheels
if: ${{ matrix.manylinux == 'auto' && (matrix.target == 'x86_64' || matrix.target == 'aarch64') }}
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
sccache: 'true'
manylinux: ${{ matrix.manylinux || 'auto' }}
args: --release --out dist --interpreter pypy3.8 pypy3.9 pypy3.10
- run: ls -lah dist/
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
build-macos:
name: Build on MacOS (${{ matrix.target }})
if: "startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')"
runs-on: macos-latest
strategy:
matrix:
target: [ x86_64, aarch64 ]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Build CPython Wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: 'true'
- name: Build PyPy wheels
if: ${{ matrix.target == 'x86_64' }}
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter pypy3.8 pypy3.9 pypy3.10
- run: ls -lah dist/
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
build-windows:
name: Build on Windows (${{ matrix.target }})
if: "startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')"
runs-on: windows-latest
strategy:
matrix:
target: [x64, x86]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: 'true'
- run: dir dist/
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
sdist:
name: sdist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
list-wheels:
needs: [build-linux, build-macos, build-windows]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: get dist artifacts
uses: actions/download-artifact@v3
with:
name: wheels
path: dist
- name: list dist files
run: |
ls -lh dist/
echo "`ls dist | wc -l` files"
- name: extract and list sdist file
run: |
mkdir sdist-files
tar -xvf dist/*.tar.gz -C sdist-files
tree -a sdist-files
- name: extract and list wheel file
run: |
ls dist/*cp38-abi3-manylinux_2_17_x86_64*.whl | head -n 1
python -m zipfile --list `ls dist/*cp38-abi3-manylinux_2_17_x86_64*.whl | head -n 1`
- run: pip install twine
- run: twine check dist/*
# Used for branch protection checks, see https://github.com/marketplace/actions/alls-green#why
checks:
if: always()
needs: [lint] # TODO: enable the test step back
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
release:
name: Release
needs: [checks, build-linux, build-macos, build-windows, sdist]
if: "success() && startsWith(github.ref, 'refs/tags/')"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: set up python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- run: pip install twine
- name: get dist artifacts
uses: actions/download-artifact@v3
with:
name: wheels
path: dist
- run: twine check dist/*
- name: upload to pypi
run: twine upload dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.pypi_token }}