mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
This way if flaky python tests fail, it is possible to rerun them without having to rerun library compilation. Python test jobs will redownload already built library artifact and compile the bindings against it.
201 lines
5.2 KiB
YAML
201 lines
5.2 KiB
YAML
name: Rust CI
|
|
|
|
# Cancel previously started workflow runs
|
|
# when the branch is updated.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
env:
|
|
RUSTFLAGS: -Dwarnings
|
|
|
|
jobs:
|
|
lint:
|
|
name: Rustfmt and Clippy
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
RUSTUP_TOOLCHAIN: 1.68.0
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Install rustfmt and clippy
|
|
run: rustup toolchain install $RUSTUP_TOOLCHAIN --profile minimal --component rustfmt --component clippy
|
|
- name: Cache rust cargo artifacts
|
|
uses: swatinem/rust-cache@v2
|
|
- name: Run rustfmt
|
|
run: cargo fmt --all -- --check
|
|
- name: Run clippy
|
|
run: scripts/clippy.sh
|
|
|
|
cargo_deny:
|
|
name: cargo deny
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: EmbarkStudios/cargo-deny-action@v1
|
|
with:
|
|
arguments: --all-features --workspace
|
|
command: check
|
|
command-arguments: "-Dwarnings"
|
|
|
|
provider_database:
|
|
name: Check provider database
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Check provider database
|
|
run: scripts/update-provider-database.sh
|
|
|
|
docs:
|
|
name: Rust doc comments
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
RUSTDOCFLAGS: -Dwarnings
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v3
|
|
- name: Cache rust cargo artifacts
|
|
uses: swatinem/rust-cache@v2
|
|
- name: Rustdoc
|
|
run: cargo doc --document-private-items --no-deps
|
|
|
|
c_library:
|
|
name: Rust tests and C library build
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
# Currently used Rust version.
|
|
- os: ubuntu-latest
|
|
rust: 1.68.2
|
|
- os: windows-latest
|
|
rust: 1.68.2
|
|
- os: macos-latest
|
|
rust: 1.68.2
|
|
|
|
# Minimum Supported Rust Version = 1.65.0
|
|
#
|
|
# Minimum Supported Python Version = 3.7
|
|
# This is the minimum version for which manylinux Python wheels are
|
|
# built.
|
|
- os: ubuntu-latest
|
|
rust: 1.65.0
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Install Rust ${{ matrix.rust }}
|
|
run: rustup toolchain install --profile minimal ${{ matrix.rust }}
|
|
- run: rustup override set ${{ matrix.rust }}
|
|
|
|
- name: Cache rust cargo artifacts
|
|
uses: swatinem/rust-cache@v2
|
|
|
|
- name: Check
|
|
run: cargo check --workspace --bins --examples --tests --benches
|
|
|
|
- name: Tests
|
|
run: cargo test --workspace
|
|
|
|
- name: Test cargo vendor
|
|
run: cargo vendor
|
|
|
|
- name: Build C library
|
|
run: cargo build -p deltachat_ffi --features jsonrpc
|
|
|
|
- name: Upload C library
|
|
if: matrix.os != "windows-latest"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.os }}-${{matrix.rust}}-libdeltachat.a
|
|
path: target/debug/libdeltachat.a
|
|
|
|
python_lint:
|
|
name: Python lint
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install tox
|
|
run: pip install tox
|
|
|
|
- name: Lint Python bindings
|
|
working-directory: python
|
|
run: tox -e lint,mypy,doc
|
|
|
|
- name: Lint deltachat-rpc-client
|
|
working-directory: deltachat-rpc-client
|
|
run: tox -e lint
|
|
|
|
python_tests:
|
|
name: Python tests
|
|
needs: ["c_library", "python_lint"]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
# Currently used Rust version.
|
|
- os: ubuntu-latest
|
|
rust: 1.68.2
|
|
python: 3.11
|
|
- os: macos-latest
|
|
rust: 1.68.2
|
|
python: 3.11
|
|
|
|
# PyPy tests
|
|
- os: ubuntu-latest
|
|
rust: 1.68.2
|
|
python: pypy3.9
|
|
- os: macos-latest
|
|
rust: 1.68.2
|
|
python: pypy3.9
|
|
|
|
# Minimum Supported Python Version = 3.7
|
|
# This is the minimum version for which manylinux Python wheels are
|
|
# built. Test it with minimum supported Rust version.
|
|
- os: ubuntu-latest
|
|
rust: 1.65.0
|
|
python: 3.7
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Download libdeltachat.a
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ${{ matrix.os }}-${{matrix.rust}}-libdeltachat.a
|
|
path: target/debug
|
|
|
|
- name: Install python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ matrix.python }}
|
|
|
|
- name: Install tox
|
|
run: pip install tox
|
|
|
|
- name: Run python tests
|
|
env:
|
|
DCC_NEW_TMP_EMAIL: ${{ secrets.DCC_NEW_TMP_EMAIL }}
|
|
DCC_RS_TARGET: debug
|
|
DCC_RS_DEV: ${{ github.workspace }}
|
|
working-directory: python
|
|
run: tox -e py
|
|
|
|
- name: Build deltachat-rpc-server
|
|
run: cargo build -p deltachat-rpc-server
|
|
|
|
- name: Add deltachat-rpc-server to path
|
|
run: echo ${{ github.workspace }}/target/debug >> $GITHUB_PATH
|
|
|
|
- name: Run deltachat-rpc-client tests
|
|
env:
|
|
DCC_NEW_TMP_EMAIL: ${{ secrets.DCC_NEW_TMP_EMAIL }}
|
|
working-directory: deltachat-rpc-client
|
|
run: tox -e py
|