主要观点:作者在 Canonical 工作,负责多个软件团队,使用两个不同软件 Forge(Github 和 Launchpad),需跟踪团队发布并提供工具,于是开发了releasegen
工具。
关键信息:
releasegen
受 elementaryOS 发布跟踪器启发,最初是其 Python 脚本的简单 fork,后重写为 Go 语言。- 支持跨多个 Github 组织和团队分离发布,通过简单配置格式实现。
- 输出格式受原始 Python 脚本启发,增加了一些字段。
- 利用 Go 的并发特性处理 Github 数据,Launchpad 数据通过抓取网页获取。
- 最近
releasegen
增加了从项目 README 中读取徽章并链接到特定存储的功能。 - Hugo 可读取
releasegen
生成的 JSON 文件并在网站中渲染。 - 网站托管在 Github Pages,通过 Github Actions 每小时更新一次。
重要细节: - 配置文件
releasegen.yaml
用于指定 Github 组织、团队和 Launchpad 项目组等信息。 releasegen
输出的 JSON 文件包含发布和相关包的详细信息,如https://github.com/canonical/charm-eng-releases/blob/main/data/repos.json
。- Hugo 布局使用 Vanilla Framework,包含基本页面结构和部分组件,如
https://github.com/canonical/charm-eng-releases/blob/main/layouts/index.html
。 - 网站界面可扩展表格行显示相关工件详情,点击“eye”图标可显示发布说明及链接,Github 和 Launchpad 的仓库有视觉区分。
- Github Actions 工作流每小时触发,使用
releasegen
生成最新报告,更新 Hugo 网站并提交到用于服务页面的分支,如https://github.com/canonical/charm-eng-releases/blob/main/.github/workflows/build.yml
。 - 该工具解决了跟踪项目所有权的问题,一些团队主动要求加入,Snapcrafters 也采用了类似的仪表盘并进行了一些修改,如
https://github.com/snapcrafters/snapcrafters.org
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。