菜单

CI/CD 流水线

相关源文件

目的与范围

本文档涵盖了 Bun 的持续集成和持续部署 (CI/CD) 流水线基础设施,该基础设施可跨多个平台和架构自动构建、测试和发布 Bun。该流水线主要使用 Buildkite 作为编排平台实现,并使用自定义的 JavaScript/Node.js 脚本来管理流水线生成、构建执行和基础设施配置。

有关构建系统配置和 CMake 设置的信息,请参阅 构建配置。有关跨平台支持和特定平台实现的详细信息,请参阅 跨平台支持

管道架构概述

CI/CD 流水线围绕一个动态流水线生成系统构建,该系统根据当前上下文(分支、提交消息、手动触发等)生成特定于平台的构建和测试作业。

高层流水线流程

来源: .buildkite/ci.mjs1-1207

流水线生成系统

流水线由 ci.mjs 脚本动态生成,该脚本根据各种因素确定要运行的构建和测试

来源: .buildkite/ci.mjs960-1045 .buildkite/ci.mjs1051-1172

构建配置和生成

平台和目标配置

流水线支持在结构化配置对象中定义的多个构建平台和目标

来源: .buildkite/ci.mjs104-141 .buildkite/ci.mjs121-141

构建步骤生成

构建过程被拆分为独立的 C++ 和 Zig 编译步骤以实现并行化

来源: .buildkite/ci.mjs424-458 .buildkite/ci.mjs481-493 .buildkite/ci.mjs500-514

构建执行

代理选择和基础设施

流水线根据平台和要求使用不同的代理类型

来源: .buildkite/ci.mjs294-381 .buildkite/ci.mjs270-287

构建环境设置

构建环境配置有特定的环境变量和构建命令

来源: .buildkite/ci.mjs392-417 .buildkite/ci.mjs411-417

测试执行

测试运行器架构

测试执行系统使用专用的 Node.js 测试运行器,该运行器跨平台协调 Bun 的测试执行

来源: scripts/runner.node.mjs280-608 scripts/runner.node.mjs926-986 .buildkite/ci.mjs547-578

测试平台配置

测试在具有特定超时和并行设置的不同平台配置下运行

来源: scripts/runner.node.mjs67-76 scripts/runner.node.mjs992-1000 .buildkite/ci.mjs571

基础设施管理

容器镜像构建

流水线可以构建和发布用于 CI 环境的 Docker 镜像

来源: .buildkite/ci.mjs585-620 scripts/machine.mjs1-2000 .buildkite/ci.mjs177-220

代理管理

Buildkite 代理系统通过专用脚本进行管理

来源: scripts/agent.mjs30-220 scripts/agent.mjs68-119

Artifact 管理和发布

发布管道

发布过程在主分支上触发,并协调 Artifact 的收集

来源: .buildkite/ci.mjs627-643 .buildkite/ci.mjs649-659 .buildkite/ci.mjs1144-1147

流水线选项和手动控制

流水线通过 Buildkite 的 block 步骤支持手动配置

来源: .buildkite/ci.mjs770-940 .buildkite/ci.mjs1015-1044 .buildkite/ci.mjs945-956