runnerctl 0.3.0

Manage independent ephemeral GitHub Actions runner pools on one Docker host
name: CI
on: [push, pull_request, workflow_dispatch]
permissions:
  contents: read
jobs:
  rust:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup toolchain install stable --profile minimal --component rustfmt --component clippy
      - run: cargo +stable fmt --check
      - run: cargo +stable clippy --all-targets --locked -- -D warnings
      - run: cargo +stable test --locked
      - run: python3 scripts/update-runner.py --check
      - run: docker build -t local/runnerctl-test-base:1 runner
      - run: docker build -t local/runnerctl-test:1 -f tests/Dockerfile .
      - run: bash tests/entrypoint.sh
      - run: bash tests/docker-socket.sh
      - run: cargo +stable test --locked docker_ -- --ignored --nocapture
  # GitHub-hosted macOS runners have no Docker; Docker checks run on a local Mac.
  macos:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup toolchain install stable --profile minimal --component clippy
      - run: cargo +stable clippy --all-targets --locked -- -D warnings
      - run: cargo +stable test --locked
  # GitHub-hosted Windows runners have only Windows containers; Docker checks run on a local PC.
  windows:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup toolchain install stable --profile minimal --component clippy
      - run: cargo +stable clippy --all-targets --locked -- -D warnings
      - run: cargo +stable test --locked