首页主机资讯如何在Ubuntu上集成GitLab与Jenkins

如何在Ubuntu上集成GitLab与Jenkins

时间2025-11-19 10:32:03发布访客分类主机资讯浏览469
导读:在 Ubuntu 上集成 GitLab 与 Jenkins 的完整步骤 一 环境准备与端口规划 准备两台或同一台 Ubuntu 22.04/24.04 主机,安装 Docker 与 Docker Compose(可选),并确保内存与磁盘...

在 Ubuntu 上集成 GitLab 与 Jenkins 的完整步骤


一 环境准备与端口规划

  • 准备两台或同一台 Ubuntu 22.04/24.04 主机,安装 DockerDocker Compose(可选),并确保内存与磁盘充足(GitLab 资源占用相对较高)。
  • 端口规划建议:为避免冲突,可将 GitLab 改为 11000/11001/11002,保留 Jenkins 8080;若同机部署,请提前修改 GitLab 配置并生效。
  • 快速安装 Docker(如未安装):
    • sudo apt update & & sudo apt install -y docker.io docker-compose
    • sudo systemctl start docker & & sudo systemctl enable docker
  • 说明:下文同时给出本机部署与 Docker 部署两种路径,按需选择。

二 安装 GitLab 与 Jenkins

  • 方式 A 本机安装(示例命令,按实际版本调整)
    • GitLab 依赖与安装:
      • sudo apt-get install -y curl openssh-server ca-certificates postfix
      • curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
      • sudo apt-get install -y gitlab-ee
    • 修改端口(避免与 Jenkins 8080 冲突):编辑 /etc/gitlab/gitlab.rb
      • external_url ‘http://< 你的IP或域名> :11000’
      • unicorn[‘port’] = 11001
      • prometheus[‘listen_address’] = ‘localhost:11002’
      • 生效:sudo gitlab-ctl reconfigure
    • Jenkins 安装:可使用官方 Debian 仓库或下载 .deb 包安装,安装后访问 http://:8080 完成初始化。
  • 方式 B Docker 部署(更简洁,便于隔离与迁移)
    • 启动 GitLab:
      • docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ee:latest
    • 启动 Jenkins:
      • docker run -itd -p 8080:8080 -p 50000:50000 --restart=always --name jenkins -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
    • 可选:使用 docker-compose.yml 统一管理两服务(定义两个 service、持久化卷与端口映射)。

三 在 GitLab 与 Jenkins 之间建立安全连接

  • 在 GitLab 生成 Personal Access Token(具有 API 权限):User Settings → Access Tokens → 生成 Token(保存备用)。
  • 在 Jenkins 安装插件:Manage Jenkins → Manage Plugins → 搜索并安装 GitLab Plugin
  • 在 Jenkins 配置 GitLab 连接:Manage Jenkins → Configure System → GitLab → 添加 GitLab 实例 URL 与 API Token,点击 Test Connection,应返回 Success

四 配置触发与构建流水线

  • 在 Jenkins 创建 Pipeline 项目:
    • 在 “Build Triggers” 勾选 Build when a change is pushed to GitLab. GitLab CI Service URL,点击 Generate 生成 Secret token(保存备用)。
    • 在 Pipeline 脚本中使用 GitLab 插件提供的 updateGitlabCommitStatus 将阶段状态回写到 GitLab 提交/合并请求,便于在 GitLab 流水线视图查看构建进度与结果:
      • pipeline {
        agent any
        stages {
        stage(‘pull code’) {
        steps {
        script {
        try {
        updateGitlabCommitStatus name: ‘code-checkout’, state: ‘running’
        git branch: ‘master’, credentialsId: ‘gitlab’, url: ‘http:///group/project.git’
        updateGitlabCommitStatus name: ‘code-checkout’, state: ‘success’
        } catch (e) {
        updateGitlabCommitStatus name: ‘code-checkout’, state: ‘failed’
        }
        }
        }
        }
        stage(‘build’) {
        steps {
        script {
        try {
        updateGitlabCommitStatus name: ‘code-build’, state: ‘running’
        sh ‘make build || true’
        updateGitlabCommitStatus name: ‘code-build’, state: ‘success’
        } catch (e) {
        updateGitlabCommitStatus name: ‘code-build’, state: ‘failed’
        }
        }
        }
        }
        }
        }
  • 在 GitLab 项目设置 Webhook:Settings → Webhooks → 添加
    • URL:http://:8080/project/
    • Secret Token:填入上一步 Jenkins 生成的 Secret token
    • 触发事件:建议勾选 Push eventsMerge request events
    • 点击 Test 验证,返回 200/201 表示连通。

五 代码拉取认证与常见问题排查

  • 代码拉取认证方式
    • HTTPS:在 Jenkins 的 “Credentials” 中添加 Username with passwordGitLab Personal Access Token,在 Pipeline 的 git 指令中使用该 credentialsId
    • SSH:在 Jenkins 服务器生成 SSH 密钥对,将公钥添加到 GitLab(User Settings → SSH Keys),Jenkins 凭据选择 SSH Username with private key;Pipeline 使用 git@:/.git
  • 常见问题与要点
    • 端口冲突:同机部署时务必调整 GitLab 端口(如 11000/11001/11002),或调整 Jenkins 端口,确保两者不冲突。
    • Webhook 403/404:确认 Secret token 一致、Jenkins 项目名正确、CSRF 保护策略允许来自 GitLab 的请求(如使用 “Build when a change is pushed to GitLab” 触发器可避免部分 CSRF 问题)。
    • 构建状态回写失败:确保 GitLab Plugin 已安装,且在 Pipeline 中正确调用 updateGitlabCommitStatus,并为每个阶段设置不同的 name
    • 首次构建失败:若仓库为空(无分支),请先在 GitLab 仓库提交一次代码再触发构建。

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


若转载请注明出处: 如何在Ubuntu上集成GitLab与Jenkins
本文地址: https://pptw.com/jishu/750939.html
Ubuntu GitLab的性能调优有哪些方法 Ubuntu GitLab的CI/CD如何配置

游客 回复需填写必要信息