name: Rust permissions: actions: read on: push: branches: [ main ] pull_request: branches: [ main ] env: CARGO_TERM_COLOR: always CARGO_PROJECT_FEATURES: "v2022_6" # TODO: Automatically query this from the C side LATEST_LIBOSTREE: "v2022_6" jobs: build: runs-on: ubuntu-latest container: quay.io/coreos-assembler/fcos-buildroot:testing-devel steps: - uses: actions/checkout@v2 - name: Cache Dependencies uses: Swatinem/rust-cache@ce325b60658c1b38465c06cc965b79baf32c1e72 - name: cargo fmt (check) run: cargo fmt -p ostree -- --check -l - name: Build run: cargo build --verbose --features=${{ env['CARGO_PROJECT_FEATURES'] }} - name: Run tests run: cargo test --verbose --features=${{ env['CARGO_PROJECT_FEATURES'] }} - name: cargo clippy (non-gating) run: cargo clippy -p ostree --features=${{ env['CARGO_PROJECT_FEATURES'] }} build-minimum-toolchain: name: "Build, minimum supported toolchain (MSRV)" runs-on: ubuntu-latest container: quay.io/coreos-assembler/fcos-buildroot:testing-devel steps: - name: Checkout repository uses: actions/checkout@v2 - name: Detect crate MSRV shell: bash run: | msrv=$(cargo metadata --format-version 1 --no-deps | \ jq -r '.packages | .[0].rust_version') echo "Crate MSRV: $msrv" echo "ACTION_MSRV_TOOLCHAIN=$msrv" >> $GITHUB_ENV - name: Remove system Rust toolchain run: dnf remove -y rust cargo - name: Install toolchain uses: actions-rs/toolchain@v1 with: toolchain: ${{ env['ACTION_MSRV_TOOLCHAIN'] }} default: true - name: Cache Dependencies uses: Swatinem/rust-cache@ce325b60658c1b38465c06cc965b79baf32c1e72 - name: cargo check run: cargo check --features=${{ env['CARGO_PROJECT_FEATURES'] }} build-no-features: runs-on: ubuntu-latest container: quay.io/coreos-assembler/fcos-buildroot:testing-devel steps: - uses: actions/checkout@v2 - name: Cache Dependencies uses: Swatinem/rust-cache@ce325b60658c1b38465c06cc965b79baf32c1e72 - name: Build run: cargo test --no-run - name: Run tests run: cargo test --verbose build-git-libostree: runs-on: ubuntu-latest container: quay.io/coreos-assembler/fcos-buildroot:testing-devel steps: - uses: actions/checkout@v2 with: fetch-depth: 0 submodules: true - name: Cache Dependencies uses: Swatinem/rust-cache@ce325b60658c1b38465c06cc965b79baf32c1e72 - name: Build libostree run: ./ci/build.sh - name: Install libostree run: make install - name: Rust build run: cargo test --no-run --verbose --features=${{ env['LATEST_LIBOSTREE'] }} - name: Run tests run: cargo test --verbose --features=${{ env['LATEST_LIBOSTREE'] }} cargo-deny: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: EmbarkStudios/cargo-deny-action@v1 with: log-level: warn command: check bans sources licenses