name: CI on: pull_request: branches: [main] paths-ignore: - "*.md" - "site/**" push: branches: [main] paths-ignore: - "*.md" - "site/**" env: CARGO_TERM_COLOR: always permissions: contents: read jobs: toolchain: runs-on: ubuntu-latest outputs: channel: ${{ steps.extract.outputs.result }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Extract toolchain channel from rust-toolchain.toml id: extract uses: mikefarah/yq@c14f446382944492701b16c1ddb48bb9dbe683e3 # v4.53.6 with: cmd: yq '.toolchain.channel' rust-toolchain.toml fmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Install Rust (nightly) uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: nightly components: rustfmt - name: Check formatting uses: dprint/check@9cb3a2b17a8e606d37aae341e49df3654933fc23 # v2.3 install-scripts: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Install just uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4 - name: Check install scripts run: just check_install_scripts crates: needs: toolchain name: crates-${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Install Linux dependencies if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev libsmbclient-dev - name: Install macOS dependencies if: runner.os == 'macOS' run: | brew update brew install \ pkg-config \ samba brew link --force samba - name: Install Rust uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: ${{ needs.toolchain.outputs.channel }} components: clippy - name: Install just uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4 - name: Build run: just build_crates - name: Test (Linux) if: runner.os == 'Linux' run: just test "--no-default-features --features github-actions --no-fail-fast" - name: Test if: runner.os != 'Linux' run: just test "--verbose --features github-actions" - name: Clippy run: just clippy "-- -D warnings" doc: needs: toolchain runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Install Linux dependencies run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev libsmbclient-dev - name: Install Rust uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: ${{ needs.toolchain.outputs.channel }} - name: Install just uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4 - name: Build documentation run: just doc deny: needs: toolchain runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Install Rust uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: ${{ needs.toolchain.outputs.channel }} - name: Install cargo-deny uses: taiki-e/install-action@37f7c5781271959fb65b6b35224e28652ff2b63d # v2.87.0 with: tool: cargo-deny - name: Install just uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4 - name: Check dependencies run: just deny