引言
各位 Rustacean 好!在开发 Rust 项目时,我们经常需要为不同操作系统编译和发布二进制文件。今天为大家分享一个使用 GitHub Actions 自动构建和发布多平台 Rust 程序的完整解决方案。本文将介绍如何自动化完成以下任务:
构建 Windows 和 Linux 平台的二进制文件 构建适用于 Intel 和 M 系列芯片的 Mac 版本 生成校验和并发布到 GitHub Release 发布到 crates.io 构建并发布 Docker 镜像
具体实现
1. 触发构建
首先,我们需要设置触发条件:
on:
release:
types:
- created
2. Linux 和 Windows 构建配置
下面是 Linux 和 Windows 平台的构建配置:
jobs:
linux_windows:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository # 检出代码
uses: actions/checkout@v2
- name: Install Linux and Windows Cross Compilers # 安装交叉编译器
run: sudo apt-get install --yes --no-install-recommends musl-tools gcc-mingw-w64-x86-64-win32
- name: Install rustup targets # 安装目标平台
run: rustup target add x86_64-unknown-linux-musl x86_64-pc-windows-gnu
- name: Build the executable # 构建可执行文件
run: cargo build --release --target x86_64-unknown-linux-musl --target x86_64-pc-windows-gnu
3. macOS 构建配置
对于 macOS,我们需要同时支持 Intel 和 ARM 架构:
rustup target add x86_64-apple-darwin aarch64-apple-darwin
cargo build --release --target=x86_64-apple-darwin --target=aarch64-apple-darwin
4. 发布到 crates.io
使用 katyo/publish-crates@v2
action 发布到 crates.io:
crates:
runs-on: ubuntu-latest
needs: [linux_windows, macos]
steps:
- uses: katyo/publish-crates@v2
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
5. Docker 镜像构建与发布
最后是 Docker 镜像的构建和发布配置:
docker:
runs-on: ubuntu-latest
needs: crates
steps:
- name: Build and push
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
push: true
tags: yourname/project:latest
实际应用案例
以一个简单的命令行工具为例,完整的工作流程如下:
在 GitHub 上创建新的发布版本 GitHub Actions 自动触发构建流程 几分钟后,发布页面会自动添加各平台的二进制文件 Docker Hub 上会出现最新的镜像版本
总结
通过本文介绍的配置,我们可以实现:
全自动的多平台构建流程 统一的发布管理 完整的构建矩阵覆盖(Windows、Linux、macOS、Docker) 自动化的版本发布
这套配置不仅节省了大量手动操作时间,还确保了发布过程的可靠性和一致性。建议大家在实际项目中尝试使用,相信会大大提升开发效率。
参考文章
How to build and publish multi-platform Rust binaries via Github actions:https://rakhim.exotext.com/how-to-build-and-publish-multi-platform-rust-binaries
书籍推荐
各位 Rust 爱好者,今天为大家介绍一本《Programming Rust: Fast, Safe Systems Development》(第二版) 是由 Jim Blandy、Jason Orendorff 和 Leonora Tindall 合著的 Rust 编程指南。本书深入探讨了 Rust 语言在系统编程中的应用,着重介绍如何利用 Rust 的独特特性来平衡性能和安全性。书中涵盖了 Rust 的基础数据类型、所有权和借用概念、特征和泛型、并发编程、闭包、迭代器以及异步编程等核心内容。这本更新版基于 Rust 2021 版本,为系统程序员提供了全面而实用的 Rust 编程指导。