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

部署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的默认端口,避免冲突)


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

相关文章:

  • JVM双亲委派与自定义类加载器
  • World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator
  • flink实战 -- flink SQL 实现列转行
  • Vue计算属性computed
  • Java NIO 深度解析:构建高效的 I/O 操作
  • 前端面试笔试(二)
  • Spring框架体系及Spring IOC思想
  • Ruoyi报‘com.ruoyi.system.api.RemoteLogService‘ that could not be found.
  • 典型的SAST支持检测标准
  • C语言:写一个函数,实现3*3矩阵的转置(指针)
  • 美团小游戏rpk包对接流程小记
  • 戴上HUAWEI FreeBuds Pro 3, 近离城市喧嚣,尽情享受无损音质在耳边漫游
  • 【Python】itertools模块,补充:可迭代对象、迭代器
  • Linux CentOS7 LVM
  • python通过numpy进行排序
  • 微服务--02--Nacos注册中心
  • Android RGB转YUV的算法
  • 网站定制开发主要分类有哪些|企业 app 软件小程序定制
  • ELK+kafka+filebeat企业内部日志分析系统
  • ChatGPT等模型:到2026年,将消耗尽高质量训练数据
  • K8S----taint、tolerations、label
  • 正则化与正则剪枝
  • ②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?
  • 22款奔驰GLE450升级原厂360全景影像 超广角的视野
  • IP地址与隐私:曝光的数字签名
  • Qt 样式表