Apache Whimsy 项目概述
Apache Whimsy 是一组由 ASF 和 Apache 提交者使用的有用组织工具,用于访问和操作有关 Apache 人员、项目和流程的数据。 Whimsy 既是一个 Apache PMC, 该代码库,也是 https://whimsy.apache.org/ 的实时部署实例。
ASF 的 Whimsy 实例托管静态内容、仓库检出/克隆、CGI 脚本、Rack 应用程序、Node.js 应用程序、工具和 cron 任务。 注意:访问私有 ASF 数据的功能仅限于 ASF 的提交者、成员或官员。
推送到 master 的每次提交都会在几分钟内使用 GitPubSub 部署到 https://whimsy.apache.org/。
操作指南和获取代码
Whimsy 源代码托管于: https://github.com/apache/whimsy.git 并为 Apache 提交者镜像于: https://gitbox.apache.org/repos/asf/whimsy.git
- 如何开发 Whimsy 代码
- 提交 Bug/增强请求
- 有问题?请参阅邮件列表
- 本地开发设置 - 推荐 DOCKER
- 配置指引 - 用于服务器或本地使用的各种配置设置
- 生产服务器部署说明
- 监控指南 - Whimsy 实时状态
- 依赖项列表
如何参与!
由于 Whimsy 托管了许多独立的工具,使在 ASF 中查找或更新信息变得更加简单,因此 Apache 提交者有很多参与的地方。 针对 Whimsy 上可用的众多 工具 或 公共数据文件列表 的 Bug 或改进建议始终受到欢迎, 请加入我们在 Slack 上的公共 #whimsy 频道。
如果您有一个新的 Whimsy 工具的想法,请给我们发邮件! PMC 支持丰富的服务器环境,因此部署新工具就像提议一个带有少量 Ruby 代码的 .cgi 一样简单。 我们还有 Rack 和 Sinatra 应用程序的部署,并在许多工具的 UI 构建中使用 JavaScript 和 Wunderbar。 Whimsy 服务器还支持直接访问 Apache SVN 或 git 仓库,使数据消费变得简单。
The Whimsy 提交者始终在寻找新想法来改进 Apache 的流程,我们可以帮助你入门,或者就几乎任何 “查找此 ASF 数据并简化该流程”的想法提出建议。
大多数文档位于代码或仓库中,且我们的 dev@whimsical 邮件列表非常活跃。 请注意,许多 Whimsy 工具会访问提交者或 成员私有数据,因此某些工具存在访问限制。
历史备注: 生产环境 whimsy.apache.org 服务器曾用于 我们成为 Apache Whimsy 顶级项目之前的前董事会议程工具及其他用途。 这就是为什么 whimsy.apache.org 是 生产服务器,而邮件列表和主页托管在 whimsical.apache.org 域名上。
Whimsy 架构 - 实时实例
Whimsy 运行在 Apache 托管的虚拟机中,包含 httpd、Rack、Ruby 以及多种其他工具, 这些工具直接与 Apache 组织记录的各个部分进行交互。
每种已部署工具或脚本的详细信息:
-
静态内容 推送到 GitHub master 的更改将 自动部署 - 每次提交都会触发 pygitpubsub 进行 更新,这可能需要几分钟。 请注意,这包括 脚本和应用程序的内容。
-
Repository checkouts/clones 多个仓库的副本 通过 cron 作业每 10 分钟更新一次。 这由 repository.yml 控制。 whimsy VM 还订阅了 board@,并扫描这些邮件中的提交信息,当发生提交时更新
foundation/board的副本。 -
CGI scripts
Gemfile中列出的任何依赖项 都会自动安装。 一个简单的 CGI:https://github.com/apache/whimsy/blob/master/www/test.cgi https://whimsy.apache.org/test.cgi
-
CGI 脚本的认证 参见 DEVELOPMENT.md FAQ。
-
Rack 应用程序 运行于 Apache httpd 下的 Phusion Passenger。 同样,使用
Gemfile来指定依赖项。 除了简单地 检查应用程序外,还需要在passenger:下的 puppet 文件中为每个 passenger 应用程序 添加一行,如 DEPLOYMENT.md 中所示。一个示例 rack 应用程序(两个空目录和一个单行文件):
认证要求同样需要采用两阶段方式,如上文的 CGI 所示;但更常见的条件可以在 "Rack" 层面而非应用层面进行处理,利用 Rack 中间件,例如:
https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56
-
Cron jobs 由 puppet 管理。 有关更多 信息,请参阅 deployment。
-
Generated JSON data 文件会自动生成到
/public目录中,用于 缓存 whimsy 和其他应用程序经常使用的数据。 这些 通常由调用 www/roster/public_*.rb 文件的 cron 运行。 另请参阅 数据依赖关系和流程概述。 -
许多 Whimsy 工具的 Data models 位于
lib/whimsy/asf,并且 大多数工具的 views 存储在www。 请注意,Whimsy 拥有 各种有时互不相关的工具,因此这里 并非所有内容都使用相同的模型。