GitHub Actions 是什么?
GitHub Actions 是 GitHub 内置的 CI/CD 平台,用来在你的仓库中自动执行构建、测试、部署等任务。
下面我会一步步讲清楚它的原理、配置方法、以及一个可直接用的 Rust + Cargo 编译示例工作流。
🧩 一、GitHub Actions 是什么?
GitHub Actions 是一种“事件驱动”的自动化系统。
当仓库中发生事件(如推送、PR、发布)时,GitHub 会触发你定义好的 workflow(工作流) 文件去执行操作。
它可以:
-
自动编译 Rust、Go、Python、C++ 等项目;
-
自动执行测试;
-
自动构建发布包、上传到 GitHub Releases;
-
部署到服务器、DockerHub、Cloudflare、Vercel 等。
📂 二、基本结构
一个典型的 GitHub Actions 工作流位于仓库中:
.github/ └── workflows/ └── build.yml # 你自定义的 CI 工作流
build.yml 文件的基本结构:
name: Rust Build CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v4 - name: 安装 Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal - name: 构建项目 run: cargo build --release - name: 运行测试 run: cargo test --verbose
🚀 三、核心部分解释
| 部分 | 含义 |
|---|---|
on: | 触发事件。push 表示当有人推送代码时运行,pull_request 表示当提交 PR 时运行。 |
jobs: | 一个 workflow 可以包含多个作业(job)。 |
runs-on: | 指定运行环境,常用的有 ubuntu-latest、windows-latest、macos-latest。 |
steps: | 一个 job 中的执行步骤。 |
uses: | 引用别人写好的 action,比如官方的 checkout、setup-rust。 |
run: | 直接执行命令。 |
🦀 四、Rust 项目完整 CI 示例
下面是一个更完整的 Rust CI 配置文件,它包括:
-
多平台(Ubuntu / macOS / Windows)编译;
-
缓存依赖;
-
自动测试;
-
构建产物上传。
name: Rust Build & Test on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: name: Build and Test on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - name: 检出代码 uses: actions/checkout@v4 - name: 安装 Rust uses: dtolnay/rust-toolchain@stable - name: 缓存 cargo 依赖 uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: 构建项目 run: cargo build --release - name: 运行测试 run: cargo test --all - name: 上传构建产物 if: runner.os == 'Ubuntu' # 只上传一次 uses: actions/upload-artifact@v4 with: name: build-artifact path: target/release/
💾 五、如何启用 Actions
-
在项目根目录创建
.github/workflows/build.yml; -
提交并推送到 GitHub;
-
打开你的仓库 → 点击 “Actions”;
-
你会看到刚刚的工作流已自动触发;
-
点击进去可查看日志、构建结果、下载产物。
⚙️ 六、进阶技巧(可选)
1️⃣ 上传构建后的二进制到 GitHub Releases
- name: 上传到 Releases if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: files: target/release/your_binary_name env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2️⃣ 指定 Rust nightly 或自定义版本
- uses: actions-rs/toolchain@v1 with: toolchain: nightly-2025-10-01 override: true
3️⃣ 运行 Clippy 与格式检查
- name: 检查代码规范 run: cargo fmt -- --check - name: 运行 Clippy run: cargo clippy -- -D warnings
🧠 七、常见问题 FAQ
| 问题 | 解决方法 |
|---|---|
| cargo 编译太慢 | 启用 actions/cache 缓存依赖 |
| 构建产物想下载 | 用 actions/upload-artifact |
| 不想在每次 push 都运行 | 改成 on: [workflow_dispatch] 手动触发 |
| Cargo.lock 变动后缓存失效 | 缓存键包含 hashFiles('**/Cargo.lock') |
| 依赖私有 crate 或 token | 使用 ${{ secrets.CARGO_TOKEN }} |

全部 0条评论