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 commit1 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 commit1 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.gitf600051..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 commit11 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.gita8f911c..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.gitb80ab54..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.mzph.cn/pingmian/65187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5喷涂功能

许多FPS/TPS 游戏都有喷涂、涂鸦功能 其实原理很简单&#xff0c;就是利用了延迟贴花实现的 我们从网上随便找一张图 创建一个材质&#xff0c;材质域选择延迟贴花 混合模式选择半透明&#xff0c;自发光强度可以看感觉调整 材质做好之后编译保存&#xff0c;新建一个Actor…

ECCV-2024 | 指令不够用、大模型来生成!BEVInstructor:基于BEV感知和大模型的视觉语言导航指令生成

作者&#xff1a;Sheng Fan, Rui Liu, Wenguan Wang, and Yi Yang 单位&#xff1a;浙江大学 原文链接&#xff1a;Navigation Instruction Generation with BEV Perception and Large Language Models &#xff08;https://link.springer.com/chapter/10.1007/978-3-031-726…

电脑出现 0x0000007f 蓝屏问题怎么办,参考以下方法尝试解决

电脑蓝屏是让许多用户头疼的问题&#xff0c;其中出现 “0x0000007f” 错误代码更是较为常见且棘手。了解其背后成因并掌握修复方法&#xff0c;能帮我们快速恢复电脑正常运行。 一、可能的硬件原因 内存问题 内存条长时间使用可能出现物理损坏&#xff0c;如金手指氧化、芯片…

Ubuntu下ESP32-IDF开发环境搭建

Ubuntu下ESP32-IDF开发环境搭建 文章目录 Ubuntu下ESP32-IDF开发环境搭建一、前言二、软件安装三、开发环境搭建3.1 ESP-IDF安装&#xff1a;3.2 安装编译工具&#xff1a; 四、编译并烧录代码五、ESP32代码编辑工具 一、前言 ​ 开发ESP32&#xff0c;我们首先就要安装开发环…

Linux复习4——shell与文本处理

认识vim编辑器 #基本语法格式&#xff1a; vim 文件名 •如果文件存在&#xff0c;进入编辑状态对其进行编辑 •如果文件不存在&#xff0c;创建文件并进入编辑状态 例&#xff1a; [rootlocalhosttest]# vim practice.txt #Vim 编辑器三种模式&#xff1a; 命令模式&a…

5个实用的设计相关的AI网站

在这个日新月异的数字时代&#xff0c;我们不断面临着新的挑战和机遇。随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;越来越多的AI工具开始融入到设计相关的工作流程中&#xff0c;极大地提升了工作效率和创作能力。今天&#xff0c;我非常兴奋地向大家介…

云手机群控能用来做什么?

随着云手机的发展&#xff0c;云手机群控技术逐渐从小众的游戏多开工具&#xff0c;发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营&#xff0c;还是账号养成等场景&#xff0c;云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…

数据结构(哈希表(中)纯概念版)

前言 哈希表&#xff08;Hash Table&#xff09;是计算机科学中的一个基础而重要的数据结构&#xff0c;它广泛评估各种算法和系统中&#xff0c;尤其是在需要快速查找、插入和删除操作的场景中。由于其O( 1)的平均时间复杂度&#xff0c;存储表在性能要求较高的应用中表现得非…

Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)

教程概述 本教程先是幽络源初步教学分析掌阅书籍的网络结构&#xff0c;最后提供完整的爬取源码与使用说明&#xff0c;并展示结果&#xff0c;切记勿将本教程内容肆意非法使用。 原文链接&#xff1a;Python使用requests_html库爬取掌阅书籍&#xff08;附完整源码及使用说明…

水库大坝三维模型开发bim篇

效果图 开发过程 使用了bimface 插件上传做好rvt模型到bimface工程引入bimface相关的插件代码加载模型自定义目录树定位构件闪烁构件展示构件信息 代码 技术交流加V:bloxed appKey 和appSecret 换成自己的就行 <template><div class"box-bim w100" ref&…

CSharp: Oracle Stored Procedure query table

存储过程查询postgreSQL,Oracle 和sql server,Mysql 有区别。程序调用也是有区别。 oracle sql script: CREATE OR REPLACE PROCEDURE procSelectSchool(paramSchoolId IN char,p_cursor OUT SYS_REFCURSOR ) AS BEGINOPEN p_cursor FORSELECT *FROM SchoolWHERE SchoolId p…

C语言基础——指针(4)

一&#xff0e; 字符指针变量 字符指针变量的使用和整型指针变量的使用方法相似&#xff0c;以下是其基本使用方法的例子&#xff1a; &#xff08;1&#xff09;字符指针变量还有一种使用方法&#xff1a; const char* p "abcd" 需…

Net9解决Spire.Pdf替换文字后,文件格式乱掉解决方法

官方文档 https://www.e-iceblue.com/Tutorials/Spire.PDF/Program-Guide/Text/Find-and-replace-text-on-PDF-document-in-C.html C# 在 PDF 中查找替换文本 原文件如下图&#xff0c;替换第一行的新编码&#xff0c;把41230441044替换为41230441000 替换代码如下&#xff…

【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 1、输入数值 2、选择结构语句 3、计算结果并输出 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;编写一个程序&#xff0c;该程序需输入个人数据&#xff0c;进而预测其成年后的身高。 相关知识 为了完成本…

【自动化测试】windows下安装Selenium浏览器界面测试工具

Date: 2024.12.23 10:15:53 author: lijianzhan 简述&#xff1a;这篇教程详细介绍了如何在Windows环境下安装selenium&#xff0c;并设置Chrome浏览器驱动。什么是Selenium&#xff1f;Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端…

前端网络之【浏览器跨域问题分析与解决方案】

文章目录 同源策略同源与异源跨域的限制场景解决方案 CORS 请求分类 简单请求预检请求 注意点一 【关于Cookie】注意点二 【关于跨域获取响应头】 JSONP 基本流程 代理服务器 如何选择对应方案 同源策略 **同源策略是一套浏览器的安全策略机制&#xff0c;当一个源的文档和脚…

老旧小区用电安全保护装置#限流式防火保护器参数介绍#

摘要 随着居民住宅区用电负荷的增加&#xff0c;用电安全问题日益突出&#xff0c;火灾隐患频繁发生。防火限流式保护器作为一种新型电气安全设备&#xff0c;能够有效预防因电气故障引发的火灾事故。本文介绍了防火限流式保护器的工作原理、技术特点及其在居民住宅区用电系统…

论文复刻:ESG表现对企业价值的影响机制研究——A股上市公司证据(2009-2023年)

参照王波&#xff08;2022&#xff09;的做法&#xff0c;对来自软科学《ESG表现对企业价值的影响机制研究——来自我国A股上市公司的经验证据》一文中的基准回归部分进行复刻 以中国2009-2023年A股上市公司为研究样本考察企业的环境、社会和治理&#xff08;ESG&#xff09;表…

小程序租赁系统开发指南与实现策略

内容概要 在如今这个快节奏的时代&#xff0c;小程序租赁系统的开发正逐渐成为许多商家提升服务质量与效率的重要选择。在设计这样一个系统时&#xff0c;首先要明白它的核心目标&#xff1a;便捷、安全。用户希望在最短的时间内找到需要的物品&#xff0c;而商家则希望通过这…

[2003].第2-01节:关系型数据库表及SQL简介

所有博客大纲 后端学习大纲 MySQL学习大纲 1.数据库表介绍&#xff1a; 1.1.表、记录、字段 1.E-R&#xff08;entity-relationship&#xff0c;实体-联系&#xff09;模型中有三个主要概念是&#xff1a; 实体集 、 属性 、 联系集2.一个实体集&#xff08;class&#xff09…