2作者: melezhik大约 1 个月前原帖
DSCI 是一个持续集成(CI)管道框架,能够通过 Webhooks 与一些现有的 CI/CD 系统(如 Gitea、Forgejo、GitLab)集成,允许作者使用通用编程语言编写 CI/CD 代码。它为多种编程语言提供了软件开发工具包(SDK)。SDK 帮助处理输入参数、编写插件、在任务和作业之间传递结果、处理机密信息、启用自我测试等。 <p>目标受众 - 使用通用编程语言而非 YAML 的自托管 CI/CD 系统和 DevOps。 <p>文章链接 - https://github.com/melezhik/DSCI/blob/main/introduction.md <p>声明 - 欢迎随时向我提问或提供建设性反馈 - 我是该工具的作者。 <p>谢谢!
3作者: ptarjan大约 1 个月前原帖
我五岁的孩子正在学习阅读,我总是不得不说“抱歉,这个字母是静音的”和“不是,这些字母在这个单词中发出不同的声音”。<p>所以我创建了Ingglish——一种每个字母总是发出相同声音的英语。“ough”单独就有六种不同的发音(though, through, rough, cough, thought, bough)。在Ingglish中,每个字母只有一个发音,没有静音字母,没有例外。<p><pre><code> - 粘贴文本即可即时翻译 - 翻译任何网页,同时保留其布局 - Chrome扩展程序,让你在Ingglish中浏览网页 - 完全可逆——Ingglish文本可以转换回标准英语(不包括同音词) </code></pre> 核心翻译器、DOM集成和网站都是开源的:<a href="https:&#x2F;&#x2F;github.com&#x2F;ptarjan&#x2F;ingglish" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ptarjan&#x2F;ingglish</a><p>我很想听听你的反馈!谢谢。
1作者: microseyuyu大约 1 个月前原帖
在你的持续集成(CI)管道中,每一个重试规则都是一种止痛药。它抑制了症状,而底层的破损代码库存却在不断增加,直到整个系统上瘾时,没人会感受到疼痛。 我看到了一篇在 Hacker News 上的帖子,完美地说明了这种模式:https://news.ycombinator.com/item?id=46967724 重试、隔离、增加等待时间——这些都不是解决方案。它们只是让 CI 暂时跳过错误。真正的问题是:有越来越多的破损代码在滋养你的管道,而没有机制让引入这些代码的人感受到痛苦。 两个相互强化的循环开始运作: ``` 红色管道 --> <重试> --> 绿色构建 ^ | | (长期) | | v 更多不稳定性 <---- 隐藏的错误积累 ``` R1 “上瘾”:每次重试都让灯变绿。但隐藏的错误在底层积累,使系统变得更加不稳定,明天需要更多的重试。这是教科书式的“转移负担”,来自 Donella Meadows。 R2 “侵蚀”:因为你不信任 CI 的信号,你降低了标准。因为你降低了标准,更糟糕的代码被合并。信号变得更加不可靠。重复这个过程,直到你的管道变成装饰品。 原帖问 QA 和工程应该如何分担责任。这是个错误的问题。正确的问题是:如何让引入不稳定性的人感受到痛苦? 我也遇到了同样的障碍。 我构建了 CI,将 973 个 ROS 2 包移植到两个非官方支持的 Linux 发行版(openEuler + openKylin,RISC-V)。没有任何上游支持。 v1 - 粗暴探测。拉取所有 973 个包,让它们崩溃。597 个构建成功,214 个依赖缺口和 151 个失败被记录。这个管道并不是为了通过,而是为了让每一个隐藏的库存可见。 v2 - 验证引擎。先探测环境,在构建之前识别缺口。停止向管道输入垃圾。构建尝试减少,成功率提高。 v3 - 增量库存管理。将小批量问题隔离,一组一组地解决。减法,而不是加法。 我的系统也上瘾了。 在这里,我要自我反省。我的 CI 也有相同的模式。虚拟环境用来绕过依赖冲突。伪装规则用来伪装包的身份。都是权宜之计。 但我知道这些只是权宜之计。大多数团队并不知道。他们认为重试是解决方案。意识到上瘾和被其吞噬是两回事。 我可以识别出毒害你管道的库存。我可以设计反馈循环,让合适的人感受到痛苦。但我无法强迫一个组织去关心。这通常是实际的瓶颈——不是不稳定的测试,而是系统拒绝让任何人感受到后果。 代码库:https://github.com/Sebastianhayashi/the_adaptive_verification_engine