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最新资讯~
- 老年|德兴市境内山水如画,被评为“中国天然氧吧”创建地区
- 为欧洲MaaS模型创建功能基础
- 基于串联充放电的锂动力电池单体一致性筛选方法
- 原神胡桃武器应该选择方法 胡桃武器应该怎么选择
- 奇迹暖暖云海拾珍/薄荷蜜旅套装怎么获得 获取方法分享
- 小白鞋用什么东西能洗白?这几个方法效果不错哦
- 春花生要想根系好,换一个方法种植,长势变化很明显
- 妄想山海新手入门指南 宠物寿命恢复方法
- 今日头像丨开心100%的方法
- 莴笋高产的种植方法,农民掌握以下要点,收获高产优质的莴笋
