Files
chatmail-core/.github/workflows/ci.yml
2023-02-16 09:00:27 +01:00

142 lines
3.7 KiB
YAML

name: Rust CI
on:
pull_request:
push:
branches:
- master
env:
RUSTFLAGS: -Dwarnings
jobs:
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: cargo fmt --all -- --check
run_clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install clippy
run: rustup toolchain install 1.67.1 --component clippy
- name: Cache rust cargo artifacts
uses: swatinem/rust-cache@v2
- name: Run clippy
env:
RUSTUP_TOOLCHAIN: 1.67.1
run: scripts/clippy.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
build_and_test:
name: Build and test
strategy:
fail-fast: false
matrix:
include:
# Currently used Rust version.
- os: ubuntu-latest
rust: 1.64.0
python: 3.9
- os: windows-latest
rust: 1.64.0
python: false # Python bindings compilation on Windows is not supported.
# Minimum Supported Rust Version = 1.63.0
#
# Minimum Supported Python Version = 3.7
# This is the minimum version for which manylinux Python wheels are
# built.
- os: ubuntu-latest
rust: 1.63.0
python: 3.7
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@master
- name: Install Rust ${{ matrix.rust }}
run: rustup toolchain install ${{ 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: Install python
# if: ${{ matrix.python }}
# uses: actions/setup-python@v4
# with:
# python-version: ${{ matrix.python }}
# - name: Install tox
# if: ${{ matrix.python }}
# run: pip install tox
# - name: Build C library
# if: ${{ matrix.python }}
# run: cargo build -p deltachat_ffi --features jsonrpc
# - name: Run python tests
# if: ${{ matrix.python }}
# 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 lint,mypy,doc,py3
# - name: Build deltachat-rpc-server
# if: ${{ matrix.python }}
# run: cargo build -p deltachat-rpc-server
# - name: Add deltachat-rpc-server to path
# if: ${{ matrix.python }}
# run: echo ${{ github.workspace }}/target/debug >> $GITHUB_PATH
# - name: Run deltachat-rpc-client tests
# if: ${{ matrix.python }}
# env:
# DCC_NEW_TMP_EMAIL: ${{ secrets.DCC_NEW_TMP_EMAIL }}
# working-directory: deltachat-rpc-client
# run: tox -e py3,lint
# - name: Install pypy
# if: ${{ matrix.python }}
# uses: actions/setup-python@v4
# with:
# python-version: 'pypy${{ matrix.python }}'
# - name: Run pypy tests
# if: ${{ matrix.python }}
# 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 pypy3