CI/CD流水线创建方法?( 五 )



CI/CD流水线创建方法?
文章图片
结果作为提交状态被推回到GitHub , 并记录在web和ttyui的本地索引中 。 这里有很多红色 , 主要是因为如果一个项目不支持特定版本的OCaml , 那么构建会被标记为失败 , 并在管道中显示为红色 , 尽管在生成GitHub状态报告时会过滤掉这些失败 。 我们可能需要一个新的颜色跳过阶段 。
结论
编写CI/CD管道很方便 , 就好像它们是一次连续运行这些步骤并始终成功的单点脚本一样 , 然后只要稍作更改 , 管道就会在输入更改时运行这些步骤 , 同时提供日志记录、错误报告、取消和重建支持 。
使用monad可以很容易地将任何程序转换为具有这些特性的程序 , 但是 , 与常规程序一样 , 在运行某些数据之前 , 我们不知道该程序将如何处理这些数据 。 特别是 , 我们只能自动生成显示已经开始的步骤的图表 。
传统的静态分析方法是使用箭头 。 这比单元格稍微有限 , 因为流水线的结构不能根据输入数据而改变 , 尽管我们可以增加有限的灵活性 , 例如可选的步骤或两个分支之间的选择 。 但是 , 使用箭头符号编写管道是很困难的 , 因为我们必须使用无点样式(没有变量)编程 。
通过以一种不寻常的方式使用monad(这里称为“dart”) , 我们可以获得静态分析的相同好处 。 我们的函数不是接受纯值并返回包装值的函数 , 而是接受并返回包装值 。 这导致语法看起来与普通编程相同 , 但允许静态分析(代价是无法直接操作包装的值) 。
如果我们隐藏(或不使用)monad的let*(bind)函数 , 那么我们创建的管道总是可以静态地确定的 。 如果我们使用绑定 , 那么管道中会有随着管道运行而扩展到更多管道阶段的孔 。
基本步骤可以通过使用单个“标签绑定”创建 , 其中标签为原子组件提供静态分析 。
我以前从未见过使用过这种模式(或者在arrow文档中提到过) , 它似乎提供了与arrow完全相同的好处 , 而且难度要小得多 。 如果这个名字是真的 , 告诉我!
这项工作由OCaml实验室资助 。
原文链接:
https://roscidus.com/blog/blog/2019/11/14/cicd-pipelines/
延伸阅读:
爱情才是程序员的第一生产力-InfoQ
CI/CD流水线创建方法?】关注我并转发此篇文章 , 即可获得学习资料~若想了解更多 , 也可移步InfoQ官网 , 获取InfoQ最新资讯~