自建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 Compose创建镜像服务
linux·运维·docker·容器·镜像
不会飞的小龙人10 小时前
Docker基础安装与使用
linux·运维·docker·容器
张3蜂10 小时前
docker Ubuntu实战
数据库·ubuntu·docker
染诗15 小时前
docker部署flask项目后,请求时总是报拒绝连接错误
docker·容器·flask
张3蜂16 小时前
docker 部署.netcore应用优势在什么地方?
docker·容器·.netcore
心惠天意19 小时前
docker-compose篇---创建jupyter并可用sudo的创建方式
docker·jupyter·容器
huaweichenai19 小时前
windows下修改docker的镜像存储地址
运维·docker·容器
菠萝炒饭pineapple-boss20 小时前
Dockerfile另一种使用普通用户启动的方式
linux·docker·dockerfile
前端 贾公子21 小时前
速通Docker === 网络
docker
昵称难产中1 天前
浅谈云计算21 | Docker容器技术
docker·容器·云计算