在github和pypi上发布新的python软件包版本的最佳工作流程和实践

sco*_*rvt 6 python git github pypi

我想知道在pypi和github上发布新的python软件包版本的最佳过程或最佳实践是什么。

例如,这是主要的python软件包遵循的典型工作流程吗?

  1. master分支上,递增version编号
    1. 设置version='1.5.0'setup.py
    2. 套装__version__ = '1.5.0'包装__init__.py
  2. CHANGELOG.md用新版本更新
  3. tox本地运行以验证软件包
  4. 推送变更 git push origin master
  5. 创建标签 git tag v1.5.0 -m "Release v1.5.0"
  6. 推牌 git push origin v1.5.0
  7. 等待Travis CI构建完成。
  8. 构建包 python setup.py sdist bdist_wheel
  9. 验证创建的包
    1. test-sdist/bin/pip install dist/<package>-1.5.0.tar.gz
    2. test-wheel/bin/pip install dist/<package>-1.5.0-py2.py3-none-any.whl
  10. 上载到 PyPI Staging
    1. twine upload -r testpypi dist/<package>-1.5.0*
    2. pip install --user --no-cache-dir --extra-index-url https://testpypi.python.org/pypi <package>
  11. 上载到 PyPI Production
    1. twine upload dist/<package>-1.5.0>*
    2. pip install <package>==1.5.0

小智 1

工作流程的想法是好的。我会尝试将其变得更清晰并使其更通用:

  1. 在 master 分支上,增加版本号:

    • 设置version='1.5.0'setup.py
    • 套装__version__ = '1.5.0'在包装内__init__.py
  2. 更新CHANGELOG.md新版本详细信息。

  3. 在本地运行测试以验证包(使用tox或其他测试工具)。

  4. 提交并推送更改:

    git commit -am "Bump version to 1.5.0"
    git push origin master
    
    Run Code Online (Sandbox Code Playgroud)
  5. 为新版本创建并推送标签:

    git tag v1.5.0 -m "Release v1.5.0"
    git push origin v1.5.0
    
    Run Code Online (Sandbox Code Playgroud)
  6. 等待持续集成 (CI) 构建完成(例如 Travis CI、GitHub Actions)。

  7. 构建包:

    python setup.py sdist bdist_wheel
    
    Run Code Online (Sandbox Code Playgroud)
  8. 验证创建的包:

    test-sdist/bin/pip install dist/<package>-1.5.0.tar.gz
    test-wheel/bin/pip install dist/<package>-1.5.0-py2.py3-none-any.whl
    
    Run Code Online (Sandbox Code Playgroud)
  9. 上传到 PyPI Staging (TestPyPI):

    twine upload --repository-url https://test.pypi.org/legacy/ dist/<package>-1.5.0*
    pip install --user --no-cache-dir --index-url https://test.pypi.org/simple/ <package>
    
    Run Code Online (Sandbox Code Playgroud)
  10. 从 TestPyPI 验证该包是否安装并正常工作。

  11. 上传到 PyPI 生产环境:

    twine upload dist/<package>-1.5.0*
    
    Run Code Online (Sandbox Code Playgroud)
  12. 从 PyPI Production 测试安装:

    pip install <package>==1.5.0
    
    Run Code Online (Sandbox Code Playgroud)