注意:很吃内存和CPU:
32G内存最多吃了90%,磁盘IO也达到几次100%,8核16线程 cpu也占用达到80%
1. 安装gitlab
1.1 创建、配置docker-compose
bash
mkdir -p gitlab/{config,logs,data}
cd gitlab/
touch docker-compose.yml
配置我直接用的是IP,也可以配置域名
bash
version: '3'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://10.168.1.17'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
1.2 运行
bash
docker compose up -d
docker-compose down
docker-compose up
1.3 初始密码
初始账号是 root,查询密码如下:
bash
cat ./config/initial_root_password
2. 推送项目
gitlab创建项目、推送本地项目
pom.xml中有repository参考:
xml
<repositories>
<!--阿里云公共仓库(新版,聚合central等绝大多数依赖)-->
<repository>
<id>aliyun-public</id>
<name>Aliyun Public Repository</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
<!--仅用于获取Spring里程碑/M版本,放在后面,不作为首选-->
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://maven.aliyun.com/repository/spring</url>
</repository>
</repositories>
3. 安装 gitlab-runner
3.1 安装
bash
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt install gitlab-runner
3.2 gitlab配置runner
Create project runner 后会生成一个token:

3.3 注册 runner
将token 写入执行:
bash
sudo gitlab-runner register \
--non-interactive \
--url "http://127.0.0.1/" \
--token "glrt-wDmgMqpd_hAEYI_qcKIYbG86MQpwOjIKdDozCnU6MQ8.01.170s99wt5" \
--executor docker \
--docker-image "eclipse-temurin:17-jdk"
3.4 配置config.toml
bash
sudo vim /etc/gitlab-runner/config.toml
主要配置这四个

刷新数据、重启
bash
sudo systemctl daemon-reload
sudo systemctl restart gitlab-runner
# 查看已注册runner列表
sudo gitlab-runner list
3.5 其他
bash
// 查看状态
sudo systemctl status gitlab-runner
// 实时看 runner 日志
sudo journalctl -u gitlab-runner -f
# 先停掉后台服务
sudo systemctl stop gitlab-runner
# 前台debug运行runner
sudo gitlab-runner --debug run
4. 配置gitlab-ci.yml
项目根目录创建
yml
stages:
- build
- package
variables:
# 镜像名称和标签(根据需求修改)
IMAGE_NAME: "newspringboot"
IMAGE_TAG: "$CI_COMMIT_SHORT_SHA" # 使用 Git 提交哈希作为标签
# 目标仓库地址(示例为 GitLab 内置仓库,私有仓库需替换)
REGISTRY_URL: "crpi-36zy2yrwx1a0bhg8.cn-chengdu.personal.cr.aliyuncs.com/leiming5"
DOCKER_USERNAME: "leiming5"
DOCKER_REGISTRY: "crpi-36zy2yrwx1a0bhg8.cn-chengdu.personal.cr.aliyuncs.com"
# 缓存 Maven 依赖加速构建
cache:
paths:
- .m2/repository
# 阶段 1:Maven 打包和测试
build:
tags: ["打包生成镜像"] # 必须和网页Runner标签完全一致,中文、符号、空格不能有差别
stage: build
image: maven:3.9.9-eclipse-temurin-17
script:
- mvn package -DskipTests
artifacts:
paths:
- target/*.jar
rules:
- if: $CI_COMMIT_BRANCH == "main"
# 阶段 2:构建和推送 Docker 镜像
docker-build:
stage: package
# image: docker:20.10
# services:
# - docker:20.10-dind # 启用 Docker-in-Docker
script:
# 1. 登录镜像仓库(支持 GitLab 内置仓库或第三方仓库)
- echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin "$DOCKER_REGISTRY"
# 2. 构建镜像(使用多阶段 Dockerfile)
- docker build -t "$REGISTRY_URL/$IMAGE_NAME:$IMAGE_TAG" .
# 3. 推送镜像
- docker push "$REGISTRY_URL/$IMAGE_NAME:$IMAGE_TAG"
# 可选:额外推送 latest 标签
- docker tag "$REGISTRY_URL/$IMAGE_NAME:$IMAGE_TAG" "$REGISTRY_URL/$IMAGE_NAME:$CI_COMMIT_BRANCH"
- docker push "$REGISTRY_URL/$IMAGE_NAME:$CI_COMMIT_BRANCH"
# 仅 main 分支或标签触发
rules:
- if: $CI_COMMIT_BRANCH == "main"
5. 配置 Dockerfile
项目根目录创建
bash
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY target/*.jar new-spring-boot.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "new-spring-boot.jar"]
最后提交代码,流程就会运行。
6. CD相关
后续可以参考: