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条评论