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

Jenkins 持续集成部署——Jenkins实战与运维(1)

一、Jenkins 相关配置及代码发布

1. Jenkins 发布 php 代码

1.1 安装插件

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

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

[root@jenkins ~]# systemctl restart jenkins

2. 配置  publish Over SSH

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

[root@jenkins ~]# mkdir /root/.ssh
[root@jenkins ~]# cd ~/.ssh

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

[root@jenkins .ssh]# ls -al
总用量 8
drwx------. 2 root root   38 12月 17 15:20 .
dr-xr-x---. 7 root root  256 12月 17 15:19 ..
-rw-------. 1 root root 1679 12月 17 15:20 id_rsa
-rw-r--r--. 1 root root  408 12月 17 15:20 id_rsa.pub

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

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

3. 添加 SSH Server

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

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

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

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

[root@test .ssh]# vi authorized_keys 

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

[root@jenkins ~]# ssh 192.168.200.71

        尝试登陆成功后,登录jenkins,进入“Manage Jenkins”,点击“Configure System”,下滑找到“SSH Servers”,填写所需要连接机器的各项设置,然后点击“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. 将代码发布到对方机器

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

二、Jenkins 邮件配置

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

        首先进入“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里去配置接收邮件的地址。在已经构建过的项目ipromise中,点击“配置”,如下图:

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

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

三、插件 email-ext

1.配置 Extended E-mail Notification

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

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

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

2. 配置对应任务

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

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

3. 发送邮件测试

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

四、Jenkins 破解管理员密码

1. 破解管理员密码

[root@jenkins ~]# cd /var/lib/jenkins/users
[root@jenkins users]# ls -la
总用量 12
drwxr-xr-x.  3 root    root      57 12月 17 14:58 .
drwxr-xr-x. 11 jenkins jenkins 4096 12月 18 08:16 ..
drwx------.  2 root    root      24 12月 17 20:36 admin_13975910729098858436
-rw-r--r--.  1 root    root     301 12月 17 14:58 users.xml
[root@jenkins users]# cd admin_13975910729098858436
[root@jenkins admin_13975910729098858436]# vi config.xml 
搜索定位到 <passwordHash>那一行,修改为
<passwordHash>#jbcrypt:$2a$10$usctvlMlqJ8XswbJ0QCcRuZ6ItKL30r0mEXXi5cXCrnWITuyP2E5W</passwordHash> 

[root@jenkins admin_13975910729098858436]# systemctl restart jenkins
新密码为 000000

2. 手动设置随机字符串

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

五、Jenkins 部署 java项目

1. 准备工作

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

[root@jenkins ~]# ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"
[root@jenkins ~]# cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJvm5NIavNB9Xpv3pdcSStS/hf47D2VK+SGKAGl4dnsZ 3193752631@qq.com

        复制生成后的 ssh key,返回gitee个人主页,通过主页 「个人设置」->「安全设置」->「SSH 公钥」 ,将生成的“SSH密钥”添加到仓库中。如下图。

2. 连接代码仓库

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

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

[root@jenkins perfect]# vi README.md 
dshihihohsdoodou
[root@jenkins perfect]# git add README.md
[root@jenkins perfect]# git commit -m "first commit1"
[master 5742dd6] first commit1
 1 file changed, 1 insertion(+)
[root@jenkins perfect]# git push -u origin master
Username for 'https://gitee.com': gitee-ipromise
Password for 'https://gitee-ipromise@gitee.com': 
Counting objects: 5, done.
Writing objects: 100% (3/3), 258 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 8e4a2b83
To https://gitee.com/gitee-ipromise/perfect.git
   b7f5d97..5742dd6  master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

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

3. 下载 zrlog

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

[root@jenkins home]#  wget https://codeload.github.com/94fzb/zrlog/zip/master
--2024-12-18 16:26:40--  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.1”

    [                                                                                         <=>                        ] 3,351,642    106KB/s 用时 32s    

2024-12-18 16:27:12 (103 KB/s) - “master.1” 已保存 [3351642]

[root@jenkins home]# du -sh master  
3.2M	master
[root@jenkins home]# unzip master 
[root@jenkins home]# mv zrlog-master/* perfect/

4. 提交代码

[root@jenkins home]# cd perfect/
[root@jenkins perfect]# git add .
[root@jenkins perfect]# git commit -m "add zrlog"
[root@jenkins perfect]#  git push
warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching'
修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
进行如下设置:

  git config --global push.default matching

若要不再显示本信息并从现在开始采用新的使用习惯,设置:

  git config --global push.default simple

参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple' 模式)

Username for 'https://gitee.com': gitee-ipromise
Password for 'https://gitee-ipromise@gitee.com': 
Counting objects: 802, done.
Compressing objects: 100% (714/714), done.
Writing objects: 100% (800/800), 2.37 MiB | 1.57 MiB/s, done.
Total 800 (delta 111), reused 0 (delta 0)
remote: Resolving deltas: 100% (111/111), done.
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 26402e87
To https://gitee.com/gitee-ipromise/perfect.git
   5742dd6..f00fa55  master -> master

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

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

(1)解压 jdk 包

        将jdk-17.0.10_linux-x64_bin.tar.gz 上传到远程机器/usr/local下

[root@test ~]# cd /usr/local/
[root@test local]# mkdir java
[root@test local]# mv jdk-17.0.10_linux-x64_bin.tar.gz /usr/local/java/jdk-17.0.10_linux-x64_bin.tar.gz
[root@test local]# cd java/
[root@test java]# tar -zxvf jdk-17.0.10_linux-x64_bin.tar.gz 

(2)配置 java 的环境变量

[root@test java]# vi /etc/profile
添加如下内容:
export JAVA_HOME=/usr/local/java/jdk-17.0.10
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@test java]# source /etc/profile

(3)验证

[root@test java]# java -version
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)


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

相关文章:

  • springboot-starter版本升级es版本问题
  • 【5】C#期末复习第5套
  • WPF自定义窗口 输入验证不生效
  • 图书借阅管理系统|SpringBoot|HTML|web网站|Java【源码+数据库文件+包部署成功+答疑解惑问到会为止】
  • Qt之QML应用程序开发:给应用程序添加图标文件
  • iClient3D for Cesium 实现限高分析
  • 【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
  • 如何给负载均衡平台做好安全防御
  • 2025前端面试热门题目——计算机网络篇
  • SpringCloud 运用(2)—— 跨服务调度
  • Conda 使用全解析:从入门到精通
  • JavaWeb Servlet的反射优化、Dispatcher优化、视图(重定向)优化、方法参数值获取优化
  • Qt for Python (PySide6)设置程序图标和任务栏图标
  • 【求职面试】大学转专业面试自我介绍模板7篇
  • 解决:websocket 1002 connection rejected 426upgrade required
  • 路径规划之启发式算法之二十:麻雀搜索算法(Sparrow Search Algorithm,SSA)
  • 搭建简易版本的git私有仓库--运用git和gitea
  • 灭屏情况下,飞行模式+静音模式+插耳,播放音乐,电流异常
  • 层序遍历练习
  • 重温设计模式--组合模式
  • 【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
  • 终章:DevOps实践总结报告
  • 鸿蒙人脸识别
  • RISC-V架构的压缩指令集介绍
  • 【Quartz】任务调度
  • Qt C++ 下网络通信与文件发送的实现