自动递增版本,然后使用Travis CI

问题描述

我希望Travis CI自动设置Python软件包的版本,然后在按下新标签时将其部署到PyPI。

标记名称等于所需的Python软件包版本。

我的setup.py包含一个变量,该变量存储最新的推送标签的值:

CURRENT_GIT_TAG = 'v0.0.0'
setup(
    name='my-brilliant-package',version=CURRENT_GIT_TAG,)

使用简单的脚本(CURRENT_GIT_TAG)将set_version.py的值替换为git标记值:

git_tag = subprocess.check_output(['git','describe','--tags']).strip().decode('utf-8')
pattern = re.compile(r"CURRENT_GIT_TAG = '(v[1-9.]+)'")
with open('setup.py','r+') as f:
    # ...
    new_contents = re.sub(pattern,f"CURRENT_GIT_TAG = '{git_tag}'",old_contents)
    f.write(new_contents)
    # ...

我的travis.yml看起来像这样:

# Deploy to PyPI (on tag)
deploy:
  before_script: python set_version.py --skip-confirm
  skip_cleanup: true
  provider: pypi
  username: __token__
  password:
    secure: ASDASDASD
  on:
    tags: true
  distributions: "sdist"

问题在于,当set_version.py覆盖setup.py内容时,它似乎发生在与PyPI部署本身不同的实例中,因为PyPI接收了原始的setup.py内容,而不是由set_version.py修改一个

如何使Travis部署“猴子修补” setup.py而不是原始存储库?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)