持续集成工具Jenkins(一)

devtools/2025/1/21 18:40:45/

持续集成工具Jenkins

一、持续集成工具jenkins介绍

1.1Jenkins介绍:

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成

1.2Jenkins特性

1.3什么是CI CD

CI CD一般包括三个概念:持续集成、持续交付、持续部署

(1)持续集成

在传统的软件开发过程中,集成通常发生在每个人都完成了各自的工作之后,集成也可以理解为团队里的大家完成自己负责的模块后,将各个子模块集成为一个可以完成整体功能的完整模块。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,让构建、测试和集成代码更经常反复地发生,为了实现持续集成,我们每个人都要单元测试,保证各个子模块的正常工作。

(2)持续交付

持续交付是持续集成的延伸,将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改。我们把代码部署到测试环境,预发布环境等等类生产环境成为交付。

(3)持续部署

通常将这个在不同环境发布和测试的过程叫做部署流水线

持续部署是在持续交付的基础上,把部署到生产环境的环境自动化

1.4什么是DevOps

DevOps就是开发、测试、运维这三个领域的合并

1.5CICD与DevOps的区别和联系

CICD更关注的是整个开发、测试、部署的自动化过程,当我们在本地测试通过后,我们提交到git上,触发相应的webhook或者类似的东西进行代码的构建,并打包部署到相应的的机器上,自动化的完成这整个过程。

DevOps更关注的是打通用户、PMO、需求、设计、开发、测试、运维等各上下游部门或不同角色;打通业务、架构、代码、测试、部署、监控、安全、性能等各领域工具链;尤其是打通开发与运维之间的gap,两者实际上存在着很多的冲突。DevOps是基于CICD的,自动化的流程是基础,DevOps是一个项目有idea到实际稳定运行的产品的最佳时间

DevOps是CICD思想的延伸,CICD是DevOps的基础核心,如果没有CICD自动化的工具和流程,DevOps是没有意义的。

二、Jenkins的安装与部署

2.1 安装Jenkins

导入密钥:

[root@server ~]# wget -O /etc/yum.repos.d/jenkins.repo \

    https://pkg.jenkins.io/redhat-stable/jenkins.repo

[root@server ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

更新yum源

[root@server ~]# yum upgrade

安装JDK

[root@server ~]# yum install -y fontconfig java-21-openstack-devel

安装jenkins

[root@server ~]# yum install -y jenkins

启动并设置开机自启

[root@server ~]# systemctl start jenkins

[root@server ~]# systemctl enable jenkins

关闭防火墙和SELINUX

[root@server ~]# systemctl stop firewalld

[root@server ~]# setenforce 0

查询admin密码

[root@server ~]# less /var/log/jenkins/jenkins.log

浏览器访问jenkins(http://ip.8080)

2.2自定义Jenkins

登陆后,会出现如下页面,这里涉及到jenkins的插件安装,建议选择“安装推荐的插件”,点击“安装推荐的插件”后,进入“新手入门”页面,等待全部插件安装成功即可。  

       

插件安装完成后,会出现“创建第一个管理员用户”页面,填写正确信息后,点击“保存并完成”,这样第一个管理员用户就创建完毕了。如下图:

2.3jenkins发布PHP代码

任务描述

(1)了解如何安装插件。

(2)了解如何配置Publish Over SSH、添加公钥、增加SSH Server

(3)了解构建一个新的任务的流程。

任务实施

先进入“系统管理”,再进入“管理插件”,在“已安装”中检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有则需要安装,到“可选插件”中搜索并安装。

插件完成后,点击 “返回首页”回到服务器中重启 jenkins后,登录。

重启jenkins

[root@server ~]# systemctl restart jenkins

2.4配置Publish Over SSH

首先在服务器上/.ssh目录下生成一对密钥

[root@server ~]# cd ~/.ssh

[root@server .ssh]# ssh-keygen -t rsa

[root@server .ssh]# ls -al

总用量 8

drwx------. 2 root root   38 12月 18 08:49 .

dr-xr-x---. 3 root root  165 12月 17 18:41 ..

-rw-------. 1 root root 2602 12月 18 08:49 id_rsa

-rw-r--r--. 1 root root  565 12月 18 08:49 id_rsa.pub

密钥生成成功后,登录Jenkins,点击“系统管理”然后点击“系统设置”,下拉找到“Publish Over SSH”将刚才生成的服务器的私钥填入 “Publish over SSH” 中的“key”,如下图:

2.5增加SSH Server

“Publish over SSH”配置完成后,为了实现代码的成功发布,我们需要先查看并复制服务器的公钥,命令如下:

[root@server ~]# cat .ssh/id_rsa.pub     

然后将复制的服务器公钥,添加到需要添加“SSH Servers”的远程机器的.ssh/authorized_keys目录下,若要增加服务器的“SSH Servers”,则需要将服务器的公钥添加到服务器的.ssh/authorized_keys目录下。命令如下:

[root@server ~]# vi .ssh/authorized_keys     

在服务器上尝试登录远程机器:

尝试登陆成功后,登录jenkins,进入“Manage Jenkins”,点击“Configure System”,下滑找到“SSH Servers”,填写所需要连接机器的各项设置,然后点击“Test Configuration”,显示“success”,即成功


2.6构建新的任务

点击新建item,如下图:

输入任务名称,并选择构建软件项目的风格,应实验要求这里选择自由风格,如下图:

填写“描述”,如下图:

配置“源码管理”,选择管理源码的方式(这里选择git),将代码仓库的地址填入“Repositories URL”中,若代码仓库是私有仓库,还需要点击“添加”来添加凭证,其他保持默认即可,如下图:

配置“构建触发器”“构建环境”,应实验要求此处保持默认即可,如下图:

配置“构建”,此处用到了我们之前安装的 “publish over ssh” 插件,首先增加名为“Send files or exeute commands over SSH”的构建步骤,如下图:

然后在“Name”下选择机器名称(此处SSH Server个数由第3步中添加的数量决定);“Source files”表示要发布那些代码,在其下填写“**/**”(表示全部);

“Remote directory”表示把代码发送到远程机器的位置,填写“/tmp/Jenkins_test”(此处可自定义);“Exec command”下填写想要执行的命令,此处自定义可以为空,如下图:

点击“高级”,出现如下页面,其中“Pattern separator” 设置模式分隔符,“Exec timeout(ms)” 设置超时时间,此处保持默认即可,如下图:

通常情况下我们需要添加多个机器来进行任务,点击左下角“Add Server”来添加多个机器,如下图:

完成以上设置后,应用保存即可。

2.7将代码发布到对方机器

首先进入任务,然后点击“立即构建”,查看“控制台输出”,最后登录各机器查看代码发布是否成功,如下图:

2.8Jenkins邮件配置

项目实施

首先进入“Manage Jenkins”,然后进入“Configure System”,填写“Jenkins location”, 设置系统管理员邮件地址,这里的邮件地址需要和后续要设置的发邮件地址一致,如下图:

找到“邮件通知”,“SMTP服务器”中填写“smtp.163.com”,接着勾选“使用SMTP认证”,填写所使用邮箱的用户名及密码,“SMTP端口”使用25端口,接着勾选“通过发送测试邮件测试配置”,向其中填写用于发送测试邮件的邮箱地址后,点击“Test configuration”进行测试,发送成功后,保存,如下图:

注意:

(1)“使用SMTP认证”下的密码需要我们去相应的邮箱获取。

获取步骤如下(以163邮箱为例):

登录163邮箱,点击上方“设置”,点击“POP3/SMTP/IMAP”,开启“IMAP/SMTP服务”和“POP3/SMTP服务”,找到“授权密码管理”,点击“新增授权密码”;接着按照提示步骤操作就可以了。

(2)“使用SMTP认证”下的用户名中所填邮箱地址,要与“系统管理员邮箱地址”相同,否则会发送错误。

完成以上邮件配置后,我们还需要进入已经构建过的job里去配置接收邮件的地址。在已经构建过的项目中,点击“配置”

然后在“增加构建后操作步骤”中,选择“E-mail Notification”,最后在“Recipients”中填写邮箱地址并勾选“每次不稳定的构建都发送邮件通知”,保存,如下图:

 

最后在“Recipients”中填写邮箱地址并勾选“每次不稳定的构建都发送邮件通知”,应用保存,如下图:

收件:

2.9插件email-ext

插件“Email Extension Plugin”可以实现无论构建成功或失败,都会发送邮件通知构建结果。

进入“Manage Jenkins”,然后进入 “Manage Plugins”,找到并安装插件“Email Extension Plugin”,插件安装成功后,重启jenkins

配置Extended E-mail Notification

我们要使用 Extended E-mail Notification(email-ext) 去代替 “邮件通知”,所以我们需要先把“邮件通知”里设置的内容删掉,如下图:

      

删除邮件通知的配置后,配置Extended E-mail Notification,“SMTP server”中填入“smtp.163.com”;“SMTP Port”中填入端口号为“25”;“SMTP Username”和“SMTP Password”中分别填入邮箱用户名与密码,然后下滑找到”Default Tiggers”,勾选”Always”,其他保持默认,保存。如下图:

进入任务创建的项目,下拉找到“构建后操作”,然后点击“增加构建后操作步骤”,选择“Editable  Email Notification”,其中Project Recipient List为接收邮件的收件人,可以在默认内容后面增加额外的收件人邮箱,用英文逗号分隔。如下图:

如下图,点击右下角的“Advanced settings”,找到“Triggers”(触发器,设置在什么情况下发送邮件),然后点击下方的“Add Trigger”,增加发邮件的条件,保存。如下图:

发送邮件测试

首先点击“立即构建”,然后查看“控制器输出”,如下图所示,可以看到发邮件的动作,最后收到邮件即为成功。

2.10Jenkins破解管理员密码

[root@server 12345]# cd /var/lib/jenkins/users/

[root@server users]# ls -al

总用量 12

drwxr-xr-x.  3 jenkins jenkins   57 12月 17 17:59 .

drwxr-xr-x. 14 jenkins jenkins 4096 12月 18 14:25 ..

drwx------.  2 jenkins jenkins   24 12月 18 08:16 admin_11228694364098259215

-rw-r--r--.  1 jenkins jenkins  301 12月 17 17:59 users.xml

[root@server users]# cd admin_11228694364098259215/

[root@server admin_11228694364098259215]# ls

config.xml

[root@server admin_11228694364098259215]# vi config.xml

搜索定位到 <passwordHash>那一行,修改为

<passwordHash>#jbcrypt:$2a$10$usctvlMlqJ8XswbJ0QCcRuZ6ItKL30r0mEXXi5cXCrnWITuyP2E5W</passwordHash>

[root@server admin_11228694364098259215]# systemctl restart jenkins

重启jenkins,新密码为000000

手动设置随机字符串

若不想使用上述的密码,我们也可以自己定义一个随机字符串,进入jenkins界面,点击右上角admin,点击设置,下拉找到“密码”,自己定义一个随机字符串,将自己定义的随机字符串保存下来,位置自由,若以后忘记了密码,可在 /var/lib/jenkins/users/admin 文件中,将字符串修改成自己定义的字符串,这样密码就修改成功了。


http://www.ppmy.cn/devtools/152400.html

相关文章

第14个项目:E-Learning在线学习平台Python源码

源码下载地址:https://download.csdn.net/download/mosquito_lover1/90292074 系统截图: 功能介绍: 响应式设计,完全支持移动端 现代化的UI界面 用户认证系统 课程展示功能 模块化的结构 要进一步完善这个应用,您可以: 添加用户认证系统(登录/注册) 实现课程详情页面…

JavaScript系列(36)--微服务架构详解

JavaScript微服务架构详解 &#x1f3d7;️ 今天&#xff0c;让我们深入了解JavaScript的微服务架构&#xff0c;这是构建大规模分布式系统的关键技术。 微服务基础概念 &#x1f31f; &#x1f4a1; 小知识&#xff1a;微服务架构是一种将应用程序构建为一组小型服务的方法&…

快速开发:用AI构造AI —— 打造属于个人的Copilot(M-聪明AI)

作品简介&#xff1a; 当今快速发展的AI时代&#xff0c;学会使用AI的同时&#xff0c;也可以融入AI&#xff0c;来打造自己的产品&#xff0c;我给我这个取名M-聪明&#xff0c; 是基于VUE 3 Spring Boot -Redis ChatGML RxJava SSE 的AI 服务平台。然后这款工具旨在为用户…

imbinarize函数用法详解与示例

一、函数概述 众所周知&#xff0c;im2bw函数可以将灰度图像转换为二值图像。但MATLAB中还有一个imbinarize函数可以将灰度图像转换为二值图像。imbinarize函数是MATLAB图像处理工具箱中用于将灰度图像或体数据二值化的工具。它可以通过全局或自适应阈值方法将灰度图像转换为二…

mac m4 安装 node

brew install node // 安装 node //安装的路径在&#xff1a; /opt/homebrew/bin/node brew install node14 // brew install node22 // 安装指定版本 如果需要设置环境变量&#xff1a;通过&#xff1a; which node 查找路径 export PATH"/usr/local/opt/…

Python基于OpenCV和PyQt5的人脸识别上课签到系统【附源码】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

什么是HTTP3?

要想讲清楚HTTP3是什么&#xff0c;就不得不先说下HTTP2&#xff0c;而要说清楚什么是HTTP2&#xff0c;就不得不介绍HTTP1。正所谓&#xff1a;计算机软件没有银弹&#xff0c;每项新技术都是解决了旧技术的问题&#xff0c;而又引入了新的问题。所以我们从HTTP1开始讲的话&am…

《汽车维修技师》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答&#xff1a; 问&#xff1a;《汽车维修技师》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《汽车维修技师》级别&#xff1f; 答&#xff1a;省级。主管单位&#xff1a;北方联合出版传媒&#xff08;…