name: CI on: push: pull_request: jobs: # Everything except the GPUI product. Builds in seconds, gates every push. rust-headless: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install pinned Rust toolchain uses: dtolnay/rust-toolchain@master with: toolchain: 1.94.1 components: rustfmt, clippy - name: Cache cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: headless-${{ hashFiles('Cargo.lock') }} - name: Headless checks run: ./scripts/ci.sh --headless # The GPUI product. Kept separate because it pulls a window toolkit, several # hundred extra packages, and a large target directory. # # continue-on-error until this runner's disk, memory, and time budget have # actually been measured against a GPUI build. A job that OOMs on every push # trains people to ignore CI, which is worse than a job that reports and does # not block. Remove the flag once it has run green a few times; do not remove # it by assuming it will. rust-ui: runs-on: ubuntu-latest needs: rust-headless continue-on-error: true steps: - name: Checkout uses: actions/checkout@v4 - name: Install pinned Rust toolchain uses: dtolnay/rust-toolchain@master with: toolchain: 1.94.1 components: rustfmt, clippy # GPUI's X11 backend links against these. libxkbcommon-x11-dev is the # package scripts/native-libs.sh works around when it is missing. - name: Install native dependencies run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ libxkbcommon-x11-dev libxcb1-dev libwayland-dev \ libasound2-dev libfontconfig1-dev pkg-config - name: Cache cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ui-${{ hashFiles('Cargo.lock') }} - name: Report disk before build run: df -h . - name: UI checks run: ./scripts/ci.sh --ui - name: Report disk after build run: df -h .