name: CI on: pull_request: push: branches: [master] # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write checks: write jobs: ci: name: CI needs: [test, clippy, docs] runs-on: ubuntu-latest steps: - name: Done run: exit 0 test: name: Tests strategy: fail-fast: false matrix: os: [ubuntu-latest] rust: [1.69.0, nightly] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - name: Install rust uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} - name: Ready cache if: matrix.os == 'ubuntu-latest' run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/ - name: Cache cargo uses: actions/cache@v1 id: cache with: path: ~/.cargo key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Test smart-default run: cargo test --all-targets fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@master with: toolchain: nightly components: rustfmt - name: Run fmt --all -- --check run: cargo fmt --all -- --check clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@master with: toolchain: nightly components: clippy - name: Cache cargo uses: actions/cache@v1 id: cache with: path: ~/.cargo key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Run clippy --all-targets -- uses: actions-rs/clippy-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} args: --all-targets -- docs: name: Docs runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@master with: toolchain: nightly - name: Cache cargo uses: actions/cache@v1 id: cache with: path: ~/.cargo key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Run doc tests run: cargo test --doc - name: Check smart-default docs run: cargo doc --no-deps docs-ghpages: name: Update Docs in GitHub Pages runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' steps: - uses: actions/checkout@v3 - name: Build docs env: GITHUB_REPO: ${{ github.repository }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: |- cargo doc --verbose && echo "" > target/doc/index.html - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: path: target/doc deploy-ghpages: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: docs-ghpages if: github.ref == 'refs/heads/master' steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v1