在Debian上实现Rust项目的持续集成(CI)与部署(CD),可借助GitHub Actions、GitLab CI/CD等工具,以下是具体步骤:
在项目根目录下创建.github/workflows/rust-ci.yml
,定义CI/CD流程:
name: Rust CI/CD
on:
push:
branches: [main] # 触发条件:推送到main分支
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # 检出代码
- name: Install Rust
run: rustup default stable # 安装Rust稳定版
- name: Build
run: cargo build --release # 编译项目
- name: Run tests
run: cargo test --verbose # 运行测试
deploy:
runs-on: ubuntu-latest
needs: build # 依赖构建成功
if: github.ref == 'refs/heads/main' # 仅main分支触发部署
steps:
- uses: actions/checkout@v4
- name: Deploy to server
run: scp target/release/your_app user@your-server:/path/to/deploy # 部署二进制文件
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} # 使用GitHub Secrets存储私钥
说明:
rustup
安装Rust工具链,cargo
完成构建与测试。scp
将二进制文件传输至服务器,需在GitHub Secrets中配置SSH密钥。Swatinem/rust-cache
缓存依赖,减少重复下载:- uses: Swatinem/rust-cache@v2
cargo nextest run --all-features
。在Debian服务器上执行:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner
sudo gitlab-runner register --non-interactive --executor "docker" --docker-image rust:latest
说明:注册Runner时需关联GitLab项目,并指定rust:latest
镜像。
.gitlab-ci.yml
stages:
- build
- test
- deploy
build:
stage: build
script:
- rustup default stable
- cargo build --release
test:
stage: test
script:
- cargo test --verbose
deploy:
stage: deploy
script:
- scp target/release/your_app user@your-server:/path/to/deploy
only:
- main # 仅main分支触发部署
说明:
only
关键字限制部署阶段仅在main
分支触发。rust:latest
镜像)。runs-on
中指定ubuntu-latest
或macos-latest
,并利用cross
工具交叉编译。通过上述配置,可实现Rust项目在Debian环境下的自动化构建、测试与部署,显著提升开发效率与交付可靠性。