name: CI on: push: branches: [master] pull_request: # A newer push to the same branch or PR supersedes the running check. concurrency: group: ci-${{ github.ref }} cancel-in-progress: true env: CARGO_TERM_COLOR: always jobs: build: name: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v7 - uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Install Linux GUI dependencies if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev - uses: Swatinem/rust-cache@v2 - run: cargo build --workspace --release --locked - run: cargo test --workspace --locked - run: cargo clippy --workspace --all-targets --locked -- -D warnings scripts: name: install scripts runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - name: shellcheck install.sh run: shellcheck install.sh - name: PSScriptAnalyzer install.ps1 shell: pwsh run: | # Write-Host is the right tool for an installer piped into iex. $issues = Invoke-ScriptAnalyzer -Path install.ps1 -Severity Warning,Error -ExcludeRule PSAvoidUsingWriteHost $issues | Format-Table -AutoSize if ($issues) { exit 1 }