目录
什么是CI 、CD
CI 、CD一般包含三个概念:持续集成(Continuous Integration ,CI),持续交付(Continuous Delivery),持续部署(Continuous Deploy)。
- 持续集成(CI):
开发人员频繁地将代码集成到共享的代码库中。每次集成都会触发自动化的构建和测试过程。例如,使用工具如 Jenkins、GitLab CI 等,当开发人员将新代码推送至代码仓库时,CI 系统会自动拉取代码,安装依赖项,编译代码,并运行一系列测试用例。如果测试失败,开发人员会立即收到反馈,以便及时修复问题。
- 持续交付(CD):
是在持续集成的基础上,确保软件产品可以随时被部署到生产环境或类生产环境。它强调的是软件发布过程的自动化和可重复性,包括从测试环境到预生产环境等各个环节的交付准备,使得软件能够以一种可靠、高效的方式从开发阶段顺利进入发布阶段,但在持续交付中,最终的部署到生产环境可能仍需要人工审批等操作。
- 持续部署(CD):
可以看作是持续交付的进一步延伸。在持续部署中,一旦代码通过了所有的自动化测试环节,就会自动地部署到生产环境,不需要人工干预。这能够实现软件更新的最快速发布,让新功能和修复能够更快地到达用户手中。
了解到了一个它的基本概念下面学习jenkins集成工具
Jenkins集成工具
持续集成的特点:
- 是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试,再到结果记录、测试统计等都是自动完成,无需人工干预
- 需要有专门的集成服务器来执行集成构建
- 需要有代码托管工具支持
一、Jenkins介绍
Jenkins 原名 Hudson,2011 年修改为 Jenkins,它是一个开源的实现软件持续集成的工具。
Jenkins工具的优点:
- 易安装:官网下载直接运行
- 易配置:提供了友好的 GUI 配置界面
- 变更支持:能从代码仓库中获取并产生代码更新列表,输出到编译输出信息
- 支持永久链接:用户是通过 Web 来访问 Jenkins 的,而这些 Web 界面的链接地址是可以一直存在的
- 支持第三方插件
- 能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还可以用图表的形式形象的展示项目构建的趋势和稳定性。
二、jenkins的安装和部署
这里我们使用centos7进行部署,但要注意centos7已经停止了维护,但是我们只是初步的学习,所以使用centos7依旧可行
还要注意一点的是jenkins是由java开发的工具,所以他需要jdk环境,并且他需要做版本的适配,可见官网
环境部署
主机名 |
IP |
角色 |
web01 |
192.168.143.162 |
部署服务的机器 |
web02 |
192.168.143.163 |
Gitlab服务器 |
web03 |
192.168.143.164 |
Jenkins服务器 |
安装jenkins
在web03上安装jenkins
配置jenkins的源,可按官方进行配置
[root@web03 ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@web03 ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
[root@web03 ~]# yum install -y fontconfig
[root@web03 ~]# yum install -y Jenkins
可以看到我这里安装的是2.479的版本,所以下面配置jdk需要17或21
这里需要去官网下载jdk传入web03,因为centos yum安装现在最高只支持11,如果你不想手动配置环境,可以指定下载jenkins,让他适配jdk11就行或者下载rpm包使用yum安装也ok
这里安装jdk 21
[root@web03 ~]# ls
anaconda-ks.cfg jdk-21_linux-x64_bin.rpm
[root@web03 ~]# yum install -y jdk-21_linux-x64_bin.rpm
查看版本和执行路径
[root@web03 ~]# java --version
java 21.0.5 2024-10-15 LTS
Java(TM) SE Runtime Environment (build 21.0.5+9-LTS-239)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.5+9-LTS-239, mixed mode, sharing)
[root@web03 ~]# which java
/usr/bin/java
启动jenkins
[root@web03 ~]# systemctl start jenkins
[root@web03 ~]# yum install net-tools
记得关闭防火墙
[root@web03 ~]# systemctl stop firewalld
[root@web03 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
查看8080端口是否启动
[root@web03 ~]# netstat -ntlp
可以看到端口已经起来了
浏览器登录
[root@web03 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
选择哪一个都可以
这里我选择自定义安装,根据我后续的任务安装对应的插件
选择无
自定义创建
安装gitlab
Gitlab是企业常用的远程私有仓库,像这样的远程仓库还有github,gitee等,都能实现对代码的拉取与上传
配置镜像源进行安装
在web02上安装github
配置github镜像源
[root@web02 ~]# cat /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
yum安装
[root@web02 ~]# yum install -y gitlab-ce
安装完成后进行自动配置
[root@web02 ~]# gitlab-ctl reconfigure
# 启动githlab
[root@web02 ~]# gitlab-ctl start
用浏览器访问
端口一般为80或者443
如果出现这个界面,但是报错502,说明是后端其他服务没起来,可能是内存或者磁盘太少导致。最明显的感受就是配置完gitlab,敲命令都非常卡顿,这个时候去虚拟机关机给服务器扩展内存和磁盘就行
扩展后
重新启动服务
Gitlab服务基础命令
gitlab-ctl start 启动gitlab服务
gitlab-ctl stop 关闭gitlab服务
gitlab-ctl restart 重启gitlab服务
出现登录界面