本页面概述了 drawio-desktop 仓库中使用的持续集成 (CI) 设置。它解释了所使用的 CI 系统、代码更改触发的工作流、构建过程、特定于平台的构建以及工件生成。本文件特别关注自动化构建和测试基础架构 - 有关构建配置和打包过程的详细信息,请参阅构建与打包。
drawio-desktop 项目使用三个主要的 CI 系统来确保所有支持平台上的可靠构建。
这种多 CI 方法提供了冗余并实现了不同的构建配置。
| CI 系统 | 主要平台 | 工作流文件 |
|---|---|---|
| GitHub Actions | Windows、macOS、Linux | .github/workflows/electron-builder.yml .github/workflows/electron-builder-win.yml |
| Travis CI | macOS、Linux | .travis.yml |
| AppVeyor | Windows | appveyor.yml |
来源
CI 工作流主要由标签推送触发。当一个模式为 v*(例如,v1.0.0)的标签被推送到仓库时,所有 CI 系统都会为其各自的平台触发构建。
来源
构建过程包含几个关键步骤,这些步骤在所有 CI 系统中都是通用的。
drawio-dev 仓库以检索最新的 draw.io 核心文件。sync.js/sync.cjs 脚本准备构建。来源
该 sync.js/sync.cjs 脚本在构建过程中起着至关重要的作用。它通过以下方式为构建准备应用程序:
该脚本接受一个可选参数 disableUpdate,当提供此参数时,它将修改配置以禁用自动更新功能。
yarn run sync # Normal build with auto-update enabled
yarn run sync disableUpdate # Build with auto-update disabled
这用于 32 位 Windows、ARM64 Windows 和 APPX 构建,以确保只有 64 位 Windows 版本会自动更新。
来源
CI 系统以不同的方式处理特定于平台的构建,为每个平台使用不同的脚本。
Windows 构建由以下脚本处理:
yarn run release-win:构建 64 位 Windows 版本yarn run release-win32:构建 32 位 Windows 版本yarn run release-win-arm64:构建 ARM64 Windows 版本yarn run release-appx:构建 Windows 应用商店 (APPX) 包这些脚本使用 electron-builder 配置文件,例如 electron-builder-win.json、electron-builder-win32.json、electron-builder-win-arm64.json 和 electron-builder-appx.json。
macOS 构建由以下命令处理:
yarn run release-linux:尽管名称如此,此脚本在 macOS 上运行时会同时构建 Linux 和 macOS 版本。此脚本使用 electron-builder-linux-mac.json 配置文件。
Linux 构建由以下命令处理:
yarn run release-linux:构建 AppImage、DEB 和 RPM 包yarn run release-snap:构建 Snap 包这些脚本使用 electron-builder-linux-mac.json 和 electron-builder-snap.json 配置文件。
为每个平台生成以下工件:
| 平台 | 工件 |
|---|---|
| Windows | NSIS 安装程序 (.exe)、便携版 (.exe)、MSI 包 (.msi)、Windows 应用商店包 (.appx) |
| macOS | 磁盘映像 (.dmg) |
| Linux | AppImage (.AppImage)、Debian 包 (.deb)、RPM 包 (.rpm)、Snap 包 (.snap) |
来源
CI 系统使用多个环境变量和秘密来启用代码签名、公证和部署。
用于 macOS 和 Linux 构建
APPLEID:用于公证的 Apple IDAPPLEIDPASS:用于公证的 Apple ID 密码APPLE_TEAM_ID:Apple Developer Team IDCSC_KEY_PASSWORD:代码签名证书密码CSC_LINK:代码签名证书GITHUB_TOKEN:用于发布 releases 的 GitHub TokenSNAP_TOKEN:用于发布到 Snap Store 的 Snapcraft Token用于 Windows 构建
WIN_CSC_LINK:Windows 代码签名证书WIN_CSC_KEY_PASSWORD:Windows 代码签名证书密码GITHUB_TOKEN:用于发布 releases 的 GitHub Token下表显示了哪些秘密被哪个 CI 系统使用。
| 秘密 | GitHub Actions | Travis CI | AppVeyor |
|---|---|---|---|
APPLEID | ✅ | ❌ | ❌ |
APPLEIDPASS | ✅ | ❌ | ❌ |
APPLE_TEAM_ID | ✅ | ❌ | ❌ |
CSC_KEY_PASSWORD | ✅ | ❌ | ❌ |
CSC_LINK | ✅ | ❌ | ❌ |
WIN_CSC_LINK | ✅ | ❌ | ❌ |
WIN_CSC_KEY_PASSWORD | ✅ | ❌ | ❌ |
GITHUB_TOKEN | ✅ | ❌ | ❌ |
SNAP_TOKEN | ✅ | ✅ | ❌ |
来源
drawio-desktop 的持续集成系统支持在所有支持的平台上自动构建和测试应用程序。使用多个 CI 系统可提供冗余并支持不同的构建配置。CI 过程由标签推送触发,包括从仓库检出到工件发布的多个步骤。
该系统使用特定的脚本和配置文件来处理不同的平台。
sync.js/sync.cjs:为构建准备应用程序release-win、release-win32、release-win-arm64、release-appx:构建 Windows 工件release-linux:构建 Linux 和 macOS 工件release-snap:构建 Snap 包这些脚本使用 electron-builder 和特定于平台的配置文件来创建最终工件,然后将这些工件发布到 GitHub Releases,对于 Snap 包,则发布到 Snap Store。
来源