菜单

GitHub Actions

相关源文件

本文档介绍了 drawio-desktop 仓库中用于持续集成和自动化构建的 GitHub Actions 工作流。重点阐述了 GitHub Actions 如何配置和用于构建不同平台的应用程序。有关项目中使用的其他 CI 系统的更多信息,请参阅 Travis CI & AppVeyor

概述

drawio-desktop 仓库将 GitHub Actions 作为其主要的 CI 系统,以自动化跨多个平台的构建和发布。当推送版本标签时,工作流会被触发,并处理从源代码准备到构建特定平台包的整个过程。

来源:.github/workflows/electron-builder.yml1-78 .github/workflows/electron-builder-win.yml1-77

工作流触发器

两个 GitHub Actions 工作流都配置为仅在向仓库推送匹配模式 v*(例如 v1.0.0)的 Git 标签时触发。这确保了仅为官方发布创建构建。

来源:.github/workflows/electron-builder.yml3-6 .github/workflows/electron-builder-win.yml3-6

Linux 和 macOS 工作流

Linux 和 macOS 构建由 electron-builder.yml 工作流处理,该工作流使用矩阵策略并行在 Ubuntu 和 macOS 上进行构建。

工作流架构

来源:.github/workflows/electron-builder.yml8-78

关键步骤

  1. 矩阵配置:工作流在 Ubuntu 和 macOS 上均运行。

  2. 环境设置:设置包括签名凭据在内的环境变量。

  3. 仓库检出:检出主仓库及其子模块,然后检出 drawio-dev 仓库。

  4. 文件准备:从 drawio-dev 复制必要文件,并删除未使用的文件。

  5. 构建过程:安装依赖项并运行相应的构建脚本。

  6. Snap 包 (仅限 Ubuntu):构建并发布 Snap 包到 Snap Store 的 Edge 频道。

来源:.github/workflows/electron-builder.yml10-78

Windows 工作流

Windows 构建由单独的工作流文件 electron-builder-win.yml 处理。此工作流为不同的 Windows 架构构建应用程序的多个变体。

工作流架构

来源:.github/workflows/electron-builder-win.yml8-77

关键步骤

  1. 环境设置:配置必要环境变量和密钥。

  2. 仓库检出:与 Linux/macOS 工作流类似,检出仓库并准备文件。

  3. 多架构构建流程:

    • 首先构建禁用自动更新的 32 位和 ARM64 版本。

    • 然后构建启用自动更新的 64 位版本。

    • 最后构建禁用自动更新的 Windows 应用商店 APPX 包。

来源:.github/workflows/electron-builder-win.yml47-76

构建配置管理

工作流利用了多个配置文件和构建脚本来生成最终的软件包。

来源:.github/workflows/electron-builder.yml67-69 .github/workflows/electron-builder-win.yml59-76

密钥管理

工作流使用多个 GitHub 密钥来处理构建过程中的安全方面,例如代码签名和发布。

Linux/macOS 密钥

  • APPLEIDAPPLEIDPASSAPPLE_TEAM_ID:用于 macOS 身份验证。
  • CSC_KEY_PASSWORDCSC_LINK:用于代码签名证书。
  • SNAP_TOKEN:用于 Snap Store 身份验证。
  • GH_TOKEN:用于访问 drawio-dev 私有仓库。

Windows 密钥

  • WIN_CSC_LINKWIN_CSC_KEY_PASSWORD:用于 Windows 代码签名。
  • GH_TOKEN:用于访问 drawio-dev 私有仓库。

来源:.github/workflows/electron-builder.yml15-26 .github/workflows/electron-builder-win.yml11-13 .github/workflows/electron-builder-win.yml53-55

输出构件

GitHub Actions 工作流为不同的平台和架构生成多个构件。

平台架构包类型自动更新
Linuxx64AppImage已启用
Linuxx64DEB已启用
Linuxx64RPM已启用
Linuxx64Snap已启用
macOSx64DMG已启用
Windowsx64NSIS/EXE已启用
Windowsx32NSIS/EXE已禁用
WindowsARM64NSIS/EXE已禁用
Windowsx64APPX已禁用

来源:.github/workflows/electron-builder.yml58-75 .github/workflows/electron-builder-win.yml52-76

与其他构建系统的关系

虽然 GitHub Actions 是 drawio-desktop 的主要构建系统,但该仓库也为 Travis CI 和 AppVeyor 等旧系统维护了配置。有关这些系统的更多信息,请参阅 Travis CI & AppVeyor

有关整体构建和打包过程的信息,请参阅 构建和打包