问题描述
我希望Travis CI自动设置Python软件包的版本,然后在按下新标签时将其部署到PyPI。
我的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 (将#修改为@)