CICD工具链
CICD工具链
面试口述要点(约 1 分钟)
完整的 CI/CD 工具链覆盖代码管理、构建、测试、制品管理、部署、监控等全生命周期:
- 源码管理:Git + GitLab/GitHub/Gitea,提供分支管理、MR/PR 审查、Webhook 触发;企业侧重 GitLab 私有化部署与 RBAC。
- CI 引擎:Jenkins(插件丰富、社区大但配置重)、GitLab CI(与 Git 深度集成、YAML Pipeline)、GitHub Actions(云原生、Marketplace 生态)、Tekton(Kubernetes-native、CRD 驱动)、Travis CI/CircleCI(SaaS 简单但灵活性受限)。
- 构建工具:Maven/Gradle(Java)、npm/Yarn(Node.js)、pip/Poetry(Python);容器化统一用 Docker/Buildah/Kaniko(无需 Docker Daemon)。
- 代码质量:SonarQube(静态扫描/代码异味/技术债)、ESLint/Pylint(语法检查)、单元测试框架(JUnit/pytest/Jest)、覆盖率工具(JaCoCo/coverage.py)。
- 制品仓库:Docker 镜像用 Harbor/Docker Hub/ECR,二进制制品用 Artifactory/Nexus,Helm Chart 用 ChartMuseum。
- 部署编排:Kubernetes(Helm/Kustomize 管理配置)、ArgoCD/Flux(GitOps)、Spinnaker(多云多集群);传统应用用 Ansible/Terraform(IaC)。
- 监控告警:Prometheus + Grafana(指标)、ELK/Loki(日志)、Jaeger/SkyWalking(链路追踪)、PagerDuty/钉钉/企微(告警通知)。
- 安全扫描:Trivy/Clair(镜像漏洞)、Snyk(依赖扫描)、OWASP ZAP/Fortify(应用安全)。
相关高频面试题与简答
问:Jenkins 与 GitLab CI 如何选型?
答:Jenkins 插件生态丰富、灵活性强但配置复杂、维护成本高;GitLab CI 与代码仓库深度集成、YAML 声明式、易上手,适合中小团队与云原生场景。问:如何在 Kubernetes 中构建镜像?
答:Kaniko/Buildah 无需 Docker Daemon,在 Pod 中安全构建;或用 Tekton Pipeline 定义构建任务,支持多阶段构建与缓存层复用;避免 DinD(Docker-in-Docker)安全风险。问:什么是 GitOps?如何实现?
答:GitOps 以 Git 为单一事实来源,声明式配置存储在 Git,ArgoCD/Flux 监听仓库并自动同步到 Kubernetes;实现配置版本化、审计、回滚,降低人工操作风险。问:如何管理多环境配置(Dev/Test/Prod)?
答:Helm values 分文件(values-dev.yaml/values-prod.yaml)、Kustomize overlay、ConfigMap/Secret 外置;敏感信息用 Vault/Sealed Secrets 加密;环境变量注入与 Namespace 隔离。问:CI/CD 中如何处理密钥与敏感信息?
答:不要硬编码在代码或 Pipeline;用 Vault/AWS Secrets Manager 集中管理,CI 引擎动态注入;Kubernetes 用 Sealed Secrets/External Secrets Operator;审计日志并定期轮换。问:如何优化 Docker 镜像构建速度?
答:多阶段构建减小镜像体积,分层缓存复用(先 COPY 依赖文件再 COPY 源码),使用 .dockerignore 排除无关文件,选择轻量 base 镜像(Alpine/distroless),并行构建多架构镜像。