一、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”可以实现无论构建成功或失败,都会发送邮件通知构建结果。
任务实施
- 安装插件
进入“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)可以手动设置随机字符串
任务实施:
- 破解管理员密码
[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”下添加一个额外的邮箱,注意前后需要使用英文逗号隔开,如下图所示,应用,保存。如下图:
完成配置后,点击应用保存。