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

Jenkins集成部署(图文教程、超级详细)

一、CI/CD 的概念

​ CI/CD一般包含三个概念:

持续集成(Continuous Integration ,CI)

持续交付(Continuous Delivery)

持续部署(Continuous Deploy)

​ CI/CD 是现代软件开发的重要流程,旨在提升软件开发与交付的效率、可靠性和质量

1.1 持续集成 (CI)

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


​ 为了实现持续集成,我们每个人都需要做 单元测试 (Unit Test),以确保各个子模块的正常工作

关键点
代码合并到主分支时触发构建
自动化运行单元测试和集成测试
提供反馈给开发者
典型工具:Jenkins、GitLab CI/CD、Travis CI、CircleCI

1.2 持续交付

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

关键点:
部署到预生产环境后进行验证
保持一致的部署流程
典型工具:Spinnaker、ArgoCD、FluxCD

1.3 持续部署

​ 如果真的想获得持续交付的好处,应该尽早部署到生产环境,以确保可以小批次发布,在发生问题时可以轻松排除故障。于是有了持续部署。

 我们通常将这个在不同环境发布和测试的过程叫做部署流水线
​ 持续部署是在持续交付的基础上,把部署到生产环境的过程自动化

1.4 DevOps

​DevOps 是一种文化和方法论,旨在通过 开发(Development)、测试(QA) 与 运维(Operations) 团队的协作,提升软件开发、交付和运维的效率。它不仅关注技术工具,也关注团队协作和流程优化

​ 虽然名字里没有体现,但是 DevOps 仍包括测试

DevOps 的好处:
    提升发布速度:更频繁地交付高质量的软件
    增强稳定性:通过自动化测试和监控减少生产问题
    更高的协作效率:开发与运维团队共同承担责任
    快速响应市场需求:支持小步快跑式的开发模式

CI/CD 与 DevOps 的关系


   CI/CD 是 DevOps 实现中的关键实践之一。DevOps 更加关注文化、流程和工具的整合,而 CI/CD 则是 通过自动化实现开发与运维目标的重要手段。两者结合能够显著提升软件开发与交付的效率和质量。

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

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

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

二、安装配置Jenkins

服务器

IP

Jenkins

192.168.232.180

Java

192.168.232.181

外加一个Gitee.com 网站账号(仓库)

实验要用到的三个包,请自行下载好并传入虚拟机中

jdk21版本  (两台虚拟机都要传) 

 https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm

maven-3.9.9 (Jenkins主机)

https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz

tomcat-9.0.98 (Java主机)

 https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/src/apache-tomcat-9.0.98-src.tar.gz

2.1 安装Jenkins

配置环境 和 Jenkins 官方的 yum 源之后进行安装

关闭防火墙

[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

安装 EPEL 源

  yum install -y epel-release

安装 wget

yum -y install wget

配置 Jenkins 官方 yum 源

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

安装所需要的环境

21.0.5版本包链接(先进行下载,将包传入虚拟机中)

https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm

[root@jenkins ~]# ls
anaconda-ks.cfg  jdk-21_linux-x64_bin.rpm

安装jdk21版本(不要下载过低的版本最好和我一样,因为到最后一步版本太低会做不出来)

yum install -y (你的包名)
yum install fontconfig daemonize -y

查看Java版本,是否被正确安装

[root@jenkins ~]# java -version
java version "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)

安装Jenkins

yum install jenkins -y

如果出现这种情况,那么就去修改你的Jenkins的yum源文件,将原来的1改为0

[root@localhost ~]# vi /etc/yum.repos.d/jenkins.repo
[root@localhost ~]# cat /etc/yum.repos.d/jenkins.repo 
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=0

最后启动Jenkins

systemctl start jenkins

查看 Jenkins 是否启动(8080端口是否监听)

yum -y install net-tools
netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1049/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1207/master         
tcp6       0      0 :::8080                 :::*                    LISTEN      10869/java          
tcp6       0      0 :::22                   :::*                    LISTEN      1049/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1207/master         

然后访问:http://192.168.232.180:8080 来访问Jenkins

2.2 配置Jenkins

登陆进去后,先查看密码并登录

cat /var/lib/jenkins/secrets/initialAdminPassword
ac3a95ba18b24f32b3868c3ec10ae66d

把密码复制进去后,右下角登录

进去后稍微等一小会,会出现以下界面

这里我们选择左面的“安装推荐的插件”

等待一会,让他全部安装完毕
安装完成后,会出现以下界面。  设置完成后,点击右下方“保存并完成”

下一张图片也是点击保存并完成即可

三、项目任务

3.1 Jenkins发布php代码

任务描述:

(1)了解如何安装插件。
(2)了解如何配置Publish Over SSH、添加公钥、增加SSH Server
(3)了解构建一个新的任务的流程。

任务实施:

  1.安装插件

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

设置安装后重启

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

在本地机器上重启Jenkins服务

[root@jenkins ~]# systemctl restart jenkins

2.配置Publish Over SSH

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

 ssh-keygen -t rsa

后面按回车就行

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

查看私钥

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

将私钥内容复制进去

3.增加SSH Server

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

 cat .ssh/id_rsa.pub     

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

    使用 ssh-copy-id 命令(推荐)

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.232.180
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.232.181

这个命令会自动将你的公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中。

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

登录测试:

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

4.构建新的任务

点击新建ltem,如下图:

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

添加描述

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

这里出现报错是因为我们还没有从gitee仓库里连接到Jenkins主机,所以我们先进行连接

首先我们先打开gitee网站进入设置,如下图:

进入之后将你的公钥复制在 SSH公钥的位置中,如下图:

在你的Jenkins主机上查询公钥

cat ~/.ssh/id_rsa.pub

我们进入gitee网站,新建一个仓库

这里我们先下载git

yum -y install git

示例,添加gitee仓库

[root@jenkins ~]# git config --global user.name "lifeng200577"
[root@jenkins ~]# git config --global user.email "15205053+lifeng200577@user.noreply.gitee.com"
[root@jenkins ~]# mkdir jenkins-05
[root@jenkins ~]# cd jenkins-05/
[root@jenkins jenkins-05]# git init
初始化空的 Git 版本库于 /root/jenkins-05/.git/
[root@jenkins jenkins-05]# git add README.md
[root@jenkins jenkins-05]# git commit -m "first commit"
[master(根提交) 4e0de82] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
[root@jenkins jenkins-05]# git remote add origin https://gitee.com/lifeng200577/jenkins-05.git
[root@jenkins jenkins-05]# git push -u origin "master"
Username for 'https://gitee.com': lifeng200577
Password for 'https://lifeng200577@gitee.com': 
Counting objects: 3, done.
Writing objects: 100% (3/3), 225 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 8641e3be
To https://gitee.com/lifeng200577/jenkins-05.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

刷新一下Jenkins网站,重新登陆,将刚才复制的gitee仓库地址再次填进去,点击空白处,发现没有报错,代表成功。

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

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

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

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

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

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

我们返回到两个机器上查看是否真的发布到里面了

Jenkins主机

[root@jenkins ~]# cd /tmp/Jenkins_test/
[root@jenkins Jenkins_test]# ls -al
总用量 4
drwxr-xr-x.  2 root root   23 12月 19 20:13 .
drwxrwxrwt. 12 root root 4096 12月 19 20:13 ..
-rw-r--r--.  1 root root    0 12月 19 20:13 README.md

Java被控机器

[root@java ~]# cd /tmp/Java_test/
[root@java Java_test]# ls -al
总用量 0
drwxr-xr-x.  2 root root  23 12月 19 20:13 .
drwxrwxrwt. 10 root root 223 12月 19 20:13 ..
-rw-r--r--.  1 root root   0 12月 19 20:13 README.md

测试成功

3.2Jenkins邮件配置

任务描述

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

项目实施

首先我们需要先配置一下“SMTP服务器”,后面有需要

我们先登陆qq邮箱,

网址:登录QQ邮箱

用微信扫描二维码,之后发短信验证一下就OK,生成的授权码复制一下
xunjeznmdrmtchcf

如果忘记复制也没有关系

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

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

对于QQ邮箱,通常情况下,SMTP服务器地址为 smtp.qq.com,并且需要使用465端口(用于SSL/TLS加密连接),或者587端口(用于STARTTLS加密)。如果你使用的不是这两个端口之一,请更改为其中之一。我这里选择的是SSH协议。

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

完成后点击应用,然后保存

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

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

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

验证一下:

验证完成

3.3 插件Emile-ext

任务描述

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

知识学习

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

任务实施

  1. 安装插件

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

安装完成后,重启Jenkins

2.配置Extended E-mail Notification

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

将里面的东西全部删掉,点击应用

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

设置完成后点击添加

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

3.配置对应任务

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

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

4.发送邮件测试

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

查看输出台

3.4 Jenkins破解管理员密码

任务描述:

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

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

任务实施:

  1. 破解管理员密码
[root@jenkins ~]# cd /var/lib/jenkins/users/
[root@jenkins users]# ls
lifeng0577_1251339403352343384  users.xml
[root@jenkins users]# cd lifeng0577_1251339403352343384/
[root@jenkins lifeng0577_1251339403352343384]# ls
config.xml
[root@jenkins lifeng0577_1251339403352343384]# vi config.xml 
搜索定位到 <passwordHash>那一行,修改为
<passwordHash>#jbcrypt:$2a$10$usctvlMlqJ8XswbJ0QCcRuZ6ItKL30r0mEXXi5cXCrnWITuyP2E5W</passwordHash> 
[root@jenkins lifeng0577_1251339403352343384]# systemctl restart jenkins

2. 手动设置随机字符串

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

3.5 Jenkins部署Java项目

任务描述

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

任务实施

Git简易的命令行入门教程(这里只是整理一下知识点,后续有实操)

Git全局设置:

git config --global user.name "lifeng200577"
git config --global user.email "15205053+lifeng200577@user.noreply.gitee.com"

创建git仓库

仓库名随便起的

mkdir 2132123132
cd 2132123132
git init 
touch README.md
git add README.md
git commit -m "first commit"git remote add origin https://gitee.com/lifeng200577/2132123132.git
git push -u origin "master"

已有仓库?

cd existing_git_repo
git remote add origin https://gitee.com/lifeng200577/2132123132.git
git push -u origin "master"

已有仓库,如何更新?

步骤 1:初始化或进入现有仓库
如果你还没有在虚拟机上初始化 Git 仓库,请先这样做:

cd /path/to/your/project
git init

如果项目已经是 Git 仓库,则直接进入该项目目录:

cd /path/to/your/existing/repo

步骤 2:添加远程仓库(如果尚未添加)
如果你还没有设置远程仓库,请使用 git remote add 命令来添加它:

git remote add origin git@gitee.com:username/repository.git

# 或者对于 HTTPS 方式:

git remote add origin https://gitee.com/username/repository.git

步骤 3:拉取最新的远程分支
确保你的本地仓库是最新的,以避免冲突和不必要的复杂性:

git pull origin master

这一步可能会要求你解决任何合并冲突。按照提示进行操作,直到所有的冲突都得到解决。

步骤 4:添加、提交本地更改
接下来,你需要将你想同步到 Gitee 的文件添加到暂存区并提交它们:

git add .
git commit -m "同步虚拟机上的最新文件"
这里 -m 后面跟着的是提交信息,描述了此次提交的内容。

步骤 5:推送更改到 Gitee
最后,推送本地提交到 Gitee 远程仓库:

git push -u origin master
-u 参数用于设置上游分支,这意味着以后你可以只用 git push 和 git pull 来简化命令。

接下来,让我们进行实操

1、连接代码到仓库

实操

[root@jenkins ~]# ls
anaconda-ks.cfg  jdk-21_linux-x64_bin.rpm  jenkins-05
[root@jenkins ~]# cd jenkins-05/
[root@jenkins jenkins-05]# ls
README.md  test02  
[root@jenkins jenkins-05]#
[root@jenkins jenkins-05]# git init
重新初始化现存的 Git 版本库于 /root/jenkins-05/.git/
[root@jenkins jenkins-05]# mkdir test3
[root@jenkins jenkins-05]# cd test3
[root@jenkins test3]# ls
[root@jenkins test3]# touch README.md
[root@jenkins test3]# vi README.md
[root@jenkins test3]# cat README.md
akjdkljd238478923748
[root@jenkins test3]# git add README.md
[root@jenkins test3]# git commit -m "first commit"
[master a8f911c] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 test3/README.md
[root@jenkins test3]# git push -u origin master
Username for 'https://gitee.com': lifeng200577
Password for 'https://lifeng200577@gitee.com':
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 365 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 7948b0ad
To https://gitee.com/lifeng200577/jenkins-05.git
   f600051..a8f911c  master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

查看是否同步

登录gitee网站,进入你的仓库内就可以看到了

完成以上操作后,访问代码仓库,就可以看到刚刚推送成功的README.md文件,在服务器上修改README.md文件里的内容,再次推送到代码仓库,测试是否能够推送更改的内容,操作如下:

[root@jenkins jenkins-05]# cd test3
[root@jenkins test3]# vi README.md 
[root@jenkins test3]# cat README.md 
12345678zaqwsxedc
[root@jenkins test3]# git add README.md
[root@jenkins test3]# git commit -m "first commit1"
[master b80ab54] first commit1
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins test3]# git push -u origin master
Username for 'https://gitee.com': lifeng200577
Password for 'https://lifeng200577@gitee.com': 
Counting objects: 7, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 312 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag b84e1985
To https://gitee.com/lifeng200577/jenkins-05.git
   a8f911c..b80ab54  master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

以上操作执行完成后,刷新网站后再次访问代码仓库,就可以看到README.md文件的内容发生更改,推送成功,如下图所示

2、下载zrlog

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

[root@jenkins test3]# wget https://codeload.github.com/94fzb/zrlog/zip/master
--2024-12-23 10:27:47--  https://codeload.github.com/94fzb/zrlog/zip/master
正在解析主机 codeload.github.com (codeload.github.com)... 20.205.243.165
正在连接 codeload.github.com (codeload.github.com)|20.205.243.165|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:未指定 [application/zip]
正在保存至: “master”
[                                                           <=>                               ] 3,351,642   41.7KB/s 用时 30s    
2024-12-23 10:28:18 (110 KB/s) - “master” 已保存 [3351642]

下载unzip,用于后续解压

yum -y install unzip

查看master包大小

du -sh master 

解压master

unzip master 

将zrlog-master下的文件全部移动到test3中(如果不是在test3中解压)

mv zrlog-master/* test3/

3、提交代码

[root@jenkins test3]# ls
master  README.md  zrlog-master
[root@jenkins test3]# git add zrlog-master/   
[root@jenkins test3]# git commit -m "add zrlog"
[root@jenkins test3]# git push
Username for 'https://gitee.com': lifeng200577
Password for 'https://lifeng200577@gitee.com': 
Counting objects: 824, done.
Compressing objects: 100% (736/736), done.
Writing objects: 100% (822/822), 2.42 MiB | 823.00 KiB/s, done.
Total 822 (delta 122), reused 0 (delta 0)
remote: Resolving deltas: 100% (122/122), completed with 1 local object.
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 56412083
To https://gitee.com/lifeng200577/jenkins-05.git
   b80ab54..0ecf6e2  master -> master

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

1.安装部署JDK(在Java主机上)

安装JDK软件包

https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm

[root@java ~]# ls
anaconda-ks.cfg  apache-maven-3.9.9-bin.tar.gz  apache-tomcat-9.0.98.tar.gz  jdk-21_linux-x64_bin.rpm
[root@java ~]# yum -y install jdk-21_linux-x64_bin.rpm 

查看是否被正确安装

[root@java ~]# java -version
java version "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)

    由于我们是yum直接安装的rpm包,所以不用配置环境变量也能直接使用;
    使用别的方法安装jdk的话,必须要进行解压并且配置环境变量,要不然不好使。

2.安装配置Tomcat(Java主机)

1.作用

 Tomcat是用来运行zrlog的容器

2.下载解压,存放在/usr/local/目录中

[root@java ~]# ls
anaconda-ks.cfg  apache-maven-3.9.9-bin.tar.gz  apache-tomcat-9.0.98.tar.gz  jdk-21_linux-x64_bin.rpm
[root@java ~]# tar -zxvf apache-tomcat-9.0.98.tar.gz -C /usr/local/

3.修改配置文件

配置管理员用户
修改配置文件之前,我们最好先进行备份,避免改错

[root@java ~]# cd /usr/local/tomcat/conf/
[root@java conf]# cp -r tomcat-users.xml tomcat-users.xml.bak

修改管理员用户配置文件

vi /usr/local/tomcat/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@java bin]# cd /usr/local/tomcat/webapps/manager/META-INF/
[root@java META-INF]# ls
context.xml
[root@java META-INF]# cp -r context.xml context.xml.bak

进行编辑

vi /usr/local/tomcat/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.232.*" />

配置全部完成后,我们进入到bin目录中进行启动

[root@java ~]# cd /usr/local/tomcat/bin/
[root@java bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

4.启动

访问:http://192.168.232.181:8080

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

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

完成验证后,成功进入manager平台,说明tomcat各项配置均配置成功。如下图所示:

3.安装maven(在本地机器里安装)

1.作用

Maven编译java的源码并打包

2.下载解压,放到/usr/local目录下

tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /usr/local/

改名

mv /usr/local/apache-maven-3.9.9/ /usr/local/maven

查看是否安装成功
进入/bin目录下进行查看

[root@jenkins ~]# cd /usr/local/maven/bin/
[root@jenkins bin]# ls
m2.conf  mvn  mvn.cmd  mvnDebug  mvnDebug.cmd  mvnyjp
[root@jenkins bin]# ./mvn --version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /usr/local/maven
Java version: 21.0.5, vendor: Oracle Corporation, runtime: /usr/lib/jvm/jdk-21.0.5-oracle-x64
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

在Jenkins上配置maven:

点击“Manage Jenkins”,点击“Global Tool Configuration”,找到“Maven配置”,填写Maven相关的文件路径。如下图:

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

配置完成后,点击应用保存

4.安装插件

1、安装

Maven Integration plugin    //用来创建一个maven的项目
Deploy to container Plugin   //用来将war包,发布到远程去

2、重启Jenkins(安装完插件后)

systemctl restart jenkins

重新进行登录

3、验证

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

5.创建maven项目

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

配置“源码管理”:选择“git”来进行源码管理;将私有的代码仓库的地址填入“Repository URL”。如下图:

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

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

完成配置后,点击应用保存。


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

相关文章:

  • Logback日志框架中的继承机制详解
  • Vue开发环境搭建上篇:安装NVM和NPM(cpnm、pnpm)
  • 【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版 (1)111
  • 结构化Prompt:让大模型更智能的秘诀
  • 单机游戏《野狗子》游戏运行时提示dbghelp.dll缺失是什么原因?dbghelp.dll缺失要怎么解决?
  • 使用Vue的props进行组件传递校验时出现 Extraneous non-props attributes的解决方案
  • 【每日学点鸿蒙知识】蓝牙Key、页面元素层级工具、私仓搭建、锁屏显示横幅、app安装到真机
  • 基于Spring Boot的网络购物商城的设计与实现
  • 软件测试之测试用例
  • 突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
  • 基于LR/GNB/SVM/KNN/DT算法的鸢尾花分类和K-Means算法的聚类分析
  • SpringBoot从入门到实战:动态解析MyBatis SQL字符串获取可执行的SQL
  • 深度学习的DataLoader是什么数据类型,为什么不可用来索引
  • python中bug修复案例-----图形界面程序中修复bug
  • Python数字图像处理课程平台的开发
  • WPS怎么都无法删除空白页_插入空白页一次插入两张?_插入横屏空白页_横屏摆放图片_这样解决_显示隐藏段落标记---WPS工作笔记001
  • 【多时段】含sop的配电网重构【含分布式电源】【已更新视频讲解】
  • “协同过滤技术实战”:网上书城系统的设计与实现
  • C# OpenCV机器视觉:颜色检测
  • vue前端项目中实现电子签名功能(附完整源码)
  • 物联网:全面概述、架构、应用、仿真工具、挑战和未来方向
  • 字符编码(四)
  • 谷歌开发者工具 -来源/源码篇
  • 【网络云计算】2024第51周-每日【2024/12/20】小测-理论-周测-解析
  • MySQL-MVCC(多版本并发控制)
  • 洛谷 P11242 碧树 C语言