跳转到主要内容

devpi-jenkins:devpi-server的Jenkins构建触发器

项目描述

devpi-jenkins:devpi-server的Jenkins构建触发器

用于与devpi-server >= 2.2.0配合使用。

安装

devpi-jenkins需要与devpi-server一起安装。

您可以使用以下方式安装它

pip install devpi-jenkins

对于devpi-server,无需配置,因为它将通过使用setuptools入口点机制调用钩子自动发现插件。

以下为配置详情。

配置

devpi-jenkins可以使用tox触发Jenkins测试上传的包。这需要在两个方面进行配置

  • devpi:配置索引,在上传时向Jenkins发送POST请求

  • Jenkins:添加一个或多个可以通过devpi-jenkins触发的作业。

配置devpi索引以触发Jenkins

以下是一个示例命令,使用/testuser/dev索引和位于http://localhost:8080的Jenkins服务器

# needs one Jenkins job for each name of uploaded packages
devpi index /testuser/dev uploadtrigger_jenkins=http://localhost:8080/job/{pkgname}/build

任何上传到/testuser/dev的包都将触发对指定URL的POST请求。字符串{pkgname}{pkgversion}将被替换为上传包的名称。然而,如果您希望有一个通用的Jenkins作业,执行所有上传的测试,则不需要指定此类替换。

# one generic job for all uploaded packages
devpi index /testuser/dev uploadtrigger_jenkins=http://localhost:8080/job/multijob/build

这需要在Jenkins侧配置一个单独的multijob,而之前的配置需要为可能上传的每个包名称配置一个作业。

请注意,如果成功将构建作业提交到Jenkins,则上传包将独立成功。

配置Jenkins作业

在Jenkins侧,您需要配置一个或多个可以由devpi-jenkins触发的作业。每个作业的配置方式相同

  • 转到主Jenkins屏幕

  • 点击“新建作业”,输入一个名称(如果您想配置一个通用作业,则输入“multijob”),然后选择“freey风格软件项目”,点击“确定”。

jenkins1.png
  • 启用“此构建是参数化的”并添加一个“文件参数”,设置文件位置为jobscript.py

jenkins2.png
  • 添加一个构建步骤“执行Python脚本”(您需要在Jenkins中安装并启用Python插件)并输入execfile("jobscript.py")

jenkins3.png
  • 为新构建作业点击“保存”。

现在您可以devpi上传一个包到索引,并在上传成功返回后看到Jenkins启动。

幕后

一旦您从devpi触发了作业,您可以在Jenkins工作区中检查jobscript.py,以查看注入了什么。注入的脚本大致遵循以下步骤

  • 通过devpi根/pypi索引检索稳定的虚拟环境发布版本(即使用其缓存功能)

  • 解压缩虚拟环境tar包并运行包含的“virtualenv.py”脚本以创建一个_devpi环境

  • 在该环境中安装/升级devpi-client

  • devpi use我们从其中触发的索引

  • devpi test PKG,其中PKG是我们上传的包名称。

变更日志

3.0.1 - 2024-08-04

  • 用importlib.resources替换pkg_resources。[fschulze]

  • 用内置的Python功能替换未维护的py库。[fschulze]

  • 停止支持Python <= 3.7。[fschulze]

  • 添加对Python 3.12的支持。

3.0.0 - 2023-12-19

  • 停止支持Python <= 3.6。[fschulze]

  • 针对新pluggy版本的修复。[fschulze]

  • devpibootstrap.py.template中删除未使用的导入。[fschulze]

2.0.0 - 2016-04-25

  • 停止支持Python 2.6 [fschulze]

  • 针对devpi-server 3.0.0的修复,旧版本不再受支持 [fschulze]

1.0.0 - 2015-05-13

  • devpi test命令的testspe中包含版本 [fschulze]

  • 从devpi-server中分离成插件 [fschulze (Florian Schulze)]

由以下支持