childflow 0.4.0

A per-command-tree network sandbox for Linux
name: CI

on:
  push:
    branches:
      - develop
      - master
    paths:
      - "src/**"
      - "Cargo.toml"
      - "Cargo.lock"
      - "README.md"
      - ".github/workflows/ci.yml"
      - ".github/workflows/demo-test.yml"
      - ".github/workflows/release.yml"
  pull_request:
    paths:
      - "src/**"
      - "Cargo.toml"
      - "Cargo.lock"
      - "README.md"
      - ".github/workflows/ci.yml"
      - ".github/workflows/demo-test.yml"
      - ".github/workflows/release.yml"
  workflow_dispatch:

jobs:
  rust-ci:
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout
        uses: actions/checkout@v5

      - name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y --no-install-recommends libssl-dev pkg-config

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy

      - name: cargo fmt --check
        run: cargo fmt --check

      - name: cargo clippy
        run: cargo clippy --all-targets --all-features -- -D warnings

      - name: cargo test
        run: cargo test

  rootless-smoke:
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout
        uses: actions/checkout@v5

      - name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y --no-install-recommends libssl-dev pkg-config

      - name: Run rootless smoke tests in the dev container
        run: docker compose -f docker/dev/compose.yml run --rm childflow-dev cargo test --test rootless_proxy -- --nocapture