4 个版本

新版本 0.0.9 2024年8月12日
0.0.8 2023年12月25日
0.0.7 2023年9月9日
0.0.6 2023年9月5日

#1006 in 开发工具

Download history 17/week @ 2024-06-29 31/week @ 2024-07-27 202/week @ 2024-08-10

233 每月下载次数

GPL-3.0+

150KB
4K SLoC

disperse

disperse 是一个简单的应用程序,我用它为维护的一些免费软件包创建发布。它的目的是简化发布过程,减少创建发布所需的人力和减少棕色袋发布的可能性。

它可以执行以下一个或多个操作

  • 检查 CI 是否目前正在通过(对于支持的平台,如 GitHub)
  • 通过检查现有发布和项目文件中指定的版本字符串来推导出预期的新的版本
  • 更新 NEWS 文件中的发布日期
  • 确保各种文件包含正确的版本字符串
  • 验证测试套件运行成功
  • 可选地,如果在过去 X 天内仓库没有发生变化,则仅创建发布(对于在 cronjob 中运行很有用)
  • 上传到仓库站点
    • 如果项目是 Python 项目,则将源代码和通用 wheels 上传到 PyPI
    • 如果项目是 Rust 项目,则上传到 crates.io
  • 为新版本创建 git 标签
  • 在支持的平台(如 GitHub 或 Launchpad)上创建“发布”条目

发布完成后,它还可以更新例如为下一个发布更新的 NEWS。

Disperse 之前被称为 "releaser"。

配置

在很大程度上,disperse 将自动确定需要发生的事情。它可以通过读取 ~/.pypirc 中的用户名并枚举它们来发现您在 PyPI 上维护的项目。

它可以解析和修改 setup.py 和 Cargo.toml 文件。

它使用配置文件(disperse.conf)来处理无法自动检测的任何内容,并且该文件位于仓库根目录中。

例如


   tag_format: "dulwich-$VERSIONs"
   news_path: "NEWS"

支持的变量包括

  • $VERSION ("1.2.0")
  • $TUPLED\_VERSION ("(1, 2, 0)")
  • $STATUS\_TUPLED\_VERSION ('(1, 2, 3, "dev", 0)')

基本用法

disperse 有各种子命令。核心的是

  • release - 在 $CWD 或特定 URL 的项目上创建新发布
  • 发现 - 查找当前用户拥有的项目(例如在 pypi 上),如果它们有未发布的更改并且足够重要,则发布它们
  • 验证 - 验证分散配置

在 Docker 中运行

运行分散的最简单方法是使用 ghcr.io/jelmer/disperse 中的 Docker 镜像。您需要确保有适当的 SSH 和 PGP 密钥可用。

作者定期在 Kubernetes cronjob 中运行分散。

未来

将来,我希望它能

  • 支持的语言不仅仅是 python 和 rust

依赖项

~29–46MB
~806K SLoC