跨软件团队和代码库跟踪发布与持续集成

主要观点:作者在 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
阅读 10
0 条评论