跳转到主要内容

使用消息总线触发的正确标签标记Koji构建

项目描述

https://img.shields.io/pypi/v/message-tagging-service.svg https://img.shields.io/pypi/pyversions/message-tagging-service.svg https://img.shields.io/pypi/l/message-tagging-service.svg?colorB=green https://travis-ci.org/fedora-modularity/message-tagging-service.svg?branch=master https://quay.io/repository/factory2/message-tagging-service/status

消息标记服务是一个微服务,用于根据消息总线中的特定消息标记构建,目前该服务支持根据模块构建状态更改事件标记模块构建。

此服务与Python 3.6和3.7兼容。

工作流程

这是服务工作流程的示例,例如模块构建。

  • 监听消息总线,Fedora中的fedora-messaging,等待模块构建状态更改事件。

  • 一旦收到消息,MTS将按照规则文件中出现的顺序依次检查预定义的规则定义。

  • 如果模块构建与规则匹配,则将匹配规则中定义的标签应用于此构建及其关联的-devel构建。

  • 向消息总线发送消息,以宣布一个模块构建被标记为特定的标签。请注意,MTS实际上不会等待标记构建任务完成。消息是在tagBuild返回后发送的,它只是创建一个标记构建任务并立即返回。

规则定义

规则定义记录在模块性文档中。

有关规则匹配的详细信息,请参阅该文档中的段落

配置

应用程序配置文件conf/config.py。每个配置都有很好的文档,请参阅此文件的内容以获取详细信息。定义以下三个配置部分以运行MTS。

  • BaseConfiguration提供了默认选项,这些选项可以用于在生产环境中运行。

  • DevConfiguration包含用于开发模式运行的内容。

  • TestConfiguration包含用于测试目的的任何配置。

消息配置文件包含在文件conf/mts.toml中,该文件包含从Fedora messaging代理接收和发送消息的配置,格式为TOML。默认配置值定义良好,可以与本地RabbitMQ代理交互,这对于本地测试很有用。对于部署,复制此文件并调整Fedora messaging代理的配置值。

消息

事件

build.tag.requested

在Koji中请求tagBuild任务时发送消息。以下是一个示例消息

{
  "build": {
    "id": id,
    "name": name,
    "stream": stream,
    "version": version,
    "context": context,
  },
  "nvr": N-V-R,
  "destination_tags": [
    {"tag": name_1, "task_id": 1},
    {"tag": name_2, "task_id": 2},
    ...
  ]
}

其中,destination_tags是一个列表,其中每个映射包含要应用的标签和从Koji返回的相应任务ID。

build.tag.unmatched

如果模块构建不匹配任何预定义的规则,则发送消息。以下是一个示例消息

{
  "build": {
    "id": id,
    "name": name,
    "stream": stream,
    "version": version,
    "context": context,
  },
}

该消息仅包含模块构建信息。

主题前缀

对于Fedora,消息被发送到前缀为org.fedoraproject.prod的主题,例如org.fedoraproject.prod.mts.build.tag.requested

对于内部,前缀是VirtualTopic.eng.mts,例如VirtualTopic.eng.mts.build.tag.requested

环境变量

MTS_DRY_RUN

干运行模式。目前,在干运行模式下实际上不会标记任何构建。不需要特定操作。只需在环境变量中定义MTS_DRY_RUN即可。

MTS_DEV

只要定义了MTS_DEV,就切换服务以在开发模式下运行。例如,export MTS_DEV=1

MTS_CONFIG_FILE

当启用MTS_DEV或MTS安装在系统中时,指定一个替代配置文件而不是读取conf/config.py,或者如果MTS安装在系统中,则为/etc/mts/config.py。绝对路径或相对路径均可。

贡献

https://github.com/fedora-modularity/message-tagging-service/issues中报告问题。

在提出拉取请求之前,确保更改不会破坏任何内容并且已通过测试。运行测试

tox

变更日志

0.8.1 (2020-06-22)

  • 将状态过滤器中的字段从build_state更改为state_name(Yu Ming Zhu)

0.8 (2020-06-18)

  • 默认情况下,只接收状态为ready或done的消息(Yu Ming Zhu)

  • 单元测试:最新的koji使用gssapi_login而不是krb_login(Yu Ming Zhu)

  • CI:修复缺少运行测试的命令(Chenxiong Qi)

  • CI:使用image fedora:31(Chenxiong Qi)

0.7 (2020-02-07)

  • 升级基础镜像到Fedora 30

  • 不要尝试标记scratch构建(Chenxiong Qi)

  • 不要处理来自规则的划痕(陈雄奇)

  • 添加对复杂目标的支持(卢伊兹·卡瓦尔霍)

  • 在前台运行 mts(卢伊兹·卡瓦尔霍)

0.6 (2019-09-27)

  • 撤销“当标签失败时记录异常”(陈雄奇)

  • 使用 rhmsg 时允许持久队列(卢伊兹·卡瓦尔霍)

  • 修复 dest_tags 的参数类型(陈雄奇)

  • 更好的日志(陈雄奇)

  • 当标签失败时记录异常(mprahl)

  • 将图像版本设置为最新(陈雄奇)

  • 修复消费者并添加测试(陈雄奇)

  • 更新 README.rst(陈雄奇)

  • 修复日志消息格式内的变量名(陈雄奇)

  • 将 mts.toml 配置包含在 sdist 包中(陈雄奇)

  • 不要包含已删除的 fedmsg.d/ 目录(陈雄奇)

  • 从 Dockerfile 中删除与 fedmsg 相关的行(陈雄奇)

  • 删除处理规则 scratch 和开发的重叠代码(陈雄奇)

  • 迁移到 fedora-messaging(陈雄奇)

  • 重构函数 is_file_readable(陈雄奇)

  • 如果不使用 ssl 验证,则无需设置 koji_cert(陈雄奇)

  • 如果在会话中出现问题,请确保注销 koji 会话(陈雄奇)

  • 撤销“为 fedmsg 设置 USER 以发布消息”(陈雄奇)

  • 撤销“为 Fedora 容器安装软件包”(陈雄奇)

  • 为 fedmsg 设置 USER 以发布消息(陈雄奇)

  • 为 Fedora 容器安装软件包(陈雄奇)

  • 使用新的 pytest.raises 参数匹配(陈雄奇)

0.5 (2019-04-15)

  • 将度量名称更改为与其他服务同步(Filip Valder)

  • 减少匹配规则的尝试次数(陈雄奇)

  • 通过构建状态匹配模块构建(陈雄奇)

0.4.1 (2019-04-01)

  • 在下载 ca 证书时忽略 https 验证(陈雄奇)

0.4 (2019-03-30)

  • 调整 gunicorn 命令行选项(陈雄奇)

  • 增加运行 web 应用程序的 worker 数量(陈雄奇)

  • 将 gunicorn 日志级别设置为调试(陈雄奇)

  • 在 Travis-CI 中测试图像构建和容器(陈雄奇)

  • 重构 Dockerfile(陈雄奇)

  • 将缺少的依赖项添加到 Dockerfile 中(陈雄奇)

  • 在 Dockerfile 中正确地使用 dnf-install 命令时添加缺少的项(陈雄奇)

  • 公开度量端点以进行监控(陈雄奇)

  • 在 README 中添加容器徽标(陈雄奇)

  • 将失败的 tagBuild 任务请求包含在 build.tag.requested 消息中(陈雄奇)

0.3 (2019-02-20)

  • 精炼事件主题(陈雄奇)

  • 修复 README 中的徽标(陈雄奇)

  • 当模块处于初始化状态时记录更好的日志(陈雄奇)

  • 使用已知良好的 moksha-hub 版本(卢伊兹·卡瓦尔霍)

  • 标记 -devel CG Koji 构建(卢伊兹·卡瓦尔霍)

  • 处理单个规则的多标签(卢伊兹·卡瓦尔霍)

  • 精炼“第一次匹配获胜”的代码(陈雄奇)

  • 在测试中模拟 modulemd 数据时使用 dedent(卢伊兹·卡瓦尔霍)

  • 仅允许单个规则匹配(卢伊兹·卡瓦尔霍)

  • 使 docker/install-ca.sh 可执行(mprahl)

  • 添加缺少的 docker/install-ca.sh(mprahl)

  • 添加回 OpenShift 中改进用户体验的卷(mprahl)

  • 使用 rcm-tools 仓库时通过 http 连接,因为 CA 不可信(mprahl)

  • 修复 Jenkinsfile 中的注释(mprahl)

  • 添加构建容器镜像并将其推送到 quay.io 的 Jenkins 作业(mprahl)

  • 在容器镜像中安装 rhmsg(mprahl)

  • 在容器镜像中添加安装自定义 CA 的功能(mprahl)

  • 将默认容器用户设置为 1001 以模仿 OpenShift(mprahl)

  • 添加额外的 DNF 参数以使容器镜像略微缩小(mprahl)

  • 删除 Dockerfile 中的卷,因为 MTS 不写入(mprahl)

  • 不要依赖于容器镜像中的默认 fedmsg 配置文件(mprahl)

  • 添加用于构建生产图像的 Dockerfile(陈雄奇)

  • 允许将 None 设置为配置(陈雄奇)

  • 在 README 中精炼配置部分(陈雄奇)

  • 修复配置中的consumer_topics(陈翔棋)

  • 安装MTS和fedmsg.d配置文件(陈翔棋)

  • 修复README中的语法错误(陈翔棋)

  • 支持多种authtype登录Koji会话(陈翔棋)

  • 重构fedmsg.d配置(陈翔棋)

  • 将README转换为RST格式(陈翔棋)

  • 通过调用koji_cli.lib.activate_session登录koji会话(陈翔棋)

  • 配置更新和重置方法。扩展Config的测试(瓦列里·马柳林)

  • 在Config类中将__getattr__与__getitem__合并(瓦列里·马柳林)

  • 添加对profile参数的支持(瓦列里·马柳林)

  • 配置配置文件的基类(瓦列里·马柳林)

0.2 (2019-01-22)

  • 将缺少的文件添加到sdist生成的tarball中

0.1 (2019-01-21)

  • 这是MTS能够处理特定消息到标签构建的第一个版本。

项目详情


下载文件

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

源分布

message-tagging-service-0.8.1.tar.gz (35.0 kB 查看哈希值)

上传时间

支持者