自建Gitlab和Gitlab runner并推送镜像到Harbor

1. 创建虚拟机

整体规划如下

1.1 创建3台虚拟机

系统版本Centos7.9

设置IP分别为 192.168.200.201192.168.200.202192.168.200.203

1.2 安装docker

3台虚拟机都安装docker,参考文章 安装docker

1.3 修改daemon.json

修改 /etc/docker/daemon.json 文件,没有就创建一个

javascript 复制代码
{
	"insecure-registries": ["192.168.200.203"]
}

重启docker服务

bash 复制代码
systemctl daemon-reload
systemctl restart docker

2. 创建Gitlab

在 IP 201 的机器上

2.1 创建docker-compose

创建 /app/gitlab/docker-compose.yml 文件

复制代码
version: '3.6'
services:
  gitlab:
    image: registry.cn-beijing.aliyuncs.com/webdq-public/gitlab-ce:17.0.0-ce.0
    container_name: gitlab
    restart: always
    hostname: '192.168.200.201'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.200.201'
        gitlab_rails['gitlab_shell_ssh_port'] = 19922
    ports:
      - '80:80'
      - '443:443'
      - '19922:22'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
    shm_size: '256m'

2.2 启动容器

bash 复制代码
cd /app/gitlab
docker compose up -d

获取初始密码

bash 复制代码
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

账号root,登录后修改密码

修改中文语言

2.3 设置CICD

创建实例 runner

设置标签shared,创建runner

记录注册runner的命令等下备用

3. 创建Gitlab runner

在 IP 202 的机器上

安装 wget

bash 复制代码
yum install wget -y

3.1 安装 jdk21

bash 复制代码
cd /usr/local
wget https://download.bell-sw.com/java/21.0.4+9/bellsoft-jdk21.0.4+9-linux-amd64.tar.gz
tar -xzvf bellsoft-jdk21.0.4+9-linux-amd64.tar.gz
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jdk-21.0.4
export PATH=\$JAVA_HOME/bin:\$PATH
EOF

source /etc/profile
java -version

3.2 安装maven

bash 复制代码
cd /usr/local
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
tar -xzvf apache-maven-3.8.8-bin.tar.gz
cat >> /etc/profile << EOF
export M2_HOME=/usr/local/apache-maven-3.8.8
export PATH=\$M2_HOME/bin:\$PATH
EOF

source /etc/profile
mvn -v

3.3 安装gitlab runner

bash 复制代码
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo yum install -y gitlab-runner-17.0.0

3.4 修改runner

默认gitllab-runner用户权限低,更改成root用户

卸载runner默认用户

bash 复制代码
sudo gitlab-runner uninstall

注册runner用户为root

bash 复制代码
sudo gitlab-runner install --user root --working-directory /home/gitlab-runner

重启runner服务

bash 复制代码
systemctl restart gitlab-runner
systemctl enable gitlab-runner

查看runner进程

bash 复制代码
ps aux|grep gitlab-runner

3.5 注册runner

把刚才创建的runner注册命令执行

bash 复制代码
gitlab-runner register --url http://192.168.200.201 --token glrt-SGdRYm2_tJEu523ANyep

url 回车

name 回车

executor 输入 shell

注册成功后在gitlab中可以看到在线状态

4. 创建Harbor

在 IP 203 的机器上

安装wget

bash 复制代码
yum install wget -y

4.1 安装go

bash 复制代码
cd /usr/local
wget https://go.dev/dl/go1.22.6.linux-amd64.tar.gz
tar -xzvf go1.22.6.linux-amd64.tar.gz
cat >> /etc/profile << EOF
export PATH=/usr/local/go/bin:\$PATH
EOF

source /etc/profile
go version

4.2 安装harbor

4.2.1 创建 /app 文件夹
4.2.2 上传harbor离线包

https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-offline-installer-v2.10.3.tgz

4.2.3 解压压缩包
bash 复制代码
cd /app
tar -xzvf harbor-offline-installer-v2.10.3.tgz
4.2.4 复制配置文件
bash 复制代码
cd /app/harbor
cp harbor.yml.tmpl harbor.yml
4.2.5 修改配置文件

修改hostname为 192.168.200.203

注释https和证书

4.2.6 安装harbor
bash 复制代码
cd /app/harbor
bash ./install.sh

harbor启动成功后,在 IP 202 的机器上登录docker账号

5. 上传项目代码

5.1 创建仓库

5.2 推送代码到仓库

.gitlab-ci.yml 是gitlab ci的配置文件

在stages中主要分为 build 编译项目,build-image 编译镜像,push-image 推送镜像3个部分

hello-world代码包

5.3 创建tag标签

触发流水线开始构建

构建成功

相关推荐
梦想的颜色10 小时前
【Docker部署插件】:使用 Docker 部署生产级 Kafka 完整版教程
安全·docker·中间件·kafka·消息队列·docker-compose·后端开发
↘"LYong10 小时前
旧版 CentOS 安装 Docker 完整指南(附国内镜像加速)
linux·运维·docker
满意的星月12 小时前
基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
docker·微服务·架构
sukioe14 小时前
【无标题】
后端·docker·centos
HAPPY酷16 小时前
【ROS2】VMware + Docker 运行 Gazebo 崩溃与“假死”排查实录
qt·docker·容器
想你依然心痛20 小时前
嵌入式容器:Docker与BalenaOS在边缘设备上的实践——容器运行时与OTA
运维·docker·容器
不瘦80斤不改名20 小时前
HalfCart:基于LBS的1\.5km本地拼单系统全栈实践与踩坑复盘
python·docker·typescript·pycharm
Tronlong创龙1 天前
SBC-TL3588 单板机 / EPC-TL3588 工控机 Docker 开发手册(二)
docker·开发板·嵌入式开发·硬件开发·工业控制
AI服务老曹1 天前
视觉算法模型管理完整流程:多版本上线、灰度发布与回滚的落地实践
人工智能·docker·音视频
辉的技术笔记2 天前
拆解 Dify 的 Celery:15 个队列都在干什么
docker