Rust在Debian上的持续集成与部署实践
一 环境准备与工具链
二 持续集成流水线设计
三 部署路径对比与选择
| 路径 | 适用场景 | 关键工具/命令 | 优点 | 注意点 |
|---|---|---|---|---|
| 二进制直传 + systemd | 物理机/VM、内网服务 | scp/rsync + systemctl | 简单直接、低开销 | 需处理备份、回滚、权限与日志 |
| Debian 包 .deb | 团队/多机标准化分发 | cargo-deb + dpkg/apt | 版本化、依赖管理、系统级一致 | 需配置打包元数据与 systemd 单元 |
| Docker 容器化 | 云原生/多环境一致交付 | 多阶段 Dockerfile + docker/compose/k8s | 环境隔离、可移植、易扩缩 | 镜像构建与推拉、运行时安全与日志采集 |
| 说明:以上路径可组合使用(如先产 .deb 再入容器,或在容器中运行 .deb 安装流程)。 |
四 落地示例
name: Rust CI
on: [push, pull_request]
jobs:
build-test-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Fmt
run: cargo fmt --check
- name: Clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Test
run: cargo test --all-features
- name: Audit
run: cargo audit
五 生产部署与运维要点
[Unit]
Description=Your Rust App
After=network.target
[Service]
ExecStart=/usr/local/bin/your_app
WorkingDirectory=/opt/your_app
Restart=always
User=appuser
Group=appgroup
StandardOutput=append:/var/log/your_app.log
StandardError=append:/var/log/your_app.error.log
Environment=RUST_LOG=info
[Install]
WantedBy=multi-user.target