name: Rust permissions: actions: read on: push: branches: [ main ] pull_request: branches: [ main ] env: CARGO_TERM_COLOR: always CARGO_PROJECT_FEATURES: "v2021_5,cap-std-apis" # TODO: Automatically query this from the C side LATEST_LIBOSTREE: "v2022_5" # Minimum supported Rust version (MSRV) ACTION_MSRV_TOOLCHAIN: 1.58.1 # Pinned toolchain for linting ACTION_LINTS_TOOLCHAIN: 1.64.0 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: Build run: cargo build --verbose --features=${{ env['CARGO_PROJECT_FEATURES'] }} - name: Run tests run: cargo test --verbose --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: 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'] }} linting: name: "Lints, pinned toolchain" runs-on: ubuntu-latest container: quay.io/coreos-assembler/fcos-buildroot:testing-devel steps: - name: Checkout repository uses: actions/checkout@v2 - name: Remove system Rust toolchain run: dnf remove -y rust cargo - name: Install toolchain uses: actions-rs/toolchain@v1 with: toolchain: ${{ env['ACTION_LINTS_TOOLCHAIN'] }} default: true components: rustfmt, clippy - name: cargo fmt (check) run: cargo fmt -p ostree -- --check -l - name: cargo clippy (warnings) run: cargo clippy -p ostree --features=${{ env['CARGO_PROJECT_FEATURES'] }} -- -D warnings 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