“从零到一:使用GitLab和Jenkins实现自动化CI/CD流水线”

GitLab仓库

简单的来说就是开发人员提交代码的仓库,用于团队开发,GitLab 上托管的仓库通常作为远程仓库使用,开发人员可以将本地的 Git 仓库推送到
GitLab 上,也可以从 GitLab 克隆仓库到本地进行开发。

Jenkins

Jenkins 是一个开源的自动化服务器,广泛用于持续集成(Continuous Integration,
CI)和持续交付(Continuous Delivery,
CD)流程中。它帮助开发者自动化软件开发周期中的不同阶段,如构建、测试和部署应用程序。通过
Jenkins,团队可以更快地发现并解决代码中的问题,提高软件的质量和效率。

部署环境介绍:
Centos 8.2
gitlab-ce-18.1.5-ce.0.el8.x86_64
jenkins-2.512

一、部署GitLab

下载地址:https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/8/gitlab-ce-18.1.5-ce.0.el8.x86_64.rpm

#安装git
yum -y install git#安装gitlab
wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/8/gitlab-ce-18.1.5-ce.0.el8.x86_64.rpm/download.rpm
yum -y install download.rpm ##修改配置文件 external_url
vim /etc/gitlab/gitlab.rb
external_url 'http://172.16.33.100'#加载配置文件
gitlab-ctl reconfigure
最后看到gitlab Reconfigured!代表配置成功#启动GitLab
gitlab-ctl start
ok: run: alertmanager: (pid 6878) 124s
ok: run: gitaly: (pid 6831) 128s
ok: run: gitlab-exporter: (pid 6847) 127s
ok: run: gitlab-kas: (pid 6247) 301s
ok: run: gitlab-workhorse: (pid 6800) 129s
ok: run: logrotate: (pid 5954) 336s
ok: run: nginx: (pid 6819) 128s
ok: run: node-exporter: (pid 6840) 128s
ok: run: postgres-exporter: (pid 6890) 123s
ok: run: postgresql: (pid 6082) 307s
ok: run: prometheus: (pid 6859) 126s
ok: run: puma: (pid 6313) 209s
ok: run: redis: (pid 5989) 330s
ok: run: redis-exporter: (pid 6850) 126s
ok: run: sidekiq: (pid 6330) 203s#查看状态
gitlab-ctl status#默认账户 root 密码去配置文件找
cat /etc/gitlab/initial_root_password |grep Password
#          2. Password hasn't been changed manually, either via UI or via command line.
Password: BsYT7SMWB8l7u9saBsvFsWmS4cnL9bH8fXcmW0R8Q7A=

可以登录图形化界面修改为中文并修改密码
http://172.16.33.100/
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
新建项目
在这里插入图片描述

二、部署Jenkins

1、安装JDK17

wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz
mkdir /usr/java
tar -xf jdk-17.0.12_linux-x64_bin.tar.gz 
mv jdk-17.0.12 /usr/java#配置环境变量
vim /etc/profile 
export JAVA_HOME=/usr/java/jdk-17.0.12
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile
java --version
java 17.0.12 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)

2、安装jenkins

wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.512-1.1.noarch.rpm
yum install -y jenkins-2.512-1.1.noarch.rpm -y#安装字体包,否则会报错Fontconfig head is null
yum install -y fontconfig dejavu-sans-fonts
fc-cache -f -v#在启动配置文件配置jdk地址,由于部署gitlab和jenkins是同一台服务器,已使用了8080端口,jenkins更改为8081
vim /usr/lib/systemd/system/jenkins.service 
Environment="JAVA_HOME=/usr/java/jdk-17.0.12"
Environment="PATH$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="JENKINS_PORT=8081"#启动
systemctl start jenkins
#开机自启
systemctl enable jenkins#cat /var/lib/jenkins/secrets/initialAdminPassword
92422d179ede45f1a47398fedf99b444

浏览器访问http://172.16.33.100:8081/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,Jenkins安装完成!

三、使用Jenkins构建项目

在 Jenkins 上生成 非对称密钥,Jenkins 存储私钥,GitLab 存储公钥。 公钥解密,私钥加密 的方式实现 权限校验 功能。
当 GitLab 能成功解密就证明我们有权限访问数据, 然后就能成功拉取代码。 这里以 GitLab 作为列举说明,实际上
GitHub、Gitee、Gitea 等实现 CICD 过程差不多,这里就不过多赘述。

为了模拟真实的前后端项目构建,所以这里采用将 若依框架 进行学习,将代码拷贝到对应的仓库中

我们这里模拟企业开发的代码不开源状态,所以这里创建的是私密仓库,然后配置 凭证 拉取代码

服务器说明
gitlab+jenkins:172.16.33.100
运行project:172.16.33.101

1、创建项目仓库

#克隆项目
git clone https://gitee.com/y_project/RuoYi-Vue.git#移除现有的远程 URL
cd RuoYi-Vue/
git remote remove origin#添加 GitLab 远程仓库 URL
git remote set-url origin http://root:nantianyw888@172.16.33.100/root/myproject#推送到 GitLab
git push -u origin master

在这里插入图片描述

2、安装Maven

这个是用于构建项目使用的,如果项目采用的的是 gradle,则需要安装 gradle

#下载 maven 压缩包并解压
wget -P /usr/local https://dlcdn.apache.org/maven/maven-3/3.8.9/binaries/apache-maven-3.8.9-bin.tar.gz --no-check-certificate
cd /usr/local/
tar -xf apache-maven-3.8.9-bin.tar.gz #配置阿里镜像,注释掉原先的仓库,使用阿里仓库
vim /usr/local/apache-maven-3.8.9/conf/settings.xml<!--<mirror><id>maven-default-http-blocker</id><mirrorOf>external:http:*</mirrorOf><name>Pseudo repository to mirror external repositories initially using HTTP.</name><url>http://0.0.0.0/</url><blocked>true</blocked></mirror></mirrors>--><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>#查看 maven 版本
/usr/local/apache-maven-3.8.9/bin/mvn -v
Apache Maven 3.8.9 (e26b057cc3a17459358ef53e4d0e2e381bf08a1c)
Maven home: /usr/local/apache-maven-3.8.9
Java version: 17.0.12, vendor: Oracle Corporation, runtime: /usr/java/jdk-17.0.12
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-193.el8.x86_64", arch: "amd64", family: "unix"

3、配置Git

git  --version
git version 2.27.0#查看git位置
which git
/usr/bin/git#创建密钥
# 设置名称
git config --global user.name "Kamming"
# 设置邮箱
git config --global user.emial "Kamming@qq.com"
# 生成密钥
ssh-keygen -t rsa -b 4096 -C "Kamming@qq.com"#查看公钥,将公钥 id_rsa.pub 里面的内容拷贝到 GitLab 的 sshKey 里面
cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCjI6pPnkq/05yipiasATfyjpkL7UsVS+WEyXyDPSkl2GwUD33pjhRPMsOOR5+Tfn75g9xl9ViY+xc8RQIWmZV2cHD6GHSP0OGhcKuQLG9s6hJ5aZwkWIqPMuaBgdmlfvesiTlKwTDX7+yEch1l3mkP8s0Jz4iK2ETOgwf/A/o4ou6znosuYGaUdBsYiEY9POPzUVDu25EDUUHSnhgMQfrEyqMW2L8RhhpIUAc6AonKh0ZnOVyG1gbXbyBlNLY/Hg1muDLPNuJBvWdIouxwxGFpUtdanbj4PFGWZR8YS2K2voZMLuDhumeR/yXn5O4wNZVDcHY03hVToNXgydOJ8+DUNr/HzQM5fXAd4LeU/PS8WAchu16yWdaLIqRKZyvjVRaiwZ/jHJX6upcIh5a7N+J5R0vp9lj1KTcuSsKtbkyOLWm7ixToDzky2ImtOvK5pyFwxHYmqSneATTUFra/pA7ltU/qiUYHcJXjwXJDAaO3pChGN/Ea4VN/XSnPLecFqsn9is8TMJLBZDqj8WRaSljCTvFRjcRwQSI5tj3F5czUEz3lxD0ryGuGsP0lWJeGwW4VT94Gvdp1FsW+6uohVWkitcrZ3XbCNY0DprKt0pg7Q+Z+Tc3pKBE9nG8ZriqOaYCXqy4pCh9lz2DLEXOvn/YH7Sq1Cku9H16dHcAwNslAlw== Kamming@qq.com

在这里插入图片描述
在这里插入图片描述

4、配置Jenkins凭证

5、安装相应插件并配置

6、构建项目[非容器方式]

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

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

相关文章

3D开发工具HOOPS助力造船业数字化转型,打造更高效、更智能的船舶设计与协作!

造船业是一个高度复杂且竞争激烈的行业&#xff0c;涵盖船体设计、结构分析、生产制造到运维管理的完整生命周期。面对庞大的CAD数据、多方协作的复杂流程以及数字化转型的迫切需求&#xff0c;传统工具往往显得力不从心。 Tech Soft 3D的HOOPS SDK系列&#xff0c;正以其卓越…

Python调用MCP:无需重构,快速为现有应用注入AI与外部服务能力!

文章目录 📖 介绍 📖 🏡 演示环境 🏡 ✨ MCP核心概念:AI世界的“USB-C” ✨ 🛠️ MCP安装与基础使用 🛠️ 🚀 安装模块 📝 创建第一个MCP服务端 📞 Python中MCP客户端的调用方案 📞 📖 概述 📑 深度解析 🔖 参数详情 🔖 常用方法 🚀 不同传输协…

【链表】3.重排链表(medium)

重排链表&#xff08;medium&#xff09;题⽬描述&#xff1a;解法&#xff1a;算法思路&#xff1a;算法代码&#xff1a;题⽬链接&#xff1a;143. 重排链表 题⽬描述&#xff1a; 给定⼀个单链表 L 的头节点 head &#xff0c;单链表 L 表⽰为&#xff1a; L(0) → L(1) →…

蜜罐平台-Hfish部署

Hfish简介&#xff1a; HFish是一款社区型免费蜜罐&#xff0c;侧重企业安全场景&#xff0c;从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发&#xff0c;为用户提供可独立操作且实用的功能&#xff0c;通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁…

docker-容器

安装docker yum install -y docker查看版本 docker version安装docker-compose yum install -y docker-compose查看版本 docker-compose --version基础镜像构建 tar --exclude/var/lib -cvf euler.tar /etc /boot /var /tmp /usr /mnt /bin /sbin /lib /lib64将JDK等需要的中间…

ESP32开发:ubuntu22.04 下esp-idf开发环境搭建

ubuntu22.04 下 esp-idf 开发环境搭建1.安装编译 ESP-IDF 需要以下软件包2.获取 ESP-IDF3.设置工具下载工具备选方案4.设置环境变量5.编译工程并烧录配置工程编译工程烧录固件到设备6.其他指令监视输出擦除 flash清除编译1.安装编译 ESP-IDF 需要以下软件包 编译 ESP-IDF 需要…

汇编基础2

1.函数调用fun0mov r4, #100bx lrget_MaxNumcmp r0, r1stmfd sp!, {r0-r12, lr} //入栈bl fun0 //调用fun0函数ldmfd sp!, {r0-r12, lr} //出栈movge r3, r0movlt r3, r1bx lr mainldr sp, 0x40001000mov r0, #100mov r1, #200mov r2, #100stmfd sp!,…

20250909的学习笔记

HTML 基础笔记1. HTML 基本格式<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>中文测试</title> </head> <body>这里是测试body测试内容。 </body> </html>2. HTML 标签常用标签 - <h1…

Linux 安全加固;Windows 安全设置

一、Linux 安全加固1. 账户与权限管理最小权限原则禁用 root 远程登录&#xff1a;修改 /etc/ssh/sshd_config&#xff0c;设置 PermitRootLogin no。使用 sudo 替代直接 root 操作&#xff0c;并通过 /etc/sudoers 限制命令范围&#xff08;如仅允许 apt 和 systemctl&#xf…

条码打印检测一体机是什么?

在工业4.0和智能制造的大背景下&#xff0c;数据的准确性和实时性是构建高效追溯系统。条码/二维码作为物理世界与数字世界连接的桥梁&#xff0c;其打印质量直接决定了数据链路的可靠性。传统“打印-人工抽检/离线全检”的模式存在流程割裂、效率低下、无法100%覆盖的弊端&…

Javaweb - 14.6 - Vue3 数据交互 Axios

目录 Promise 普通函数和回调函数 Promise 简介 Promise 基本用法 async 和 await 的使用 Axios 介绍 Axios 入门案例 Axios 的 get 和 post 方法 Axios 拦截器 完&#xff01; Promise 普通函数和回调函数 普通函数&#xff1a;正常调用的函数&#xff0c;一般函数…

怎么选适合企业的RPA财务机器人?

对于大多数财务人来说&#xff0c;“月初月末就是噩梦”已经成了常态&#xff1a;一边要面对堆积如山的单据和报表&#xff0c;一边还要应付领导不断加码的工作&#xff0c;常常忙到深夜&#xff0c;却总觉得自己陷在重复事务中难有成长。其实&#xff0c;这并不是个体问题&…

html css js网页制作成品——HTML+CSS无穷网页设计(5页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML

AUTOSAR进阶图解==>AUTOSAR_SWS_PDURouter

AUTOSAR PDU Router详解文档 AUTOSAR通信架构中的核心路由模块目录 1. 概述2. PDU Router模块架构3. PDU Router配置模型4. PDU Router路由流程5. PDU Router状态机6. 总结 1. 概述 PDU Router模块是AUTOSAR通信架构中的核心组件&#xff0c;负责在AUTOSAR软件组件之间路由I-…

RHEL7.9、RHEL9.3——源码安装MySQL

目录 一、环境部署 1. 克隆rhel7.9虚拟机 二、源码安装MySQL 1. 准备工作 2. 源码部署mysql8.0.40 1&#xff09;安装编译mysql所需软件包 2&#xff09;编译安装mysql8.0.40 3&#xff09;生成启动脚本 一、环境部署 1. 克隆rhel7.9虚拟机 改名为 “RHEL79_mysql_master” 并…

解决Win11 安全中心删掉存在隐患的工具

打开设置&#xff0c; 找到Windows安全中心&#xff0c;找到病毒和威胁防护&#xff0c;选择排除项&#xff0c;点 添加或删除排除项添加文件&#xff0c;文件夹&#xff0c;工具按照自己需求选择。或&#xff0c;删除文件注意&#xff1a;隐患的工具或者文件安装或者用完&…

通过URI Scheme实现从Web网页上打开本地C++应用程序(以腾讯会议为例,附完整实现源码)

目录 1、需求描述 2、选择URI Scheme实现 3、何为URI Scheme&#xff1f; 4、将自定义的URL Scheme信息写入注册表的C源码实现 5、如何实现最开始的3种需求 6、后续需要考虑的细节问题 之前陆续收到一些从Web页面上启动我们C客户端软件的需求&#xff0c;希望我们能提供一…

机器学习02——模型评估与选择(过拟合与欠拟合、K折交叉验证、均方误差、混淆矩阵)

上一章&#xff1a;机器学习01——机器学习概述 下一章&#xff1a;机器学习03——线性模型 机器学习实战项目&#xff1a;【从 0 到 1 落地】机器学习实操项目目录&#xff1a;覆盖入门到进阶&#xff0c;大学生就业 / 竞赛必备 文章目录一、经验误差与过拟合&#xff08;一&a…

基于 Django 与 Bootstrap 构建的现代化设备管理平台

整体步骤概览 创建项目和应用设计模型&#xff08;Model&#xff09; - 定义设备的数据结构配置用户认证&#xff08;Auth&#xff09; - 使用 Django 自带的强大用户系统创建视图&#xff08;View&#xff09; - 处理业务逻辑&#xff1a;登录、列表、增删改查编写模板&#x…

微软依旧稳定发挥,Windows 最新更新性能「开倒车」

微软在前不久为Release Preview测试用户推送了最新Windows11 25H2版本。按照惯例&#xff0c;正式版将于9月或者10月与咱们见面。虽然看起来是个跨版本的大更新&#xff0c;但是更新方式将服务堆栈更新&#xff08;SSU&#xff09;与最新累积更新&#xff08;LCU&#xff09;。…