跳转到主要内容

在更改版本号时安全地创建发布。

项目描述

CircleCI

Carthorse

在更改版本号时安全地创建发布。

您通过在yaml或toml文件中添加配置,然后在您的持续集成管道中添加以下内容来使用它

pip install -U carthorse
carthorse

TOML配置

您的文件应包含以下部分

[tool.carthorse]
version-from = "poetry"
tag-format = "v{version}"
when = [
  "version-not-tagged"
]
actions = [
   { run="poetry publish --build"},
   { name="create-tag"},
]

此设计旨在将其包含为pyproject.toml文件的一部分。

YAML配置

您的文件应包含以下部分

carthorse:
  version-from: poetry
  tag-format: v{version}
  when:
    - version-not-tagged
  actions:
    - run: "poetry publish --build"
    - create-tag

它做什么?

大致来说

  • 从项目的源代码中提取项目的版本。

  • 根据版本格式化标签

  • 执行一系列检查,如果其中任何一项失败,则停止。

  • 执行您指定的任何操作。

版本提取

目前支持以下几种方法从项目提取版本

setup.py

这将运行python setup.py --version并使用返回的版本。

poetry

这将解析项目的pyproject.toml并使用tool.poetry.version键作为项目的版本。

flit

这将从flit风格的__version__中提取版本,而不导入包。例如,如果您的模块名为foobar,这将检查foobar/__init__.pyfoobar.py。该配置如下

[tool.carthorse]
version-from = { name="flit", module="foobar" }
文件

这将从指定的文件中提取版本。默认情况下,这将是从整个文件中剥离的内容,但也可以指定一个模式。这可以用来从不执行它的< span class="docutils literal">setup.py中提取版本。配置会是

[tool.carthorse]
version-from = { name="file", path="setup.py", pattern="version='(?P<version>[^']+)" }

这将返回一个空字符串作为版本。如果你使用carthorse作为管理git标签或时间戳发布的工具,这很有用。

环境变量

这将从指定的环境变量中提取版本。例如,如果你在$VERSION中构建了版本,你可以使用以下方法提取它

[tool.carthorse]
version-from = { name="env" }

如果你需要从具有不同名称的环境变量中提取,例如$MYVERSION,你可以使用以下方法提取它

[tool.carthorse]
version-from = { name="env", variable="MYVERSION" }

标签格式化

tag-format配置选项允许你通过指定一个python格式字符串来控制版本标签的格式,其中版本将被插入。默认是v{version}

在此可用的名称是

version

版本提取返回的版本。

now

当前日期和时间的python datetime

执行检查

when配置部分的每个检查都将按顺序执行。如果有任何失败,则不会执行任何操作。

目前可用的检查有

version_not_tagged

如果从项目中提取的版本没有当前的git标签,这将通过。

never

这是一个安全网和测试助手,这个检查永远不会通过。

always

如果你基本上想跳过检查阶段,这很有用。

操作

如果所有检查都通过,则按顺序执行列出的操作。如果在执行操作期间发生错误,则不会执行进一步的操作。

目前可用的操作有

run

在shell中运行指定的命令。将传递完整的环境,并且$TAG将包含从标签格式计算出的标签。

create_tag

这将基于提取的版本创建一个git标签,并将其推送到指定的远程。默认情况下,使用origin远程。

如果你使用carthorse管理按环境标签,例如,你可以要求更新现有标签,如下所示

[tool.carthorse]
actions = [
   { name="create-tag", update=true},
]

变更

1.4.0 (4 Oct 2022)

  • 修复文档错误。

  • 实现carthorse --dry-run

1.3.0 (4 Feb 2020)

实现变更,使carthorse能够在不使用ansible的情况下覆盖与ansible-role-createtag相同的用例。

  • 添加whenalways

  • 添加使用none跳过版本提取。

  • 支持从环境变量中提取项目版本。

  • 在构建标签时使当前日期和时间可用。

  • 添加支持更新现有git标签。

1.2.0 (12 Sep 2019)

  • 支持从flit-风格的工程中提取项目版本。

  • 支持通过正则表达式从文件或文件的一部分中提取项目版本。

1.1.0 (1 Mar 2019)

  • 支持从setup.py中提取项目版本。

  • 支持其他提供version-fromwhenactions可调用的包。

1.0.1 (27 Feb 2019)

  • 更好的PyPI元数据。

1.0.0(2019年2月27日)

  • 首次发布,支持poetry和git标签。

项目详情


下载文件

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

源分布

carthorse-1.4.0.tar.gz (7.2 kB 查看哈希值

上传时间

构建分布

carthorse-1.4.0-py3-none-any.whl (7.2 kB 查看哈希值

上传时间 Python 3

支持