truss-image 0.24.0

Image toolkit with a shared Rust core across the CLI, HTTP server, and WASM demo.
Documentation
name: CLI Integration
on:
  push:
    branches: [main]
    paths:
      - "src/**"
      - "e2e/**"
      - "integration/fixtures/**"
      - "Cargo.toml"
      - "Cargo.lock"
      - ".github/workflows/integration-cli.yml"
  pull_request:
    paths:
      - "src/**"
      - "e2e/**"
      - "integration/fixtures/**"
      - "Cargo.toml"
      - "Cargo.lock"
      - ".github/workflows/integration-cli.yml"

concurrency:
  group: integration-cli-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always

jobs:
  # The suite runs on all three platforms because that is what it is for: the specs
  # are shell-free (no `shell: true`, which would be cmd.exe on Windows), so the same
  # scenarios execute the same way everywhere and a difference is a truss difference.
  cli-integration:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Cache cargo artifacts
        uses: Swatinem/rust-cache@v2

      - name: Install atago
        uses: nao1215/setup-atago@e4b6719aea547a68e6c15252222babab7f492a88 # v0.1.1
        with:
          version: v0.21.0

      # e2e/run.sh builds truss (cargo build --release --locked) and runs the
      # atago specs in e2e/atago against the freshly built binary. `shell: bash`
      # picks the Git Bash on the Windows runner rather than PowerShell.
      - name: Run atago CLI tests
        shell: bash
        run: ./e2e/run.sh