Jenkins第一讲
目录
一、Jenkins
1.1 敏捷开发与持续集成
1.1.1 敏捷开发
1.1.2 持续集成
1.2 持续集成工具
1.2.1 jenkins和hudson
1.2.2 技术组合
1.2.3 部署方式对比
1.3 安装Jenkins
1.3.1 下载Jenkins的war包
1.3.2 开启Jenkins
1.4 Jenkins全局安全配置
1.5 使用Jenkins部署项目
1.5.1 准备linux的安装环境
1.5.2 安装git
1.5.3 安装maven
1.6 Jenkins的全局工具配置
1.6.1 配置maven的setting.xml
1.6.2 配置jdk的环境
1.6.3 配置git的环境
1.6.4 配置maven的环境
1.6.5 下载maven插件
1.7 创建任务
1.8 项目出现问题
1.9 插件下载失败
一、Jenkins
1.1 敏捷开发与持续集成
1.1.1 敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
1.1.2 持续集成
因为开发部门同时维护多个版本,多个版本的发布,测试需要大量人力,所以要有一个专业的持续集成工具来管理持续重复的工作。
需求(产品部)文档 -->开发-->测试-->上线
1.2 持续集成工具
1.2.1 jenkins和hudson
1) Jenkins是一个持续集成(CI)工具。它可以持续编译,运行你的代码;运行单元测试(UT)或集成测试;将运行结果发送至邮件,或展示成报告。
2) Jenkins起源于Hudson。Hudson在商业软件的路上继续前行,而Jenkins则作为开源软件,从hudson分支出来。 因此现在的jenkins和hudson非常类似,但是随着二者各自的发展,已经有了一些不同。
1.2.2 技术组合
Jenkins 可以整合 GitHub 或 Subversion
Husband 也可以整合 GitHub 或 Subversion
二者既然是同源的工具软件,操作和指导思想就是接近的
1.2.3 部署方式对比
javaEE项目部署方式对比
1)手动化部署
2)自动化部署
“自动化”的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序。
搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。
对于程序员的日常开发来说不会造成任何额外负担,自己把代码提交上去之后,服务器上运行的马上就是最新版本,一切都发生在无形中。
1.3 安装Jenkins
Jenkins的war包要安装在tomcat的webapps目中,所以在进行安装之前,需要测试tomcat能否正常使用
开启tomcat后在浏览器进行访问,可以访问到官网即可
#可以只查询进程的第二列
[root@localhost tomcat]# ps -ef|grep tomcat|awk '{print $2}'
52016
52057
1.3.1 下载Jenkins的war包
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.332.2/?C=N&O=D
或者
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.336/
1.3.2 开启Jenkins
将war放到tomcat下面的webapps里,启动tomcat,并访问 [ ip地址:端口号/jenkins ]例如:192.168.111.127:8080/jenkins
访问后出现下图
下载的时间会比较长,在等待的时间里可以了解更改一下如何更改jenkins的默认访问地址
但是请不要更改,因为浏览器里的老爷爷还在努力下载插件
访问Jenkins的访问地址的工作目录
vim /root/.jenkins/hudson.model.UpdateCenter.xml
进入jenkins的工作目录,打开hudson.model.UpdateCenter.xml将 url 中的
https://updates.jenkins.io/update-center.json
更改为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json是国内的清华大学的镜像地址。
或者更改为http://updates.jenkins.io/update-center.json,即去掉 https 中的 s 。
1.4 Jenkins全局安全配置
1.5 使用Jenkins部署项目
1.5.1 准备linux的安装环境
linux中需要安装jdk,tomcat,git,maven;已经安装过jdk和tomcat,所以这里重点讲述如何安装git和maven
1.5.2 安装git
1、安装依赖环境
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
安装命令:
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install -y gcc perl-ExtUtils-MakeMaker
Dependency Updated:curl.x86_64 0:7.29.0-59.el7_9.1 expat.x86_64 0:2.1.0-15.el7_9 gettext.x86_64 0:0.19.8.1-3.el7 gettext-libs.x86_64 0:0.19.8.1-3.el7 libcurl.x86_64 0:7.29.0-59.el7_9.1 libdb.x86_64 0:5.3.21-25.el7 libdb-utils.x86_64 0:5.3.21-25.el7 libssh2.x86_64 0:1.8.0-4.el7
Complete! #代表安装完成
2、删除已经有的git
删除系统自带的git
yum -y remove git
Dependency Removed:gettext-devel.x86_64 0:0.19.8.1-3.el7 perl-Git.noarch 0:1.8.3.1-23.el7_8
Complete! #代表卸载成功
3、安装tar包并解压
下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
tar -zxvf git-2.9.3.tar.gz
4、编译
进入解压目录 cd git-2.9.3
make prefix=/usr/lwl/soft/git all
make prefix=/usr/lwl/soft/git install
5、配置环境变量
export GIT_HOME=/usr/lwl/soft/git
export PATH=$GIT_HOME/bin:$PATH
配置完环境变量之后,要让配置文件生效
source /etc/profile
6、查看git版本
[root@localhost git-2.9.3]# git --version
git version 2.9.3
1.5.3 安装maven
1、安装压缩包并解压
下载地址:https://downloads.apache.org/maven/maven-3
tar -zxvf apache-maven-3.6.3-bin.tar.gz
2、配置环境变量
export MAVEN_HOME=/usr/lwl/soft/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH配置完环境变量,使配置文件生效source /etc/profile
3、查看maven版本号
mvn -v 或者是 mvn -version
[root@localhost maven]# mvn -v
#版本号是3.6.3
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/lwl/soft/maven/apache-maven-3.6.3
Java version: 1.8.0_362, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
4、安装插件
mvn help:system
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:26 min
[INFO] Finished at: 2023-02-22T03:32:23-05:00
[INFO] ------------------------------------------------------------------------
1.6 Jenkins的全局工具配置
1.6.1 配置maven的setting.xml
1.6.2 配置jdk的环境
1.6.3 配置git的环境
1.6.4 配置maven的环境
1.6.5 下载maven插件
1.7 创建任务
1、创建任务
2、源码管理
注意:url的地址的配置需要说明
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"ssh-keygen -t rsa -b 4096 -C "qq@qq.com"
这条命令的目的是为了让本地机器ssh登录远程机器上的Gitee账户无需输入密码
1、ssh-keygen:
SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
从客户端来看,SSH提供两种级别的安全验证:第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。第二种级别(基于密匙的安全验证)ssh-keygen:需要依靠密匙,你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。ssh-keygen有很多的参数,比如这里的-t -b -C都是他的一些参数。
2、-t rsa:t是type的缩写
-t即指定密钥的类型,密钥的类型有两种,一种是RSA,一种是DSA:RSA:RSA加密算法是一种非对称加密算法,是由三个麻省理工的牛人弄出来的,RSA是他们三个人姓的开头首字母组合。DSA:Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种。
为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。ssh-keygen默认使用rsa密钥,所以不加-t rsa也行,如果你想生成dsa密钥,就需要加参数-t dsa。
3、-b 4096:b是bit的缩写
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。命令中的4096指的是RSA密钥长度为4096位。
DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。
4、-C "邮箱":C是comment的缩写
-C表示要提供一个新注释,用于识别这个密钥,所以“”里面不一定非要填邮箱,可以是任何内容,邮箱仅仅是识别用的key
总结:当你创建ssh的时候:-t 表示密钥的类型 ,-b表示密钥的长度,-C 用于识别这个密钥的注释 ,这个注释你可以输入任何内容,很多网站和软件用这个注释作为密钥的名字
去.ssh文件夹里面找到id_rsa.pub文件并将这个文件里面的信息复制到gitee里面
5、生成的公钥放在这个文件中
vim /root/.ssh/id_rsa.pub
3、构建触发器
#每十五分钟构建一次
H/15 * * * *
4、Pre steps
构建之前的步骤
当我们在使用maven进行构建时,忽略对应的测试类,
clean package -U -Dmaven.test.skip=true
5、post steps
BUILD_ID=DONTKILLME
jenkins启动之后会自动退出当前的进程 加上上面一句话表示不自动退出
#脚本内容
BUILD_ID=DONTKILLME
echo "部署的目录和项目名称"
sh /usr/lwl/test/build.sh
echo "success"
对应脚本中的内容是
#! /bin/bash
echo "部署的目录和项目名称"
DIR="/usr/lwl/project"
projectName="demo"
echo "待部署的应用服务器"
server_ips="192.168.111.127"
#所有的参数列表
for server_ip in ${server_ips[@]}
do
echo "进行备份操作"
# 创建文件夹
mkdir -p $DIR/backup/${projectName}if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
# 备份原来的项目
date=` date +%Y%m%d-%H-%M-%S `mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}.jar-${date}fi
echo "拷贝jar包到目标服务器的目录下"
cp ${WORKSPACE}/target/*.jar $DIR/${projectName}/${projectName}.jar
echo "连接进行发布操作"
echo "开始关闭jar"
l=`ps -ef|grep demo.jar|grep -v grep|awk '{print $2}'`
for i in $l
dokill -9 $i
done
sleep 5s
echo "启动jar"
nohup java -jar $DIR/demo/demo.jar --server.port=9999 > release_out.log 2>&1 &start_ok=false
done
最后保存配置即可
1.8 项目出现问题
1、如果SpringBoot项目pom文件中打包时打成war包,改成jar包即可
2、配置全局安全时的时候 ,写错了一个字符
1.9 插件下载失败
这个插件网址是否可以在网页中打开
http://mirror.xmission.com/jenkins/updates/current/update-center.json
如可以,把这个网址粘贴到“Jenkins/插件管理/高级/升级站点” 提交。
原来的地址是:http://updates.jenkins.io/update-center.json
相关文章:

Jenkins第一讲
目录 一、Jenkins 1.1 敏捷开发与持续集成 1.1.1 敏捷开发 1.1.2 持续集成 1.2 持续集成工具 1.2.1 jenkins和hudson 1.2.2 技术组合 1.2.3 部署方式对比 1.3 安装Jenkins 1.3.1 下载Jenkins的war包 1.3.2 开启Jenkins 1.4 Jenkins全局安全配置 1.5 使用Jenkins部…...

变分推断 | MATLAB实现VBMC变分贝叶斯蒙特卡洛模拟的贝叶斯推断
变分推断 | MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断 目录 变分推断 | MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断效果一览基本介绍研究内容模型描述模型设计参考资料效果一览 基本介绍 MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断。变分贝叶斯蒙特卡洛(VBMC)是…...

代码随想录【Day25】| 216. 组合总和 III、17. 电话号码的字母组合
216. 组合总和 III 题目链接 题目描述: 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n 7 输…...

web中git漏洞的形成的原理及使用
目录 1.Git漏洞的成因 1.不正确的权限设置: 2.代码注入漏洞: 3.未经身份验证的访问: 4.非安全传输: 5.跨站脚本攻击(XSS): 2.git泄露环境的搭建 git init: git add࿱…...

【SPSS】单样本T检验分析详细操作教程(附案例实战)
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...

计算机网络笔记、面试八股(三)—— HTTPS协议
本章目录3. HTTPS协议3.1 HTTPS协议简介3.2 SSL/TLS协议3.2.1 SSL/TLS功能的实现3.3 HTTP和HTTPS的区别3.4 HTTPS协议的优点3.5 HTTPS协议的缺点3.6 HTTPS协议的工作流程3.7 HTTPS是如何解决HTTP的缺点的3.7.1 解决内容可能被窃听的问题——加密3.7.1.1 方法1.对称加密3.7.1.2 …...

浅谈liunx init.d 和 rc.local 两种起动方式
浅谈liunx init.d 和 rc.local 两种起动方式 以rabbitmq 举例 (一).init.d 方式 开机自动重启设置 1.在/etc/init.d 目录下新建一个 rabbitmq [rootlocalhost init.d]# vi rabbitmq具体脚本如下所示: #!/bin/bash # # chkconfig: 2345 …...

元宇宙+教育,正在引发哪些剧烈变革?机会在哪里?丨圆桌实录
图片来源:由无界AI绘画工具生成2月23日,温州元宇宙创新中心为2023年第一批申请入驻的项目企业举办了签约仪式。温州临境网络科技有限公司、温州好玩文化产业有限公司、温州云兮科技有限公司(筹)等企业完成签约。这意味着ÿ…...

追梦之旅【数据结构篇】——详解C语言实现顺序队列
详解C语言实现顺序队列~😎前言🙌预备小知识🙌队列的概念及结构😊1.顺序队列头文件编写🙌2.Queue.c文件的编写🙌1)队列的初始化函数实现😊2)队列的销毁函数实现Ƕ…...
使用自己的数据集Fine-tune PaddleHub预训练模型
使用自己的数据Fine-tune PaddleHub预训练模型 果农需要根据水果的不同大小和质量进行产品的定价,所以每年收获的季节有大量的人工对水果分类的需求。基于人工智能模型的方案,收获的大堆水果会被机械放到传送带上,模型会根据摄像头拍到的图片…...

带组态物联网平台源码 代码开源可二次开发 web MQTT Modbus
物联网IOT平台开发辅助文档 技术栈:JAVA [ springmvc / spring / mybatis ] 、Mysql 、Html 、 Jquery 、css 使用协议和优势: TCP/IP、HTTP、MQTT 通讯协议 1.1系统简介 IOT通用物联网系统平台带组态,是一套面向通用型业务数据处理的系统…...

计算机网络的发展历程
计算机网络的历史可以追溯到20世纪60年代。那个时候,计算机还非常昂贵,只有少数大型机可以被用于处理重要任务。这些大型机通常被安装在大型企业、政府机构和大学中。由于这些机器非常昂贵,许多企业、机构和大学只能通过终端连接来访问它们。…...

【华为OD机试模拟题】用 C++ 实现 - 不含 101 的数(2023.Q1)
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

面试题-下单后位置信息上报的方案
面试题:外卖下单后每10min上报位置事件的具体实现方案。需要考虑哪些点。存储方案:考虑到数据量很大,需要快速响应查询请求,建议使用分布式存储方案,如 HBase、MongoDB 等。这些分布式存储系统可以水平扩展,…...

视觉人培训团队把它称之为,工业领域人类最伟大的软件创造,它的名字叫Halcon
目前为止,世界上综合能力强大的机器视觉软件,,它的名字叫Halcon。 视觉人培训团队把它称之为,工业领域人类最伟大的软件创造,它的名字叫Halcon。 持续不断更新最新的图像技术,软件综合能力持续提升。 综…...

干了2年的手工点点点,感觉每天浑浑噩噩,我的自动化测试之路...
作为一个测试人员,从业年期从事手工测试的工作是没有太多坏处的,当然,如果一直点来点去那么确实自身得不到提高,这时候选择学习自动化测试是一件很有必要的事情,一来将自己从繁重的重复工作中解放出来,从事…...

嵌入式系统硬件设计与实践(学习方法)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 刚读书的时候,对什么是嵌入式,其实并不太清楚。等到自己知道的时候,已经毕业很多年了。另外对于计算机毕业的学…...

如何拥有自己的Gitee代码仓库
本教程适用码云代码托管平台 https://gitee.com/ 首先在电脑上安装Git(哔站有安装Git教程)和注册gitee账号后再来阅读此教程 1、在设置页面中点击 SSH公钥 2、点击 怎样生成公钥 3、点击公钥管理 4、点击 生成\添加SSH公钥 5、打开终端 输入如图红框中的…...

通用信息抽取技术UIE产业案例解析,Prompt 范式落地经验分享!
想了解用户的评价究竟是“真心夸赞”还是“阴阳怪气”?想快速从多角色多事件的繁杂信息中剥茧抽丝提取核心内容?想通过聚合相似事件准确地归纳出特征标签?……想了解UIE技术在产业中的实战落地经验?通用信息抽取技术 UIE 产业案例…...

integrationobjects/OPC AE Client ActiveX Crack
使用 OPC AE 客户端 ActiveX 进行快速 OPC 警报和事件客户端编程! OPC AE Client ActiveX包括多个 OPC ActiveX 控件,可以轻松嵌入到最流行的 OLE 容器中。这允许用户与任何 OPC AE 服务器连接并实时检索警报和事件。 这种易于使用的 OPC AE ActiveX 简化…...

JavaScript HTML DOM 简介
文章目录JavaScript HTML DOM 简介HTML DOM (文档对象模型)HTML DOM 树查找 HTML 元素通过 id 查找 HTML 元素通过标签名查找 HTML 元素通过类名找到 HTML 元素下面我们将学到如下内容JavaScript HTML DOM 简介 通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素…...

interrupt多线程设计模式
1. 两阶段终止-interrupt Two Phase Termination 在一个线程T1中如何“优雅”终止线程T2?这里的【优雅】指的是给T2一个料理后事的机会。 错误思路 ● 使用线程对象的stop()方法停止线程(强制杀死) —— stop()方法…...

Spring IoC 和 Spring AOP
Spring IoC Ioc(Inversion of control:即控制反转)是一种设计思想,而不是一种具体的技术实现。IoC的思想就是将原本在程序中手动创建对象的控制权交给Spring框架来管理。 不过, IoC 并非 Spring 特有,在其…...

taobao.top.oaid.merge( OAID订单合并 )
¥开放平台免费API必须用户授权 基于OAID(收件人ID, Open Addressee ID)做订单合并,确保相同收件人信息的订单合并到相同组。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请…...

Python自动获取海量ip,再也不用愁被封啦~
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 本次网站: 本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用: import parsel >>> pip install parsel…...

XLua学习笔记 { }
Lua调用C# 通过生成的适配代码进行调用 把在白名单上和打上[LuaCallCSharp]标签的C#类转换成Lua的table,然后注册C#类的方法和属性到table中。性能好,但占用安装包的内存大 通过反射机制进行调用 性能差,在运行的时候才去查找C#的方法&#…...

推荐程序员收藏的几个技术社区以及工具网站
常用技术社区 1、GitHub 网站地址:https://github.com/ 全球最大的开源社区,这点我想大家都清楚。但是今年被微软收购,之前很多的人在那说可能以后GitHub就会变样,但是事实并非如此,目前还没有收到什么信息,…...

StopWatch计时器
前言 开发中,为了评估性能,我们通常会使用System.currentTimeMillis() 去计算程序运行耗时 long startTimeSystem.currentTimeMillis();//业务代码... long endTimeSystem.currentTimeMillis(); System.out.println("耗时:" (endTime-startT…...

常见web安全漏洞-暴力破解,xss,SQL注入,csrf
1,暴力破解 原理: 使用大量的认证信息在认证接口进行登录认证,知道正确为止。为提高效率一般使用带有字典的工具自动化操作 基于表单的暴力破解 --- 若用户没有安全认证,直接进行抓包破解。 验证码绕过 on server ---验证码校验在…...

11个案例讲透 Python 函数参数
大家好,今天给大家分享一下明哥整理的一篇 Python 参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上 80% 的文章讲的都要明白,如果你是入门不久的 python 新手,相信本篇文章应该对你会…...