跳转到主要内容

devpi-pr:devpi-server和devpi-client的拉取请求工作流程插件

项目描述

devpi-pr:devpi的拉取请求插件

此插件为devpi-server添加了拉取请求工作流程,并支持devpi-client的相应命令。

安装

devpi-pr需要与devpi-server一起安装以启用拉取请求功能。

在客户端机器上,没有插件也可以创建和提交拉取请求,但安装了插件会更加方便。所有其他功能都需要安装与devpi-client一起的devpi-pr插件。

您可以使用以下命令进行安装

pip install devpi-pr

无需配置,因为devpi-serverdevpi-client将通过setuptools入口点机制调用钩子来自动发现插件。

动机

许多Python项目具有复杂的依赖关系,并且通常被分割成单独的包。

对于此类项目,将一组包作为一个单一单元处理将是有益的。

在组织内部,通常需要一个经过验证的包发布流程。

本插件引入了拉取请求的概念,以帮助完成所有这些工作。

成功的拉取请求的结果是在目标索引中单个原子更新包。

用法

当与devpi-client一起安装时,devpi-pr插件会添加新的命令。

new-pr

创建一个新的拉取请求。

submit-pr

提交现有的拉取请求以供审查。

list-prs

列出拉取请求。

review-pr

开始审查提交的拉取请求。

abort-pr-review

中止拉取请求的审查。

approve-pr

批准已审查的拉取请求。

reject-pr

拒绝拉取请求。

cancel-pr

由提交者取消拉取请求的已提交状态。

delete-pr

完全删除一个拉取请求,包括任何上传的包。

devpi-server中,一个拉取请求由一个特殊的pr索引表示。它大部分像常规索引,但有额外的限制和行为。

所有更改拉取请求状态的命令都会要求输入一个消息,并接受-m选项来直接提供。当设置EDITOR环境变量时,它用于打开编辑器提供消息,否则使用简单的提示。

创建拉取请求

假设创建了一个新的功能,该功能需要在多个包中进行更改。我们目前在开发索引user/dev上工作,其中我们有两个更改的包pkg-app 1.0app-dependency 1.2。应该最终用于生产的索引命名为prod/main

目标索引的pull_requests_allowed选项必须为True

$ devpi index prod/main
http://example.com/prod/main:
  type=stage
  bases=root/pypi
  volatile=True
  acl_upload=root
  acl_toxresult_upload=:ANONYMOUS:
  mirror_whitelist=
  pull_requests_allowed=True

我们首先为目标创建一个新的拉取请求

$ devpi new-pr new-feature prod/main

这创建了一个新的pr索引,命名为user/new-feature

接下来,我们将现有包从我们的开发索引推送到pr索引

$ devpi push pkg-app==1.0 user/new-feature
$ devpi push app-dependency==1.2 user/new-feature

由于pr索引大部分像常规索引,因此也可以使用devpi upload或标准工具如twine直接将新包上传到pr索引

为了方便起见,在首次创建时也可以列出多个包,让它们自动复制

$ devpi new-pr new-feature prod/main pkg-app==1.0 app-dependency==1.2

如果只给出包名,则使用最新版本。

之后,可以将拉取请求提交以供审查

$ devpi submit-pr new-feature

这会要求输入一个消息。

此时,pr索引的状态设置为待处理

审查拉取请求

任何具有对目标索引的写入访问权限的用户(请参阅devpi-server中索引的acl_upload选项)现在都可以审查拉取请求

要查看索引的当前拉取请求,请使用list-prs命令

$ devpi list-prs prod/main
pending pull requests
    user/new-feature -> prod/main at serial 123

使用review-pr命令开始审查

$ devpi review-pr new-feature

此时,可以使用pip等工具像常规索引一样使用pr索引安装新包。

审查完成后,可以接受它

$ devpi accept-pr new-feature

这又需要像submit-pr命令一样输入一个消息。

当接受拉取请求时,所有包的最新包含版本将一次性复制到目标索引。之后,pr索引会自动删除。

如果在执行review-pr命令之后,索引有任何变更,那么accept-pr命令将失败。要继续使用带-u选项的review-pr命令,需要这样做。

$ devpi review-pr -u new-feature

这可以防止意外变更被接受。在审查变更后,可以再次接受pull request

如果需要进一步处理pull request,可以使用reject-pr命令并附带一条消息来拒绝。

$ devpi reject-pr new-feature -m "See comments in ticket #42 about a bug I found."

手动创建pr索引

也可以手动创建一个pull request。这不需要与devpi-pr一起安装devpi-client,但操作更为复杂。

首先需要创建一个新的pr索引。索引类型必须是pr,在basesstatesmessages中指定目标索引。

$ devpi index -c new-feature type=pr bases=prod/main states=new messages="New pull request"

索引创建完成后,可以使用devpi upload将其上传到索引,或者使用devpi push从另一个索引推送。

最后,需要将索引的状态更新为pending,并添加状态变更消息。

$ devpi index new-feature states+=pending messages+="Please approve these updated packages"

变更日志

1.0.0 - 2019-10-31

  • 初始发布。[fschulze (Florian Schulze)]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

devpi-pr-1.0.0.tar.gz (12.2 kB 查看哈希值)

上传时间

构建分发

devpi_pr-1.0.0-py2.py3-none-any.whl (12.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面