Foo #33
Workflow file for this run
This file contains hidden or 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: Rust CI | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| check: | |
| name: Check (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false # Don't stop all jobs if one fails | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| include: | |
| - os: windows-latest | |
| continue-on-error: true # Allow Windows to fail without stopping the workflow | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: ${{ matrix.continue-on-error || false }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - uses: actions-rs/toolchain@v1 | |
| with: | |
| profile: minimal | |
| toolchain: stable | |
| override: true | |
| - name: Check if just is available (Unix) | |
| if: runner.os != 'Windows' | |
| id: check-just-unix | |
| run: | | |
| if command -v just &> /dev/null; then | |
| echo "JUST_INSTALLED=true" >> $GITHUB_ENV | |
| echo "Just is already installed" | |
| else | |
| echo "JUST_INSTALLED=false" >> $GITHUB_ENV | |
| echo "Just needs to be installed" | |
| fi | |
| - name: Check if just is available (Windows) | |
| if: runner.os == 'Windows' | |
| id: check-just-windows | |
| shell: powershell | |
| run: | | |
| if (Get-Command just -ErrorAction SilentlyContinue) { | |
| echo "JUST_INSTALLED=true" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just is already installed" | |
| } else { | |
| echo "JUST_INSTALLED=false" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just needs to be installed" | |
| } | |
| - name: Install just | |
| if: env.JUST_INSTALLED != 'true' | |
| run: cargo install just --locked | |
| - name: Setup Rust targets | |
| run: just setup-ci-minimal | |
| - name: Run cargo check | |
| run: just check | |
| test: | |
| name: Test Suite (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false # Don't stop all jobs if one fails | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| include: | |
| - os: windows-latest | |
| continue-on-error: true # Allow Windows to fail without stopping the workflow | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: ${{ matrix.continue-on-error || false }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - uses: actions-rs/toolchain@v1 | |
| with: | |
| profile: minimal | |
| toolchain: stable | |
| override: true | |
| - name: Check if just is available (Unix) | |
| if: runner.os != 'Windows' | |
| id: check-just-unix | |
| run: | | |
| if command -v just &> /dev/null; then | |
| echo "JUST_INSTALLED=true" >> $GITHUB_ENV | |
| echo "Just is already installed" | |
| else | |
| echo "JUST_INSTALLED=false" >> $GITHUB_ENV | |
| echo "Just needs to be installed" | |
| fi | |
| - name: Check if just is available (Windows) | |
| if: runner.os == 'Windows' | |
| id: check-just-windows | |
| shell: powershell | |
| run: | | |
| if (Get-Command just -ErrorAction SilentlyContinue) { | |
| echo "JUST_INSTALLED=true" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just is already installed" | |
| } else { | |
| echo "JUST_INSTALLED=false" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just needs to be installed" | |
| } | |
| - name: Install just | |
| if: env.JUST_INSTALLED != 'true' | |
| run: cargo install just --locked | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.x' | |
| - name: Install Python dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r docs/requirements.txt | |
| - name: Setup Rust targets | |
| run: just setup-ci-minimal | |
| - name: Run tests | |
| run: just test | |
| style: | |
| name: Code Style and Organization (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false # Don't stop all jobs if one fails | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| include: | |
| - os: windows-latest | |
| continue-on-error: true # Allow Windows to fail without stopping the workflow | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: ${{ matrix.continue-on-error || false }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - uses: actions-rs/toolchain@v1 | |
| with: | |
| profile: minimal | |
| toolchain: stable | |
| override: true | |
| components: clippy | |
| - name: Check if just is available (Unix) | |
| if: runner.os != 'Windows' | |
| id: check-just-unix | |
| run: | | |
| if command -v just &> /dev/null; then | |
| echo "JUST_INSTALLED=true" >> $GITHUB_ENV | |
| echo "Just is already installed" | |
| else | |
| echo "JUST_INSTALLED=false" >> $GITHUB_ENV | |
| echo "Just needs to be installed" | |
| fi | |
| - name: Check if just is available (Windows) | |
| if: runner.os == 'Windows' | |
| id: check-just-windows | |
| shell: powershell | |
| run: | | |
| if (Get-Command just -ErrorAction SilentlyContinue) { | |
| echo "JUST_INSTALLED=true" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just is already installed" | |
| } else { | |
| echo "JUST_INSTALLED=false" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just needs to be installed" | |
| } | |
| - name: Install just | |
| if: env.JUST_INSTALLED != 'true' | |
| run: cargo install just --locked | |
| - name: Setup Rust targets | |
| run: just setup-ci-minimal | |
| - name: Check code style | |
| run: just check | |
| env: | |
| # Disable error documentation checks for now | |
| CLIPPY_DENY_WARNINGS: false | |
| - name: Check imports (Unix only) | |
| if: runner.os != 'Windows' | |
| run: just check-imports | |
| udeps: | |
| name: Unused Dependencies (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false # Don't stop all jobs if one fails | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| include: | |
| - os: windows-latest | |
| continue-on-error: true # Allow Windows to fail without stopping the workflow | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: ${{ matrix.continue-on-error || false }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - uses: actions-rs/toolchain@v1 | |
| with: | |
| profile: minimal | |
| toolchain: nightly | |
| override: true | |
| - name: Check if just is available (Unix) | |
| if: runner.os != 'Windows' | |
| id: check-just-unix | |
| run: | | |
| if command -v just &> /dev/null; then | |
| echo "JUST_INSTALLED=true" >> $GITHUB_ENV | |
| echo "Just is already installed" | |
| else | |
| echo "JUST_INSTALLED=false" >> $GITHUB_ENV | |
| echo "Just needs to be installed" | |
| fi | |
| - name: Check if just is available (Windows) | |
| if: runner.os == 'Windows' | |
| id: check-just-windows | |
| shell: powershell | |
| run: | | |
| if (Get-Command just -ErrorAction SilentlyContinue) { | |
| echo "JUST_INSTALLED=true" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just is already installed" | |
| } else { | |
| echo "JUST_INSTALLED=false" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just needs to be installed" | |
| } | |
| - name: Install just | |
| if: env.JUST_INSTALLED != 'true' | |
| run: cargo install just --locked | |
| - name: Check for unused dependencies | |
| run: just check-udeps | |
| docs: | |
| name: Documentation (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false # Don't stop all jobs if one fails | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| include: | |
| - os: windows-latest | |
| continue-on-error: true # Allow Windows to fail without stopping the workflow | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: ${{ matrix.continue-on-error || false }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - uses: actions-rs/toolchain@v1 | |
| with: | |
| profile: minimal | |
| toolchain: stable | |
| override: true | |
| - name: Check if just is available (Unix) | |
| if: runner.os != 'Windows' | |
| id: check-just-unix | |
| run: | | |
| if command -v just &> /dev/null; then | |
| echo "JUST_INSTALLED=true" >> $GITHUB_ENV | |
| echo "Just is already installed" | |
| else | |
| echo "JUST_INSTALLED=false" >> $GITHUB_ENV | |
| echo "Just needs to be installed" | |
| fi | |
| - name: Check if just is available (Windows) | |
| if: runner.os == 'Windows' | |
| id: check-just-windows | |
| shell: powershell | |
| run: | | |
| if (Get-Command just -ErrorAction SilentlyContinue) { | |
| echo "JUST_INSTALLED=true" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just is already installed" | |
| } else { | |
| echo "JUST_INSTALLED=false" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "Just needs to be installed" | |
| } | |
| - name: Install just | |
| if: env.JUST_INSTALLED != 'true' | |
| run: cargo install just --locked | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.x' | |
| - name: Install Python dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r docs/requirements.txt | |
| - name: Setup Rust targets | |
| run: just setup-ci-minimal | |
| - name: Build docs | |
| run: | | |
| just docs-html | |
| just check-docs | |
| - name: Build Rust API docs | |
| run: cargo doc --no-deps | |
| # Coverage job is still Linux-only as tarpaulin only supports Linux | |
| coverage: | |
| name: Code Coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - uses: actions-rs/toolchain@v1 | |
| with: | |
| profile: minimal | |
| toolchain: stable | |
| override: true | |
| components: llvm-tools-preview | |
| - name: Check if just is available | |
| id: check-just | |
| run: | | |
| if command -v just &> /dev/null; then | |
| echo "JUST_INSTALLED=true" >> $GITHUB_ENV | |
| echo "Just is already installed" | |
| else | |
| echo "JUST_INSTALLED=false" >> $GITHUB_ENV | |
| echo "Just needs to be installed" | |
| fi | |
| - name: Install just | |
| if: env.JUST_INSTALLED != 'true' | |
| run: cargo install just --locked | |
| - name: Install cargo-tarpaulin | |
| run: cargo install cargo-tarpaulin --locked | |
| - name: Setup Rust targets | |
| run: just setup-ci-minimal | |
| - name: Run coverage tests | |
| run: just coverage | |
| - name: Upload coverage reports to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| file: target/coverage/lcov.info | |
| fail_ci_if_error: true | |
| - name: Upload test results to Codecov | |
| if: ${{ !cancelled() }} | |
| uses: codecov/test-results-action@v1 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| file: target/coverage/junit.xml | |
| audit: | |
| name: Security Audit (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false # Don't stop all jobs if one fails | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| include: | |
| - os: windows-latest | |
| continue-on-error: true # Allow Windows to fail without stopping the workflow | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: ${{ matrix.continue-on-error || false }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions-rs/audit-check@v1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} |