centos gitlab与其他工具集成
导读:CentOS 上 GitLab 与常见工具的集成实践 一 集成总览与选型 持续集成与交付 原生 GitLab CI/CD:在仓库根目录维护 .gitlab-ci.yml,适合“开箱即用”的标准流水线。 Jenkins:与 GitLab...
CentOS 上 GitLab 与常见工具的集成实践
一 集成总览与选型
- 持续集成与交付
- 原生 GitLab CI/CD:在仓库根目录维护 .gitlab-ci.yml,适合“开箱即用”的标准流水线。
- Jenkins:与 GitLab 通过 Webhook 联动,适合已有 Jenkins 生态或复杂编排场景。
- Arbess:国产开源 CI/CD,支持与 GitLab、SonarQube、Hadess 联动,适合私有化与一体化交付。
- 质量与安全
- SonarQube:代码质量与漏洞扫描,可在 GitLab CI 或 Arbess 流水线中调用。
- 制品管理
- Hadess:构建后制品归档与版本管理,支持在流水线末端自动上传。
- 容器与部署
- Docker / Docker Compose:容器化部署 GitLab、Jenkins、Runner,便于一致性与可移植性。
- 协作与触发
- Webhook / API:GitLab 向外部系统推送事件,或用 API 做自动化管理(创建项目、分支、用户等)。
二 原生 GitLab CI 集成 SonarQube 与 Docker 示例
- 前置准备
- 在 SonarQube 创建项目与 Token;在 GitLab 项目设置 CI/CD Variables(如:SONAR_TOKEN、SONAR_HOST_URL)。
- 示例 .gitlab-ci.yml(Java + Maven)
- stages:
- build
- test
- sonar
- docker-build
- deploy
- variables:
- MAVEN_OPTS: “-Dmaven.repo.local=.m2/repository”
- cache:
- paths:
- .m2/repository
- paths:
- build:
- stage: build
- script:
- mvn clean compile
- test:
- stage: test
- script:
- mvn test
- sonar:
- stage: sonar
- script:
- mvn sonar:sonar -Dsonar.projectKey=$SONAR_PROJECT_KEY -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN
- docker-build:
- stage: docker-build
- image: docker:stable
- services:
- docker:dind
- script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- deploy:
- stage: deploy
- script:
- echo “Deploy $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA to $DEPLOY_HOST”
- 说明
- 质量门禁可在 SonarQube 配置,未达标则阻断部署。
- 镜像仓库可用 GitLab Container Registry 或私有仓库(如 Harbor)。
- stages:
三 与 Jenkins 集成实现自动构建与部署
- 核心步骤
- 在 Jenkins 安装插件:GitLab、Git、Maven Integration、Publish Over SSH。
- 在 GitLab 项目 → Settings → Webhooks 添加 Jenkins 的 Push events 触发地址与 Secret Token(Jenkins 项目启用“Build when a change is pushed to GitLab”后生成)。
- 在 Jenkins 任务中配置:
- 源码管理:Git 仓库 URL 与凭据(建议使用 Personal Access Token)。
- 构建触发器:勾选 GitLab Webhook 触发。
- 构建环境:选择 JDK 与 Maven,执行如 mvn clean package。
- 构建后操作:使用 Publish Over SSH 将产物发布到目标主机(Tomcat/webapps 或应用目录)。
- 适用场景
- 已有 Jenkins 平台、复杂流水线、多系统编排(测试、安全、发布多环节联动)。
四 使用 Arbess 编排 GitLab + SonarQube + Hadess
- 基本思路
- 在 GitLab 创建 Personal Access Token 供 Arbess 拉取代码。
- 在 SonarQube 创建项目与 Token;在 Hadess 创建制品库并准备上传凭证。
- 在 Arbess 系统设置 → 集成与开放 → 服务集成:
- 添加 GitLab 服务(自建域名与 Token)。
- 添加 SonarQube 服务(URL 与 Token)。
- 添加 Hadess 服务(URL、认证方式与凭证)。
- 设计流水线
- 源码任务:选择 GitLab 源码(指定仓库与分支)。
- 构建任务:如 Maven 构建(配置 JDK、Maven 路径与命令)。
- 质量任务:调用 SonarQube 扫描(使用项目 Token)。
- 制品任务:使用 Hadess 上传(选择制品库、文件路径、版本规则)。
- 适用场景
- 需要一体化平台(CI/CD + 质量 + 制品)且倾向 私有化/国产化 的团队。
五 容器化部署与网络要点
- Docker Compose 快速启动 GitLab(示例)
- 目录与文件
- /data/gitlab/{ config,logs,data}
- docker-compose.yml
- docker-compose.yml
- version: “3.1”
- services:
- gitlab:
- image: gitlab/gitlab-ce:latest
- container_name: gitlab
- restart: always
- hostname: ‘gitlab.example.com’
- environment:
- GITLAB_OMNIBUS_CONFIG: | external_url ‘http://gitlab.example.com:8929’
- ports:
- ‘8929:80’
- ‘443:443’
- ‘22:22’
- volumes:
- ‘/data/gitlab/config:/etc/gitlab’
- ‘/data/gitlab/logs:/var/log/gitlab’
- ‘/data/gitlab/data:/var/opt/gitlab’
- ‘/etc/localtime:/etc/localtime:ro’
- gitlab:
- 启动
- docker-compose up -d
- 目录与文件
- 容器与 Runner 网络要点
- Runner 与 GitLab 通信:注册时使用 GitLab 容器地址(如 http://gitlab:80)。
- Runner 执行 Docker 命令:注册时挂载 /var/run/docker.sock:/var/run/docker.sock,并选择合适的 Executor(如 docker)。
- 端口规划:避免端口冲突(如 GitLab 改用 8929:80 映射)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos gitlab与其他工具集成
本文地址: https://pptw.com/jishu/785666.html
