测验:可复现的构建
使用提交 SHA/摘要而不是标签来修复操作或基础映像的最大原因是什么?
- 稍后可以移动标签以指向其他提交,但提交 SHA 无法更改。
- 由于 SHA 表示法很短,因此管道日志变得整洁。
- 这是因为如果使用标签,缓存将不起作用。
- 因为使用 SHA 修复它可以使构建速度更快。
在生产部署中使用latest标签时出现的最准确的问题是什么?
- 无法跟踪分发的是哪个版本,并且在发生事故时无法恢复。
- 随着图层的积累,图像尺寸会增加。
- 注册费用上涨
- 构建缓存每次都会失效
为什么在缓存密钥中包含锁定文件哈希?
- 当依赖关系发生变化时,键会自动更改,从而使缓存自动失效。
- 增加密钥长度以防止冲突
- 避免必须提交锁定文件
- 尝试增加缓存存储限制
矩阵构建中fail-fast的默认值是什么?它是什么意思?
- false——即使有一个失败了,他们也会走到最后
- true — 只有失败的作业才会自动重试
- false — 跳过失败的作业并将其记录为成功
- true — 如果其中一个作业失败,则其余作业将被取消
为什么使用npm ci、--frozen-lockfile和-lockfile=readonly来安装CI依赖项?
- 因为它总是拉取最新版本的依赖项。
- 如果您按照编写的方式安装它而不更新锁定文件,则无论您在哪里运行它,都会出现相同的树。
- 这是因为即使没有锁定文件它也可以工作。
- 因为它会忽略缓存并获取一个新的。
当每次提交将缓存范围分为非常小的部分时,命中率实际上会下降。最可能的原因是什么?
- 缓存键中缺少操作系统名称
- 当超出每个缓存存储的限制 (10GB) 时,最旧的缓存将被踢出,导致缓存相互推出。
- 您输入了太多恢复密钥
- 缓存最初仅在逐个分支的基础上运行。