2024年全网最全,用docker-compose部署gitlab、Jenkins、SonarQube步骤

看了很多相关的文章,发现都讲得不是很全面。于是我花了几天时间,终于完成了整个部署流程。

为什么已经2024年了,还选择Jenkins?gitlab不是集成了gitlab-runner可以进行CI/CD部署吗?因为Jenkins更加灵活,可以搭配其他的工具进行各种定制部署方案。并且Jenkins开源免费,资料也比较全,目前找不到更好的替代方案。

SonarQube是代码审核工具,能够对代码进行扫码,提升代码质量。

环境准备

windows11, docker

部署开始

复制以下yml文件,进行docker-compose部署

yaml 复制代码
version: '3.6'
name: gitlab
services:
    gitlab:
        image: 'gitlab/gitlab-ce:latest'
        container_name: gitlab
        restart: always
        hostname: '127.0.0.1'
        privileged: true
        environment:
            TZ: 'Asia/Shanghai'
            GITLAB_OMNIBUS_CONFIG: |
                external_url 'http://127.0.0.1:30080' # web站点访问地址
                registry_external_url 'http://127.0.0.1:30080'
                gitlab_rails['time_zone'] = 'Asia/Shanghai'
            GITLAB_ROOT_PASSWORD: 'abc123456'
        ports:
            - '30080:30080' # 注意宿主机和容器内部的端口要一致,否则external_url无法访问
            - '443:443'
            - '22:22'
        volumes:
            - './gitlab/config:/etc/gitlab'
            - './gitlab/logs:/var/log/gitlab'
            - './gitlab/data:/var/opt/gitlab'
        shm_size: '256m'

    jenkins:
        image: jenkins/jenkins:latest
        container_name: jenkins
        user: root
        restart: always
        ports:
            - 8080:8080
            - 5000:5000
        volumes:
            - ./jenkins/jenkins_home/:/var/jenkins_home

    sonarqube:
        image: sonarqube:latest
        container_name: sonarqube
        restart: always
        ports:
            - 9000:9000
        depends_on:
            - postgres
        environment:
            - SONARQUBE_JDBC_USERNAME=sonar
            - SONARQUBE_JDBC_PASSWORD=Sonar12#$
            - SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonarqube
        volumes:
            - ./sonarqube/conf:/opt/sonarqube/conf
            - ./sonarqube/data:/opt/sonarqube/data
            - ./sonarqube/extensions:/opt/sonarqube/extensions

    postgres:
        image: postgres:latest
        container_name: postgres
        restart: always
        ports:
            - 5432:5432
        environment:
            - POSTGRES_USER=sonar
            - POSTGRES_PASSWORD=Sonar12#$
            - POSTGRES_DB=sonarqube
        volumes:
            - ./postgres/postgresql:/var/lib/postgresql
            - ./postgres/postgresql_data:/var/lib/postgresql/data

networks:
    gitlab:
        external: true

配置gitlab

gitlab的部署要等很久,大概10分钟之后,就可以进入http://localhost:30080/users/sign_in ,因为gitlab我配置的密码是abc123456,账号是root,即可登录。

配置ssh,用于推送项目

如何生成ssh-key,以及配置,可以看我另一篇文章 如何生成SSH,以及用SSH克隆Github项目, 总之把ssh-key添加进去就可以了。

然后创建一个vue3空项目,按照提示拉取项目git clone http://127.0.0.1:30080/root/vue3.git, 并且用vite创建一个vue3项目放进去,再推到仓库上。这些都很简单,就不演示了。

踩坑一、 Requests to the local network are not allowed

后面测试,会出现这个错误,所以要配置好。

在这个Settings/Network中,也就是 http://localhost:30080/admin/application_settings/network 的位置,找到Outbound requests,勾选上,然后保存配置。

安装Jenkins

进入Jenkins网站,http://localhost:8080

在终端中输入docker logs -f jenkins查看密码

选择推荐的要花20分钟的时间来安装,太慢了,我们选择自定义

点一下无,取消所有选项,然后进入下一步

配置Jenkins

先安装插件

安装gitlab,gitlab API,nodejs,SonarQube

安装一下nodejs插件和SonarQube插件,最新即可

创建项目,与gitlab对接

选择第一个就行了

把项目地址的127.0.0.1改成gitlab,添加凭证 用gitlab的账号密码登录,也就是root,abc123456

没有红色,就说明成功了

修改分支为main

生成Jenkins token

保存token,环境勾选Node

选择shell脚本,输入打包的语句 保存即可

配置gitlab webhooks

按照图片中的填写,保存即可

测试一下是否成功

这样就说明成功了

配置SonarQube token

进入sonarqube网站,账号密码都是admin

添加一个项目,使用local project

创建后,自动跳转到这里

保存好这个token

与SonarQube对接

按照填写即可

配置SonarQube Scanner

再次进入项目配置,添加SonarQube Scanner。

主要填写以下内容:

text 复制代码
sonar.projectKey=vue
sonar.projectName=vue

sonar.javascript.node.maxspace=4096

sonar.sources=src

sonar.sourceEncoding=UTF-8

sonar.token=你的token

保存后,再跑一次

到SonarQube看一下,完美通过

相关推荐
余槐i4 小时前
MySQL 8.0 联合索引走错:为什么加了索引查询反而从 200ms 变成 8s
java·spring boot·mysql·docker·性能优化
ruanno_top4 小时前
能点,但 Tab 不到:两个组件把「可操作」做了一半
vue.js
爱吃烧烤的技术渣4 小时前
别再手写 CRUD 了:我把 Element Plus 的工作量压缩成一份列 schema
前端·vue.js
csdn_aspnet4 小时前
如何在本地 Docker 容器中运行 Redis,并使用 Redis Insight 和 Redis CLI 进行管理
redis·docker·容器
且从容.4 小时前
Ubuntu 安装 Docker
linux·ubuntu·docker
todoitbo5 小时前
我在 Mac 上用 Docker 部署 Nexent:从拉取镜像到接入模型
macos·docker·大模型·ai智能体·nexent·快速入门与环境准备
Goboy6 小时前
夯爆了,我被一个一句话接入的免费可观测平台策反了,那一刻我决定放弃用了3年的Prometheus
后端·docker·kubernetes
徐小夕7 小时前
万字长文!DeepSeek Super-agent × 企业知识库架构深度拆解与落地实践
前端·vue.js·github
java_logo16 小时前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
IT利刃出鞘1 天前
Docker Compose--解决修改配置后不生效的问题
运维·docker·容器