测验:顺序、条件、传递
在作业中写入needs: []和根本不写入needs密钥有什么区别?
- 空列表不等待任何内容,如果没有键,则等待所有先前的阶段。
- 空列表等待所有先前的阶段,如果没有键则立即离开。
- 两者都是相同的设置,只是符号不同,等待上一阶段结束。
- 空列表是配置错误,根本不会创建管道。
在所有作业都在 DAG 中捆绑在一起的管道中,无论增加多少个运行程序,时间都不会减少?
- 最长作业执行时间
- 平均等待时间除以作业数量除以跑步者数量
- 按顺序跟随波浪的最长路径的时间
- 时间乘以阶段数再乘以作业数
如果在 rules 列表中间放置一个无条件的 when: never 项,会怎样?
- 无条件项目将被忽略,其余规则将正常评估。
- 该项目总是会卡住,因此永远不会阅读下面写的规则。
- 整个列表变得无效并且作业始终运行。
- 配置验证步骤期间发生错误,管道被拒绝。
我将操作部署作业设置为when: manual,但是无人点击的管道成功结束。原因是什么?
- 由于需求没有写下来,所以这项工作就随着前一阶段一起跳过了。
- 规则在作业开始时评估,而不是在管道创建时评估
- 该阶段名称不在阶段列表中,因此从作业列表中将其省略。
- 即使allow_failure设置为true,管道也会被视为成功处理。
什么最准确地指出了artifacts和cache之间的区别?
- 如果没有工件,后续作业就会失败。即使没有缓存,作业也应该运行。
- 工件保留在运行器内,并且缓存长期存储在服务器上。
- 工件不被压缩,缓存被压缩,从而减少传输量。
- 工件仅在同一个作业中使用,而缓存则传递给其他作业。
为什么将缓存键保留为key: {files: [requirements.txt]}而不是固定字符串?
- 这是因为键名变得更长,减少了与其他项目冲突的机会。
- 这是因为缓存存储空间的限制随着文件数量的增加而增加。
- 这是因为当依赖项改变时,key会自动改变,缓存也会自动失效。
- 这是因为即使锁定文件未提交,缓存也会运行。