on: push: branches: - main pull_request: branches: - main merge_group: branches: - main workflow_dispatch: name: CI jobs: rust-format: name: Check Rust Code Format runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4 - name: Run cargo fmt run: source ./bin/activate-hermit && cargo fmt --check rust-build-and-test: name: Build and Test Rust Project runs-on: goose steps: # Add disk space cleanup before linting - name: Check disk space before build run: df -h #https://github.com/actions/runner-images/issues/2840 - name: Clean up disk space run: | echo "Cleaning up disk space..." sudo rm -rf \ /opt/google/chrome \ /opt/microsoft/msedge \ /opt/microsoft/powershell \ /usr/lib/mono \ /usr/local/lib/android \ /usr/local/lib/node_modules \ /usr/local/share/chromium \ /usr/local/share/powershell \ /usr/share/dotnet \ /usr/share/swift \ /opt/ghc \ /opt/hostedtoolcache \ /usr/local/graalvm \ /usr/local/sqlpackage # Clean package manager caches sudo apt-get clean sudo apt-get autoremove -y # Clean docker if present docker system prune -af 2>/dev/null || true df -h - name: Checkout Code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4 - name: Install Dependencies run: | sudo apt update -y sudo apt install -y libdbus-1-dev gnome-keyring libxcb1-dev - name: Cache Cargo Registry uses: actions/cache@2f8e54208210a422b2efd51efaa6bd6d7ca8920f # pin@v3 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-registry- - name: Cache Cargo Index uses: actions/cache@2f8e54208210a422b2efd51efaa6bd6d7ca8920f # pin@v3 with: path: ~/.cargo/index key: ${{ runner.os }}-cargo-index restore-keys: | ${{ runner.os }}-cargo-index - name: Cache Cargo Build uses: actions/cache@2f8e54208210a422b2efd51efaa6bd6d7ca8920f # pin@v3 with: path: target key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-build- - name: Build and Test run: | gnome-keyring-daemon --components=secrets --daemonize --unlock <<< 'foobar' source ../bin/activate-hermit export CARGO_INCREMENTAL=0 cargo test --jobs 2 working-directory: crates - name: Check disk space before cleanup run: df -h - name: Clean up disk space run: | echo "Cleaning up disk space..." # Remove debug artifacts that are no longer needed after tests rm -rf target/debug/deps rm -rf target/debug/build rm -rf target/debug/incremental # Clean cargo cache more aggressively cargo clean || true # Clean npm cache if it exists npm cache clean --force 2>/dev/null || true # Clean apt cache sudo apt-get clean sudo apt-get autoremove -y # Remove unnecessary large directories rm -rf ~/.cargo/registry/index || true rm -rf ~/.cargo/registry/cache || true # Remove docker images if any docker system prune -af 2>/dev/null || true - name: Check disk space after cleanup run: df -h - name: Lint run: | source ./bin/activate-hermit export CARGO_INCREMENTAL=0 cargo clippy --jobs 2 -- -D warnings desktop-lint: name: Lint Electron Desktop App runs-on: macos-latest steps: - name: Checkout Code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4 - name: Install Dependencies run: source ../../bin/activate-hermit && npm ci working-directory: ui/desktop - name: Run Lint run: source ../../bin/activate-hermit && npm run lint:check working-directory: ui/desktop # Faster Desktop App build for PRs only bundle-desktop-unsigned: uses: ./.github/workflows/bundle-desktop.yml if: github.event_name == 'pull_request' || github.event_name == 'merge_group' with: signing: false