部署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.hqwc.cn/news/223169.html

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

相关文章

01-鸿蒙4.0学习之开发环境搭建 HelloWorld

HarmonyOS开发学习 1.环境配置 1.下载地址 开发工具&#xff1a;DevEco Studio 3.1.1 Release 下载地址 安装选择快捷方式 安装nodejs和Ohpm 安装SDK 选择同意Accept 检测8项目是否安装成功 2.创建项目 —— hello word

用python实现kindle文件转换pdf

上一篇文章讲了下用工具转换相关的格式&#xff1a;https://blog.csdn.net/weixin_42019349/article/details/134654695 今天来分享一个python库实现上述功能&#xff0c;实现文件转换自由 ^_^ 主角就是pypandoc库 # 安装方式 pip install pypandoc# pypandoc主要有三个函数…

【高效开发工具系列】MapStruct入门使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

web:[NPUCTF2020]ReadlezPHP

题目 打开页面显示如下 没发现其他的线索&#xff0c;查看源代码 发现一个网址&#xff0c;访问这个页面查看 进行代码审计 这段代码是一个简单的 PHP 类&#xff0c;名为 HelloPhp。它有两个公共属性 $a 和 $b&#xff0c;并在构造函数中将它们分别初始化为字符串 "Y-m-…

每日一题--寻找重复数

蝶恋花-王国维 阅尽天涯离别苦&#xff0c; 不道归来&#xff0c;零落花如许。 花底相看无一语&#xff0c;绿窗春与天俱莫。 待把相思灯下诉&#xff0c; 一缕新欢&#xff0c;旧恨千千缕。 最是人间留不住&#xff0c;朱颜辞镜花辞树。 目录 题目描述&#xff1a; 思路分析…

IDEA中也能用postman了?

Postman是大家最常用的API调试工具&#xff0c;那么有没有一种方法可以不用手动写入接口到Postman&#xff0c;即可进行接口调试操作&#xff1f;今天给大家推荐一款IDEA插件&#xff1a;Apipost Helper&#xff0c;写完代码就可以调试接口并一键生成接口文档&#xff01;而且还…

如何将mobi、awz3、epub格式转化为pdf

偶然之间有个需求就是网上下载了一些书籍的格式没法打开看&#xff0c;或者是想把kindle的书籍转换成pdf 那么经过一番折腾找到了两个可以用的工具站分享给大家&#xff0c;有需要的可是尝试下&#xff0c;小编这边测试了可以用&#xff0c;就是下载的时候慢的一匹。。。 第一…

Mac 搭建本地服务器

文章目录 1 启动服务器2 服务器目录3 手机访问服务器3.1 手机和电脑连上同一个局域网( 或WIFI)3.2 找到电脑的ip地址 如下图所示3.3 手机打开 http://192.168.10.5/1.txt 4 关闭服务器5 参考文章 1 启动服务器 sudo apachectl start启动后访问 http://localhost/ 如下图所示即…

每日一题:LeetCode-202.快乐数(一点都不快乐)

每日一题系列&#xff08;day 06&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

力扣6:N字形变化

代码&#xff1a; class Solution { public:string convert(string s, int numRows){int lens.size();if(numRows1){return s;}int d2*numRows-2;int count0;string ret;//第一行&#xff01;for(int i0;i<len;id){rets[i];}//第k行&#xff01;for(int i1;i<numRows-1;…

SpringBoot——国际化

优质博文&#xff1a;IT-BLOG-CN 一、Spring 编写国际化时的步骤 【1】编写国际化配置文件&#xff1b; 【2】使用ResourceBundleMessageSource管理国际化资源文件&#xff1b; 【3】在页面使用ftp:message取出国际化内容&#xff1b; 二、SpringBoot编写国际化步骤 【1】创…

LINUX入门篇【10】---进程篇【2】---进程状态

前言&#xff1a; 有了上一篇关于进程的初步认识和我们的PCB第一个数据段–标识符的讲解&#xff0c;接下来我们将继续讲解PCB的其他数据段&#xff0c;本篇要讲的是进程状态。 进程状态&#xff1a; 就像我们写贪吃蛇的时候&#xff0c;构建的游戏状态来判定游戏结束的方式…