Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitLab CI bump Python包版本_Python_Python 3.x_Gitlab_Gitlab Ci - Fatal编程技术网

GitLab CI bump Python包版本

GitLab CI bump Python包版本,python,python-3.x,gitlab,gitlab-ci,Python,Python 3.x,Gitlab,Gitlab Ci,我想知道是否有可能在gitlab ci runner中升级存储在gitlab中的Python包版本 我有一个示例包结构: /package /src /__init__.py main.py setup.py Dockerfile .gitlab-ci.yml init.py包括: __version__ = '1.0.0' setup( name='foo', version=src.__version__,

我想知道是否有可能在gitlab ci runner中升级存储在gitlab中的Python包版本

我有一个示例包结构:

/package
  /src
    /__init__.py
     main.py
  setup.py
  Dockerfile
  .gitlab-ci.yml
init.py包括:

  __version__ = '1.0.0'
  setup(
        name='foo',
        version=src.__version__,
        packages=find_packages(),
        install_required=[foo, bar]
  )
setup.py包括:

  __version__ = '1.0.0'
  setup(
        name='foo',
        version=src.__version__,
        packages=find_packages(),
        install_required=[foo, bar]
  )
用于碰撞和释放的简单工作流如下所示:


但是,当直接在gitlab ci中发布时,我们是否可以自动在uu init_uuu.py中增加版本

我喜欢为此使用bump2version包

这是我的gitlab-ci.yml,具有(几乎)最低限度的设置:

image:python:latest
#将pip的缓存目录更改为在项目目录中,因为我们可以
#仅缓存本地项。
变量:
PIP\u CACHE\u DIR:$CI\u PROJECT\u DIR/.CACHE/PIP
#Pip的缓存不存储python包
# https://pip.pypa.io/en/stable/reference/pip_install/#caching
#
#如果还希望缓存已安装的软件包,则必须安装
#将它们放入virtualenv中,并将其缓存。
隐藏物:
路径:
-.cache/pip
-文夫/
在脚本之前:
-python——版本
-pip安装virtualenv
-虚拟的
-源venv/bin/激活
-pip安装-r requirements.txt
阶段:
-建造
-释放
上载包:
阶段:发布
脚本:
-pip安装绳线缓冲器2型
-bump2version—标记释放
-python setup.py sdist bdist_wheel
-TWINE\u PASSWORD=${PYPI\u TOKEN}TWINE\u USERNAME=\uuuuuu TOKEN\uuuuuupython-m TWINE上载--存储库urlhttps://upload.pypi.org/legacy/ 距离/*
#避免错误损坏setup.py中的版本所必需的。以防忘记手动操作。现在,我们只需要显式地为主要的或次要的版本。
-bump2version修补程序
-git config--global user.email“${GITLAB\u user\u email}”
-git config--全局user.name“${GITLAB\u user\u name}”
-git远程设置url源”https://gitlab-ci-token:${MY_PUSH_TOKEN}@gitlab.com/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}.git“
-git push-o ci.skip--标记源头:${ci\u COMMIT\u REF\u NAME}
人工产品:
路径:
-dist/*.whl
仅:
-主人
我的项目根目录中还有一个
.bumpversion.cfg
文件,其中包含以下内容:

[bumpversion]
commit = True
tag = False
current_version = 0.1.0-dev0
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-(?P<release>[a-z]+)(?P<build>\d+))?
serialize = 
    {major}.{minor}.{patch}-{release}{build}
    {major}.{minor}.{patch}

[bumpversion:file:setup.py]

[bumpversion:part:build]

[bumpversion:part:release]
optional_value = gamma
values = 
    dev
    gamma

[bumpversion]
提交=真
tag=False
当前_版本=0.1.0-dev0
解析=(?P\d+)\(?P\d+)\(?P\d+)(\-(?P[a-z]+)(?P\d+)?
序列化=
{major}.{minor}.{patch}-{release}{build}
{大调}.{小调}.{patch}
[版本:文件:setup.py]
[版本:部分:构建]
[版本:部分:发布]
可选_值=伽马
值=
发展
伽马射线
使用两个自定义变量。需要将它们添加到repo设置中的CI变量中。如果要在非受保护的分支上使用它们,请确保取消选中受保护的复选框

  • 我的推送令牌
    -这是在我的配置文件中创建的个人访问令牌。它具有读存储库和写存储库权限。 我是该存储库的所有者/维护者,因此它授予推进此回购的权限

  • PYPI_令牌
    -可选,需要将包推送到PYPI.org

最后但同样重要的是,值得一提的是:

  • 上面的示例使用组中的一个repo,如果组中没有一个repo,则可能需要更改设置的url源地址

  • -o ci.skip
    参数防止生成管道触发循环

用法:

  • 创建要素分支
  • 推码
  • 创建合并请求
  • 将MR合并为master
ci作业负责打包、发布、上载和跳转到下一个修补程序

若要切换主要或次要,请在要素分支中的本地命令行中手动调用它并按下它

bump2version工具也会自动处理标记

我用于获取此解决方案的一些资源:

  • -使ci中的git正常工作
  • -帮助我更好地理解bump2version

gitlab ci允许您使用任何您想要的docker映像,因此,不要直接在gitlab ci的基础映像上执行python,只需使用基于python的映像和您想要的任何版本,并使用它运行代码即可。