linux

Linux中GitLab的CI/CD如何设置

小樊
52
2025-10-22 23:59:39
栏目: 智能运维

1. 安装GitLab Runner(CI/CD任务执行器)
GitLab Runner是执行.gitlab-ci.yml中定义任务的守护进程,需先安装并注册到GitLab实例。

2. 创建.gitlab-ci.yml(CI/CD流程定义文件)
在项目根目录下创建.gitlab-ci.yml文件,定义流水线的阶段(Stages)、**任务(Jobs)**及执行逻辑。以下是一个通用示例:

stages:
  - build    # 构建阶段:编译代码、生成产物
  - test     # 测试阶段:运行单元测试、集成测试
  - deploy   # 部署阶段:将产物部署到目标环境

# 构建任务
build_job:
  stage: build
  image: node:latest  # 使用Node.js镜像(根据项目语言调整,如maven:3.6.3-jdk-8)
  script:
    - echo "Installing dependencies..."
    - npm install       # 安装依赖(Node.js示例)
    - echo "Building project..."
    - npm run build     # 执行构建(如Webpack、Gulp)
  artifacts:            # 保存构建产物,供后续Job使用
    paths:
      - dist/           # 构建产物目录(如Java的target/、Node.js的dist/)
    expire_in: 1 hour   # 产物过期时间(可选)

# 测试任务
test_job:
  stage: test
  image: node:latest
  script:
    - echo "Running unit tests..."
    - npm test          # 运行测试(如Jest、Mocha)
  rules:
    - if: $CI_COMMIT_BRANCH == "main"  # 仅main分支触发测试(避免无效触发)

# 部署任务(示例:Shell脚本部署)
deploy_job:
  stage: deploy
  image: alpine:latest  # 轻量级镜像,仅需ssh命令
  script:
    - apk add --no-cache openssh  # 安装ssh客户端(Alpine镜像需手动安装)
    - echo "Deploying to production server..."
    - scp -r dist/* $SSH_USER@$SERVER_IP:/var/www/html  # 复制产物到服务器
  only:
    - main              # 仅main分支触发部署(保障生产环境稳定性)

关键说明

3. 配置GitLab CI/CD变量(敏感信息管理)
敏感信息(如SSH私钥、服务器IP、数据库密码)不应直接写入.gitlab-ci.yml,需通过CI/CD变量管理:

4. 触发CI/CD流水线
.gitlab-ci.yml文件提交到GitLab仓库的目标分支(如main),GitLab Runner会自动检测文件并触发流水线:

git add .gitlab-ci.yml
git commit -m "Add GitLab CI/CD configuration"
git push origin main

流水线状态可在项目CI/CD → Pipelines页面查看,包括每个任务的执行状态、日志及耗时。

5. 监控与调试流水线

6. 高级配置(可选)

0
看了该问题的人还看了