使用消息总线触发的正确标签标记Koji构建
项目描述
消息标记服务是一个微服务,用于根据消息总线中的特定消息标记构建,目前该服务支持根据模块构建状态更改事件标记模块构建。
此服务与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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 31e4b67fe08b1e22d6a8dcdbb78196179ae1d2cf04a71c47a38ec6fe509c558b |
|
MD5 | b55080645d72f21e445b3cd87953c705 |
|
BLAKE2b-256 | 82fa12de746e46dd42a8f6b3ecd3d025282ebea1a7490fe46f3198c0d9529a62 |