背景
- 有个私有仓储,地址为
https://your.repo.com/pypi/
- 代码存储在gitlab, 地址为
https://gitlab.company.com/software.git
- CI为jenkins
常规解决手法
jenkins有一个特定的节点,节点里面已经配置好了%HOMEPATH%/.pypirc
[distutils]
index-servers =
deploy
[deploy]
repository=https://your.repo.com/pypi/
username=youraccmount
password=yourpwd
然后直接使用
python setup.py sdist upload -r deploy
问题
权限控制
私有仓储存在一个权限, 只有高级别的账号才能push. 而所有人都可以pull包. 那么就存在一个问题. 绝对不能将leader的账户密码直接记录在jenkins节点的配置中.这样很容易就暴露权限.
如果换了台节点
常用方法需要在节点配置.pypirc
文件. 如果我想换台节点,还需要登陆到新节点进行配置.这样非常不方便.
需求
- 绝对不能暴露高级别的账号密码
- 对节点无特殊需求, CI任务换哪个节点都可以
- 希望能够自定义包的版本. 而不是每次都是某个固定的版本
- 我提交代码到gitlab. 然后就自动发布到仓储
解决
我新打了一个tag0.1.1
, 然后