一键搞定 Rust 多平台发布:从编译到自动化部署的实用指南

文摘   科技   2024-12-29 03:17   四川  

引言

各位 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

实际应用案例

以一个简单的命令行工具为例,完整的工作流程如下:

  1. 在 GitHub 上创建新的发布版本
  2. GitHub Actions 自动触发构建流程
  3. 几分钟后,发布页面会自动添加各平台的二进制文件
  4. Docker Hub 上会出现最新的镜像版本

总结

通过本文介绍的配置,我们可以实现:

  • 全自动的多平台构建流程
  • 统一的发布管理
  • 完整的构建矩阵覆盖(Windows、Linux、macOS、Docker)
  • 自动化的版本发布

这套配置不仅节省了大量手动操作时间,还确保了发布过程的可靠性和一致性。建议大家在实际项目中尝试使用,相信会大大提升开发效率。

参考文章

  1. 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 编程指导。

  1.  Rust:横扫 C/C++/Go 的性能之王?

  2.  从 Rust 开发者视角看 C++:优缺点大揭秘

  3.  Rust vs Zig:新兴系统编程语言之争

数据科学研习社
带你走进数据科学的世界🚀
 最新文章