EN
400-9158-965

GitLab CI/CD自动部署

专业文章
2025-04-14
分享:

GitLab CI/CD 是 GitLab 提供的持续集成和持续部署工具,能够自动化完成代码测试、构建和部署等流程。下述是一个基础的 GitLab CI/CD 自动部署指南,帮助你快速上手:


1. 准备工作

  • 项目代码仓库: 确保代码已托管在 GitLab 仓库中。

  • 部署目标服务器: 准备用于部署的服务器(如测试环境、生产环境)。

  • 访问权限: 确保 GitLab Runner 有权限访问部署服务器(如 SSH 密钥配置)。


2. 配置 .gitlab-ci.yml 文件

在项目根目录创建 .gitlab-ci.yml 文件,定义 CI/CD 流水线阶段。下述是一个典型示例:

stages:
 - build
 - test
 - deploy

# 缓存依赖项(如 Node.js 的 node_modules)
cache:
 paths:
   - node_modules/

# 阶段 1: 构建项目
build_job:
 stage: build
 script:
   - npm install
   - npm run build
 artifacts:
   paths:
     - dist/  # 构建产物目录
 only:
   - main  # 仅 main 分支触发

# 阶段 2: 运行测试
test_job:
 stage: test
 script:
   - npm test

# 阶段 3: 部署到服务器
deploy_production:
 stage: deploy
 script:
   - echo "Deploying to production server..."
   - ssh user@production-server "cd /path/to/project && git pull origin main && npm install && pm2 restart app"
 only:
   - main

3. 配置 GitLab Runner

  1. 安装 GitLab Runner
    在服务器或本地机器上安装 GitLab Runner(参考官方文档)。

  2. 注册 Runner
    在项目设置中获取 Runner Token,运行下述命令注册:

    gitlab-runner register

    选择执行器类型(如 shelldocker 等)。


4. 自动化部署的关键配置

SSH 免密登录

  1. 在 GitLab Runner 所在机器生成 SSH 密钥:

    ssh-keygen -t rsa
  2. 将公钥 id_rsa.pub 内容添加到部署服务器的 ~/.ssh/authorized_keys 文件中。

敏感信息保护

  • 通过 GitLab Settings > CI/CD > Variables 添加环境变量(如 SSH_PRIVATE_KEY, PRODUCTION_SERVER_IP),在脚本中通过 $VARIABLE_NAME 引用。

示例修改后的 deploy 阶段:

deploy_production:
 stage: deploy
 script:
   - mkdir -p ~/.ssh
   - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
   - chmod 600 ~/.ssh/id_rsa
   - ssh -o StrictHostKeyChecking=no user@$PRODUCTION_SERVER_IP "cd /path/to/project && git pull && npm install && pm2 restart app"

5. 手动触发部署(可以选)

如果希望手动触发部署,添加 when: manual

deploy_production:
 stage: deploy
 script: [...]
 when: manual

6. 高级部署场景

Docker 部署

deploy_job:
 stage: deploy
 image: docker:latest
 services:
   - docker:dind
 script:
   - docker build -t my-app .
   - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
   - docker push my-app:latest
   - ssh user@server "docker pull my-app:latest && docker-compose up -d"

Kubernetes 部署

deploy_job:
 stage: deploy
 script:
   - kubectl apply -f kubernetes/deployment.yaml
   - kubectl rollout restart deployment/my-app

7. 调试与优化

  • 查看流水线日志: 在 GitLab 项目页面的 CI/CD > Pipelines 中查看执行日志。

  • 缓存优化: 合理配置 cacheartifacts 加快流水线速度。

  • 并行执行: 使用 parallel 关键字并行运行任务。


通过以上步骤你可以以实现从代码提交到自动部署的完整流程。根据实际项目需求调整 .gitlab-ci.yml 中的脚本(如替换 npmyarn、调整部署命令等)。

CDN加速网页全球访问
查看下一篇
推荐阅读
近期签单
  • 九月成功签单海康萤石官方网站建设
  • 九月成功签单晶华新材网站建设
  • 九月成功签单全球逆变前三锦浪科技海外积分商城
返回列表
相关文章
素未谋面,却能心照不宣;
您在哪里我们的服务就在哪里,全国范围内支持上门洽谈。
即刻联系
扫一扫微信二维码