gitlab私有化跑CICD

注意:很吃内存和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相关

后续可以参考:

后端CD

前端CD

相关推荐
成为你的宁宁1 小时前
【Gitlab测试项目】
gitlab·devops
_可乐无糖2 天前
GitLab CI 脚本之 CI_COMMIT_AUTHOR
ci/cd·gitlab
_可乐无糖3 天前
GitLab CI 脚本之 dependencies 和 needs
ci/cd·gitlab
Fan_5584 天前
4核8G云服务器部署GitLab内存耗尽解决方案
gitlab
洋就在江州4 天前
gitlab-cicd 离线集成——springboot-cicd (非docker形式,shell形式)
java·spring boot·后端·ci/cd·gitlab·gitlab-runner
成为你的宁宁5 天前
【Ubuntu 18.04安装Gitlab】
ubuntu·gitlab
长春的KAKA5 天前
GitLab 项目页面报 500 错误的完整修复记录:PostgreSQL 数据库损坏、统计表缺失及数据库迁移
数据库·postgresql·gitlab
蓝胖的四次元口袋5 天前
GitLab知识梳理
gitlab
极小狐14 天前
CI 作业里 kubectl 连不上集群?用 Kubernetes Agent 打通部署链路的 7 个步骤
ci/cd·kubernetes·gitlab·devops·k8s部署