GitHub Actions 是什么?

john
john 在知识的海洋中遨游

0 人点赞了该文章 · 164 浏览

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-latestwindows-latestmacos-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

  1. 在项目根目录创建 .github/workflows/build.yml

  2. 提交并推送到 GitHub;

  3. 打开你的仓库 → 点击 “Actions”

  4. 你会看到刚刚的工作流已自动触发;

  5. 点击进去可查看日志、构建结果、下载产物。


⚙️ 六、进阶技巧(可选)

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 }}

  

发布于 2025-11-04 14:53

免责声明:

本文由 john 原创或转载,著作权归作者所有,如有侵权,请联系我们删除。 info@frelink.top

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

暂无评论

All Rights Reserved Frelink ©2025