Prepare 0.14.2 release (#1139) #4308
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 ruff 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 --all-targets -- -D warnings | |
- name: Black Codestyle Format | |
run: black --check --diff retworkx rustworkx retworkx tests | |
- name: Python Lint | |
run: ruff check rustworkx retworkx setup.py tests | |
- 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", "3.12"] | |
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 }} | |
- 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 | |
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 |