name: Code on: push: branches: - '*' - '!staging.tmp' tags: - '*' schedule: - cron: '40 3 * * *' # every day at 3:40 pull_request: workflow_dispatch: jobs: check: name: Check strategy: fail-fast: false matrix: platform: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.platform }} steps: - name: Checkout Repository uses: actions/checkout@v2 - name: Install Rust Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly - name: Install `rust-src` Rustup Component run: rustup component add rust-src - name: Run `cargo check` uses: actions-rs/cargo@v1 with: command: check test: name: Test strategy: fail-fast: false matrix: platform: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.platform }} steps: - name: Install Rust Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly - name: Install bootimage run: cargo install bootimage --debug - name: Checkout Repository uses: actions/checkout@v2 - name: Install Rustup Components run: rustup component add rust-src llvm-tools-preview - name: Run `cargo bootimage` uses: actions-rs/cargo@v1 with: command: bootimage # install QEMU - name: Install QEMU (Linux) run: sudo apt update && sudo apt install qemu-system-x86 if: runner.os == 'Linux' - name: Install QEMU (macOS) run: brew install qemu if: runner.os == 'macOS' env: HOMEBREW_NO_AUTO_UPDATE: 1 HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: 1 HOMEBREW_NO_INSTALL_CLEANUP: 1 - name: Install Scoop (Windows) run: | Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') echo "$HOME\scoop\shims" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append if: runner.os == 'Windows' shell: pwsh - name: Install QEMU (Windows) run: scoop install qemu if: runner.os == 'Windows' shell: pwsh - name: "Print QEMU Version" run: qemu-system-x86_64 --version - name: Run `cargo test` uses: actions-rs/cargo@v1 with: command: test check_formatting: name: Check Formatting runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v2 - name: Install Rust Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly components: rustfmt override: true - name: Run `cargo fmt` uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check clippy: name: Clippy runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v2 - name: Install Rust Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly components: clippy, rust-src override: true - name: Run `cargo clippy` uses: actions-rs/cargo@v1 with: command: clippy