ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Apache DolphinScheduler 构建与发布工程实战:源码全量构建、ZooKeeper 多版本兼容与 Release 产物详解

Apache DolphinScheduler 构建与发布工程实战:源码全量构建、ZooKeeper 多版本兼容与 Release 产物详解 Apache DolphinScheduler 构建与发布工程实战源码全量构建、ZooKeeper 多版本兼容与 Release 产物详解【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler本文以仓库根目录的 CONTRIBUTING.md 为骨架深入剖析 Apache DolphinScheduler 的构建与贡献工程体系如何使用 Maven Wrapper 完成全量源码构建、如何通过 Maven Profile 切换 ZooKeeper 3.8 / 3.4 两套兼容矩阵、release 构建最终产出哪些可分发的 tar.gz 产物并结合 根 POM、BOM 与 dolphinscheduler-dist 的源码实现补充构建参数背后的真实机制。读完本文你可以独立完成 DolphinScheduler 的源码编译、自定义 ZooKeeper 版本构建、产物定位并了解从开发环境搭建到提交规范的一条完整贡献链路。一、构建入口CONTRIBUTING.md 的核心命令CONTRIBUTING.md 是贡献者进入本仓库的第一份工程文档其核心内容非常精炼但信息密度很高./mvnw clean install -Prelease这条命令是生产级全量构建的标准入口。需要理解它的三个组成部分./mvnwMaven Wrapper仓库自带 mvnw 启动脚本与 .mvn/wrapper/maven-wrapper.properties。从该配置文件可以看到Wrapper 实际锁定的是Maven 3.8.4因此贡献者无需本机预装特定版本 Maven构建行为在不同机器上是一致的。clean install先清理再全量安装。根 POM 的 modules 列表 声明了 26 个子模块master、worker、api、alert、spi、registry、各插件家族、ui、dist 等一次 reactor 构建即完成全部后端模块编译、单元测试、代码风格检查与打包。-Prelease激活 根 POM 中定义的releaseprofile它会翻转三个关键开关属性默认值release 下取值作用build.ui.skiptruefalse是否构建 Vue 3 前端dolphinscheduler-ui 模块build.plugins.skipfalsetrue是否跳过任务/数据源等插件的预构建build.assembly.skiptruefalse是否执行 dist 模块的 assembly 打包生成 tar.gz也就是说默认构建不带 profile不构建 UI、不生成发行包-Prelease才真正产出可分发的二进制与源码包。另外还有一个 staging profile它同时保留 UI 构建与插件构建按 开发环境文档 的说明-Pstaging适合开发测试与离线部署-Prelease不含预构建插件、适合生产环境插件可在有网环境按需下载。二、按 ZooKeeper 版本构建-Dzk-3.4的底层机制CONTRIBUTING.md 的第二节明确了两种 ZooKeeper 兼容构建方式# Default Zookeeper 3.8.0 ./mvnw clean install -Prelease # Support to Zookeeper 3.4.6 ./mvnw clean install -Prelease -Dzk-3.4默认路径面向 ZooKeeper 3.8.x 集群-Dzk-3.4则让产物兼容 ZooKeeper 3.4.6 及以上的旧集群。这个差异的落点在 dolphinscheduler-bom/pom.xml 的 profiles 中默认 profileactiveByDefaulttrue固定zookeeper.version3.8.3、curator.version5.5.0zk-3.4profile由-Dzk-3.4属性激活切换为zookeeper.version3.4.14、curator.version4.3.0。注意一个细节CONTRIBUTING.md 表述默认支持 Zookeeper 3.8.0而 BOM 当前默认实际锁定的是3.8.3客户端——二者同属 3.8 系列文档给出的是能力基线BOM 给出的是精确版本钉扎。由于 ZooKeeper 客户端协议存在版本耦合3.4 系列与 3.5 在部分请求上并不互通DolphinScheduler 选择同一份代码、两个客户端矩阵的方案注册中心模块通过 dolphinscheduler-registry 下的 zookeeper 插件以及 etcd、jdbc 插件与 ZK 通信切换 profile 只需整体替换 Curator ZooKeeper 客户端版本即可无需改动业务代码。如果你需要为存量 3.4.x 集群发布补丁版本这是必须记住的构建开关。三、构建产物bin 包与 src 包从哪来CONTRIBUTING.md 声明了最终产物dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-bin.tar.gz: Binary package of DolphinScheduler dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-src.tar.gz: Source code package of DolphinScheduler其中${latest.release.version}是发布版本号的占位写法当前开发线版本为dev-SNAPSHOT见 根 POM。产物生成的真实机制在 dolphinscheduler-dist/pom.xmlfinalName 与 assembly 插件dist 模块将finalName设为apache-dolphinscheduler-${project.version}并配置maven-assembly-plugin的两个 execution——dolphinscheduler-bin使用描述符 dolphinscheduler-bin.xmlsrc使用 dolphinscheduler-src.xmlappendAssemblyIdtrue使其分别追加-bin/-src后缀最终产出上述两个 tar.gz。依赖即内容dist 模块聚合了 standalone-server、api、alert-server、ui、tools 等依赖dependencies 段bin 描述符负责把各服务的 jar、bin 脚本、conf、lib 组装成可解压即跑的目录结构。插件构建钩子dist 还在package阶段通过 exec 插件执行 assembly-plugins.sh并传入${build.plugins.skip}作为参数——这正是 release 与 staging 两条构建链行为分叉的执行点release 跳过插件预构建staging 保留插件以便离线使用。四、构建过程中的质量关卡一次install实际上要闯过若干自动化关卡这些配置对贡献者理解CI 会失败在哪非常有用均位于 根 POM build 段代码风格Spotlessspotless-maven-plugin的checkgoal 绑定在compile阶段格式不合规直接构建失败。规则来自三个仓库内文件style/spotless_dolphinscheduler_formatter.xmlEclipse 格式化模板、style/license-header强制 Apache 许可头、style/eclipse.importorderimport 排序。它还禁止通配符 import、PowerMock import 与 JUnit4 import并覆盖 Java 源码、pom.xml与docs/**/*.md。本地修复方式是./mvnw spotless:apply单元测试与覆盖率maven-surefire-plugin配置skipAfterFailureCount1首个用例失败即停止快速反馈并配合 JaCoCo 完成字节码插桩与报告输出可通过-Dmaven.test.skiptrue在纯打包场景跳过测试。依赖安全扫描OWASP dependency-check 的failBuildOnCVSS7默认skipDepChecktrue关闭且仅在 jdk-11 profile 下自动启用。依赖分析maven-dependency-plugin的analyze-only检测未使用/隐式依赖analyze.skip控制开关。五、从构建到贡献开发环境与协作规范CONTRIBUTING.md 开篇指向了完整的贡献文档 docs/docs/en/contribute/join/contribute.md它定义了参与路径从回答 issue、完善文档、补充测试用例到提交修复 Bug 或新增 Feature 的 PR。对代码贡献者几条关键约定值得牢记分支与 Issue在dev分支基础上创建功能分支命名如feature-issue-id认领 Feature 时先在 Issue 下回复并约定提交时间PR 必须关联 Issue 且范围收敛一个模块/一个关注点。提交信息遵循[Type-ISSUE_ID][Scope] Subject格式如[Fix-18168][Worker] ...详见 commit-message.md。开发环境双模式development-environment-setup.md 给出两条路线——Standalone 模式推荐直接运行org.apache.dolphinscheduler.StandaloneServer主类内置 H2 数据库与 ZK 测试服务覆盖大多数开发调试场景Normal 模式分别启动 MasterServerRPC 端口 5679、WorkerServer1235、AlertServer 与 ApiApplicationServer12345启动后 Swagger 文档位于http://localhost:12345/dolphinscheduler/swagger-ui/index.html更接近生产形态需自行准备 ZooKeeper 与 MySQL/PostgreSQL 元数据库并将各服务application.yaml中的spring.datasource指向真实库。前端dolphinscheduler-ui为 Vue 3 Vite TypeScript 工程使用 pnpm 管理pnpm install pnpm run dev后访问http://localhost:5173默认账号 admin/dolphinscheduler123代码风格用pnpm run lint、pnpm run prettier修复pnpm exec vue-tsc --noEmit做全量类型检查。Docker 镜像构建./mvnw -B clean package -Dmaven.test.skip -Ddocker.tagTAG -Pdocker,[release|staging]构建多架构镜像linux/amd64 linux/arm64clean deploy加-Ddocker.hubHUB_URL可推送自有仓库Docker 需 19.03 以上内置 buildx。六、常用构建与测试命令速查结合 仓库根目录的工程索引贡献者日常最常用的一组命令# 全量发布构建产出 dist tarball ./mvnw clean install -Prelease # ZooKeeper 3.4 兼容构建 ./mvnw clean install -Prelease -Dzk-3.4 # 只跳过 UI 模块加速后端迭代 ./mvnw -pl !dolphinscheduler-ui clean install # 构建单个模块及其依赖-am ./mvnw -pl dolphinscheduler-master -am clean install # 代码风格自动修复 ./mvnw spotless:apply # 单模块单元测试 ./mvnw -pl dolphinscheduler-master test # API 集成测试独立 reactor需要 Docker mvn -pl dolphinscheduler-api-test/dolphinscheduler-api-test-case test # E2E 浏览器测试Selenium DockerApple Silicon 加 -Dm1_chiptrue mvn -pl dolphinscheduler-e2e/dolphinscheduler-e2e-case test小结DolphinScheduler 的贡献体系在 CONTRIBUTING.md 中浓缩为一条构建命令 一个 ZK 兼容开关 两类产物而其背后是Wrapper 锁定的 Maven 3.8.4 保证环境一致、release/staging/docker三个 profile 分别控制 UI、插件与镜像的构建矩阵、BOM 中以 Curator/ZK 客户端双版本矩阵实现的注册中心兼容策略、dist 模块 assembly 描述符驱动的 bin/src 双包发布以及 Spotless、JaCoCo、Surefire 构成的高质量关卡。掌握这条链路后无论是为旧版 ZooKeeper 集群出补丁、本地全量编译排错还是理解 CI 在哪个环节拦截了你的 PR都能做到有的放矢。【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表