debian

Rust在Debian上的持续集成与部署实践

小樊
41
2025-12-19 00:37:36
栏目: 编程语言

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

0
看了该问题的人还看了