CI / cargo fmt (push) Has been cancelled
CI / cargo clippy (macos-latest) (push) Has been cancelled
CI / cargo clippy (ubuntu-latest) (push) Has been cancelled
CI / cargo clippy (windows-latest) (push) Has been cancelled
CI / cargo test (macos-latest) (push) Has been cancelled
CI / cargo test (ubuntu-latest) (push) Has been cancelled
CI / cargo test (windows-latest) (push) Has been cancelled
CI / cargo build (macos-latest) (push) Has been cancelled
CI / cargo build (ubuntu-latest) (push) Has been cancelled
CI / cargo build (windows-latest) (push) Has been cancelled
CI / cargo build --release (macos-latest) (push) Has been cancelled
CI / cargo build --release (ubuntu-latest) (push) Has been cancelled
CI / cargo build --release (windows-latest) (push) Has been cancelled
CI / CLI smoke (macos-latest) (push) Has been cancelled
CI / CLI smoke (ubuntu-latest) (push) Has been cancelled
CI / CLI smoke (windows-latest) (push) Has been cancelled
CI / Minimal E2E (macos-latest) (push) Has been cancelled
CI / Minimal E2E (ubuntu-latest) (push) Has been cancelled
CI / Minimal E2E (windows-latest) (push) Has been cancelled
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
1.7 KiB
1.7 KiB
Deployment
rustunnel is deployed as a single static binary. There are no containers, orchestrators, or external services required.
Release builds
CI builds release artifacts on Linux, macOS, and Windows:
cargo build --release
The resulting binary is uploaded as a GitHub Actions artifact with a 7-day retention.
Cross-platform CI
The .github/workflows/ci.yml runs on ubuntu-latest, windows-latest, and macos-latest:
cargo fmt— format checkcargo clippy— lint checkcargo test— unit and inline testscargo build— debug buildcargo build --release— release build with artifact upload- CLI smoke tests —
--help,version, invalid command/port handling - Minimal E2E — generate, listen, connect, SOCKS5, curl
E2E test flow
The E2E job uses cargo run --release -- for OS-neutral invocation and performs:
- Generate credentials to a temp directory
- Start a Python HTTP server as the target
- Start
rustunnel listenin the background - Start
rustunnel connectin the background - Wait for services to start
- curl through the SOCKS5 proxy and assert HTTP 200 + expected body content
- Cleanup via
trap cleanup EXITwith PID-based and port-based killing
No production deployment guidance
rustunnel is explicitly a lab and development tool. It does not include:
- Container images or Dockerfiles
- Kubernetes manifests
- Systemd service files
- Log rotation or monitoring infrastructure
For production tunneling, consider established tools like WireGuard, OpenVPN, or SSH.
Key source files
| File | Purpose |
|---|---|
.github/workflows/ci.yml |
CI matrix: fmt, clippy, test, build, smoke, E2E |