Skip to content

#1 a new version

#1 a new version #15

Workflow file for this run

name: ci
on:
push:
branches:
- main
tags:
- '**'
pull_request: {}
jobs:
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'
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
# - run: make test
# - run: coverage xml
# - uses: codecov/[email protected]
# with:
# file: ./coverage.xml
# env_vars: PYTHON,RUST,OS
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
build:
name: >
build on ${{ matrix.platform || matrix.os }} (${{ 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')"
strategy:
fail-fast: false
matrix:
os: [ubuntu, macos]
target: [x86_64, aarch64]
manylinux: [auto]
include:
- os: ubuntu
platform: linux
pypy: true
- os: macos
target: x86_64
pypy: true
- os: ubuntu
platform: linux
target: i686
- os: ubuntu
platform: linux
target: armv7
container: messense/manylinux_2_24-cross:armv7
interpreter: 3.8 3.9 3.10 3.11 3.12
- os: ubuntu
platform: linux
target: ppc64le
- os: ubuntu
platform: linux
target: s390x
# musllinux
- os: ubuntu
platform: linux
target: x86_64
manylinux: musllinux_1_1
- os: ubuntu
platform: linux
target: aarch64
manylinux: musllinux_1_1
- os: ubuntu
platform: linux
target: aarch64
container: messense/manylinux_2_24-cross:aarch64
runs-on: ${{ matrix.os }}-latest
steps:
- uses: actions/checkout@v3
- name: set up python
uses: actions/setup-python@v4
with:
python-version: '3.11'
architecture: ${{ matrix.python-architecture || 'x64' }}
- name: set package version
run: python .github/set_version.py
if: "startsWith(github.ref, 'refs/tags/')"
- name: Sync Cargo.lock
run: cargo update -p async-tail
if: "startsWith(github.ref, 'refs/tags/')"
- name: build sdist
if: ${{ matrix.os == 'ubuntu' && matrix.target == 'x86_64' && matrix.manylinux == 'auto' }}
uses: messense/maturin-action@v1
with:
command: sdist
args: --out dist
- name: build wheels
uses: messense/maturin-action@v1
with:
target: ${{ matrix.target }}
container: ${{ matrix.container }}
manylinux: ${{ matrix.manylinux || 'auto' }}
args: --release --out dist --interpreter ${{ matrix.interpreter || '3.7 3.8 3.9 3.10 3.11 3.12 pypy3.7 pypy3.8 pypy3.9 pypy3.10' }}
rust-toolchain: stable
docker-options: -e CI
- name: build pypy wheels
if: ${{ matrix.pypy }}
uses: messense/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: ${{ matrix.manylinux || 'auto' }}
args: --release --out dist --interpreter pypy3.8 pypy3.9
- run: ${{ matrix.ls || 'ls -lh' }} dist/
- uses: actions/upload-artifact@v3
with:
name: pypi_files
path: dist
list-pypi-files:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: get dist artifacts
uses: actions/download-artifact@v3
with:
name: pypi_files
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/*cp310-manylinux*x86_64.whl | head -n 1
python -m zipfile --list `ls dist/*cp310-manylinux*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
check:
if: always()
needs: [test, lint]
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:
needs: [build, check]
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: pypi_files
path: dist
- run: twine check dist/*
- name: upload to pypi
run: twine upload dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.pypi_token }}