你可以通过以下方式, 为 SkyWalking 社区做出贡献.
- 通览 SkyWalking 的文档, 指出或修复文档不准确的地方, 也可以将 SkyWalking 文档翻译成其他语言.
- 下载我们的发行版本, 尝试用其监控你的应用程序, 并向我们反馈您的想法, 疑问或使用案例.
- 阅读我们的源码, 如果对于细节有疑问, 向我们提问.
- 寻找代码中的 bug, 可在这里提交问题, 并且您也可以尝试修复它.
- 从标记为需要帮助的问题列表中入手开始你的贡献.
- 在 GitHub 的问题列表提交问题或开启一个讨论.
- 通过网页邮件列表查看所有邮件的讨论, 如果您是 SkyWalking 项目的 committer, 可在浏览器模式下登录并使用邮件列表. 否则, 按照下面指南进行订阅.
- 问题的报告和讨论也可在
[email protected]
邮件列表中进行. 发送任意内容邮件到[email protected]
, 按照回复订阅邮件列表.
以下所有渠道均向社区开放, 您可以选择自己喜欢的方式.
- 提交问题
- 邮件列表: [email protected]. 发送邮件到
[email protected]
, 按照回复订阅邮件列表. - Gitter
- QQ 群: 392443393
对于代码开发者, 首先阅读编译指南. 它会告诉你如何在本地构建 SkyWalking.
在搭建好本地开发环境并且写完代码之后, 为了能够让你的代码更快更容易被 SkyWalking 合并, 你需要在本地先运行单元测试 (UT), 确保你修改/新加的代码 没有破坏现有的功能, 还需要新增一些单元测试代码来验证你修改/新增的代码正常工作, 同时也可以避免以后的贡献者修改你代码的时候遭到破坏. 如果新增的代码涉及到第三方组件/库, 你还需要编写一些集成测试 (IT).
SkyWalking 利用插件 maven-surefire-plugin
来运行单元测试, 而使用插件 maven-failsafe-plugin
来运行集成测试,
插件 maven-surefire-plugin
运行时将会把集成测试 (类名以 IT
开头的类) 排除, 留给插件 maven-failsafe-plugin
去运行,
maven-failsafe-plugin
被绑定到 maven 的 CI-with-IT
profile, verify
执行目标上. 因此, 如果你要运行单元测试,
使用 ./mvnw clean test
, 这只会运行单元测试, 不会运行集成测试.
如果你想运行集成测试, 请确保激活 CI-with-IT
profile 以及你要运行集成测试的模块的 profile.
举个例子, 如果你想运行 oap-server
模块的集成测试, 使用 ./mvnw -Pbackend,CI-with-IT clean verify
,
如果你想运行所有集成测试, 只需要运行 ./mvnw -Pall,CI-with-IT clean verify
.
请注意, 如果你要编写集成测试, 命名时请使用 IT*
开头, 使得只在 CI-with-IT
profile 下才会运行.
SkyWalking 提供了许多方法来对现有功能进行扩展. 如果你对这些方式感兴趣, 阅读以下指南.
- Java agent 插件开发指南. 本文将帮助您开发 SkyWalking Java agent 插件以支持更多框架或组件. 无论是进行开源插件或私有插件的开发都需要阅读这个指南.
- 如果您想开发其他语言的探针或组件, 请阅读组件库定义和扩展文档.
- 数据存储扩展开发指南. 除了官方已经支持的存储实现外, 可帮助潜在的贡献者实现新的数据存储的实现.
- 通过 oal 脚本自定义分析. 指导您使用 oal 脚本来提供自己所需的指标.
- 为新指标提供源和域扩展. 如果你想分析一个目前 SkyWalking 尚未提供的新的指标, 你就无法使用既有的接收器, 而要添加一个新的接收器. 此时你很可能需要添加新的源和域. 本文将引导你如何做到.
- 后端存储实体扩展. 如果你想扩展 SkyWalking 存储实体, 并且想将上游修改贡献回 Apache 开源软件仓库(本仓库), 请阅读此文中的原则.
SkyWalking UI 由静态页面和 Web 容器构成.
- 自 6.1 版本开始, RocketBot UI 已经成为 SkyWalking 的原生 UI. 其采用 VueJS + TypeScript 构建. 你可以在 RocketBot 代码仓库了解更多.
- Web容器 源代码在
apm-webapp
模块中. 这是一个简单的 zuul 代理, 用于托管静态资源并使用 GraphQL 向后端发送查询请求. - 旧的 UI 代码仓库 依旧保留, 但从 6.0.0-GA 以后不会再被包含在 SkyWalking 发行版中.
Apache 发布指南向提交者团队介绍了正式的 Apache 版本发布流程, 以避免破坏任何 Apache 规则. 如果您在重新分发中保留我们的许可和须知, 则 Apache 许可允许每个人重新分发.