自建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标签

触发流水线开始构建

构建成功

相关推荐
李菠菜2 小时前
Kubernetes上通过Helm部署高可用Redis集群
docker·容器·kubernetes
李菠菜2 小时前
修改KubeSphere外网访问端口
docker·容器·kubernetes
福大大架构师每日一题2 小时前
docker v28.1.1 正式发布!修复关键Bug,网络与安全性再升级
网络·docker·bug
一个小坑货3 小时前
Docker 部署 PostgreSQL 数据库
数据库·docker·postgresql
残轩3 小时前
Win10 家庭版 Docker 环境搭建详解(基于 WSL2)
前端·后端·docker
David爱编程4 小时前
90%工程师都踩过的坑:K8s三种探针最佳组合方案全解析
docker·云原生·kubernetes
davysiao4 小时前
基于 CentOS 的 Docker Swarm 集群管理实战指南
linux·docker·centos
极小狐4 小时前
极狐GitLab Git LFS 速率限制如何设置?
运维·git·ssh·gitlab·github
极小狐4 小时前
如何解决极狐GitLab 合并冲突?
人工智能·git·机器学习·gitlab
Archie_IT5 小时前
Puter部署指南:基于Docker的多功能个人云平台掌控自己的数据
运维·docker·容器