name: Rust CI on: [push, pull_request] env: CARGO_TERM_COLOR: always jobs: check: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal echo "$HOME/.cargo/bin" >> $GITHUB_PATH true - name: Verify Rust installation run: | rustc --version cargo --version - name: Build run: cargo check --verbose build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal echo "$HOME/.cargo/bin" >> $GITHUB_PATH - name: Verify Rust installation run: | rustc --version cargo --version - name: Build run: cargo build --verbose test: needs: build runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal echo "$HOME/.cargo/bin" >> $GITHUB_PATH - name: Verify Rust installation run: | rustc --version cargo --version - name: Test run: cargo test --verbose docs: needs: build runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal echo "$HOME/.cargo/bin" >> $GITHUB_PATH - name: Verify Rust installation run: | rustc --version cargo --version - name: Build documentation run: cargo doc --no-deps --document-private-items - name: Create docs directory run: mkdir -p ./docs-output && cp -r target/doc/* ./docs-output/ - name: Upload documentation as artifact uses: actions/upload-artifact@v3 with: name: rust-documentation path: ./docs-output/ retention-days: 30 if-no-files-found: error