Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Jenkins是构建多平台NUT的方式

Jenkins是构建多平台NUT的方式

作者头像
LinuxSuRen
发布于 2024-07-30 09:13:54
发布于 2024-07-30 09:13:54
1730
举报
文章被收录于专栏:JenkinsJenkins

Jenkins 是多平台构建 NUT 的方式,而 jenkinsfile-dynamatrix 则是找出今天可以构建内容的方式

网络 UPS 工具(NUT)项目即将迎来其成立四分之一个世纪的日子。作为第一个面向 UPS、ePDU、太阳能等设备的开源多供应商电力硬件监控解决方案,它在此领域成为了事实上的标准(最近发布的 RFC 9271 使其成为法律标准)。多年来,它被嵌入到各种服务器和桌面操作系统中,从嵌入式到大型机和 NAS,并且使用了多种工具包和第三方依赖进行构建。随着演化的推进,警告被消除,功能被添加,代码库仍然预期在过去二十年间发布的任何平台上运行。如果机器及其操作系统仍在运行,现代 NUT 也应如此。

作为活跃的社区成员和最终的项目维护者,我的首要目标之一是解决不同实现和版本的工具包在构建过程中发出的数百个编译器警告 —— 因为它们确实提出了有效的关注点,而且这些报告的存在掩盖了贡献引入的新错误的可见性。事实上,有几个大而有用的更改在 PR 队列中等待了数年,因为包括作者在内的没有人对这些更改的可靠性有很好的把握。这个 “fightwarn” 工作花费了几年时间,使用了一个项目内部的 Jenkins 农场,以及当时的免费开源软件(FOSS)Travis CI 以及一位团队成员的 BuildBot 实例,处理几个 Linux 版本和几种 CPU 架构,以覆盖不同的位宽和字节序,以及 GCC 和 LLVM CLANG 的混合。相当多的问题只与某些工具包的代、C 标准修订版、Make 或 Shell 实现、Autotools 版本相关…… 而针对一个平台的修复可能会给另一个平台带来错误。因此,为了保持 NUT 在所有地方都能工作,其迭代版本需要定期在所有地方构建。

最终,免费 Travis CI 的时代结束了,NUT 获得了由 Fosshost.org 赞助的 CI 农场的虚拟机,以继续进行多平台测试。使用自定义的 Jenkins 实例来处理项目代码库的构建,并利用其他虚拟机中的众多操作系统(作为 SSH 构建代理),以及社区贡献的构建代理(例如 Swarm 代理),是自然而然的选择:那时已经开始在 https://github.com/networkupstools/jenkins-dynamatrix 项目上工作。这是一个 Jenkins 共享库,它构建了一个类似于标准矩阵构建的巨大并行阶段映射。 然而在这种情况下,并不是矩阵定义完全决定应该构建什么,而是构建代理预期会报告其标签的能力 —— 例如它们运行的平台以及可用于测试的工具包的版本和实现,以及是否可以构建 “所有内容” 或只是某些配置文件(并非所有 OS 发行版都提供 NUT 可以构建的所有依赖项)。该库还帮助确定根据安装的 GCC 或 CLANG 版本可以构建哪个 C 或 C++ 语言修订版。每当构建开始时,NUT Jenkinsfile(jenkins-dynamatrix 库的消费者)可以评估今天可以构建什么 —— 基于当前已知的构建代理群体,从而构建测试矩阵。

这种安排使得 NUT 可以在常见免费 CI 平台不提供的多种平台上构建。有可能找到在最新 Linux、MacOSWindows 上构建 FOSS 的方法,有时甚至在非 x86 CPU 上。找到 FreeBSDOpenBSDSolaris/illumos 等平台的构建器几乎是不可能的,更不用说比六年前更老的 Linux 发行版了。 现在,NUT 的每个迭代都经过 GNU、BSD 和 Sun Make 实现测试,Shell 助手由 Bash、Dash、Ksh、Busybox 等进行测试,GCC 从早期的 4.x 版本开始,Clang 从 3.x 版本到最近发布的第十几个版本,跨越了十几种硬件平台(一些在 QEMU 中),以及带有和不带有 GNU 扩展的 C/C++ 标准的几个修订版。总的来说,最近定期连接的构建器大约准备了 150 个阶段(其中一些运行几个内部脚本化的构建场景,所以大约有一千次构建发生)。有时,一个微妙的警告会导致这些场景在 PR 构建期间在这样或那样的操作系统、这样或那样的编译器上发出抱怨。这使我们确信,这样的机制仍然有用,而且任何社区足够关心以贡献构建器的操作系统都得到了完全支持。

在数百次构建成功且没有警告的情况下 —— 可靠地、可重复地,每次都是如此 —— 长期存在的 PR 的闸门被打开。最大的改进包括同时支持 libusb-0.1 和 libusb-1.x(排队等待了 5 年)以及恢复 NUT 对 Windows 的支持(排队等待了 9 年),自信地合并而未引入警告和回归。这些构建中的绝大多数都在自定义的 “NUT CI” 农场进行,由 Jenkins 驱动。一些场景在 CircleCI 和 Appveyor 上运行,以利用 MacOS 和 Windows 上的一些免费 FOSS 构建。 在与 Jenkins 社区的显著互动中,这项工作及相关努力导致了 git-client-plugin 的改进,以扩展引用存储库的使用,即时消息插件和 ircbot-plugin 用于通过 IRC 服务器查询 Jenkins 服务器状态,lockable-resources 插件用于解决这里那里的许多

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Jenkins 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
🤩 ggrisk | 高分文章必备的三图联动就这样轻松搞定哦!~(附完整教程)
各位小伙伴的暑假是怎么度过的呀,欢迎分享图片给我,也让我看下浪浪山外面的世界。🤒
生信漫卷
2023/09/04
5420
🤩 ggrisk | 高分文章必备的三图联动就这样轻松搞定哦!~(附完整教程)
生信代码:ggrisk|高效绘制风险因子联动图
风险得分关联图常用于COX生存风险模型的可视化,主要展示风险得分的散点图,高低风险的生存时间以及生存状态散点图以及重点基因的表达热图。
科研菌
2020/12/28
8.2K3
生信代码:ggrisk|高效绘制风险因子联动图
DeepSurv:一种基于深度神经网络的 Cox 比例风险模型方法
该文章表示:在模拟和真实的生存数据上进行了大量的实验训练 DeepSurv。证明 DeepSurv 的表现与其他最先进的生存模型一样好,甚至更好,并验证 DeepSurv 成功地模拟了患者协变量与其失败风险之间日益复杂的关系。然后,展示了 DeepSurv 如何模拟患者特征与不同治疗方案有效性之间的关系,以展示如何使用 DeepSurv 提供个性化治疗建议。最后,在真实的临床研究中训练 DeepSurv,以证明它的个性化治疗建议将如何增加一组患者的生存时间。
DoubleHelix
2024/05/31
1K1
DeepSurv:一种基于深度神经网络的 Cox 比例风险模型方法
如何保证自己的生存分析结果图有意义
一般来说,我们做生存分析,会有(P<0.05)和(P>0.05)两种结果。KM plot在生物医学中很常见,主要用来做预后分析,比如可以根据表达量把病人分成两组,然后比较哪组病人预后好,进而可以得出基因表达量高低与病人预后好坏相关性的结论。 画KM plot时,有时候会比较纠结怎样对病人进行分组,如何来设置分组的cutoff。一般来说常见的几种设置cutoff值得思路如下: 1:大多数情况下,根据表达量从低到高对样本进行排序,取前50%为低表达,后50%为高表达,然后画KM plot。 2:还有一些文章也会将样本表达量均分为三组或者四组。 3:一些文章也会选一些其它的cutoff,比如前1/3和后2/3,前25%和后25%(中间50%的数据去掉)。
用户1359560
2019/10/09
1.9K0
如何保证自己的生存分析结果图有意义
RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线
经过RNAseq|批量单因素生存分析 + 绘制森林图分析后得到了预后显著的基因集。后续的常见做法是通过机器学习(lasso,随机森林,SVM等)方法进行变量(基因)筛选,然后构建预后模型。
生信补给站
2023/08/25
9.8K0
RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线
R语言生存曲线的可视化(超详细)
关于Cox模型诊断和汇总在之前的推文中已经进行过详细的讲解:R语言生存分析:Cox回归
医学和生信笔记
2023/02/14
3K0
R语言生存曲线的可视化(超详细)
Nature图表复现 | 组合绘制个性化热图
R语言数据分析指南
2023/09/20
5781
Nature图表复现 | 组合绘制个性化热图
手把手: 如何用R作Polar图等
感谢顾运筠投稿,欢迎各位读者投稿,发送邮件到tg@bigdatadigest.cn 或后台留言即可,谢绝软广。 用R作如下的各国Gini系数的Polar barChart: 作上图的R代码为: lib
大数据文摘
2018/05/22
7320
[GBD数据库挖掘] 13.ggplot2绘制风险因素图
R语言数据分析指南
2023/11/23
5810
[GBD数据库挖掘] 13.ggplot2绘制风险因素图
RNAseq-ML | SuperPC 算法构建预后模型 并预测
机器学习构建预后模型的文章很多,且越来越卷,动不动就是10种模型的101种组合,这个系列会逐一的介绍这些常用于预后模型变量筛选和模型构建的机器学习方法。
生信补给站
2024/03/26
7150
RNAseq-ML | SuperPC 算法构建预后模型 并预测
ggplot2优雅绘制热图添加双箭头注释
❝本节来介绍如何使用「ggplot2」来绘制热图并添加双向箭头添加注释,下面小编通过一个案例来进行展示,图形仅供展示用,希望各位观众老爷能够喜欢。。❞
R语言数据分析指南
2023/09/11
7440
ggplot2优雅绘制热图添加双箭头注释
RNAseq-ML|randomForestSRC完成随机森林生存分析-预后模型库+1
机器学习构建预后模型的文章很多,且越来越卷,动不动就是10种模型的101种组合,这个系列会逐一的介绍这些常用于预后模型变量筛选和模型构建的机器学习方法。
生信补给站
2023/11/17
4.3K0
RNAseq-ML|randomForestSRC完成随机森林生存分析-预后模型库+1
强烈安利!!绘制可自定义填充图案的统计图-patternplot
饼图、环形图、柱状图和箱式图是我们论文写作和数据统计经常要绘制的统计图,常常是使用单一的颜色填充(ggplot2大家可能都用烦了吧),小编呕心沥血终于找到一个非常实用又高级的绘图R包。patternplot包不仅可以绘制美观和信息丰富的统计图,它可以用颜色或纹理或png或jpeg格式的任何外部图像填充统计图,让我们一起来看看吧!!
作图丫
2022/03/29
1.4K0
强烈安利!!绘制可自定义填充图案的统计图-patternplot
RNA-seq入门实战(八):GSVA——基因集变异分析
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
9.9K0
RNA-seq入门实战(八):GSVA——基因集变异分析
R|生存分析 - KM曲线 ,必须拥有姓名和颜值
生存分析作为分析疾病/癌症预后的出镜频率超高的分析手段,而其结果展示的KM曲线也必须拥有姓名和颜值!
生信补给站
2020/08/05
3.1K0
R|生存分析 - KM曲线 ,必须拥有姓名和颜值
酷不酷炫!想不想学!带统计学的PCoA完美解决打样本量多组数据不好区分的问题!!
由于高通量测序的价格降的越来越低,现在很多人的研究已经从早期几个、十几个样品的研究发展到了几十、几百、甚至上千个样品,这种确实在以扩增子测序为基础的研究中越发明显。
DataCharm
2021/02/22
1.7K0
酷不酷炫!想不想学!带统计学的PCoA完美解决打样本量多组数据不好区分的问题!!
癌基因都是肿瘤的风险因子吗
同理,我们会问另外一个问题,就是癌基因都是肿瘤的风险因子吗,它高表达会导致癌症比如死的越来越快吗?反之,抑癌基因一定是肿瘤的保护因子吗,它表达量越高癌症病人越受到保护吗,因为想当然的我们会认为抑癌基因能抑制癌症嘛,所以它表达量越高越好。
生信技能树
2022/07/26
7310
癌基因都是肿瘤的风险因子吗
R包survminer画生存曲线的实用技能,你get了吗?
生存分析是指将终点事件和出现此事件所经历的时间结合起来分析的一种统计方法,研究生存现象和现象的响应时间数据及其规律,在肿瘤等疾病研究中运用广泛。在R中进行生存分析常用的包有survival包以及survminer包。[A Robust 6-lncRNA Prognostic Signature for Predicting the Prognosis of Patients With Colorectal Cancer Metastasis]中R包survminer用于确定高风险和低风险人群的最佳截点。[Change in Neutrophil to Lymphocyte Ratio During Immunotherapy Treatment Is a Non-Linear Predictor of Patient Outcomes in Advanced Cancers]采用survminer包进行单因素和多因素分析。今天我们来介绍survminer包。
作图丫
2022/03/29
1.8K0
R包survminer画生存曲线的实用技能,你get了吗?
读者投稿|绘制一系列黑白印刷风格图表
让使用者将注意力集中在参数设定与调整上,而不是代码使用的细节,类似于一个芯片封装的过程。对几个常用的绘图函数进行了封装,并调整为印刷风格供使用者做课题或写论文参考。
庄闪闪
2022/02/16
1.2K0
读者投稿|绘制一系列黑白印刷风格图表
生存分析新技能:小洁老师带你全代码实现生存曲线与风险表的完美融合
为了让代码具有可重复性,保存图片也最好是用代码来实现,而不是用点鼠标的方式。最近有一个需求是将生存曲线和表格一起保存,尝试了经典的三段论、ggsave、图片数据类型转换、cowplot包的recordPlo函数都没能实现我的目的。恰好昨天是生信技能树的福利:每月1次的答疑时间。那就求助小洁老师来解决问题吧,小洁老师很快就找到了解决办法,实在是太厉害啦!下面是解答过程:
生信技能树
2024/07/05
3040
生存分析新技能:小洁老师带你全代码实现生存曲线与风险表的完美融合
推荐阅读
相关推荐
🤩 ggrisk | 高分文章必备的三图联动就这样轻松搞定哦!~(附完整教程)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档