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

Jenkins 持续集成部署

Jenkins的安装与部署

前言

当我们在实施一个项目时,从新代码中获得反馈的速度越快,问题越早得到解决,获得反馈的一种常见方法是在新代码之后运行测试,但这就导致了当代码正在编译并且正在运行测试时,开发人员无法在测试完成之前继续工作,从而使生产效率大大降低。Jenkins通过提供持续集成功能解决了问题。合并新代码后。Jenkins可以自动进行构建,运行测试和部署应用程序。这篇文章会向大家介绍jenkins的安装方式和使用方法。

单元一 Jenkins安装

学习目标

本单元主要完成学习目标;

(1)学会安装jdk1.8

(2)学会安装jenkins

(3)了解jenkins的初始化过程

任务1.1 安装jdk 1.8

任务描述

安装jdk1.8并为其配置yum源。

知识学习

Jenkins是基于java8编写的软件,所以在安装之前需要在主机上安装Java8的运行环境,及安装jdk 1.8

务实施

[root@localhost ~]# wget https://download.oracle.com/java/17/archive/jdk-17.0.6_linux-x64_bin.rpm

[root@localhost ~]# yum install -y jdk-17.0.6_linux-x64_bin.rpm  

#配置yum源

[root@localhost ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo  

#安装依赖

[root@localhost ~]# yum install fontconfig java-17-openjdk

#探索密钥

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

任务1.2 安装jenkins

任务描述

安装并成功登录jenkins

知识学习

jenkins是什么?

Jenkins是一个独立的开源软件项目,是基于java开发的一种可扩展的持续集成(CI)工具,用于监控持续重复的工作,自动的构建和测试软件项目,旨在提供一个开发易用的软件平台,使软件的持续集成变成可能。

持续集成(CI)是什么?

持续集成(CI)是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程。

任务实施

[root@localhost ~]# yum -y install epel-release

[root@localhost ~]# yum -y install daemonize

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

#启动服务

[root@localhost ~]# systemctl start jenkins

#关闭防火墙

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

#查看密码

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

f1a21e8118d342fab2515af0999368a2

 任务1.3自定义jenkins

任务描述

本任务主要实现以下两个内容

(1)安装基础插件

(2)创建第一个管理员用户

任务实施

1.安装插件

登录后,会出现如下界面,这里涉及到jenkins的插件安装,建议选择“安装推荐的插件”,

点击“安装推荐的插件”后,今日“新手入门”页面,等待全部插件安装成功即可。

2.创建第一个管理员用户

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

 

单元二jenkins相关配置及代码发布

学习目标

详细了解jenkins各配置及插件的作用,学会发布代码

任务2.1jenkins 发布php代码

任务描述

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

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

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

任务实施
1.安装插件

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

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

[root@localhost ~]# systemctl restart jenkins  #重启

2.配置Publish Over SSH 

首先需要在服务器上./.目录下生成一对密钥,命令如下:

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

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

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:9kEjor318PCZg3Tj1bJDAAjlNfa2pc6PROcFZSGSe6I root@localhost.localdomain

The key's randomart image is:

+---[RSA 2048]----+

|    .o..= ... +. |

|     ..o +.. +   |

|      o . *.o    |

|     o . +o*.o   |

|    . . S.Bo= o  |

|       =E# X +   |

|      . . & +    |

|         . + .   |

|          . .    |

+----[SHA256]-----+

检查是否生成成功。命令如下:

[root@localhost .ssh]# ls -al

总用量 8

drwxr-xr-x. 2 root root   38 12月 16 15:45 .

dr-xr-x---. 4 root root  195 12月 16 15:43 ..

-rw-------. 1 root root 1679 12月 16 15:45 id_rsa

-rw-r--r--. 1 root root  408 12月 16 15:45 id_rsa.pub

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

 

如果提示.ssh目录不存在,则创建~/.ssh目录,并把目录权限设置为700

[root@localhost ~]# mkdir ~/.ssh

[root@localhost ~]# chmod 700  ~/.ssh

3.增加SSH Server

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

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

[root@client ~]# cat ~/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlOvCstNk3LLiFGQ2InNsWQgHx15nWjgt2UqKzd3JNG2jHvKgeoO6H6iMg4DKjI0fzpBxrfRaR4gJI2jf04mKfRUhhNn9yCm5Bpbx00pA2m0iuxDMbZSd3MBso7gNWnGqpTyZtCe7q9p1Ml8iJYItleDDJOlFq6yU3W5yTliOBtOKlcBahQ1alpzW5QlATTluHv9TaE/yrvW3M3D+WljIRD8OtVwT+UeqpgNQPNGa1yZWSnSsLROysieNUVFKCTqsQ66Px7UGy3GRRNjw3FoZPr7saKx8WiYU6vphdYeJOAmuGh8//8GFjCiTP/wR10RUmZYFkmVCAuBQVm7/76qqx root@localhost.localdomain

 ​​​​​

在服务器上尝试登录远程机器,如下图所示:

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

4.构建新的任务

点击新建ltem,如下图:

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

填写“描述”如下图:

配置“源码管理”,选择管理源码的方式(这里选择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”来添加多个机器,如下图:

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

5.将代码发布到对方机器

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

任务2.2 jenkins 邮件配置

任务描述

配置“邮件通知”,对邮件进行配置,这样当项目构建失败时,我们能第一时间收到通知。

项目实施

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

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

 完成以上邮件配置后,我们还需要进入已经构建过的job里去配置接收邮件的地址。在已经构建过的项目test1中,点击“配置”,然后在“增加构建后操作步骤”中,选择“E-mail Notification”,最后在“Recipients”中填写邮箱地址并勾选“每次不稳定的构建都发送邮件通知”,保存,如下图:

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

任务2.3 插件 email-ext

任务描述

安装并配置插件“Email Extension Plugin”

任务实施
1.安装插件

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

2.配置Extended E-mail Notification

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

删除邮件通知的配置后,配置Extended E-mail Notification,“SMTP server”中填入“smtp.qq.com”;“SMTP Port”中填入端口号为“465”;“SMTP Username”和“SMTP Password”中分别填入邮箱用户名与密码。如下图:

然后下滑找到”Default Tiggers”,勾选”Always”,其他保持默认,保存。如下图:

3.配置对应任务

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

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

4.发送邮件测试

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

任务2.4jenkins破解管理员密码

任务描述

(1)学会在服务端破解管理员密码

(2)可以手动设置随机字符串

任务实施
1.破解管理员密码

[root@localhost ~]# cd /var/lib/jenkins/users/

[root@localhost users]# ls -la

总用量 12

drwxr-xr-x.  3 jenkins jenkins   58 12月 16 14:39 .

drwxr-xr-x. 16 jenkins jenkins 4096 12月 17 19:32 ..

-rw-r--r--.  1 jenkins jenkins  304 12月 16 14:39 users.xml

drwx------.  2 jenkins jenkins   24 12月 16 15:50 yansong_4245125874000227710

[root@localhost users]# cd yansong_4245125874000227710/

[root@localhost yansong_4245125874000227710]# vi config.xml

[root@localhost yansong_4245125874000227710]# systemctl restart jenkins

[root@localhost yansong_4245125874000227710]#

新密码为000000

2.手动设置字符串

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

任务2.5jenkins 部署java项目

任务描述

本任务是完整的创建一个java项目

任务实施
1.准备工作

自己申请一个私有git仓库,生成密钥对,将公钥添加到git服务端

2.连接代码仓库

[root@localhost ~]# cd /home

[root@localhost home]# git config --global user.name "门同学"

[root@localhost home]# git config --global user.email "445517363@qq.com"

[root@localhost home]# mkdir test2

[root@localhost home]# cd test2

[root@localhost test2]# git init

初始化空的 Git 版本库于 /home/test2/.git/

[root@localhost test2]# touch README.md

[root@localhost test2]# git add README.md

[root@localhost test2]# git commit -m "first commit"

[master(根提交) 14bd0b7] first commit

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 README.md

[root@localhost test2]# git remote add origin menyansong/test2

[root@localhost test2]# git push -u origin master

Username for 'https://gitee.com': menyansong

Password for 'https://menyansong@gitee.com':

Counting objects: 3, done.

Writing objects: 100% (3/3), 216 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

remote: Powered by GITEE.COM [1.1.5]

remote: Set trace flag a4410b94

To https://gitee.com/menyansong/test2.git

 * [new branch]      master -> master

分支 master 设置为跟踪来自 origin 的远程分支 master。

 

3.下载zrlog

为了让我们的实验更加接近生产环境,我们需要一段java的源代码,所以此处我们下载由java编写的博客——zrlog

[root@localhost home]# wget https://codeload.github.com/94fzb/zrlog/zip/master

[root@localhost home]# unzip master

[root@localhost home]# mv zrlog-master/* test2/

4.提交代码

[root@localhost home]# cd test2/

[root@localhost test2]# git add .     #添加所有更改

[root@localhost test2]# git commit -m "add zrlog"    #提交更改

[root@localhost test2]# git push                  #推送更改到远程仓库

 若我们可以在代码中看到我们刚才提交的文件,说明提交成功。如下图:

5.安装jdk(在远程机器上)
(1)下载

下载jdk-8u221-linux-x64.tar.gz  并存放至/usr/local下

(2) 解压

[root@localhost ~]# cd /usr/local/

[root@localhost local]# mkdir java

[root@localhost local]# mv jdk-8u271-linux-x64.tar.gz  /usr/local/java/

[root@localhost local]# cd java

[root@localhost java]# tar -zxvf jdk-8u271-linux-x64.tar.gz

(3)配置java的环境变量

[root@localhost java]# vi /etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_271

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

[root@localhost java]# source /etc/profile        #重启配置生效

 (4)验证

[root@localhost java]# java -version

java version "1.8.0_271"

Java(TM) SE Runtime Environment (build 1.8.0_271-b09)

Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)

6.安装tomcat(在远程机器上)
(1)作用

tomcat是用来运行zrlog的容器

(2)下载

下载apache-tomcat-9.0.0.54.tar.gz  #并存放至/usr/local下

(3)解压

[root@client ~]# cd /usr/local/

[root@client local]# tar -zxf apache-tomcat-9.0.94.tar.gz

(4)配置

[root@client local]# mkdir tomcat

[root@client local]# mv /usr/local/apache-tomcat-9.0.94 /usr/local/tomcat

[root@client local]# cd tomcat/

[root@client tomcat]# vi /usr/local/tomcat/apache-tomcat-9.0.94/conf/tomcat-users.xml

#配置管理员用户

-->

<role rolename="admin"/>

<role rolename="admin-gui"/>

<role rolename="admin-script"/>

<role rolename="manager"/>

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<user name="admin" password="jenkins.com" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />

<tomcat-users>

[root@client apache-tomcat-9.0.94]# vi webapps/manager/META-INF/context.xml

找到 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

向其中加入我们要使用的网段,修改如下:

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.213.*" />

配置完成后启动:

[root@client bin]# ./startup.sh     #开启Tomcat

传一个jdk的包

解压完成后移动到这个目录下

[root@client tomcat]# mv jdk1.8.0_271 /usr/local/tomcat/apache-tomcat-9.0.94/

[root@client apache-tomcat-9.0.94]# cd /usr/local/tomcat/apache-tomcat-9.0.94/jdk1.8.0_271/

[root@client jdk1.8.0_271]# vi /etc/profile

#在最后添加这两行

export JAVA_HOME=/usr/local/tomcat/apache-tomcat-9.0.94/jdk1.8.0_271/  #注意路径

export PATH=$JAVA_HOME/bin:$PATH

[root@client jdk1.8.0_271]# source /etc/profile   #重启配置文件

[root@client jdk1.8.0_271]# java -version

java version "1.8.0_271"

[root@client jdk1.8.0_271]# cd ..

[root@client apache-tomcat-9.0.94]# ls

bin           conf             jdk1.8.0_271  LICENSE  NOTICE     RELEASE-NOTES  temp     work

BUILDING.txt  CONTRIBUTING.md  lib           logs     README.md  RUNNING.txt    webapps

[root@client apache-tomcat-9.0.94]# cd bin

[root@client bin]# ./startup.sh

Using CATALINA_BASE:   /usr/local/tomcat/apache-tomcat-9.0.94

Using CATALINA_HOME:   /usr/local/tomcat/apache-tomcat-9.0.94

Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-9.0.94/temp

Using JRE_HOME:        /usr/local/tomcat/apache-tomcat-9.0.94/jdk1.8.0_271/

Using CLASSPATH:       /usr/local/tomcat/apache-tomcat-9.0.94/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.94/bin/tomcat-juli.jar

Using CATALINA_OPTS:   

Tomcat started.

(5)验证

首先找到“Managing Tomcat”,点击“manager webapp”,如下图所示:

然后输入tomcat的用户名与密码完成验证,如下图所示:

7.安装maven(在服务器端安装)
(1)作用

maven编译java的源码并打包

(2)下载

下载apache-maven-3.8.3-bin.tar.gz     到/usr/local/下

(3)解压

[root@localhost local]# tar -zxf apache-maven-3.8.8-bin.tar.gz

 (4)验证

[root@localhost local]# /usr/local/apache-maven-3.8.8/bin/mvn --version

Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)

Maven home: /usr/local/apache-maven-3.8.8

Java version: 1.8.0_271, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_271/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

(5)配置maven

点击“Manage Jenkins”,点击“Global Tool Configuration”,找到“Maven配置”,

填写Maven相关的文件路径。如下图:

下滑找到 Maven ,点击“新增Maven”,按照安装的Maven版本号来填写 Name,此处建议不要自动安装,所以不要勾选“自动安装”,然后在 服务器端获取Maven的路径填入MAVEN_HOME ,应用保存即可。如下图:

8.安装插件
(1)安装

Maven Integration plugin    //用来创建一个maven的项目

Deploy to container Plugin   //用来将war包,发布到远程去

(2)重启jenkins

[root@localhost ~]# systemctl restart jenkins

(3)验证

 

出现“构建一个maven项目”,说明安装成功!

9.创建maven项目

将任务名称填入“输入一个任务名称”下,并选择想要构建的项目类型,这里我们选择“构建一个maven项目”,如下图:

配置“源码管理”:选择“git”来进行源码管理;将私有的代码仓库的地址填入“Repository URL”;此时会出现错误提醒,这是因为我们添加的代码仓库是私有的,想要使用它必须为其添加凭证,点击“添加”。如下图:

点击“添加”后出现下图页面,“类型”选择“SSH Username with private key”; “Username“为“git”(以代码仓库的地址为参考,可知此处使用的用户名应为git);勾选“Enter directly”,并将服务器的私钥添加到出现的“key”中,从而使得jenkins可以成功访问git;最后点击“添加”。如下图:

私钥

[root@localhost ~]# cat ~/.ssh/id_rsa

如下图所示,“凭证”添加完成之后,在“Credentials”下选择“git”,此时可以看到刚才出现的错误提示已经消失了。如下图:

下滑找到“Build”(其功能实质就是使用maven去编译我们的源码并生成包),“Root POM”为“pom.xml”;“Goals and options”下填写maven在编译时用到的选项,可留空,但在这里我们填写“clean install –D maven.test.skip=true”这条命令表示在编译之前先清理,跳过测试。如下图:

下滑点击“增加构建后操作步骤”选择“Editable Email Notification”,在“Project Recipient List”下添加一个额外的邮箱,注意前后需要使用英文逗号隔开,如下图所示,应用,保存。如下图:

点击“立即构建”后,查看“控制台输出”,如下图:

 


http://www.kler.cn/a/451215.html

相关文章:

  • python通过正则匹配SQL
  • vue3入门教程:计算属性
  • vscode插件更新特别慢的问题
  • Vue零基础必学教程(16) 计算属性
  • nmap扫描优化
  • SSD目标检测算法
  • WPS中插入矩阵的方法
  • 专栏二十三:Python读取和分析空间数据的经验杂谈
  • D105【python 接口自动化学习】- pytest进阶参数化用法
  • 【linux】NFS实验
  • dns一般设置为多少
  • Windows安装无线打印机
  • oracle linux8.10+ oracle 23ai安装
  • Yolo算法中特征相似导致误报问题
  • Springboot基于Web的辅助教学平台ln5i2(程序+源码+数据库+调试部署+开发环境)
  • Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
  • 155. 最小栈
  • EasyExcel停更,FastExcel接力
  • 联通光猫怎么自己改桥接模式?
  • WebStorm 创建一个Vue项目
  • [Unity Shader] 【图形渲染】Shader数学基础12-坐标空间变换
  • B树的实现
  • 具身智能打响争夺战:自主感知、行动与进化简史(连载1)
  • Ubuntu国内安装Gradle
  • 免费 IP 归属地接口
  • stm32定时器输出比较----驱动步进电机