在更改版本号时安全地创建发布。
项目描述
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__.py或foobar.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相同的用例。
添加when为always。
添加使用none跳过版本提取。
支持从环境变量中提取项目版本。
在构建标签时使当前日期和时间可用。
添加支持更新现有git标签。
1.2.0 (12 Sep 2019)
支持从flit-风格的工程中提取项目版本。
支持通过正则表达式从文件或文件的一部分中提取项目版本。
1.1.0 (1 Mar 2019)
支持从setup.py中提取项目版本。
支持其他提供version-from、when和actions可调用的包。
1.0.1 (27 Feb 2019)
更好的PyPI元数据。
1.0.0(2019年2月27日)
首次发布,支持poetry和git标签。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
carthorse-1.4.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 96a5e71a28c20fc321f7f506d573ff266b10186d178906d260cb2c7cb178682c |
|
MD5 | 6364d2c6963aea009cdef963463fc16e |
|
BLAKE2b-256 | 7166b80edb73a1a3ff57177c4a7905ad674da13896ecc56e691eda3dfa38fc36 |
carthorse-1.4.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0ea2a25245c50038fc5772ad21bf11231103d045c147f574c1e5d309c46eef6b |
|
MD5 | 6c26bf05cfb84cb02cb3026ade1c1bc5 |
|
BLAKE2b-256 | 3fe2f4a1c521d714db8af5644488148b2c357b54c56f2a59d3fa9fe7c7fbb8d1 |