Make stestr
>= 4.1
#3787
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: CI Jobs | |
on: | |
push: | |
branches: [ main, 'stable/*' ] | |
pull_request: | |
branches: [ main, 'stable/*' ] | |
concurrency: | |
group: ${{ github.repository }}-${{ github.ref }}-${{ github.head_ref }} | |
cancel-in-progress: true | |
jobs: | |
build_lint: | |
if: github.repository_owner == 'Qiskit' | |
name: Build, rustfmt, and python lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Print Concurrency Group | |
env: | |
CONCURRENCY_GROUP: ${{ github.repository }}-${{ github.ref }}-${{ github.head_ref }} | |
run: | | |
echo -e "\033[31;1;4mConcurrency Group\033[0m" | |
echo -e "$CONCURRENCY_GROUP\n" | |
shell: bash | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- run: pip install -U flake8 black~=22.0 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: Test Build | |
run: cargo build | |
- name: Rust Format | |
run: cargo fmt --all -- --check | |
- name: Clippy | |
run: cargo clippy -- -D warnings | |
- name: Black Codestyle Format | |
run: black --check --diff retworkx rustworkx retworkx tests | |
- name: Python Lint | |
run: flake8 --per-file-ignores='retworkx/__init__.py:F405,F403' setup.py retworkx tests rustworkx | |
- name: Check stray release notes | |
run: python tools/find_stray_release_notes.py | |
- name: rustworkx-core Rust Tests | |
run: pushd rustworkx-core && cargo test && popd | |
- name: rustworkx-core Docs | |
run: pushd rustworkx-core && cargo doc && popd | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: rustworkx_core_docs | |
path: target/doc/rustworkx_core | |
tests: | |
if: github.repository_owner == 'Qiskit' | |
needs: [build_lint] | |
name: python${{ matrix.python-version }}-${{ matrix.platform.python-architecture }} ${{ matrix.platform.os }} ${{ matrix.msrv }} | |
runs-on: ${{ matrix.platform.os }} | |
strategy: | |
matrix: | |
rust: [stable] | |
python-version: [3.8, 3.9, "3.10", "3.11"] | |
platform: [ | |
{ os: "macOS-latest", python-architecture: "x64", rust-target: "x86_64-apple-darwin" }, | |
{ os: "ubuntu-latest", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" }, | |
{ os: "windows-latest", python-architecture: "x64", rust-target: "x86_64-pc-windows-msvc" }, | |
] | |
include: | |
# Test minimal supported Rust version | |
- rust: 1.64 | |
python-version: 3.8 | |
platform: { os: "ubuntu-latest", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" } | |
msrv: "MSRV" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: ${{ matrix.platform.python-architecture }} | |
if: runner.os != 'Windows' | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.7 | |
architecture: ${{ matrix.platform.python-architecture }} | |
if: ${{ runner.os == 'Windows' && matrix.python-version == '3.7.16' }} | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: ${{ matrix.platform.python-architecture }} | |
if: ${{ runner.os == 'Windows' && matrix.python-version != '3.7.16' }} | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust }} | |
targets: ${{ matrix.platform.rust-target }} | |
- name: 'Install dependencies' | |
run: python -m pip install --upgrade tox | |
- name: 'Install binary dependencies' | |
run: sudo apt-get install -y graphviz | |
if: runner.os == 'Linux' | |
- name: 'Run tests' | |
run: tox -epy | |
tests_stubs: | |
if: github.repository_owner == 'Qiskit' | |
needs: [tests] | |
name: python-stubs-${{ matrix.python-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: [3.8, 3.9, "3.10", "3.11"] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: x64 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: 'Install dependencies' | |
run: python -m pip install --upgrade tox | |
- name: 'Run rustworkx stub tests' | |
run: tox -estubs | |
tests_retworkx_compat: | |
if: github.repository_owner == 'Qiskit' | |
needs: [build_lint] | |
name: python${{ matrix.python-version }}-${{ matrix.platform.python-architecture }} ${{ matrix.platform.os }} ${{ matrix.msrv }} | |
runs-on: ${{ matrix.platform.os }} | |
strategy: | |
matrix: | |
rust: [stable] | |
python-version: ["3.10"] | |
platform: [ | |
{ os: "macOS-latest", python-architecture: "x64", rust-target: "x86_64-apple-darwin" }, | |
{ os: "ubuntu-latest", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" }, | |
{ os: "windows-latest", python-architecture: "x64", rust-target: "x86_64-pc-windows-msvc" }, | |
] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: ${{ matrix.platform.python-architecture }} | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust }} | |
targets: ${{ matrix.platform.rust-target }} | |
- name: 'Install binary dependencies' | |
run: sudo apt-get install -y graphviz | |
if: runner.os == 'Linux' | |
- name: 'Build rustworkx and test dependencies' | |
run: | | |
pip install -c constraints.txt -U '.[mpl,graphviz]' fixtures testtools>=2.5.0 networkx>=2.5 stestr>=4.1 | |
- name: 'Build retworkx' | |
env: | |
RUSTWORKX_PKG_NAME: "retworkx" | |
run: | | |
pip install -c constraints.txt -U . | |
- name: 'Run retworkx tests' | |
run: | | |
cd tests | |
stestr run -t ./retworkx_backwards_compat | |
coverage: | |
if: github.repository_owner == 'Qiskit' | |
needs: [tests] | |
name: Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: llvm-tools-preview | |
- name: Download grcov | |
run: curl -L https://github.com/mozilla/grcov/releases/download/v0.8.7/grcov-x86_64-unknown-linux-gnu.tar.bz2 | tar jxf - | |
- name: Install deps | |
run: pip install -U setuptools-rust networkx scipy testtools fixtures | |
- name: Build retworkx | |
run: python setup.py develop | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUSTFLAGS: "-Cinstrument-coverage" | |
LLVM_PROFILE_FILE: "retworkx-%p-%m.profraw" | |
- name: Run tests | |
run: cd tests && python -m unittest discover . && cd .. | |
env: | |
LLVM_PROFILE_FILE: "retworkx-%p-%m.profraw" | |
- name: Run grcov | |
run: | | |
set -e | |
mv tests/retworkx*profraw . | |
./grcov . --binary-path ./target/debug/ -s . -t lcov --branch --ignore-not-existing --ignore "/*" -o ./coveralls.info | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: coverage | |
path: coveralls.info | |
- name: Coveralls | |
uses: coverallsapp/github-action@master | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path-to-lcov: coveralls.info | |
docs: | |
if: github.repository_owner == 'Qiskit' | |
needs: [tests] | |
name: Build Docs | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install binary deps | |
run: sudo apt-get install -y graphviz | |
- name: Install deps | |
run: pip install -U tox | |
- name: Build Docs | |
run: tox -edocs | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: html_docs | |
path: docs/build/html |