name: CI on: push: branches: [main] pull_request: jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] steps: - name: Checkout uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-toolchain@stable - name: Cache cargo + target uses: swatinem/rust-cache@v2 - name: Check formatting run: cargo fmt --check - name: Clippy run: cargo clippy -- -D warnings - name: Test run: cargo test - name: Publish ownership snapshot tests run: scripts/publish-ownership-snapshot-test.sh - name: Package run: cargo package --locked - name: Install Smoke run: | root="$(mktemp -d)" cargo install --path . --locked --root "$root" "$root/bin/idx" version scripts/live-smoke.sh --bin "$root/bin/idx" --no-build --mode mock nix: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v30 - name: Build default package run: nix build .#default - name: Run default app run: nix run .#default -- version - name: Build ownership publisher run: | nix build .#ownership-publisher ./result/bin/idx-ownership-publish --help install-script: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-14] steps: - name: Checkout uses: actions/checkout@v4 - name: ShellCheck if: runner.os == 'Linux' run: | shellcheck -s sh install.sh shellcheck scripts/install-sh-test.sh - name: Test install.sh with sh run: scripts/install-sh-test.sh - name: Test install.sh with dash if: runner.os == 'Linux' run: INSTALL_SH_SHELL=dash scripts/install-sh-test.sh