当前位置: 首页 > news >正文

集群——GitLabJenkins部署

一、GitLab和Jenkins简介

1.GitLab

  • GitLab 是一个基于 Git 的平台,提供了 Git 仓库管理、代码版本控制、持续集成/持续交付、监控、问题追踪等多种功能。它可以帮助开发团队更好地管理代码和自动化软件开发的流程
  • GitLab 是一个“DevOps”工具,强调开发、测试、运维的统一管理,并且支持自托管和云托管两种方式。

2.Jenkins

  • Jenkins 是一个开源的自动化服务器,广泛用于持续集成和持续交付。
  • Jenkins 是一个独立的工具,可以与各种版本控制系统(如 Git)以及其他开发工具集成,适用于各种规模的项目

3.项目流程图

二、实验部署

——服务器规划

  •     gitlab:192.168.66.130
  •     jenkins:192.168.66.140
  •     web server:192.168.66.150

——实验流程图

1.GitLab部署流程

注:GitLab至少需要6G内存,保险起见可以用8G内存,可以联网

(1)创建网络源

[root@localhost yum.repos.d]# ls
bik.d  rocky-addons.repo  rocky-devel.repo  rocky-extras.repo  rocky.repo
[root@localhost yum.repos.d]# echo "[gitlab-ce]
name=GitLab CE
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/9/\$basearch
enabled=1
gpgcheck=0" > /etc/yum.repos.d/gitlab-ce.repo
[root@localhost yum.repos.d]# dnf clean all
17 个文件已删除
[root@localhost yum.repos.d]# dnf makecache

(2)安装软件包

[root@localhost ~]# dnf install -y gitlab-ce

(3)运行配置脚本

[root@localhost ~]# gitlab-ctl reconfigure

注:这部分记录告诉我们用户是root,且不推荐暴露密码

(4)检查GitLab状态

[root@localhost ~]# gitlab-ctl status
run: alertmanager: (pid 14491) 316s; run: log: (pid 14238) 408s
run: gitaly: (pid 14476) 318s; run: log: (pid 13458) 703s
run: gitlab-exporter: (pid 14458) 319s; run: log: (pid 14115) 436s
run: gitlab-kas: (pid 13774) 682s; run: log: (pid 13785) 679s
run: gitlab-workhorse: (pid 14436) 321s; run: log: (pid 13952) 461s
run: logrotate: (pid 13339) 722s; run: log: (pid 13348) 719s
run: nginx: (pid 14443) 320s; run: log: (pid 14010) 453s
run: node-exporter: (pid 14450) 320s; run: log: (pid 14080) 443s
run: postgres-exporter: (pid 14499) 316s; run: log: (pid 14279) 402s
run: postgresql: (pid 13526) 693s; run: log: (pid 13543) 691s
run: prometheus: (pid 14469) 318s; run: log: (pid 14193) 418s
run: puma: (pid 13856) 480s; run: log: (pid 13864) 477s
run: redis: (pid 13388) 711s; run: log: (pid 13400) 708s
run: redis-exporter: (pid 14461) 319s; run: log: (pid 14146) 428s
run: sidekiq: (pid 14317) 353s; run: log: (pid 13896) 468s

注:可以看到当前相关服务都已经启动

(5)修改默认密码

注:密码要足够复杂

[root@localhost ~]# gitlab-rake "gitlab:password:reset"
Enter username: root
Enter password: 
Confirm password: 
Password successfully updated for user with username root.

(6)访问web服务

切换中文

禁止任何人注册账户

2.Jenkins部署流程

注:Jenkins至少需要2G内存,保险起见可以用4G内存

(1)创建网络源

[root@localhost yum.repos.d]# ls
bik.d  rocky-addons.repo  rocky-devel.repo  rocky-extras.repo  rocky.repo
[root@localhost yum.repos.d]# echo "[jenkins]
name=Jenkins
baseurl=http://pkg.jenkins.io/redhat-stable
enabled=1
gpgcheck=0" > /etc/yum.repos.d/jenkins.repo
[root@localhost yum.repos.d]# dnf clean all
17 个文件已删除
[root@localhost yum.repos.d]# dnf makecache

(2)安装软件包

[root@localhost ~]# dnf install -y java-21-openjdk jenkins

(3)启动并启用 Jenkins

[root@localhost ~]# systemctl enable --now jenkins

(4)访问web服务

这里需要解锁密码,在如图所示的目录下查找,然后直接粘贴复制过来就行

[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
1ede4e1c174849108972773fea33b498

还需要安装一些插件,这里我们选择安装推荐的插件就行

然后进入到以下界面,创建管理员用户,但不是第一个,第一个已经有了,就是admin,这个界面也可以用来给admin修改密码,我们这里也改一改admin的密码

查看安装了哪些插件

(5)安装GitLab相关插件

注:安装时勾选下边的安装后自动重启

3.web服务部署流程

(1)安装软件包

[root@localhost ~]# dnf -y install httpd php mariadb-server mariadb

(2)启动运行服务

[root@localhost ~]# systemctl enable --now httpd php-fpm

(3)测试php页面

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# vi index.php<?phpphpinfo();

注:发现可以正常访问

4.组合GitLab与Jenkins

(1)Jenkins生成ssh密钥对

注:在jenkins服务器上使用root身份创建密钥对,使用jenkins机器的root用户分别连接gitlab的git用户和web服务器的root用户,获取对方的公钥文件(不需要连接成功只需要接受公钥即可)

[root@localhost ~]# ssh-keygen -t rsa -b 4096

(2)Jenkins接收公钥

# 接收GitLab服务器公钥
[root@localhost ~]# ssh git@192.168.66.130
The authenticity of host '192.168.66.130 (192.168.66.130)' can't be established.
ED25519 key fingerprint is SHA256:lFu8lHJz4a1cw+hzZY0lwyqWDOSW8ZrwrdoDHRFh3Y4.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes# 接收web服务器公钥
[root@localhost ~]# ssh root@192.168.66.150
The authenticity of host '192.168.66.150 (192.168.66.150)' can't be established.
ED25519 key fingerprint is SHA256:OEylcomPizLLGigJOaQpF3ycqdB2nWdiMwbqQTiIAK0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

(3)复制密钥到Jenkins家目录

注:不管是密钥对还是接收的公钥,都是给Jenkins用户使用的,因此需要将这些文件粘贴复制到Jenkins用户的家目录下的.ssh目录下

[root@localhost ~]# mkdir /var/lib/jenkins/.ssh
[root@localhost ~]# cp /root/.ssh/* /var/lib/jenkins/.ssh
[root@localhost ~]# chown -R jenkins:jenkins /var/lib/jenkins/.ssh
[root@localhost ~]# chmod 700 /var/lib/jenkins/.ssh
[root@localhost ~]# chmod 600 /var/lib/jenkins/.ssh/*

(4)将Jenkins公钥上传 

  • 将jenkins的公钥添加到gitlab的授权密钥中

# Jenkins服务器
[root@localhost ~]# cat /var/lib/jenkins/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDLfzk0h5MJvbOsZmjjzK7mvg7Bs/w3RV95aIw+XioJoNhM57Lvnr15lvdv7vj1jKGtuBbfeyprAs6Ym5yqxB0HCUhegSYQyQc3EuIeuiT2uxEolBGdThe2C+BRdtZCSHLUE/FtZnOOX3Z8J1M1bcsUHKIi9+0d9hh4qR6uckIOmZeu3QdBjAjdi1V1A796oZkVznEoBXCvjGDWtt/bNFZiRj4/FXWDcvr/mKDdHdJcZtb9txO65OHHPNdeGhKy6nXntDxvLpNf3LBtFhG1WXbdOZpc1XQNjBYtO2JeOh6vTBBzIPElRgkJcqhkWYeuTZYPEl7poFEWlt7zFdGEq2m2irlZRmhZi33yj2mHJmvAgonuHmAIZMU5GCW3s4Cfb7yLOMe0dTFnnxDEyzJJ2To18e15HI0JW48oBgEaR26ylhLOLbksTBkW4ISFIXaepVe5CuQuBP914Xgr8mW5UtJ5DduYfdIrVtqtIdR0ES72kGffzK2upqwBlNFNPcsz4Srj3Hdbivr4b0jh3fekyHacrvH0DxoZ7rmLm2nU4YiwBu4NsWFKP43b/iv+uQ4+PcHjCbnqDmwHlPaFPIESBFFVsXF9bYpwOpDmVSzQoakKnIhj0GMj8/7ns8d2awnHX2iKP0axlwW0GXb5sK4DdxZWUv5C9RyMLs48xcp/A0qnhw== root@localhost.localdomain

上传之后,在GitLab服务器端可以查看到上传的公钥

  • 将jenkins的公钥添加到web服务器
# Jenkins服务器
[root@localhost ~]# ssh-copy-id 192.168.66.150

在web服务器这边可以查看到保存的公钥

注:此时,Jenkins服务器就可以免密登录到GitLab服务器的git用户,web服务器的root用户

(5)Jenkins添加凭据

注:在jenkins上,进入“凭据管理” -> “系统(system)” -> “全局凭据” -> “添加凭据”;选择“SSH Username with private key”,选择"Private Key",然后输入私钥(id_rsa)内容,(用户名空着就行)

# Jenkins私钥
[root@localhost ~]# cat /var/lib/jenkins/.ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

5.创建测试项目

(1)创建空白项目

若修改后保存,则会是下一个版本,这个版本依旧保留,依次递归,可以回退到之前的版本

简单测试:手动拉取项目

项目地址:

# Jenkins服务器手动拉取
[root@localhost ~]# dnf -y install git
[root@localhost ~]# git clone git@192.168.66.130:root/myapp.git

注:可以看到Jenkins能成功拉取到GitLab服务器的项目

(2)jenkins上配置GitLab的API

  • 在gitlab上,进入“设置” -> “访问令牌”
  • 创建一个新的访问令牌,选择“api”权限
  • 将生成的访问令牌复制到jenkins的凭据中,类型选择“Secret text”

在之前添加凭据的页面,继续添加令牌

(3)测试GitLab连接

  • 在jenkins上系统配置页面,找到gitlab插件的配置栏目

6.Jenkins拉取项目

(1)Jenkins新建项目

  • 在jenkins上,点击“新建任务”
  • 选择“自由风格的软件项目”,输入项目名称,例如“test”
  • 在“源码管理”中选择“Git”,输入gitlab的仓库地址,例如: git@192.168.66.130:root/myapp.git
  • 选择分支,例如“main”

(2)构建项目

可以看到项目已经成功构建,如果想要查看更加详细的信息,可以查看左下角框住的部分,在稍后跳转的界面中选择控制台输出,查看任务执行过程

(3)Jenkins查看构建项目

注:可以看到Jenkins服务器已经成功拉取到了GitLab服务器的项目

(4)修改GitLab服务器的项目

(5)Jenkins重新构建

注:这次是更新之后的项目覆盖掉已有的项目

6.Jenkins推送项目到web服务器

(1)增加构建步骤

(2)重新构建

(3)查看web服务器

注:此时我们发现项目已经同步过来了,再访问web界面试试

备注:牵绊闪耀的恋之伊吕波(最小的椿姐和都子姐感觉都和初代男主绑定~朱雀院一家的四姐妹的羊毛都已经被水晶社给薅干净了!)

http://www.dtcms.com/a/540102.html

相关文章:

  • deepin 终端,但是版本是 deepin 15 的
  • 简单的分布式锁 SpringBoot Redisson‌
  • 如何建立一个视频网站网站域名权
  • 如何修改wordpress站名泰安网站建设哪家不错
  • 【Swift】LeetCode 73. 矩阵置零
  • 益和热力性能优化实践:从 SQL Server 到 TDengine 时序数据库,写入快 20 秒、查询提速 5 倍
  • 蚂蚁集团已在香港申请「ANTCOIN」等 Web3 相关商标
  • HarmonyOS实战项目:开发一个分布式新闻阅读客户端
  • “Web3、区块链、稳定币”名词解析
  • 【参赛心得】鸿蒙三方库适配实战:从 Hadoop 生态到鸿蒙生态,企业级项目集成的 6 个最佳实践
  • 【SpringBoot】29 核心功能 - 数据访问 - Spring Boot 2 操作 Redis 实践指南:本地安装与阿里云 Redis 对比应用
  • B.40.3.1-Spring Boot与Spring Cloud核心技术详解
  • HarmonyOS RemoteWindow远程窗口组件的分布式能力深度解析
  • HarmonyOS自动化测试与持续集成实战指南
  • 智慧团建网站入口官网手机前端开发软件工具
  • 中国建设银行金华分行网站微信小程序在哪里找出来
  • Visual Basic 二进制文件
  • WEB前端技术基础(第四章:JavaScript-网页动态交互语言)
  • 房屋租赁合同中协助办证义务分析及租金退还法律意见
  • 广州住房和城乡建设厅网站网站建设 中企动力公司
  • 外贸网站空间哪个好WordPress首页id
  • STM32F407移植FreeRTOS完整教程(HAL库版本)
  • Flink 并行度与最大并行度从 0 到弹性扩缩容
  • STL list深度解析:从原理到手写实现
  • AI驱动数据分析革新:奥威BI一键生成智能报告
  • day20_权限控制
  • Flutter 状态管理详解:深入理解与使用 Bloc
  • Spring Boot 移除 Undertow 深度解析:技术背景、迁移方案与性能优化实践
  • c# stateless介绍
  • 烽火台网站网站优化要从哪些方面做