CI/CD 流水线设计

共 19 题
#

1. CI 流水线如何按分支、标签与 MR/PR 配置触发和执行策略?

A 标签触发应只用于发布,且最好受分支与标签权限约束 ✓ 正确答案
B 所有分支都应触发完整流水线以保证质量
C MR 触发与分支触发没有任何区别,可混用
D 触发策略一旦配置就不可修改,只能重写流水线
#

2. CI 流水线如何设置手动触发阶段作为生产发布门禁?

A 手动阶段应放在流水线最前面,先人工确认再构建
B 手动阶段应设置 allow_failure: true 以便失败时也能继续
C 手动门禁应放在自动测试与制品晋级之后、生产部署之前,并强制必须成功 ✓ 正确答案
D 手动门禁无需任何权限控制,任何人都可以点击
#

3. GitLab CI 的 stages/jobs/scripts 如何组织流水线(阶段顺序与失败策略)?

A 同一阶段内的 job 必须串行执行
B allow_failure 只能用于测试阶段
C 只有前一阶段全部成功才进入下一阶段,且可用 when 定制失败分支 ✓ 正确答案
D 阶段顺序由 job 名称的字母序决定
#

4. CI/CD 流水线的关键设计原则中阶段失败策略、制品不可变传递与环境晋升门禁如何落实

A 每个环境都应重新构建制品以确保新鲜
B 晋升门禁只记录结果,无需记录晋升者
C 关键路径失败应使用 allow_failure 继续执行
D 制品应构建一次、通过晋升在环境间传递,并在晋升时重新校验 ✓ 正确答案
#

5. CI、持续交付与持续部署的边界中自动构建测试、自动部署预发与自动发布生产的门禁差异如何界定

A CI 与持续部署完全等价
B 持续部署把生产发布也自动化,而持续交付的生产发布仍可保留人工审批 ✓ 正确答案
C 持续交付不需要自动测试
D 持续部署必须禁止任何人工干预
#

6. Codefresh 如何面向 Kubernetes 提供构建、镜像发布与部署流水线?

A Codefresh 只提供传统流水线,不支持 GitOps
B Codefresh 支持传统流水线与 GitOps 双模式,并可与 Argo CD/Rollouts 集成 ✓ 正确答案
C Codefresh 无法构建多架构镜像
D Codefresh 的部署依赖单独的外部工具,无法集成
#

7. Jenkins 的核心使用流程与最佳实践是什么?

A 用 Pipeline as Code 组织流水线,并配合共享库与凭证插件实现复用和密钥管理 ✓ 正确答案
B 应使用自由风格任务并全部在界面点按配置
C 所有构建都应只跑在主节点上
D 密钥应直接写在 Jenkinsfile 中便于管理
#

8. 流水线阶段的划分与并行中构建/单元测试/集成测试/发布审批的依赖与失败策略如何设计

A 所有阶段都串行执行最可靠
B 单元测试应在集成测试之后运行
C 无依赖的测试可并行、依赖测试通过作为门禁,关键阶段失败应阻断下游 ✓ 正确答案
D 发布审批应放在构建之前
#

9. CI 缓存与加速中依赖缓存、构建缓存(BuildKit/remote cache)与并行分片如何降低流水线时长

A 依赖缓存应无条件复用,不需要失效策略
B 分片只会增加成本,不会缩短流水线时长
C 构建缓存与依赖缓存完全没有区别
D 用依赖锁文件哈希作为缓存 key,并配合镜像分层缓存与测试分片可显著降低时长 ✓ 正确答案
#

10. CI/CD 流水线设计的常见误区与改进实践(过长流水线、脆弱测试、门禁缺失)?

A 流水线越长越能保证质量
B 应拆分职责、治理 flaky 测试并建立晋升门禁,避免过长、脆弱与无门禁 ✓ 正确答案
C flaky 测试重跑通过即可,无需修复
D 门禁只会拖慢发布,应尽可能移除
#

11. 从提交到生产的流水线设计中触发策略、阶段门禁、制品晋级与回滚入口如何串联

A 回滚入口应在发布后单独设计,与流水线无关
B 制品晋级意味着每环境重新构建
C 触发、门禁、制品晋级与回滚入口应串联成闭环,回滚使用同一套可信制品 ✓ 正确答案
D 发布后无需验证即可视为完成
#

12. 流水线中的测试分层中单元/集成/E2E 测试的位置、时长控制与 flaky 测试治理

A E2E 测试应放在最前面且每次提交都跑
B 单元测试靠前且高频,E2E 靠后低频,flaky 测试应隔离修复而非任其污染主链路 ✓ 正确答案
C 集成测试应比单元测试更早运行
D flaky 测试重跑通过即可,无需治理
#

13. 流水线可观测性中阶段耗时、失败率、日志检索与构建队列积压如何监控告警

A 只需监控构建成功与否即可
B 队列积压对流水线没有影响
C 日志无法与构建号、commit 关联
D 应覆盖阶段耗时、失败率、队列积压与日志检索,并设置分级告警 ✓ 正确答案
#

14. 流水线安全基线中凭证注入(Vault/K8s Secret)、制品签名与 runner 隔离如何实现

A 凭证可直接写入仓库便于管理
B 所有任务应共用同一 runner 以简化维护
C 制品签名会显著降低构建速度,应避免
D 应通过 Vault/K8s Secret 注入凭证、用 cosign 签名制品、并为不可信任务隔离 runner ✓ 正确答案
#

15. 流水线并行策略中测试分片、矩阵构建与依赖图并行(DAG)如何平衡资源与耗时

A 测试分片、矩阵构建与 DAG 并行可降低耗时,但需平衡资源与并发上限 ✓ 正确答案
B 并行度越高越好,无需考虑资源
C 矩阵构建与 DAG 完全等价
D 所有 job 都应无条件并行
#

16. 流水线度量中变更前置时间、流水线失败率与恢复时间如何采集并驱动改进

A 只有部署频率是有意义的指标
B 指标只需采集,无需反馈给团队
C 变更前置时间、变更失败率、恢复时间等 DORA 指标应自动化采集并用于驱动改进 ✓ 正确答案
D 恢复时间与流水线无关
#

17. 流水线的失败重跑与回滚中幂等重跑、跳过已成功阶段的机制与失败产物的处理

A 流水线应幂等可重跑、可跳过已成功阶段,并区分失败产物的保留与清理 ✓ 正确答案
B 重跑必然产生新问题,应避免
C 失败产物应永久保留所有构建
D 跳过已成功阶段会导致制品不一致
#

18. 流水线触发策略中分支推送、PR 校验、标签与定时触发的适用场景及合并后主干的处理

A 标签触发与分支触发作用完全相同
B 分支推送做轻量校验、PR 做合并门禁、标签做发布、主干做全量验证,各司其职 ✓ 正确答案
C 定时触发应替代所有其他触发
D 合并后主干无需全量验证
#

19. 镜像安全门禁嵌入流水线中构建后扫描、漏洞阈值卡点与例外审批如何配置

A 扫描只生成报告,不应阻断流水线
B 所有漏洞都必须强制修复,否则无法发布
C 应扫描镜像并按严重度阈值阻断晋升,对不可修复漏洞提供受控例外审批 ✓ 正确答案
D 豁免审批无需记录即可审批