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

news2024/9/22 7:28:30

1. 创建虚拟机

整体规划如下

1.1 创建3台虚拟机

系统版本Centos7.9

设置IP分别为 192.168.200.201 、192.168.200.202192.168.200.203

1.2 安装docker

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

1.3 修改daemon.json

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

{
	"insecure-registries": ["192.168.200.203"]
}

重启docker服务

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 启动容器 

cd /app/gitlab
docker compose up -d

获取初始密码

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

yum install wget -y

3.1 安装 jdk21

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

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

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默认用户

sudo gitlab-runner uninstall

注册runner用户为root

sudo gitlab-runner install --user root --working-directory /home/gitlab-runner

重启runner服务

systemctl restart gitlab-runner
systemctl enable gitlab-runner

查看runner进程

ps aux|grep gitlab-runner

3.5 注册runner

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

gitlab-runner register --url http://192.168.200.201 --token glrt-SGdRYm2_tJEu523ANyep

url 回车

name 回车

executor 输入 shell

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

4. 创建Harbor

在 IP 203 的机器上

安装wget

yum install wget -y

4.1 安装go

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 解压压缩包
cd /app
tar -xzvf harbor-offline-installer-v2.10.3.tgz
4.2.4 复制配置文件
cd /app/harbor
cp harbor.yml.tmpl harbor.yml
4.2.5 修改配置文件

修改hostname为 192.168.200.203

注释https和证书

4.2.6 安装harbor
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标签

触发流水线开始构建

构建成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数字信号处理】第3章 离散时间信号和系统的频域分析,系列的离散时间傅里叶变换,性质,定理(清华大学)

目录 第3章 离散时间信号和系统的 引言 信号和系统的分析方法有两种 模拟信号与系统的时域分析 模拟信号与系统的频域分析 离散时间信号和系统 历史回顾 3.1.1 序列的离散时间傅里叶变换 3.1.2 序列的离散时间傅里叶变换的性质 1. DTFT的周期性 2. 线性 3. 时移(位移…

守护网站心脏:HAProxy负载均衡技术详解(全网最详细)

守护网站心脏&#xff1a;HAProxy负载均衡技术详解 文章目录 **守护网站心脏&#xff1a;HAProxy负载均衡技术详解**haproxy介绍特点功能配置结论 haproxy负载均衡测试haproxy主机操作日志重定向操作 webserver1主机操作webserver2主机操作 haporxy相关配置测试backup参数测速h…

Petalinux 使用相关问题

文章目录 Petalinux 交叉编译环境Petalinux 以太网相关Petalinux 应用层写寄存器操作 Petalinux 交叉编译环境 方法一&#xff1a; 注意&#xff1a;该方法安装时会 和 Petalinux的 gcc-multilib 冲突&#xff1b; sudo apt install cmake sudo apt-get install gcc-arm-lin…

网络协议 十一 ARP,RARP,icmp,websocket,webservice,HTTPDNS,FTP,邮件相关的协议, SMTP,POP,IMAP

ARP 已知IP 求 MAC 的过程 RARP 已知MAC 求 IP 的过程&#xff0c;已被DHCP取代 ICMP websocket 协议&#xff0c;html5中提出的前端使用协议 webservice 技术&#xff0c;已过时 HTTPDNS 之前我们要获得 某一个域名的 IP &#xff0c;要通过DNS协议 去 运营商的ISP 查询&…

Java | Leetcode Java题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; class Solution {public int countRangeSum(int[] nums, int lower, int upper) {long s 0;long[] sum new long[nums.length 1];for (int i 0; i < nums.length; i) {s nums[i];sum[i 1] s;}return countRangeSumRecursive(sum,…

我对意义产生了怀疑!当今社会,一个最基本的因果律(深度好文)——早读(逆天打工人爬取热门微信文章解读)

有时候热搜也是一种预示 引言Python 代码第一篇 洞见 当今社会&#xff0c;一个最基本的因果律&#xff08;深度好文&#xff09;第二篇 空仓结尾 引言 今天真的晚 不过今天会更新两篇 破事真的多 有些人真的很神奇 在你做的时候不断来干预你 然后做得一般的时候就说 你的计划…

计算机图形学 | 动画模拟

动画模拟 布料模拟 质点弹簧系统&#xff1a; 红色部分很弱地阻挡对折 Steep connection FEM:有限元方法 粒子系统 粒子系统本质上就是在定义个体和群体的关系。 动画帧率 VR游戏要不晕需要达到90fps Forward Kinematics Inverse Kinematics 只告诉末端p点&#xff0c;中间…

Simple RPC - 03 借助Netty实现异步网络通信

文章目录 Pre设计技术点1. 接口设计2. 命令类设计3. 异步通信4. 异常处理与超时机制5. 背压机制6. 响应处理 Code封装通信 Transport 接口抽象数据的请求和响应 Command关于版本号 Transport 接口实现类 NettyTransport兜底的超时机制 背压机制 实现 总结 Pre Simple RPC - 01…

ComfyUI中,“鼠标忽然不太好用了”的解决方案---新版本偶遇bug

&#x1f387;背景 这是个很奇怪的界面bug。 最近几天感觉Comfyui的界面操作不好用了&#xff0c;就是鼠标移动到一个节点上&#xff0c;如果想要缩放&#xff0c;按道理应该是在1的位置&#xff0c;但是需要移动到2的位置才能触发缩放的操作。 节点连线的时候&#xff0c;线…

图纸变更频繁,版本管理的高效方法

在工程设计领域&#xff0c;图纸作为设计与制造的核心载体&#xff0c;其变更频繁性已成为常态。如何高效地管理这些不断变化的图纸版本&#xff0c;确保设计信息的准确性和一致性&#xff0c;是每个设计团队面临的重要挑战。本文将探讨几种高效管理图纸版本的方法&#xff0c;…

工作绩效品谷系统2024(代码+论文+ppt)

工作绩效品谷系统2024((代码论文ppt),编号:sp009 代码经过修正,确保可以运行,下载地址在文末 技术栈: springbottvuemysql 展示: 下载地址: https://download.csdn.net/download/hhtt19820919/89639099 备注: 专业承接各种程序java,c,c,python,cuda,AI 专业承接论文指导…

haproxy详解

目录 一、haproxy简介 二、什么是负载均衡 2.1 负载均衡的类型 2.2.1 硬件 2.2.2 四层负载均衡 2.2.3 七层负载均衡 2.2.4 四层和七层的区别 三、haproxy的安装及服务信息 3.1 示例的环境部署&#xff1a; 3.2 haproxy的基本配置信息 3.2.1 global 配置参数介绍 3…

Java实战一 手动创建springboot3+mybatis+mysql工程

idea手动创建sb工程&#xff0c;选择好配置&#xff0c;使用jdk17 main下补全目录resource resource下补全application.yml 引入依赖 &#xff0c;写入父工程 刷新maven 补全配置 创建所需目录 创建User实体类 创建启动类BootDemoApplication 运行启动类成功看到运行在8080端…

java-activiti笔记

版本&#xff1a;activiti7 <dependency><groupId>org.activiti</groupId><artifactId>activiti-json-converter</artifactId><version>7.0.0.Beta2</version><exclusions><exclusion><groupId>org.mybatis</g…

2025年第五届国际计算机通信与信息系统会议(CCCIS 2025) 即将召开!

2025第五届计算机通信与信息系统国际会议&#xff08;CCCIS 2025&#xff09;将于2025年2月28日至3月2日在中国香港举行&#xff0c;本次会议由香港珠海学院主办&#xff0c;新加坡传感器与系统学会支持。CCCIS主要面向通信软件和网络领域的研究人员。它为这些领域研究人员之间…

springboot牙科就诊管理系统--论文源码调试讲解

2 相关技术 2.1 MySQL数据库 本设计用到的数据库就是MySQL数据库[3]&#xff0c;之所以用到这个数据库的原因很多。首先&#xff0c;从满足功能需求上面来讲&#xff0c;MySQL是符合的&#xff1b;其次&#xff0c;从学习程度来讲&#xff0c;MySQL相比其他数据库不管是从安装…

uniapp 中 web-view 向 App 传递消息

web-view向App传递消息 引入官方库 在web项目中引入官方库 uni.webview.1.5.4.js &#xff0c;可以从uniapp官方示例库中下载&#xff0c;下载后放入web项目目录下即可&#xff0c;本文放在js文件夹中&#xff0c;然后在web项目页面中引入。 官网对于uni-app使用web-view的介…

VideoPlayer插件的用法

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容&#xff0c;本章回中将介绍如何播放视频.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…

QT线程————

当你创建一个继承自 QObject 的类&#xff0c;并希望将其与 QThread 关联时&#xff0c;不能将这个类的实例直接作为 QThread 的父对象。这是因 为 QThread 的设计目的是运行一个独立的线程&#xff0c;而不是成为另一个对象的子对象。

Java面试八股之什么是STOMP协议

什么是STOMP协议 STOMP&#xff08;Simple Text Oriented Messaging Protocol&#xff09;是一种为消息队列和事件驱动架构设计的轻量级协议&#xff0c;主要用于在消息中间件之间进行消息交换。它的设计原则是简单、跨平台和易于实现&#xff0c;这使得STOMP成为许多实时应用…