菜单

Travis CI 和 AppVeyor

相关源文件

本文档描述了使用 Travis CI 和 AppVeyor 为 draw.io-desktop 设置的旧版持续集成。这些服务可自动为 Windows、macOS 和 Linux 平台构建和打包 draw.io 桌面应用程序。有关当前的 GitHub Actions 工作流信息,请参阅 GitHub Actions

CI/CD 工作流概述

draw.io 桌面应用程序使用多平台 CI/CD 管道来自动化跨不同操作系统的构建过程。Travis CI 负责 macOS 和 Linux 的构建,而 AppVeyor 则负责 Windows 的构建。

来源:.travis.yml1-54 appveyor.yml1-35 DEVELOPMENT.md12-29

Travis CI 配置

Travis CI 配置用于构建 draw.io 桌面应用程序的 macOS 和 Linux 版本。

构建矩阵

Travis CI 使用构建矩阵来处理多个平台

来源:.travis.yml7-14 .travis.yml30-51

关键配置元素

  1. 基础环境:

    • macOS:使用 xcode11.3 镜像
    • Linux:使用 bionic 发行版和 clang 编译器
  2. Git 子模块处理:

    • 配置 git 将 draw.io 子模块使用 HTTPS 而非 SSH
    • 初始化并递归更新子模块
  3. 依赖项:

    • 安装 Node.js 10
    • 安装 Yarn 包管理器
    • 对于 Linux 构建,安装构建所需的其他软件包
  4. 构建流程:

    • 运行 sync 脚本以准备代码库
    • 执行 release-linux 构建 Linux 包
    • 对于 Linux 构建,还运行 release-snap 创建 Snap 包
  5. Snap 部署:

    • 对于 Linux 构建,与 Snap Store 进行身份验证
    • 将 Snap 包发布到 stable 频道

来源:.travis.yml17-51

AppVeyor 配置

AppVeyor 用于构建 draw.io 桌面应用程序的 Windows 版本。

来源:appveyor.yml3-35

关键配置元素

  1. 环境设置:

    • 将平台配置为 x64
    • 设置 git 使用 LF 行尾
  2. 存储库准备:

    • 克隆存储库
    • 将 git 子模块配置为使用 HTTPS 而非 SSH
    • 初始化并递归更新子模块
  3. 依赖项:

    • 安装 Node.js 10 x64
    • 安装 Yarn 包管理器
    • 在主项目和 draw.io WebApp 中安装项目依赖项
  4. 构建流程:

    • 运行 sync 脚本以准备代码库
    • 执行 release-win 来构建 Windows 安装程序
    • 使用 disableUpdate 参数运行 sync 脚本
    • 使用 release-appx 构建 Windows Store 包

来源:appveyor.yml3-35

环境变量和密钥

两个 CI 服务都需要特定的环境变量来处理身份验证、代码签名和发布。

所需变量

可变目的所需功能
GH_TOKEN用于发布 GitHub release 的 tokenTravis CI 和 AppVeyor
CSC_LINK代码签名证书(base64 编码或 URL)Travis CI 和 AppVeyor
CSC_KEY_PASSWORD代码签名证书的密码Travis CI 和 AppVeyor
SNAP_TOKENSnap Store 的身份验证 tokenTravis CI (仅限 Linux 构建)

代码签名要求

  • Windows:需要代码签名证书(普通或 EV)
  • macOS:需要 Apple 颁发的开发者 ID 证书
  • Linux:Snap 包由 Snap Store 进行签名

来源:DEVELOPMENT.md31-82

与 GitHub Releases 的集成

在构建成功后,Travis CI 和 AppVeyor 都会将它们的构建产物上传到一个草稿 GitHub release。在所有构建完成后,该 release 可以被手动发布。

来源:DEVELOPMENT.md12-29

各平台构建产物

CI 流程为每个平台生成不同的包类型

平台CI 服务包类型命令
WindowsAppVeyorNSIS 安装程序release-win
WindowsAppVeyorWindows Store (APPX)release-appx
macOSTravis CIDMG 安装程序release-linux
LinuxTravis CIAppImage、DEB、RPMrelease-linux
LinuxTravis CISnap Packagerelease-snap

来源:.travis.yml46-51 appveyor.yml29-33

使用 CI 管道

当对 draw.io 桌面应用程序进行更改时

  1. 将更改推送到存储库
  2. CI 服务会自动构建应用程序
  3. 使用来自两个 CI 服务的安装程序创建草稿 release
  4. 查看草稿 release,并在所有安装程序可用后发布它

请注意,Travis CI 的构建,特别是 macOS 的构建,由于构建队列的原因,有时可能需要相当长的时间。

来源:DEVELOPMENT.md12-29