部署Jenkins

一、介绍 Jenkins

、Jenkins概念

  Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。

2、Jenkins目的

① 持续、自动地构建/测试软件项目。

② 监控软件开放流程,快速问题定位及处理,提示开放效率。

3、特性

① 开源的java语言开发持续集成工具,支持CI,CD。

② 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。

③ 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。

④ 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。

⑤ 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

⑥ 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

4、产品发布流程

产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线

持续集成(Continuous integration,简称CI)

持续交付(Continuous delivery)

持续部署(continuous deployment)

二、安装Jenkins

1、安装JDK

Jenkins是Java编写的,所以需要先安装JDK,这里采用yum安装,如果对版本有需求,可以直接在Oracle官网下载JDK;也可自己编译安装。

2、安装Jenkins

1、上传 jdk11 tomcat jenkins.war

#下载地址


[root@jenkins ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.83.tar.gz  ip_fixed.sh  jdk-17_linux-x64_bin.tar.gz  jenkins.war  yum-server.sh

2、安装依赖插件 

#安装依赖插件
[root@jenkins ~]# yum -y install dejavu-sans-fonts fontconfig xorg-x11-server-Xvfb

 3、解压tar包,改包名

# 解压jdk
[root@jenkins ~]# tar xf jdk-17_linux-x64_bin.tar.gz -C /usr/local/

# 解压tomcat
[root@jenkins ~]# tar xf apache-tomcat-9.0.83.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# ls
apache-tomcat-9.0.83  bin  etc  games  include  jdk-17.0.7  lib  lib64  libexec  sbin  share  src

# 改包名
[root@jenkins local]# mv apache-tomcat-9.0.83/ tomcat
[root@jenkins local]# mv jdk-17.0.7/ java
[root@jenkins local]# ls
bin  etc  games  include  java  lib  lib64  libexec  sbin  share  src  tomcat

 4、配置环境,检测jdk环境是否安装成功

[root@jenkins local]# vim /etc/profile.d/java.sh
JAVA_HOME=/usr/local/java
TOMCAT_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin

# 重载环境
[root@jenkins local]# source /etc/profile.d/java.sh

# 检测Java环境是否安装成功
[root@jenkins local]# java -version
java version "17.0.7" 2023-04-18 LTS
Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing)

5、启动tomcat,浏览器查看是否启动成功 

[root@jenkins local]# cd /usr/local/tomcat/
[root@jenkins tomcat]# ./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/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

浏览器查看    ip:8080

 6、将jenkins.war包拷贝到/usr/local/tomcat/webapps/目录下

[root@jenkins tomcat]# cp /root/jenkins.war webapps/
[root@jenkins tomcat]# ./bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@jenkins tomcat]# ./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/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

访问 ip:8080/jenkins (192.168.58.145:8080/jenkins)

首先需要解锁Jenkins,请在/var/lib/jenkins/secrets/initialAdminPassword中查看文件。

[root@jenkins ~]# cat /root/.jenkins/secrets/initialAdminPassword
d7da6b00ad444d10b6c001d255d73fac
[root@jenkins ~]# 

选择需要安装的插件

选择默认推荐即可,会安装通用的社区插件,剩下的可以在使用的时候再进行安装。  

设置Admin用户和密码  

 成功登录Jenkins

3、安装完后,简单的配置
1、将语言更改为中文

2、系统配置

 通过配置相应的系统信息,最后在测试配置,出现上述信息则表示测试邮箱信息发送成功,也可以在邮箱中查看信息。 

 3、安装插件

maven、blue ocean 、nodejs、gitlab

 

4、配置工具

 安装git

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

 在网页端添加git的相关信息

 安装maven,并在页面填写maven相关的信息

[root@jenkins ~]# ls
anaconda-ks.cfg                jdk-17_linux-x64_bin.tar.gz
apache-maven-3.8.5-bin.tar.gz  jenkins.war
apache-tomcat-9.0.83.tar.gz    yum-server.sh
ip_fixed.sh
                     
[root@jenkins ~]# tar xf apache-maven-3.8.5-bin.tar.gz  -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# mv apache-maven-3.8.5/ maven

[root@jenkins local]# vim /etc/profile.d/maven.sh
MAVEN_HOME=/usr/local/maven
PATH=$PATH:$MAVEN_HOME/bin

[root@jenkins local]# source /etc/profile.d/maven.sh
[root@jenkins local]# mvn -version
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: /usr/local/maven
Java version: 17.0.7, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
[root@jenkins local]# 

保存信息。

4、部署项目

1、新建任务

2、配置项目

以下要用到gitlab的相关部署信息,可以参考http://t.csdnimg.cn/nrPaF

 在gitlab服务器端获取私钥,并填写在页面相应位置

[root@gitlib ~]# cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtS6vhJiLwWFkrNH05WsrJrgcKjLzkyZfvviEktcWEb7bQS9E
pOFnvHIdHs7ncPjTDci0sktvZlVbAsSiy+p4CU0iIAeMcXAECe4QXw+5JxPDBewj
UStKvHW+stDHXUNbW935/GRKJxgMvgYJItVlci0libg2b5FNt7l+SQg8mfOxdtDk
qqrSmx9TBWf5bKt1x7XGsJP3xsFGbVY3eU8eJfqXQlkWWakXBLNOUhTVwQtktlM8
F3rkemigTgTh1zWij8LcP0wUc922EKa8BaC4sA0TcGcz1UVsz9Wj/SVMEYmMZbDI
G+KPrOynYL2/nv6vvOtDd11kNFSBPnIhoEiGCwIDAQABAoIBAQCsO8EmL01Le6YU
k1JWdNYEbKh5hQ3/KE+EXwLIBCc6n1AWWzTJ+GyAu4nrK4zf2+nmBJGhnAw+H43w
x7RqXG3XibeS8xoTDAUK24A8ndnIyARwsNWx55GYLeYmXknm4o0Ke62UvFGxcC9M
xLgSoQFa1IgGr1MwI9TZfkAKdQYG4gRyEY1VCLoQxP1ec4DI/Ry15M6Qx2/c6b/N
B3A4WPCrNxo7KamJdn8a1JMt1f/nQUk//ZEJgB/CTiNZTPClj+Vmh2h8Uo2xhtiu
j5UPtvU/IA8ca8TyWKhNRBaXGtUIFEi2i2VAVruIccpfGW8WnD/2FWk5QZXBfUv3
PDoZR55hAoGBAN7Q0Q+lyaN7MoyipCElqjUA2EXIZtMtJEXSUNt+bsobgaDznLjw
2NvwXO28svUQoCj+Nl31k2NDP5zFIxMqmm/KxEIm8WVwOhCkiBYTb2+Zv/BBWrxK
5SUz/KSAORqp2cqgeLvL9wJp49LeMzThDcuvLjlPR3Yo8mVQmHVkGJSHAoGBANAq
iS3EHGipv+kik5cSRLwWl8tGqX/nZq0tq9+Sf8aJoICtjxh6WeKL5gZenFoZ4zwb
wZuEzG2x+6zEqSingjgNWFmMurKt4yXq+e4wE4POd9BoOEPOTU0OzbkcGvAn/UTG
XnpKYYz4KQz7f7e6jsliSFvvI0OVlga9egGd9iddAoGBALp1Lm4Uw69d+kg8FnNy
rIPcaB/Fe16/CPqw7F8x546UBB9nncAaNK+g7nM4FN4FgrGrQl3Qkv1fGk2bnyV7
4m8o1KGzKxFDICQrO4KV0wwmMrvgRQkK98TxQzt53c+VUZ9COKaXIebQLAmbTmiy
6LOJrnnhASE9VNM55cte7z7jAoGAQw7w0gVzAWRtpjS1Rt1jtxOwIpPI1qM8uF0W
GReggdykD8/ZYRFJE2nt1+9yfrQIN7zZSbgmAtBrOuS/eZE8qcHizDZBjn3lxrlD
ei+SmctRXZm1RmKXFFPIgfFD3EmFlToyBUMg2cC3uK7sHcvDY6x9kuAehA8UHWe8
ffjc6yECgYBB+3Qi6TaJU5kug1nrL+WIuYUC/8YYExlXsmXGLs8GeHBhdytKCIb1
BQiLYIGvrhxwqhvlsjKrfQNgUiT7cKkh5XzPB5MfSgfGb93PwarZhh0YLVqI3YsB
zqHgbpc3ZBI5Zjm33LZGq0a8ZPeC/MMBy3Jkp07035G2gPxwhOfBbA==
-----END RSA PRIVATE KEY-----
[root@gitlib ~]# 

 在jenkins所在的主机上安装nginx,在将代码拉去下来之后,将/usr/share/nginx/html/下的文件备份,将新拉取的代码拷贝到/usr/share/nginx/html/下,并修改权限。

echo "代码拉取完毕,开始推送" 
tar czf /opt/nginx_html_`date "+%F-%H_%M_%S"`.tar.gz /usr/share/nginx/html/
rm -rf /usr/share/nginx/html/*
cp -r /root/.jenkins/workspace/nginx_test/love-master/* /usr/share/nginx/html/
chmod 777 -R /usr/share/nginx/html/

将下述内容填写相应位置

# Default Subject

项目 【$PROJECT_NAME】 第【$BUILD_NUMBER】次构建 - $BUILD_STATUS! 

# Default Content

<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    
    offset="0">    
    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<h3>本邮件由系统自动发出,请勿回复!</h3>    
        <tr>    
           <br/>            
            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> 
            <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   
        </tr>    
        <tr>    
            <td><br />    
            <b><font color="#0B610B">构建信息</font></b>    
            <hr size="2" width="100%" align="center" /></td>    
        </tr>    
        <tr>    
            <td>    
                <ul>    
                    <li>项目名称 : ${PROJECT_NAME}</li>    
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    
                    <li>触发原因: ${CAUSE}</li>    
                    <li>构建状态: ${BUILD_STATUS}</li>    
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
                </ul>    

<h4><font color="#0B610B">最近提交</font></h4>
<ul>
<hr size="2" width="100%" />
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

            </td>    
        </tr>    
    </table>    
</body>    
</html>

gitlab服务端的文件:

[root@gitlib yun2304]# ls
java_code  love-master  README.md  web_code  后端  开发人员信息  前端

在jenkins服务端进行验证:

[root@jenkins nginx_test]# ll
总用量 12
drwxr-x---. 2 root root   22 11月 22 19:38 java_code
drwxr-x---. 4 root root  195 11月 22 19:38 love-master
-rw-r-----. 1 root root 6170 11月 22 19:38 README.md
drwxr-x---. 3 root root   41 11月 22 19:38 web_code
drwxr-x---. 2 root root   22 11月 22 19:38 后端
-rw-r-----. 1 root root   99 11月 22 19:38 开发人员信息
drwxr-x---. 2 root root   22 11月 22 19:38 前端

 浏览器访问 :192.168.58.153:85  (这里修改了nginx的默认端口,避免冲突)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/192320.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第五十天|309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费

LeetCode 309. 买卖股票的最佳时机含冷冻期 题目链接&#xff1a;309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 所谓的冷冻期&#xff0c;就是卖了股票后的第二天不能买入该股票&#xff08;股票上的N2,N1是今天卖明天能买)&#xff0c;所以影响到…

推荐你一个基于Koin, Ktor Paging等组件的KMM Compose Multiplatform项目

推荐你一个基于Koin, Ktor & Paging等组件的KMM Compose Multiplatform项目 Kotlin Multiplatform Mobile&#xff08;KMM&#xff09;已经从一个雄心勃勃的想法发展成为一个稳定而强大的框架&#xff0c;为开发人员提供了在多个平台上无缝共享代码的能力。通过最近的稳定…

肖sir __数据库练习__001

建表语句&#xff1a; create table student ( id int(4),age int(8),sex int(4),name varchar(20), class int(4), math int(4)) DEFAULT charsetutf8; INSERT into student VALUES(1,25,1,‘zhansan’,1833,90); INSERT into student VALUES(2,25,1,‘lisi’,1833,67); INSER…

单片机学习1——点亮一个LED灯

Keil软件编写程序&#xff1a; 特殊功能寄存器声明&#xff1a; #include<reg52.h>sbit LED P1^0;void main() {LED 0;while(1); } 代码说明&#xff1a; sbit 语句是特殊功能位声明。 生成HEX文件&#xff0c;这个文件是下载到单片机里的文件。Options for Target…

三方支付接口成为了电商竞争力的新动力

在当前快速发展的互联网时代&#xff0c;随着电子商务行业的兴起&#xff0c;支付体验已经成为企业获取竞争优势的重要因素。一个快速、安全、便捷的支付环节不仅可以提升用户的体验&#xff0c;还能有效促进交易的完成。在众多支付解决方案中&#xff0c;三方支付接口因其独特…

CMakeList项目构建

CMakeList项目构建 OVERVIEW CMakeList项目构建cmake1.变量定义2.指定源文件路径3.指定头文件路径4.字符串操作5.日志打印6.预定义宏 cmake、makefile都是项目构建工具&#xff0c;通过make命令进行项目构建&#xff0c;大多的IDE都集成了make项目构建&#xff0c;如visual stu…

Java Flight Record 详解

核心概念 Java Flight Record 提供一个低开销的数据收集框架&#xff0c;用于对 Java 应用程序和 HotSpot JVM 进行故障排除。Flight Recorder 记录源自应用程序、JVM和操作系统的事件 Flight Record&#xff0c;顾名思义&#xff0c;相当于飞机黑匣子里保存的飞行记录 事件 …

2023-11-27 LeetCode每日一题(子数组的最小值之和)

2023-11-27每日一题 一、题目编号 907. 子数组的最小值之和二、题目链接 点击跳转到题目位置 三、题目描述 给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff…

Shopee买家号想要多开怎么解决?

拥有多个Shopee买家号有很多优势。多账号可以帮助卖家获得更多流量、还能帮助提供关键词排名、提高销量等。 但是要管理多个Shopee买家号并非易事。面对不同账号的登录、注销和切换&#xff0c;可能会花费大量的时间和精力。而且&#xff0c;Shopee平台对于使用同一IP地址同时登…

DevEco Studio在预览器上快速定位元素所在的组件代码位置

常规开发过程中 如果我们的组件过多 找对象就会比较困难 我们可以点击如下图指向位置 这边呢 就有一个组件树 我们可以快速定位到当前元素的代码位置 同时你在点元素的时候 代码它也给你标记出来了

仅2万粉,带了2.6万件的货!TikTok Shop美区达人周榜(11.13-11.19)

11月24日&#xff0c;TikTok Shop近日公布了美国市场和英国市场的全托管黑五大促战绩。数据显示&#xff0c;11月14日至11月20日&#xff0c;其美国市场的订单量环比10月20日-10月26日增长了205%。 家居户外热销品有&#xff1a;数码触摸屏相框、毛绒地毯、家居毛毯。黑马商品…

C语言基础篇5:指针(一)

指针是C语言的核心、精髓所在&#xff0c;用好了指针可以在C语言编程中起到事半功倍的效果。指针一方面可以提高程序的编译效率和执行速度&#xff0c;而且还可以通过指针实现动态的存储分配&#xff0c;另一方面使用指针可使程序更灵活&#xff0c;便于表示各种数据结构&#…

学习.NET验证模块FluentValidation的基本用法(续3:ASP.NET Core中的调用方式)

FluentValidation模块支持在ASP.NET Core项目中进行手工或自动验证&#xff0c;主要验证方式包括以下三种&#xff1a;   1&#xff09;手工注册验证类&#xff0c;并在控制器或其它模块中调用验证&#xff1b;   2&#xff09;基于ASP.NET验证管道&#xff08;validation …

CountDownLatch实战应用——批量数据多线程协调异步处理(主线程执行事务回滚)

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; CountDownLatch实战应用——批量数据多线程协调异步处理(主线程执行事务…

基于SpringBoot的超市信息管理系

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着我国经济的不断发…

送PDF书 | 豆瓣9.2分,超250万Python新手的选择!蟒蛇书入门到实践

在此疾速成长的科技元年&#xff0c;编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中&#xff0c;Python就像是那位独领风 骚的超级巨星&#xff0c; 以其简洁易懂的语法和强大的功能&#xff0c;脱颖而出&#xff0c;成为全球最炙手可热的编程语言之一。 …

【第二节:微信小程序 app.json配置】微信小程序入门,以思维导图的方式展开2

以思维导图的方式呈现出来&#xff0c;是不是会更加直观一些呢 如果看不清楚&#xff0c;私信给单发 &#xff1a; 第二节&#xff1a;微信小程序 app.json配置&#xff1a; 包括&#xff1a; window pages tabBar networkTimeout debug 如下图所示&#xff1a; 2、ap…

使用 OpenCV 发现圆角矩形的轮廓

OpenCV - 如何找到圆角矩形的矩形轮廓? 问题: 在图像中,我试图找到矩形对象的圆角轮廓。然而,我对两者的尝试 HoughLinesP 并 findContours 没有产生预期的结果。 我的目标是找到一个类似于以下形状的矩形: 。 代码: import cv2 import matplotlib.pyplot as plt…

亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证

近日&#xff0c;亚信科技AntDB数据库与苏州库瀚信息科技有限公司自主研发的RISC-V数据库存储解决方案进行了产品兼容测试。经过双方团队的严格测试&#xff0c;亚信科技AntDB数据库与库瀚数据库存储解决方案完全兼容、运行稳定。除高可用性测试外&#xff0c;双方进一步开展TP…

[C/C++]数据结构 堆排序(详细图解)

一:前言 在[C/C]数据结构 堆的详解中,介绍了什么是堆,并且完成了堆的实现和一系列接口,包括向上调整法和向下调整法等,接下来小编介绍一个有点量级的排序方法------堆排序,时间复杂度为O(n*lgn) 二:堆排序详解 2.1 方法介绍 1.首先将待排序数组建为大堆,此时堆顶元素就为数组…