首页主机资讯Linux中GitLab如何部署CI/CD

Linux中GitLab如何部署CI/CD

时间2025-10-16 20:10:03发布访客分类主机资讯浏览406
导读:1. 前置准备:安装GitLab(若未部署) 在Linux服务器上安装GitLab是实现CI/CD的基础。以Ubuntu为例,步骤如下: 安装依赖包:sudo apt-get install -y curl openssh-server...

1. 前置准备:安装GitLab(若未部署)
在Linux服务器上安装GitLab是实现CI/CD的基础。以Ubuntu为例,步骤如下:

  • 安装依赖包:sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
  • 添加GitLab软件源:curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
  • 安装GitLab CE:sudo apt-get install gitlab-ce
  • 配置GitLab:编辑/etc/gitlab/gitlab.rb,设置external_url 'http://your-server-ip'(替换为服务器IP或域名),运行sudo gitlab-ctl reconfigure使配置生效
  • 启动服务:sudo gitlab-ctl start,并设置开机自启:sudo systemctl enable gitlab-ce
    访问http://your-server-ip完成GitLab初始化配置(设置root密码、管理员账号等)。

2. 安装与注册GitLab Runner
GitLab Runner是执行CI/CD任务的代理,需单独安装并注册到GitLab实例:

  • 安装Runner(以Ubuntu为例):
    curl -L --output /etc/apt/trusted.gpg.d/gitlab.asc https://packages.gitlab.com/gitlab/gitlab-runner/gpgkey
    echo "deb https://packages.gitlab.com/gitlab/gitlab-runner/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab-runner.list
    sudo apt-get update
    sudo apt-get install gitlab-runner
    
  • 注册Runner
    运行sudo gitlab-runner register,按提示输入:
    • GitLab实例URL(如https://gitlab.com或你的自建GitLab地址);
    • 注册Token(在GitLab项目页面→SettingsCI/CDRunners中获取);
    • 选择Executor(推荐shell,适用于简单任务;若需要隔离环境可选docker);
    • 设置Runner描述(如“My Linux Runner”)和标签(如linux,deploy,用于匹配项目中的Job标签)。
      注册完成后,Runner会自动启动并监听GitLab触发的任务。

3. 创建.gitlab-ci.yml配置文件
在项目根目录下创建.gitlab-ci.yml文件,定义CI/CD流程的核心逻辑(包括阶段、任务、产物等)。以下是一个通用示例:

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

# 构建任务
build_job:
  stage: build
  script:
    - echo "Building the project..."
    - mkdir -p build
    - cd build &
    &
     cmake .. &
    &
     make  # 示例:C++项目构建
  artifacts:
    paths:
      - build/*.jar  # 保存构建产物(如Java的jar包)
    expire_in: 1 hour  # 产物过期时间(可选)

# 测试任务
test_job:
  stage: test
  script:
    - echo "Running tests..."
    - cd build &
    &
     ctest  # 示例:C++项目测试
  needs: ["build_job"]  # 依赖构建任务完成(可选,确保构建成功后再测试)

# 部署任务(仅master分支触发)
deploy_job:
  stage: deploy
  script:
    - echo "Deploying to production server..."
    - scp -r build/* user@remote-server:/var/www/html  # 示例:SCP传输文件到Linux服务器
  only:
    - master  # 仅当代码推送到master分支时触发(可选,可改为其他分支或标签)

关键说明

  • stages:定义流程的阶段顺序(必填,任务按阶段依次执行);
  • script:每个任务的具体执行命令(必填);
  • artifacts:保存任务生成的产物(如编译后的文件、测试报告),供后续任务使用(可选);
  • needs:指定任务依赖的其他任务(可选,确保依赖任务成功后再执行);
  • only/except:控制任务触发的条件(如仅特定分支、标签或提交信息)(可选)。

4. 配置CI/CD变量(可选但推荐)
若流程中需要敏感信息(如Docker Registry密码、服务器SSH密钥、第三方服务API密钥),可通过GitLab的CI/CD变量管理:

  • 进入项目页面→SettingsCI/CDVariables
  • 点击“Add variable”,输入变量名(如CI_DEPLOY_SERVER_SSH_KEY)和值(如服务器SSH私钥内容);
  • 勾选“Mask variable”(隐藏变量值,在日志中不显示)和“Protect variable”(仅受保护分支可使用);
  • .gitlab-ci.yml中通过$变量名引用(如ssh -i $CI_DEPLOY_SERVER_SSH_KEY user@remote-server)。

5. 触发CI/CD流程
.gitlab-ci.yml文件提交到GitLab仓库并推送,Runner会自动检测并执行流程:

git add .gitlab-ci.yml
git commit -m "Add GitLab CI/CD configuration"
git push origin master  # 推送到master分支(根据only条件触发)

触发后,可在GitLab项目页面→CI/CDPipelines查看流程执行状态(成功/失败)、日志输出及每个任务的详情。

6. 监控与调试

  • 查看流程状态:通过CI/CDPipelines查看所有流程的执行历史,点击流程ID可查看详情;
  • 查看任务日志:在流程详情页点击任务名称,可查看任务的实时输出(如编译错误、测试失败信息);
  • 调试失败任务:若任务失败,可在Runner所在服务器上查看Runner日志(sudo journalctl -u gitlab-runner),或在任务日志中分析错误原因(如命令不存在、权限不足)。

注意事项

  • Runner权限:确保Runner所在服务器有执行任务所需的权限(如访问GitLab仓库、写入部署目录、连接数据库等);
  • 产物管理:合理使用artifacts保存必要产物(如编译后的文件、测试报告),避免占用过多存储空间;
  • 安全性:敏感信息(如服务器密码、API密钥)务必通过CI/CD变量管理,不要直接写在.gitlab-ci.yml中;
  • 流程优化:根据项目需求调整阶段划分(如增加package阶段用于打包、sonarqube阶段用于代码质量检查),或使用Docker executor实现环境隔离(如用Docker镜像运行任务,避免依赖服务器环境)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux中GitLab如何部署CI/CD
本文地址: https://pptw.com/jishu/728347.html
Linux FetchLinux:新手必看指南 Linux环境下GitLab如何调试

游客 回复需填写必要信息