Skip to content

3)GitLab CI

🐣 第 1 题(基础概念)

Q1:GitLab CI/CD 是什么?它的核心工作流程是怎样的?

📝 标准答案:

GitLab CI/CD 是 GitLab 提供的持续集成与持续交付工具,允许开发者自动执行构建、测试、部署等任务。

核心概念:

名称描述
.gitlab-ci.ymlCI 的核心配置文件,定义 pipeline 的所有阶段
Pipeline一次完整的 CI/CD 执行流程,包含多个阶段(stage)
Stage构建、测试、部署等阶段
Job每个 Stage 中具体的执行单元
Runner实际运行 Job 的环境,可分为 Shared 和 Specific

基本流程图:

plaintext
push 代码 ➝ 触发 Pipeline ➝ 构建 ➝ 测试 ➝ 部署

🛠️ 第 2 题(YAML 配置)

Q2:如何编写一个简单的 GitLab CI 配置文件来构建并部署前端项目?

📝 标准答案:

示例 .gitlab-ci.yml 文件:

yaml
stages:
  - build
  - deploy

build-job:
  stage: build
  image: node:18
  script:
    - npm install
    - npm run build
  artifacts:
    paths:
      - dist/

deploy-job:
  stage: deploy
  script:
    - echo "Deploying..."
    - scp -r dist/* user@server:/var/www/html/
  only:
    - main

说明:

  • 使用 node:18 镜像构建项目;
  • 构建产物保存在 dist/ 并作为部署阶段的输入;
  • 仅在 main 分支 push 时触发部署;

📦 第 3 题(环境与变量)

Q3:如何使用 GitLab CI 中的环境变量?哪些变量类型可用?

📝 标准答案:

GitLab CI 支持使用环境变量进行配置管理,分为:

类型说明
预定义变量GitLab 提供的变量(如 CI_COMMIT_SHA
自定义变量.gitlab-ci.yml 或 GitLab UI 中设置
Secret 变量可在 GitLab UI 中加密设置,如 API_KEY、TOKEN

使用方式:

yaml
script:
  - echo "当前分支:$CI_COMMIT_BRANCH"
  - echo "部署目标:$DEPLOY_ENV"

设置变量方法:

  • GitLab ➝ Project ➝ Settings ➝ CI/CD ➝ Variables

🚀 第 4 题(K8s/CD 实践)

Q4:如何在 GitLab CI 中部署应用到 Kubernetes 集群?

📝 标准答案:

K8s 集成部署流程通常包含以下步骤:

  1. 设置 KUBECONFIG 作为 Secret 变量;
  2. 使用 kubectl 执行更新;
  3. 可结合 Helm 进行模板化管理;

示例 Job:

yaml
deploy:
  stage: deploy
  image: bitnami/kubectl:latest
  script:
    - echo "$KUBECONFIG" > kubeconfig
    - export KUBECONFIG=$(pwd)/kubeconfig
    - kubectl apply -f k8s/deployment.yaml

补充: 如果使用 Helm:

yaml
- helm upgrade --install myapp ./helm-chart --set image.tag=$CI_COMMIT_TAG

⚙️ 第 5 题(流水线优化)

Q5:如何提升 GitLab CI 的执行效率和可维护性?

📝 标准答案:

常用优化策略包括:

优化手段说明
缓存依赖使用 cache: 缓存 node_modules、go mod 等依赖
分阶段执行将构建、测试、部署分开处理,避免步骤冗余
并行 Job利用多个 Runner 并行处理无依赖的任务
条件触发使用 only/exceptrules: 控制特定分支/标签触发
模板分离使用 include: 将多个 YAML 拆分,提高可读性和复用性

缓存示例:

yaml
cache:
  paths:
    - node_modules/

分支触发部署示例:

yaml
deploy:
  stage: deploy
  only:
    - tags
    - main