跳转到主要内容

自动化软件发布的框架

项目描述

Modeltee 是一个自动化软件发布的工具。

我发现发布时间通常涉及几个手动步骤:记住在几个地方更新版本号、提交、进行干净构建、上传、创建和推送git标签……

为什么需要一个新工具?我可以使用shell脚本自动化所有这些。Modeltee允许您

  • 定义可重用的发布流程,并针对不同的项目对其进行子类化。

  • 在开始发布前自动检查所需工具。

  • 共享可以添加检查和信息组件。

使用以下命令安装它

pip install modeltee

您将发布流程定义为 modeltee.ReleaserBase 的子类。您可以控制五个步骤。

  1. 自动检查 (check_prereqs):检查例如 git 是否已安装。基类方法运行您使用的组件的检查。如果您覆盖它,建议使用 super() 调用它。

  2. 手动确认 (user_confirm):向用户展示信息,并给他们一个取消的机会。基类方法展示您使用的组件提供的信息。

  3. 发布前的步骤 (before_release):您可能想设置版本号、进行干净构建、运行测试……

  4. 发布本身 (do_release):上传并标记发布。这是您必须定义的步骤。

  5. 发布后的步骤 (after_release):例如,将版本号设置为x+1.dev。

一个简单的Python软件包发布器可能看起来像这样

from modeltee import ReleaserBase, Command, Bumpversion, Git
import sys

class Releaser(ReleaserBase):
    # These are components: they define checks to run before starting and
    # info to present, as well as providing shortcuts to use below.
    git = Git()
    twine = Command('twine')
    python = Command(sys.executable)
    bumpversion = Bumpversion()

    def before_release(self):
        self.bumpversion('--new-version', self.version, 'minor')
        self.python('setup.py', 'sdist')
        self.git('commit', '-am', 'version number -> {}'.format(self.version))
        self.git('push')

    def do_release(self):
        self.twine('upload', 'dist/foo-{}.tar.gz'.format(self.version))
        self.git('tag', str(self.version))
        self.git('push', '--tags')

if __name__ == '__main__':
    Releaser.main()

您会这样运行它

./release.py 1.3

Modeltee 以福特 Model T 命名,这是第一批在流水线上批量生产的汽车之一。

项目详情


下载文件

下载您平台对应的文件。如果您不确定该选择哪个,请了解有关 安装包 的更多信息。

源代码分发

modeltee-0.1.1.tar.gz (4.7 kB 查看哈希值)

上传时间 源代码

构建分发

modeltee-0.1.1-py3-none-any.whl (8.9 kB 查看哈希值)

上传时间 Python 3

由以下机构支持